blob: 1877c84729a7c31ecc5b74ce7167da2aadfc8f45 [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 2006 IBM Corporation and others.
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// which accompanies this distribution, and is available at
// http://www.eclipse.org/legal/epl-v10.html
//
// Contributors:
// IBM Corporation - initial implementation
//------------------------------------------------------------------------------
package org.eclipse.epf.authoring.ui.forms;
import org.eclipse.epf.authoring.ui.AuthoringUIPlugin;
import org.eclipse.epf.authoring.ui.AuthoringUIResources;
import org.eclipse.epf.authoring.ui.AuthoringUIText;
import org.eclipse.epf.authoring.ui.editors.MethodElementEditor;
import org.eclipse.epf.authoring.ui.filters.ContentFilter;
import org.eclipse.epf.authoring.ui.richtext.IMethodRichText;
import org.eclipse.epf.library.edit.IFilter;
import org.eclipse.epf.library.edit.command.IActionManager;
import org.eclipse.epf.library.edit.itemsfilter.FilterConstants;
import org.eclipse.epf.library.edit.itemsfilter.VariabilityBaseElementFilter;
import org.eclipse.epf.library.edit.util.PracticePropUtil;
import org.eclipse.epf.library.ui.LibraryUIText;
import org.eclipse.epf.uma.Checklist;
import org.eclipse.epf.uma.Concept;
import org.eclipse.epf.uma.ContentElement;
import org.eclipse.epf.uma.EstimationConsiderations;
import org.eclipse.epf.uma.Example;
import org.eclipse.epf.uma.Guidance;
import org.eclipse.epf.uma.Guideline;
import org.eclipse.epf.uma.Practice;
import org.eclipse.epf.uma.Report;
import org.eclipse.epf.uma.ReusableAsset;
import org.eclipse.epf.uma.Roadmap;
import org.eclipse.epf.uma.SupportingMaterial;
import org.eclipse.epf.uma.Template;
import org.eclipse.epf.uma.TermDefinition;
import org.eclipse.epf.uma.ToolMentor;
import org.eclipse.epf.uma.UmaPackage;
import org.eclipse.epf.uma.Whitepaper;
import org.eclipse.epf.uma.util.UserDefinedTypeMeta;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.forms.editor.FormEditor;
import org.eclipse.ui.forms.widgets.FormToolkit;
/**
* The Description page in a Guidance editor.
*
* @author Kelvin Low
* @author Shilpa Toraskar
* @since 1.0
*/
public class GuidanceDescriptionPage extends DescriptionFormPage {
private static final String FORM_PAGE_ID = "guidanceDescriptionPage"; //$NON-NLS-1$
protected Guidance guidance;
private String elementLabel;
private IMethodRichText ctrl_content;
protected boolean contentOn = true;
private int contentFieldHeight = 400;
/**
* Creates a new instance.
*/
public GuidanceDescriptionPage(FormEditor editor) {
super(editor, FORM_PAGE_ID, AuthoringUIText.DESCRIPTION_PAGE_TITLE);
}
/**
* @see org.eclipse.epf.authoring.ui.forms.DescriptionFormPage#init(org.eclipse.ui.IEditorSite, org.eclipse.ui.IEditorInput)
*/
public void init(IEditorSite site, IEditorInput input) {
super.init(site, input);
guidance = (Guidance) contentElement;
elementLabel = LibraryUIText.getUIText(guidance);
setElementTypeOn(true);
if (guidance instanceof TermDefinition)
setBriefDescOn(false);
setFullDescOn(false);
setKeyConsiderationOn(false);
setIconSectionOn(true);
setExternalIDOn(true);
}
/**
* @see org.eclipse.epf.authoring.ui.forms.DescriptionFormPage#getFormPrefix()
*/
protected String getFormPrefix() {
return new StringBuffer(LibraryUIText.TEXT_GUIDANCE)
.append(" (").append(elementLabel).append("): ").toString(); //$NON-NLS-1$ //$NON-NLS-2$
}
/**
* Creates the editor tab content
*
* @param toolkit
* The form toolkit.
*/
protected void createEditorContent(FormToolkit toolkit) {
super.createEditorContent(toolkit);
if (contentOn) {
ctrl_content = createRichTextEditWithLinkForSection(toolkit,
detailComposite, AuthoringUIText.MAIN_DESCRIPTION_TEXT,
contentFieldHeight, 400, DETAIL_SECTION_ID);
}
}
/**
* @see org.eclipse.epf.authoring.ui.forms.DescriptionFormPage#addListeners()
*/
protected void addListeners() {
super.addListeners();
if (contentOn) {
final MethodElementEditor editor = (MethodElementEditor) getEditor();
ctrl_content.setModalObject(contentElement.getPresentation());
ctrl_content.setModalObjectFeature(UmaPackage.eINSTANCE
.getContentDescription_MainDescription());
ctrl_content.addModifyListener(contentModifyListener);
ctrl_content.addListener(SWT.Deactivate, new Listener() {
public void handleEvent(Event e) {
IMethodRichText control = descExpandFlag ? ctrl_expanded
: ctrl_content;
if (!control.getModified()) {
return;
}
String oldContent = guidance.getPresentation()
.getMainDescription();
if (((MethodElementEditor) getEditor()).mustRestoreValue(
control, oldContent)) {
return;
}
String newContent = control.getText();
if (!newContent.equals(oldContent)) {
boolean success = editor.getActionManager().doAction(
IActionManager.SET,
contentElement.getPresentation(),
UmaPackage.eINSTANCE
.getContentDescription_MainDescription(),
newContent, -1);
if (success && isVersionSectionOn()) {
updateChangeDate();
}
}
}
});
}
}
/**
* @see org.eclipse.epf.authoring.ui.forms.DescriptionFormPage#refresh(boolean)
*/
protected void refresh(boolean editable) {
super.refresh(editable);
if (contentOn) {
ctrl_content.setEditable(editable);
}
}
/**
* @see org.eclipse.epf.authoring.ui.forms.DescriptionFormPage#loadData()
*/
protected void loadData() {
super.loadData();
if (contentOn) {
if (guidance != null) {
String content = null;
if (guidance.getPresentation() != null) {
content = guidance.getPresentation().getMainDescription();
}
ctrl_content.setText(content == null ? "" : content); //$NON-NLS-1$
}
}
}
/**
* @see org.eclipse.epf.authoring.ui.forms.DescriptionFormPage#getContentElement()
*/
protected Object getContentElement() {
return guidance;
}
/**
* Returns the height of the Main Description text box.
*/
public int getContentFieldHeight() {
return contentFieldHeight;
}
/**
* Sets the height of the Main Description text box.
*/
public void setContentFieldHeight(int contentFieldHeight) {
this.contentFieldHeight = contentFieldHeight;
}
/**
* @see org.eclipse.epf.authoring.ui.forms.DescriptionFormPage#getTabString()
*/
protected String getTabString() {
return FilterConstants.GUIDANCE;
}
/**
* @see org.eclipse.epf.authoring.ui.forms.DescriptionFormPage#getFilter()
*/
protected IFilter getFilter() {
filter = new ContentFilter() {
protected boolean childAccept(Object obj) {
if (obj instanceof Guidance) {
return (((ContentElement) obj).getType()
.equals(((Guidance) contentElement).getType()));
}
return false;
}
};
// Set additional filter for variability base element checking.
((ContentFilter) filter)
.setAdditionalFilters(new IFilter[] { new VariabilityBaseElementFilter(
guidance) });
return filter;
}
/**
* @see org.eclipse.epf.authoring.ui.forms.DescriptionFormPage#loadSectionDescription()
*/
public void loadSectionDescription() {
if(contentElement instanceof Whitepaper){
this.generalSectionDescription = AuthoringUIResources.whitepaper_generalInfoSection_desc;
this.detailSectionDescription = AuthoringUIResources.whitepaper_detailSection_desc;
this.variabilitySectionDescription = AuthoringUIResources.whitepaper_variabilitySection_desc;
this.versionSectionDescription = AuthoringUIResources.whitepaper_versionInfoSection_desc;
this.iconSectionDescription = AuthoringUIResources.whitepaper_iconSection_desc;
}
else if(contentElement instanceof Concept){
this.generalSectionDescription = AuthoringUIResources.concept_generalInfoSection_desc;
this.detailSectionDescription = AuthoringUIResources.concept_detailSection_desc;
this.variabilitySectionDescription = AuthoringUIResources.concept_variabilitySection_desc;
this.versionSectionDescription = AuthoringUIResources.concept_versionInfoSection_desc;
this.iconSectionDescription = AuthoringUIResources.concept_iconSection_desc;
}
else if(contentElement instanceof Checklist){
this.generalSectionDescription = AuthoringUIResources.checklist_generalInfoSection_desc;
this.detailSectionDescription = AuthoringUIResources.checklist_detailSection_desc;
this.variabilitySectionDescription = AuthoringUIResources.checklist_variabilitySection_desc;
this.versionSectionDescription = AuthoringUIResources.checklist_versionInfoSection_desc;
this.iconSectionDescription = AuthoringUIResources.checklist_iconSection_desc;
}
else if(contentElement instanceof Example){
this.generalSectionDescription = AuthoringUIResources.example_generalInfoSection_desc;
this.detailSectionDescription = AuthoringUIResources.example_detailSection_desc;
this.variabilitySectionDescription = AuthoringUIResources.example_variabilitySection_desc;
this.versionSectionDescription = AuthoringUIResources.example_versionInfoSection_desc;
this.iconSectionDescription = AuthoringUIResources.example_iconSection_desc;
}
else if(contentElement instanceof Guideline){
this.generalSectionDescription = AuthoringUIResources.guideline_generalInfoSection_desc;
this.detailSectionDescription = AuthoringUIResources.guideline_detailSection_desc;
this.variabilitySectionDescription = AuthoringUIResources.guideline_variabilitySection_desc;
this.versionSectionDescription = AuthoringUIResources.guideline_versionInfoSection_desc;
this.iconSectionDescription = AuthoringUIResources.guideline_iconSection_desc;
}
else if(contentElement instanceof EstimationConsiderations){
this.generalSectionDescription = AuthoringUIResources.estimationconsideration_generalInfoSection_desc;
this.detailSectionDescription = AuthoringUIResources.estimationconsideration_detailSection_desc;
this.variabilitySectionDescription = AuthoringUIResources.estimationconsideration_variabilitySection_desc;
this.versionSectionDescription = AuthoringUIResources.estimationconsideration_versionInfoSection_desc;
this.iconSectionDescription = AuthoringUIResources.estimationconsideration_iconSection_desc;
}
else if(contentElement instanceof Practice){
if (PracticePropUtil.getPracticePropUtil().isUdtType(contentElement)) {
try {
String typeName = PracticePropUtil.getPracticePropUtil()
.getUtdData((Practice)contentElement)
.getRteNameMap().get(UserDefinedTypeMeta._typeName).toLowerCase();
this.generalSectionDescription = NLS.bind(AuthoringUIResources.generalInfoSection_desc, typeName);
this.detailSectionDescription = NLS.bind(AuthoringUIResources.detailSection_desc, typeName);
this.variabilitySectionDescription = NLS.bind(AuthoringUIResources.variabilitySection_desc, typeName);
this.versionSectionDescription = NLS.bind(AuthoringUIResources.versionInfoSection_desc, typeName);
this.iconSectionDescription = NLS.bind(AuthoringUIResources.iconSection_desc, typeName);
} catch (Exception e) {
AuthoringUIPlugin.getDefault().getLogger().logError(e);
}
} else {
this.generalSectionDescription = AuthoringUIResources.practice_generalInfoSection_desc;
this.detailSectionDescription = AuthoringUIResources.practice_detailSection_desc;
this.variabilitySectionDescription = AuthoringUIResources.practice_variabilitySection_desc;
this.versionSectionDescription = AuthoringUIResources.practice_versionInfoSection_desc;
this.iconSectionDescription = AuthoringUIResources.practice_iconSection_desc;
}
}
else if(contentElement instanceof SupportingMaterial){
this.generalSectionDescription = AuthoringUIResources.supportingmaterial_generalInfoSection_desc;
this.detailSectionDescription = AuthoringUIResources.supportingmaterial_detailSection_desc;
this.variabilitySectionDescription = AuthoringUIResources.supportingmaterial_variabilitySection_desc;
this.versionSectionDescription = AuthoringUIResources.supportingmaterial_versionInfoSection_desc;
this.iconSectionDescription = AuthoringUIResources.supportingmaterial_iconSection_desc;
}
else if(contentElement instanceof Report){
this.generalSectionDescription = AuthoringUIResources.report_generalInfoSection_desc;
this.detailSectionDescription = AuthoringUIResources.report_detailSection_desc;
this.variabilitySectionDescription = AuthoringUIResources.report_variabilitySection_desc;
this.versionSectionDescription = AuthoringUIResources.report_versionInfoSection_desc;
this.iconSectionDescription = AuthoringUIResources.report_iconSection_desc;
}
else if(contentElement instanceof Roadmap){
this.generalSectionDescription = AuthoringUIResources.roadmap_generalInfoSection_desc;
this.detailSectionDescription = AuthoringUIResources.roadmap_detailSection_desc;
this.variabilitySectionDescription = AuthoringUIResources.roadmap_variabilitySection_desc;
this.versionSectionDescription = AuthoringUIResources.roadmap_versionInfoSection_desc;
this.iconSectionDescription = AuthoringUIResources.roadmap_iconSection_desc;
}
else if(contentElement instanceof Template){
this.generalSectionDescription = AuthoringUIResources.template_generalInfoSection_desc;
this.detailSectionDescription = AuthoringUIResources.template_detailSection_desc;
this.variabilitySectionDescription = AuthoringUIResources.template_variabilitySection_desc;
this.versionSectionDescription = AuthoringUIResources.template_versionInfoSection_desc;
this.iconSectionDescription = AuthoringUIResources.template_iconSection_desc;
}
else if(contentElement instanceof TermDefinition){
this.generalSectionDescription = AuthoringUIResources.termdefinition_generalInfoSection_desc;
this.detailSectionDescription = AuthoringUIResources.termdefinition_detailSection_desc;
this.variabilitySectionDescription = AuthoringUIResources.termdefinition_variabilitySection_desc;
this.versionSectionDescription = AuthoringUIResources.termdefinition_versionInfoSection_desc;
this.iconSectionDescription = AuthoringUIResources.termdefinition_iconSection_desc;
}
else if(contentElement instanceof ReusableAsset){
this.generalSectionDescription = AuthoringUIResources.resuableasset_generalInfoSection_desc;
this.detailSectionDescription = AuthoringUIResources.resuableasset_detailSection_desc;
this.variabilitySectionDescription = AuthoringUIResources.resuableasset_variabilitySection_desc;
this.versionSectionDescription = AuthoringUIResources.resuableasset_versionInfoSection_desc;
this.iconSectionDescription = AuthoringUIResources.reusableasset_iconSection_desc;
}
else if(contentElement instanceof ToolMentor){
this.generalSectionDescription = AuthoringUIResources.toolmentor_generalInfoSection_desc;
this.detailSectionDescription = AuthoringUIResources.toolmentor_detailSection_desc;
this.variabilitySectionDescription = AuthoringUIResources.toolmentor_variabilitySection_desc;
this.versionSectionDescription = AuthoringUIResources.toolmentor_versionInfoSection_desc;
this.iconSectionDescription = AuthoringUIResources.toolmentor_iconSection_desc;
}
}
}