//------------------------------------------------------------------------------ // 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$ } } }