blob: 91bd8aae5b6d5b16235aa32bdb063fcde45e5736 [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.properties;
import org.eclipse.epf.authoring.ui.editors.MethodElementEditor;
import org.eclipse.epf.authoring.ui.richtext.IMethodRichText;
import org.eclipse.epf.authoring.ui.util.RichTextImageLinkContainer;
import org.eclipse.epf.library.edit.command.IActionManager;
import org.eclipse.epf.library.edit.util.ProcessUtil;
import org.eclipse.epf.uma.Activity;
import org.eclipse.epf.uma.ActivityDescription;
import org.eclipse.epf.uma.BreakdownElement;
import org.eclipse.epf.uma.UmaPackage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.ui.internal.views.properties.tabbed.view.TabbedPropertyComposite;
/**
* The document tab for Activity
*
* @author Shilpa Toraskar
* @author Kelvin Low
* @since 1.0
*/
public class ActivityDocumentSection extends BreakdownElementDocumentSection {
protected Activity element;
protected IMethodRichText mainDescText;
protected RichTextImageLinkContainer mainDescContainer;
protected IMethodRichText purposeText;
protected RichTextImageLinkContainer purposeContainer;
protected IMethodRichText alternativesText;
protected RichTextImageLinkContainer alternativesContainer;
protected IMethodRichText howToStaffText;
protected RichTextImageLinkContainer howToStaffContainer;
private Listener purposeListener = new Listener() {
public void handleEvent(Event e) {
element = (Activity) getElement();
IMethodRichText control = expandFlag ? ctrl_document_expanded
: purposeText;
if (!control.getModified()) {
return;
}
String oldContent = ((ActivityDescription) element
.getPresentation()).getPurpose();
if (((MethodElementEditor) getEditor()).mustRestoreValue(
purposeText, oldContent)) {
return;
}
String newContent = control.getText();
if (!newContent.equals(oldContent)) {
actionMgr.doAction(IActionManager.SET, element
.getPresentation(), UmaPackage.eINSTANCE
.getActivityDescription_Purpose(), newContent, -1);
}
}
};
private Listener mainDescListener = new Listener() {
public void handleEvent(Event e) {
element = (Activity) getElement();
IMethodRichText control = expandFlag ? ctrl_document_expanded
: mainDescText;
if (!control.getModified()) {
return;
}
String oldContent = ((ActivityDescription) element
.getPresentation()).getMainDescription();
if (((MethodElementEditor) getEditor()).mustRestoreValue(
mainDescText, oldContent)) {
return;
}
String newContent = control.getText();
if (!newContent.equals(oldContent)) {
actionMgr.doAction(IActionManager.SET, element
.getPresentation(), UmaPackage.eINSTANCE
.getContentDescription_MainDescription(), newContent,
-1);
}
}
};
private Listener alternativesListener = new Listener() {
public void handleEvent(Event e) {
element = (Activity) getElement();
IMethodRichText control = expandFlag ? ctrl_document_expanded
: alternativesText;
if (!control.getModified()) {
return;
}
String oldContent = ((ActivityDescription) element
.getPresentation()).getAlternatives();
if (((MethodElementEditor) getEditor()).mustRestoreValue(
alternativesText, oldContent)) {
return;
}
String newContent = control.getText();
if (!newContent.equals(oldContent)) {
actionMgr.doAction(IActionManager.SET, element
.getPresentation(), UmaPackage.eINSTANCE
.getActivityDescription_Alternatives(), newContent, -1);
}
}
};
private Listener howToStaffListener = new Listener() {
public void handleEvent(Event e) {
element = (Activity) getElement();
IMethodRichText control = expandFlag ? ctrl_document_expanded
: howToStaffText;
if (!control.getModified()) {
return;
}
String oldContent = ((ActivityDescription) element
.getPresentation()).getHowtoStaff();
if (((MethodElementEditor) getEditor()).mustRestoreValue(
howToStaffText, oldContent)) {
return;
}
String newContent = control.getText();
if (!newContent.equals(oldContent)) {
actionMgr.doAction(IActionManager.SET, element
.getPresentation(), UmaPackage.eINSTANCE
.getActivityDescription_HowtoStaff(), newContent, -1);
}
}
};
/**
* @see org.eclipse.epf.authoring.ui.properties.BreakdownElementDocumentSection#init()
*/
protected void init() {
super.init();
element = (Activity) getElement();
}
/**
* @see org.eclipse.epf.authoring.ui.properties.BreakdownElementDocumentSection#createDocumentSection(org.eclipse.swt.widgets.Composite)
*/
protected void createDocumentSection(Composite composite) {
int mainDescheightHint = 100;
super.createDocumentSection(composite);
// main description
mainDescContainer = FormUI.createRichTextWithLink(toolkit,
documentComposite, mainDescheightHint, contentElementPath, element,
PropertiesResources.Process_mainDescription);
addHyperLinkListener(mainDescContainer.link);
mainDescText = mainDescContainer.richText;
// purpose
purposeContainer = FormUI.createRichTextWithLink(toolkit,
documentComposite, heightHint, contentElementPath, element,
PropertiesResources.Process_purpose);
addHyperLinkListener(purposeContainer.link);
purposeText = purposeContainer.richText;
// create alternatives
alternativesContainer = FormUI.createRichTextWithLink(toolkit,
documentComposite, heightHint, contentElementPath, element,
PropertiesResources.Activity_alternatives);
addHyperLinkListener(alternativesContainer.link);
alternativesText = alternativesContainer.richText;
// create howtoStaff
howToStaffContainer = FormUI.createRichTextWithLink(toolkit,
documentComposite, heightHint, contentElementPath, element,
PropertiesResources.Activity_howToStaff);
addHyperLinkListener(howToStaffContainer.link);
howToStaffText = howToStaffContainer.richText;
}
/**
* @see org.eclipse.epf.authoring.ui.properties.BreakdownElementDocumentSection#addListeners()
*/
protected void addListeners() {
super.addListeners();
BreakdownElement element = getElement();
purposeText.setModalObject(element);
purposeText.setModalObjectFeature(UmaPackage.eINSTANCE
.getActivityDescription_Purpose());
purposeText.addListener(SWT.Deactivate, purposeListener);
mainDescText.setModalObject(element);
mainDescText.setModalObjectFeature(UmaPackage.eINSTANCE.getContentDescription_MainDescription());
mainDescText.addListener(SWT.Deactivate, mainDescListener);
alternativesText.setModalObject(element);
alternativesText.setModalObjectFeature(UmaPackage.eINSTANCE.getActivityDescription_Alternatives());
alternativesText.addListener(SWT.Deactivate, alternativesListener);
howToStaffText.setModalObject(element);
howToStaffText.setModalObjectFeature(UmaPackage.eINSTANCE.getActivityDescription_HowtoStaff());
howToStaffText.addListener(SWT.Deactivate, howToStaffListener);
}
/**
* @see org.eclipse.epf.authoring.ui.properties.BreakdownElementDocumentSection#updateControls()
*/
protected void updateControls() {
super.updateControls();
purposeText.setEditable(editable);
mainDescText.setEditable(editable);
alternativesText.setEditable(editable);
howToStaffText.setEditable(editable);
// hide fields for top-level processes:
if (ProcessUtil.isTopProcess(element)) {
briefDescLabel.setVisible(false);
briefDescText.setVisible(false);
externalIDLabel.setVisible(false);
externalIDText.setVisible(false);
keyConsiderationsContainer.setVisible(false);
mainDescContainer.setVisible(false);
purposeContainer.setVisible(false);
alternativesContainer.setVisible(false);
howToStaffContainer.setVisible(false);
// move usage guidance to be right after prefix field
usageGuidanceContainer.moveBelow(prefixText);
} else {
briefDescLabel.setVisible(true);
briefDescText.setVisible(true);
externalIDLabel.setVisible(true);
externalIDText.setVisible(true);
keyConsiderationsContainer.setVisible(true);
mainDescContainer.setVisible(true);
purposeContainer.setVisible(true);
alternativesContainer.setVisible(true);
howToStaffContainer.setVisible(true);
// move usage guidance to be right after externalID field
usageGuidanceContainer.moveBelow(externalIDText);
}
parent.layout(true, true);
// make parent be totally repainted
parent.setVisible(false);
parent.setVisible(true);
}
/**
* @see org.eclipse.epf.authoring.ui.properties.BreakdownElementDocumentSection#refresh()
*/
public void refresh() {
try {
if (getElement() instanceof Activity) {
((MethodElementEditor) getEditor()).saveModifiedRichText();
element = (Activity) getElement();
ActivityDescription content = (ActivityDescription) element
.getPresentation();
if (contentModifyListener != null) {
mainDescText.removeModifyListener(contentModifyListener);
purposeText.removeModifyListener(contentModifyListener);
alternativesText
.removeModifyListener(contentModifyListener);
howToStaffText.removeModifyListener(contentModifyListener);
}
super.refresh();
if (contentModifyListener != null) {
if (contentModifyListener instanceof MethodElementEditor.ModifyListener) {
((MethodElementEditor.ModifyListener) contentModifyListener)
.setElement(element.getPresentation());
((MethodElementEditor.ModifyListener) contentModifyListener)
.setDisable(true);
}
}
mainDescText.setText(content.getMainDescription());
purposeText.setText(content.getPurpose());
alternativesText.setText(content.getAlternatives());
howToStaffText.setText(content.getHowtoStaff());
if (expandFlag) {
if (expandDocumentLabel.getText().equals(
PropertiesResources.Process_mainDescription)) {
ctrl_document_expanded.setText(content
.getMainDescription());
ctrl_document_expanded.setSelection(0);
ctrl_document_expanded.setModalObject(content);
ctrl_document_expanded
.setModalObjectFeature(UmaPackage.eINSTANCE
.getContentDescription_MainDescription());
} else if (expandDocumentLabel.getText().equals(
PropertiesResources.Process_purpose)) {
ctrl_document_expanded.setText(content.getPurpose());
ctrl_document_expanded.setModalObject(content);
ctrl_document_expanded
.setModalObjectFeature(UmaPackage.eINSTANCE
.getActivityDescription_Purpose());
} else if (expandDocumentLabel.getText().equals(
PropertiesResources.Activity_alternatives)) {
ctrl_document_expanded.setText(content
.getAlternatives());
ctrl_document_expanded.setModalObject(content);
ctrl_document_expanded
.setModalObjectFeature(UmaPackage.eINSTANCE
.getActivityDescription_Alternatives());
} else if (expandDocumentLabel.getText().equals(
PropertiesResources.Activity_howToStaff)) {
ctrl_document_expanded.setText(content.getHowtoStaff());
ctrl_document_expanded.setModalObject(content);
ctrl_document_expanded
.setModalObjectFeature(UmaPackage.eINSTANCE
.getActivityDescription_HowtoStaff());
}
}
if (contentModifyListener instanceof MethodElementEditor.ModifyListener) {
((MethodElementEditor.ModifyListener) contentModifyListener)
.setDisable(false);
}
mainDescText.setModalObject(content);
mainDescText.setModalObjectFeature(UmaPackage.eINSTANCE
.getContentDescription_MainDescription());
mainDescText.addModifyListener(contentModifyListener);
purposeText.setModalObject(content);
purposeText.setModalObjectFeature(UmaPackage.eINSTANCE
.getActivityDescription_Purpose());
purposeText.addModifyListener(contentModifyListener);
alternativesText.setModalObject(content);
alternativesText.setModalObjectFeature(UmaPackage.eINSTANCE
.getActivityDescription_Alternatives());
alternativesText.addModifyListener(contentModifyListener);
howToStaffText.setModalObject(content);
howToStaffText.setModalObjectFeature(UmaPackage.eINSTANCE
.getActivityDescription_HowtoStaff());
howToStaffText.addModifyListener(contentModifyListener);
}
} catch (Exception ex) {
logger.logError(
"Error refreshing activity documentation section :", ex); //$NON-NLS-1$
}
}
}