//------------------------------------------------------------------------------ // 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.actions; import java.lang.reflect.InvocationTargetException; import java.util.HashSet; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.epf.authoring.ui.wizards.SynchronizationChoices; import org.eclipse.epf.authoring.ui.wizards.SynchronizationWizard; import org.eclipse.epf.library.edit.LibraryEditResources; import org.eclipse.epf.library.edit.process.command.SynchronizeCommand; import org.eclipse.epf.library.ui.actions.LibraryLockingOperationRunner; import org.eclipse.epf.uma.Process; import org.eclipse.epf.uma.UmaPackage; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.swt.widgets.Display; /** * Synchronizaiton action for process elements. Synchronization takes place from method * element to process elements * * @author Phong Le * @since 1.0 * */ public class SynchronizationAction extends ProcessAutoSynchronizeAction implements IWorkbenchPartAction { private Process selectedProcess; /** * Creates an instance * */ public SynchronizationAction() { super(LibraryEditResources.ManualSynchronizeCommand_label); } /* * Set Process */ public void setProcess(Process aProcess) { this.selectedProcess = aProcess; } private void superRun() { super.run(); } /** * @see org.eclipse.emf.edit.ui.action.CommandActionHandler#run() */ public void run() { LibraryLockingOperationRunner runner = new LibraryLockingOperationRunner(); runner.run(new IRunnableWithProgress() { public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { SynchronizationChoices choices = new SynchronizationChoices(); choices.setSelectedProcess(selectedProcess); // Instantiate and initialize the wizard. SynchronizationWizard wizard = new SynchronizationWizard(choices); // Instantiate the wizard container with the wizard and open it. WizardDialog dialog = new WizardDialog(Display.getCurrent().getActiveShell(), wizard); dialog.create(); dialog.open(); // System.out.println("$$$ DEBUG: " + choices); //$NON-NLS-1$ if (!choices.isFinishPressed()) return; // Set synchFeatures 'syncFeatureSet' HashSet syncFeatureSet = new HashSet(); addChoicesToSet(syncFeatureSet, choices); // Method config can be obtained by 'choices.getSelectedConfig()' SynchronizeCommand cmd = (SynchronizeCommand)command; cmd.setMethodConfiguration(choices.getSelectedConfig()); cmd.setSynchronizationFeatures(syncFeatureSet); superRun(); } }); } private void addChoicesToSet(HashSet syncSet, SynchronizationChoices choices) { if (choices.getSyncName() == SynchronizationChoices.SYNC_FROM_CONTENT){ syncSet.add(UmaPackage.eINSTANCE.getNamedElement_Name()); } if (choices.getSyncPresName() == SynchronizationChoices.SYNC_FROM_CONTENT){ syncSet.add(UmaPackage.eINSTANCE.getMethodElement_PresentationName()); } if (choices.getSyncBriefDesc() == SynchronizationChoices.SYNC_FROM_CONTENT){ syncSet.add(UmaPackage.eINSTANCE.getMethodElement_BriefDescription()); } if (choices.getSyncOptInput() == SynchronizationChoices.SYNC_FROM_CONTENT){ syncSet.add(UmaPackage.eINSTANCE.getTask_OptionalInput()); } if (choices.getSyncManInput() == SynchronizationChoices.SYNC_FROM_CONTENT){ syncSet.add(UmaPackage.eINSTANCE.getTask_MandatoryInput()); } if (choices.getSyncOutput() == SynchronizationChoices.SYNC_FROM_CONTENT){ syncSet.add(UmaPackage.eINSTANCE.getTask_Output()); } if (choices.getSyncPrimPerformer() == SynchronizationChoices.SYNC_FROM_CONTENT){ syncSet.add(UmaPackage.eINSTANCE.getTask_PerformedBy()); } if (choices.getSyncAddnPerformer() == SynchronizationChoices.SYNC_FROM_CONTENT){ syncSet.add(UmaPackage.eINSTANCE.getTask_AdditionallyPerformedBy()); } if (choices.getSyncRespRole() == SynchronizationChoices.SYNC_FROM_CONTENT){ syncSet.add(UmaPackage.eINSTANCE.getRole_ResponsibleFor()); } if (choices.getSyncContArtifact() == SynchronizationChoices.SYNC_FROM_CONTENT){ syncSet.add(UmaPackage.eINSTANCE.getArtifact_ContainedArtifacts()); } if (choices.getSyncDelivPart() == SynchronizationChoices.SYNC_FROM_CONTENT){ syncSet.add(UmaPackage.eINSTANCE.getDeliverable_DeliveredWorkProducts()); } if (choices.getSyncSelStep() == SynchronizationChoices.SYNC_FROM_CONTENT){ syncSet.add(UmaPackage.eINSTANCE.getTask_Steps()); } if (choices.getSyncGuidance() == SynchronizationChoices.SYNC_FROM_CONTENT) { syncSet.add(UmaPackage.eINSTANCE.getContentElement_Checklists()); syncSet.add(UmaPackage.eINSTANCE.getContentElement_ConceptsAndPapers()); syncSet.add(UmaPackage.eINSTANCE.getContentElement_Examples()); syncSet.add(UmaPackage.eINSTANCE.getContentElement_Guidelines()); syncSet.add(UmaPackage.eINSTANCE.getContentElement_Assets()); syncSet.add(UmaPackage.eINSTANCE.getContentElement_SupportingMaterials()); } } }