//------------------------------------------------------------------------------ // 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.AuthoringUIResources; import org.eclipse.epf.authoring.ui.editors.MethodElementEditor; import org.eclipse.epf.authoring.ui.richtext.IMethodRichText; import org.eclipse.epf.library.edit.command.IActionManager; import org.eclipse.epf.uma.DeliveryProcess; import org.eclipse.epf.uma.UmaPackage; 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; /** * Description page for delivery process * * @author Shilpa Toraskar * @author Kelvin Low * @since 1.0 */ public class DeliveryProcessDescription extends ProcessDescription { private IMethodRichText ctrl_scale, ctrl_project_characteristics; private IMethodRichText ctrl_risk_level, ctrl_estimating_techniques; private IMethodRichText ctrl_project_member_expertise, ctrl_type_of_contract; private DeliveryProcess deliveryProcess; /** * Creates an instance * @param editor */ public DeliveryProcessDescription(FormEditor editor) { super(editor); } /** * @see org.eclipse.epf.authoring.ui.forms.ProcessFormPage#init(org.eclipse.ui.IEditorSite, org.eclipse.ui.IEditorInput) */ public void init(IEditorSite site, IEditorInput input) { super.init(site, input); deliveryProcess = (DeliveryProcess) process; } /** * @see org.eclipse.epf.authoring.ui.forms.ProcessDescription#createDetailSection() */ protected void createDetailSection(FormToolkit toolkit) { super.createDetailSection(toolkit); // scale ctrl_scale = createRichTextEditWithLinkForSection(toolkit, detailComposite, AuthoringUIResources.Process_Scale, 40, 400, DETAIL_SECTION_ID); // project characteristics ctrl_project_characteristics = createRichTextEditWithLinkForSection( toolkit, detailComposite, AuthoringUIResources.Process_ProjectCharacteristics, 40, 400, DETAIL_SECTION_ID); // risk level ctrl_risk_level = createRichTextEditWithLinkForSection( toolkit, detailComposite, AuthoringUIResources.Process_RiskLevel, 40, 400, DETAIL_SECTION_ID); // Estimating technique ctrl_estimating_techniques = createRichTextEditWithLinkForSection( toolkit, detailComposite, AuthoringUIResources.Process_EstimatingTechnique, 40, 400, DETAIL_SECTION_ID); // Project Member expertise ctrl_project_member_expertise = createRichTextEditWithLinkForSection( toolkit, detailComposite, AuthoringUIResources.Process_ProjectMemberExpertise, 40, 400, DETAIL_SECTION_ID); // Type of contract ctrl_type_of_contract = createRichTextEditWithLinkForSection( toolkit, detailComposite, AuthoringUIResources.Process_TypeOfContract, 40, 400, DETAIL_SECTION_ID); toolkit.paintBordersFor(detailComposite); } /** * Loads initial data from model * * @see org.eclipse.epf.authoring.ui.forms.ProcessDescription#loadData() */ public void loadData() { super.loadData(); org.eclipse.epf.uma.DeliveryProcessDescription content = (org.eclipse.epf.uma.DeliveryProcessDescription) deliveryProcess .getPresentation(); String scale = content.getScale(); String projectChar = content.getProjectCharacteristics(); String estimatingTechnique = content.getEstimatingTechnique(); String riskLevel = content.getRiskLevel(); String projectMemberExpertiese = content.getProjectMemberExpertise(); String typeOfContract = content.getTypeOfContract(); ctrl_scale.setText(scale == null ? "" : scale); //$NON-NLS-1$ ctrl_project_characteristics .setText(projectChar == null ? "" : projectChar); //$NON-NLS-1$ ctrl_estimating_techniques .setText(estimatingTechnique == null ? "" : estimatingTechnique); //$NON-NLS-1$ ctrl_risk_level.setText(riskLevel == null ? "" : riskLevel); //$NON-NLS-1$ ctrl_project_member_expertise .setText(projectMemberExpertiese == null ? "" : projectMemberExpertiese); //$NON-NLS-1$ ctrl_type_of_contract .setText(typeOfContract == null ? "" : typeOfContract); //$NON-NLS-1$ } /** * Add listeners * * @see org.eclipse.epf.authoring.ui.forms.ProcessDescription#addListeners() */ protected void addListeners() { super.addListeners(); MethodElementEditor editor = ((MethodElementEditor) getEditor()); final IActionManager actionMgr = editor.getActionManager(); final org.eclipse.epf.uma.DeliveryProcessDescription content = (org.eclipse.epf.uma.DeliveryProcessDescription) deliveryProcess .getPresentation(); ctrl_scale.setModalObject(deliveryProcess.getPresentation()); ctrl_scale.setModalObjectFeature(UmaPackage.eINSTANCE .getDeliveryProcessDescription_Scale()); ctrl_scale.addModifyListener(contentModifyListener); ctrl_scale.addListener(SWT.Deactivate, new Listener() { public void handleEvent(Event e) { IMethodRichText control = descExpandFlag ? ctrl_expanded : ctrl_scale; if (!control.getModified()) { return; } String oldContent = content.getScale(); if (((MethodElementEditor) getEditor()).mustRestoreValue( control, oldContent)) { return; } String newContent = control.getText(); if (!newContent.equals(oldContent)) { actionMgr.doAction(IActionManager.SET, deliveryProcess .getPresentation(), UmaPackage.eINSTANCE .getDeliveryProcessDescription_Scale(), newContent, -1); } } }); ctrl_project_characteristics.setModalObject(deliveryProcess .getPresentation()); ctrl_project_characteristics.setModalObjectFeature(UmaPackage.eINSTANCE .getDeliveryProcessDescription_ProjectCharacteristics()); ctrl_project_characteristics.addModifyListener(contentModifyListener); ctrl_project_characteristics.addListener(SWT.Deactivate, new Listener() { public void handleEvent(Event e) { IMethodRichText control = descExpandFlag ? ctrl_expanded : ctrl_project_characteristics; if (!control.getModified()) { return; } String oldContent = content.getProjectCharacteristics(); if (((MethodElementEditor) getEditor()) .mustRestoreValue(control, oldContent)) { return; } String newContent = control.getText(); if (!newContent.equals(oldContent)) { actionMgr .doAction( IActionManager.SET, deliveryProcess.getPresentation(), UmaPackage.eINSTANCE .getDeliveryProcessDescription_ProjectCharacteristics(), newContent, -1); } } }); ctrl_risk_level.setModalObject(deliveryProcess.getPresentation()); ctrl_risk_level.setModalObjectFeature(UmaPackage.eINSTANCE .getDeliveryProcessDescription_RiskLevel()); ctrl_risk_level.addModifyListener(contentModifyListener); ctrl_risk_level.addListener(SWT.Deactivate, new Listener() { public void handleEvent(Event e) { IMethodRichText control = descExpandFlag ? ctrl_expanded : ctrl_risk_level; if (!control.getModified()) { return; } String oldContent = content.getRiskLevel(); if (((MethodElementEditor) getEditor()).mustRestoreValue( control, oldContent)) { return; } String newContent = control.getText(); if (!newContent.equals(oldContent)) { actionMgr.doAction(IActionManager.SET, deliveryProcess .getPresentation(), UmaPackage.eINSTANCE .getDeliveryProcessDescription_RiskLevel(), newContent, -1); } } }); ctrl_estimating_techniques.setModalObject(deliveryProcess .getPresentation()); ctrl_estimating_techniques.setModalObjectFeature(UmaPackage.eINSTANCE .getDeliveryProcessDescription_EstimatingTechnique()); ctrl_estimating_techniques.addModifyListener(contentModifyListener); ctrl_estimating_techniques.addListener(SWT.Deactivate, new Listener() { public void handleEvent(Event e) { IMethodRichText control = descExpandFlag ? ctrl_expanded : ctrl_estimating_techniques; if (!control.getModified()) { return; } String oldContent = content.getEstimatingTechnique(); if (((MethodElementEditor) getEditor()).mustRestoreValue( control, oldContent)) { return; } String newContent = control.getText(); if (!newContent.equals(oldContent)) { actionMgr .doAction( IActionManager.SET, deliveryProcess.getPresentation(), UmaPackage.eINSTANCE .getDeliveryProcessDescription_EstimatingTechnique(), newContent, -1); } } }); ctrl_project_member_expertise.setModalObject(deliveryProcess .getPresentation()); ctrl_project_member_expertise .setModalObjectFeature(UmaPackage.eINSTANCE .getDeliveryProcessDescription_ProjectMemberExpertise()); ctrl_project_member_expertise.addModifyListener(contentModifyListener); ctrl_project_member_expertise.addListener(SWT.Deactivate, new Listener() { public void handleEvent(Event e) { IMethodRichText control = descExpandFlag ? ctrl_expanded : ctrl_project_member_expertise; if (!control.getModified()) { return; } String oldContent = content.getProjectMemberExpertise(); if (((MethodElementEditor) getEditor()) .mustRestoreValue(control, oldContent)) { return; } String newContent = control.getText(); if (!newContent.equals(oldContent)) { actionMgr .doAction( IActionManager.SET, deliveryProcess.getPresentation(), UmaPackage.eINSTANCE .getDeliveryProcessDescription_ProjectMemberExpertise(), newContent, -1); } } }); ctrl_type_of_contract.setModalObject(deliveryProcess.getPresentation()); ctrl_type_of_contract.setModalObjectFeature(UmaPackage.eINSTANCE .getDeliveryProcessDescription_TypeOfContract()); ctrl_type_of_contract.addModifyListener(contentModifyListener); ctrl_type_of_contract.addListener(SWT.Deactivate, new Listener() { public void handleEvent(Event e) { IMethodRichText control = descExpandFlag ? ctrl_expanded : ctrl_type_of_contract; if (!control.getModified()) { return; } String oldContent = content.getTypeOfContract(); if (((MethodElementEditor) getEditor()).mustRestoreValue( control, oldContent)) { return; } String newContent = control.getText(); if (!newContent.equals(oldContent)) { actionMgr.doAction(IActionManager.SET, deliveryProcess .getPresentation(), UmaPackage.eINSTANCE .getDeliveryProcessDescription_TypeOfContract(), newContent, -1); } } }); } /** * @see org.eclipse.epf.authoring.ui.forms.ProcessDescription#refresh(boolean) */ protected void refresh(boolean editable) { super.refresh(editable); ctrl_estimating_techniques.setEditable(editable); ctrl_project_characteristics.setEditable(editable); ctrl_project_member_expertise.setEditable(editable); ctrl_risk_level.setEditable(editable); ctrl_scale.setEditable(editable); ctrl_type_of_contract.setEditable(editable); } }