| //------------------------------------------------------------------------------ |
| // 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.editors; |
| |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| import org.eclipse.epf.authoring.gef.edit.ActivityDiagramEditPart; |
| import org.eclipse.epf.authoring.gef.edit.ActivityDiagramEditPartFactory; |
| import org.eclipse.epf.authoring.gef.util.DiagramUIResources; |
| import org.eclipse.epf.authoring.gef.util.TemplateConstants; |
| import org.eclipse.epf.authoring.ui.AuthoringUIPlugin; |
| import org.eclipse.epf.diagram.model.Diagram; |
| import org.eclipse.epf.diagram.model.LinkedObject; |
| import org.eclipse.epf.diagram.model.ModelFactory; |
| import org.eclipse.epf.diagram.model.Node; |
| import org.eclipse.epf.diagram.model.TypedNode; |
| import org.eclipse.epf.diagram.model.WorkBreakdownElementNode; |
| import org.eclipse.epf.diagram.model.util.GraphicalDataHelper; |
| import org.eclipse.epf.library.edit.util.Suppression; |
| import org.eclipse.epf.library.util.ResourceHelper; |
| import org.eclipse.epf.uma.Activity; |
| import org.eclipse.epf.uma.CapabilityPattern; |
| import org.eclipse.epf.uma.DeliveryProcess; |
| import org.eclipse.epf.uma.Iteration; |
| import org.eclipse.epf.uma.MethodElement; |
| import org.eclipse.epf.uma.Phase; |
| import org.eclipse.epf.uma.UmaFactory; |
| import org.eclipse.gef.EditPart; |
| import org.eclipse.gef.EditPartFactory; |
| import org.eclipse.gef.palette.CombinedTemplateCreationEntry; |
| import org.eclipse.gef.palette.ConnectionCreationToolEntry; |
| import org.eclipse.gef.palette.MarqueeToolEntry; |
| import org.eclipse.gef.palette.PaletteContainer; |
| import org.eclipse.gef.palette.PaletteEntry; |
| import org.eclipse.gef.palette.PaletteGroup; |
| import org.eclipse.gef.palette.PaletteRoot; |
| import org.eclipse.gef.palette.PaletteSeparator; |
| import org.eclipse.gef.palette.PanningSelectionToolEntry; |
| import org.eclipse.gef.palette.ToolEntry; |
| import org.eclipse.gef.requests.CreationFactory; |
| import org.eclipse.gef.ui.actions.GEFActionConstants; |
| import org.eclipse.jface.action.Action; |
| import org.eclipse.jface.action.IAction; |
| import org.eclipse.jface.action.IMenuManager; |
| import org.eclipse.jface.action.Separator; |
| import org.eclipse.swt.widgets.Event; |
| import org.eclipse.ui.IEditorInput; |
| import org.eclipse.ui.IEditorPart; |
| import org.eclipse.ui.PartInitException; |
| |
| |
| /** |
| * An editor for graphical workflow |
| * |
| * @author Phong Nguyen Le |
| * @since 1.0 |
| */ |
| public class GraphicalWorkflowEditor extends AbstractDiagramEditor { |
| |
| private static final String OPEN_WORKFLOW_DETAIL_DIAGRAM = "open_workflow_detail_diagram"; //$NON-NLS-1$ |
| |
| private static final String CREATE_START_NODE = "create_start_node"; //$NON-NLS-1$ |
| |
| private static final String CREATE_END_NODE = "create_end_node"; //$NON-NLS-1$ |
| |
| private static final String CREATE_SYNC_BAR = "create_sync_bar"; //$NON-NLS-1$ |
| |
| private static final String CREATE_DECISION_BAR = "create_decision_bar"; //$NON-NLS-1$ |
| |
| private static final String CREATE_ACTIVITY = "create_activity"; //$NON-NLS-1$ |
| |
| private static final String CREATE_PHASE = "create_phase"; //$NON-NLS-1$ |
| |
| private static final String CREATE_ITERATION = "create_iteration"; //$NON-NLS-1$ |
| |
| private static final String CREATE_TASK_DESCRIPTOR = "create_task_descriptor"; //$NON-NLS-1$ |
| |
| private CreationFactory activityNodeCreationFactory; |
| |
| private CreationFactory phaseNodeCreationFactory; |
| |
| private CreationFactory iterationNodeCreationFactory; |
| |
| private CreationFactory synchBarCreationFactory; |
| |
| private CreationFactory decisionNodeCreationFactory; |
| |
| private CreationFactory startNodeCreationFactory; |
| |
| private CreationFactory endNodeCreationFactory; |
| |
| private CreationFactory taskDescriptorNodeCreationFactory; |
| |
| /** |
| * Create an instance |
| */ |
| public GraphicalWorkflowEditor() { |
| super(); |
| } |
| |
| protected void initializeCreationFactories() { |
| super.initializeCreationFactories(); |
| |
| if (activityNodeCreationFactory == null) |
| activityNodeCreationFactory = new CreationFactory() { |
| |
| public Object getNewObject() { |
| // ActivityNode node = |
| // ModelFactory.eINSTANCE.createActivityNode(); |
| WorkBreakdownElementNode node = ModelFactory.eINSTANCE |
| .createWorkBreakdownElementNode(); |
| Diagram diagram = (Diagram) editPart.getModel(); |
| node.setUMADiagram(diagram.getUMADiagram()); |
| node.setDiagram(diagram); |
| node.setObject(UmaFactory.eINSTANCE.createActivity()); |
| return node; |
| } |
| |
| public Object getObjectType() { |
| return TemplateConstants.ACTIVITY; |
| } |
| |
| }; |
| CreationFactory creationFactory = activityNodeCreationFactory; |
| templateNameToCreationFactoryMap.put(creationFactory.getObjectType(), |
| creationFactory); |
| |
| if (phaseNodeCreationFactory == null) |
| phaseNodeCreationFactory = new CreationFactory() { |
| |
| public Object getNewObject() { |
| // ActivityNode node = |
| // ModelFactory.eINSTANCE.createActivityNode(); |
| WorkBreakdownElementNode node = ModelFactory.eINSTANCE |
| .createWorkBreakdownElementNode(); |
| Diagram diagram = (Diagram) editPart.getModel(); |
| node.setUMADiagram(diagram.getUMADiagram()); |
| node.setDiagram(diagram); |
| node.setObject(UmaFactory.eINSTANCE.createPhase()); |
| return node; |
| } |
| |
| public Object getObjectType() { |
| return TemplateConstants.PHASE; |
| } |
| |
| }; |
| creationFactory = phaseNodeCreationFactory; |
| templateNameToCreationFactoryMap.put(creationFactory.getObjectType(), |
| creationFactory); |
| |
| if (iterationNodeCreationFactory == null) |
| iterationNodeCreationFactory = new CreationFactory() { |
| |
| public Object getNewObject() { |
| // ActivityNode node = |
| // ModelFactory.eINSTANCE.createActivityNode(); |
| WorkBreakdownElementNode node = ModelFactory.eINSTANCE |
| .createWorkBreakdownElementNode(); |
| Diagram diagram = (Diagram) editPart.getModel(); |
| node.setUMADiagram(diagram.getUMADiagram()); |
| node.setDiagram(diagram); |
| node.setObject(UmaFactory.eINSTANCE.createIteration()); |
| return node; |
| } |
| |
| public Object getObjectType() { |
| return TemplateConstants.ITERATION; |
| } |
| |
| }; |
| creationFactory = iterationNodeCreationFactory; |
| templateNameToCreationFactoryMap.put(creationFactory.getObjectType(), |
| creationFactory); |
| |
| if (synchBarCreationFactory == null) |
| synchBarCreationFactory = new CreationFactory() { |
| |
| public Object getNewObject() { |
| TypedNode node = ModelFactory.eINSTANCE.createTypedNode(); |
| node.setType(TypedNode.SYNCH_BAR); |
| node.setObject(GraphicalDataHelper |
| .newTypedGraphNode(TypedNode.SYNCH_BAR)); |
| return node; |
| } |
| |
| public Object getObjectType() { |
| return TemplateConstants.SYNCH_BAR; |
| } |
| |
| }; |
| creationFactory = synchBarCreationFactory; |
| templateNameToCreationFactoryMap.put(creationFactory.getObjectType(), |
| creationFactory); |
| |
| if (decisionNodeCreationFactory == null) |
| decisionNodeCreationFactory = new CreationFactory() { |
| |
| public Object getNewObject() { |
| TypedNode node = ModelFactory.eINSTANCE.createTypedNode(); |
| node.setType(TypedNode.DECISION); |
| node.setObject(GraphicalDataHelper |
| .newTypedGraphNode(TypedNode.DECISION)); |
| return node; |
| } |
| |
| public Object getObjectType() { |
| return TemplateConstants.DECISION_NODE; |
| } |
| |
| }; |
| creationFactory = decisionNodeCreationFactory; |
| templateNameToCreationFactoryMap.put(creationFactory.getObjectType(), |
| creationFactory); |
| |
| if (startNodeCreationFactory == null) |
| startNodeCreationFactory = new CreationFactory() { |
| |
| public Object getNewObject() { |
| TypedNode node = ModelFactory.eINSTANCE.createTypedNode(); |
| node.setType(TypedNode.START); |
| node.setObject(GraphicalDataHelper |
| .newTypedGraphNode(TypedNode.START)); |
| return node; |
| } |
| |
| public Object getObjectType() { |
| return TemplateConstants.START_NODE; |
| } |
| |
| }; |
| creationFactory = startNodeCreationFactory; |
| templateNameToCreationFactoryMap.put(creationFactory.getObjectType(), |
| creationFactory); |
| |
| if (endNodeCreationFactory == null) |
| endNodeCreationFactory = new CreationFactory() { |
| |
| public Object getNewObject() { |
| TypedNode node = ModelFactory.eINSTANCE.createTypedNode(); |
| node.setType(TypedNode.END); |
| node.setObject(GraphicalDataHelper |
| .newTypedGraphNode(TypedNode.END)); |
| return node; |
| } |
| |
| public Object getObjectType() { |
| return TemplateConstants.END_NODE; |
| } |
| |
| }; |
| creationFactory = endNodeCreationFactory; |
| templateNameToCreationFactoryMap.put(creationFactory.getObjectType(), |
| creationFactory); |
| |
| if (taskDescriptorNodeCreationFactory == null) |
| taskDescriptorNodeCreationFactory = new CreationFactory() { |
| |
| public Object getNewObject() { |
| WorkBreakdownElementNode node = ModelFactory.eINSTANCE |
| .createWorkBreakdownElementNode(); |
| Diagram diagram = (Diagram) editPart.getModel(); |
| node.setUMADiagram(diagram.getUMADiagram()); |
| node.setDiagram(diagram); |
| node.setObject(UmaFactory.eINSTANCE.createTaskDescriptor()); |
| return node; |
| } |
| |
| public Object getObjectType() { |
| return TemplateConstants.TASK_DESCRIPTOR; |
| } |
| |
| }; |
| creationFactory = taskDescriptorNodeCreationFactory; |
| templateNameToCreationFactoryMap.put(creationFactory.getObjectType(), |
| creationFactory); |
| } |
| |
| protected void contributeToContextMenu(IMenuManager menu) { |
| super.contributeToContextMenu(menu); |
| |
| boolean canModify = !isReadOnly(); |
| |
| menu.insertAfter(GEFActionConstants.MB_ADDITIONS, new Separator( |
| GEFActionConstants.MB_ADDITIONS)); |
| |
| IAction action = getActionRegistry().getAction( |
| OPEN_WORKFLOW_DETAIL_DIAGRAM); |
| if (action.isEnabled()) { |
| menu.appendToGroup(GEFActionConstants.MB_ADDITIONS, action); |
| } |
| menu.insertAfter(GEFActionConstants.MB_ADDITIONS, new Separator( |
| GEFActionConstants.MB_ADDITIONS)); |
| |
| action = getActionRegistry().getAction(CREATE_START_NODE); |
| if (action.isEnabled() && canModify) { |
| menu.appendToGroup(GEFActionConstants.MB_ADDITIONS, action); |
| } |
| |
| // action = getActionRegistry().getAction(CREATE_FREE_TEXT); |
| // if(action.isEnabled()) { |
| // menu.appendToGroup(GEFActionConstants.MB_ADDITIONS, action); |
| // } |
| |
| action = getActionRegistry().getAction(CREATE_SYNC_BAR); |
| if (action.isEnabled() && canModify) { |
| menu.appendToGroup(GEFActionConstants.MB_ADDITIONS, action); |
| } |
| |
| action = getActionRegistry().getAction(CREATE_DECISION_BAR); |
| if (action.isEnabled() && canModify) { |
| menu.appendToGroup(GEFActionConstants.MB_ADDITIONS, action); |
| } |
| |
| action = getActionRegistry().getAction(CREATE_END_NODE); |
| if (action.isEnabled() && canModify) { |
| menu.appendToGroup(GEFActionConstants.MB_ADDITIONS, action); |
| } |
| menu.insertAfter(GEFActionConstants.MB_ADDITIONS, new Separator( |
| GEFActionConstants.MB_ADDITIONS)); |
| |
| action = getActionRegistry().getAction(CREATE_ACTIVITY); |
| if (action.isEnabled() && canModify) { |
| menu.appendToGroup(GEFActionConstants.MB_ADDITIONS, action); |
| } |
| action = getActionRegistry().getAction(CREATE_ITERATION); |
| if (action.isEnabled() && canModify) { |
| menu.appendToGroup(GEFActionConstants.MB_ADDITIONS, action); |
| } |
| |
| action = getActionRegistry().getAction(CREATE_PHASE); |
| if (action.isEnabled() && canModify) { |
| menu.appendToGroup(GEFActionConstants.MB_ADDITIONS, action); |
| } |
| |
| action = getActionRegistry().getAction(CREATE_TASK_DESCRIPTOR); |
| if (action.isEnabled() && canModify) { |
| menu.appendToGroup(GEFActionConstants.MB_ADDITIONS, action); |
| } |
| } |
| |
| protected void createActions() { |
| super.createActions(); |
| |
| // Open workflow detail action |
| // |
| IAction action = new Action( |
| DiagramUIResources.ActivityDiagram_openActivityDetailDiagram_text) { |
| public String getId() { |
| return OPEN_WORKFLOW_DETAIL_DIAGRAM; |
| } |
| |
| public void run() { |
| try { |
| try { |
| EditPart selectedEditPart = (EditPart) getGraphicalViewer() |
| .getSelectedEditParts().get(0); |
| IEditorPart parent = getSite().getPage() |
| .getActiveEditor(); |
| IEditorInput input = new ActivityDetailDiagramEditor.EditorInput( |
| (MethodElement) ((Node) selectedEditPart |
| .getModel()).getObject(), |
| ((Diagram) editPart.getModel()) |
| .getSuppression()); |
| IEditorPart part = getSite() |
| .getPage() |
| .openEditor( |
| input, |
| ProcessEditor.ACTIVITY_DETAIL_DIAGRAM_EDITOR_ID); |
| if (part instanceof AbstractDiagramEditor) { |
| AbstractDiagramEditor editor = (AbstractDiagramEditor) part; |
| editor.setParentEditor(parent); |
| } |
| } catch (PartInitException exception) { |
| exception.printStackTrace(); |
| } |
| } catch (RuntimeException e) { |
| e.printStackTrace(); |
| } |
| } |
| |
| public boolean isEnabled() { |
| List editParts = getGraphicalViewer().getSelectedEditParts(); |
| if (editParts.size() != 1) |
| return false; |
| EditPart editPart = (EditPart) editParts.get(0); |
| return (editPart.getModel() instanceof WorkBreakdownElementNode && ((LinkedObject) editPart |
| .getModel()).getObject() instanceof Activity); |
| } |
| }; |
| getActionRegistry().registerAction(action); |
| |
| // IAction startNodeAction = new Action(DiagramUIResources. |
| // getString("DiagramUI.ActivityDiagram.StartNode.text")){ //$NON-NLS-1$ |
| // |
| // public void run(){ |
| // CreateRequest request = new CreateRequest(); |
| // //CreationFactory factory = getFactory(template); |
| // if (startNodeCreationFactory == null) |
| // return; |
| // request.setFactory(startNodeCreationFactory); |
| // request.setLocation(new Point(10,10)); |
| // |
| // if (request.getNewObject() instanceof Node) { |
| // Point loc = request.getLocation(); |
| // //((GraphicalEditPart)getHost()).getFigure().translateToRelative(loc); |
| // Diagram parent = (Diagram)editPart.getModel(); |
| // org.eclipse.gef.commands.Command c = new |
| // CreateNodeCommand((Node)request.getNewObject(), |
| // parent, loc); |
| // getCommandStack().execute(c); |
| // } |
| // } |
| // public String getId(){ |
| // return CREATE_START_NODE; |
| // } |
| // public boolean isEnabled(){ |
| // return true; |
| // } |
| // public String getToolTipText() { |
| // return |
| // DiagramUIResources.getString("DiagramUI.ActivityDiagram.StartNode.tooltip"); |
| // } |
| // |
| // }; |
| // getActionRegistry().registerAction(startNodeAction); |
| // |
| // |
| // IAction endNodeAction = new Action(DiagramUIResources. |
| // getString("DiagramUI.ActivityDiagram.EndNode.text")){ //$NON-NLS-1$ |
| // |
| // public void run(){ |
| // CreateRequest request = new CreateRequest(); |
| // if (endNodeCreationFactory == null) |
| // return; |
| // request.setFactory(endNodeCreationFactory); |
| // request.setLocation(new Point(10,10)); |
| // |
| // if (request.getNewObject() instanceof Node) { |
| // Point loc = request.getLocation(); |
| // Diagram parent = (Diagram)editPart.getModel(); |
| // org.eclipse.gef.commands.Command c = new |
| // CreateNodeCommand((Node)request.getNewObject(), |
| // parent, loc); |
| // getCommandStack().execute(c); |
| // } |
| // } |
| // public String getId(){ |
| // return CREATE_END_NODE; |
| // } |
| // public boolean isEnabled(){ |
| // return true; |
| // } |
| // public String getToolTipText() { |
| // return |
| // DiagramUIResources.getString("DiagramUI.ActivityDiagram.EndNode.tooltip"); |
| // } |
| // }; |
| // getActionRegistry().registerAction(endNodeAction); |
| // |
| // IAction syncBarAction = new Action(DiagramUIResources. |
| // getString("DiagramUI.ActivityDiagram.SyncBar.text")){ //$NON-NLS-1$ |
| // |
| // public void run(){ |
| // CreateRequest request = new CreateRequest(); |
| // //CreationFactory factory = getFactory(template); |
| // if (synchBarCreationFactory == null) |
| // return; |
| // request.setFactory(synchBarCreationFactory); |
| // request.setLocation(new Point(10,10)); |
| // |
| // if (request.getNewObject() instanceof Node) { |
| // Point loc = request.getLocation(); |
| // //((GraphicalEditPart)getHost()).getFigure().translateToRelative(loc); |
| // Diagram parent = (Diagram)editPart.getModel(); |
| // org.eclipse.gef.commands.Command c = new |
| // CreateNodeCommand((Node)request.getNewObject(), |
| // parent, loc); |
| // getCommandStack().execute(c); |
| // } |
| // } |
| // public String getId(){ |
| // return CREATE_SYNC_BAR; |
| // } |
| // public boolean isEnabled(){ |
| // return true; |
| // } |
| // public String getToolTipText() { |
| // return |
| // DiagramUIResources.getString("DiagramUI.ActivityDiagram.SyncBar.tooltip"); |
| // } |
| // |
| // }; |
| // getActionRegistry().registerAction(syncBarAction); |
| // |
| // |
| // IAction decisionBarAction = new Action(DiagramUIResources. |
| // getString("DiagramUI.ActivityDiagram.DecisionBar.text")){ |
| // //$NON-NLS-1$ |
| // |
| // public void run(){ |
| // CreateRequest request = new CreateRequest(); |
| // //CreationFactory factory = getFactory(template); |
| // if (decisionNodeCreationFactory == null) |
| // return; |
| // request.setFactory(decisionNodeCreationFactory); |
| // request.setLocation(new Point(10,10)); |
| // |
| // if (request.getNewObject() instanceof Node) { |
| // Point loc = request.getLocation(); |
| // //((GraphicalEditPart)getHost()).getFigure().translateToRelative(loc); |
| // Diagram parent = (Diagram)editPart.getModel(); |
| // org.eclipse.gef.commands.Command c = new |
| // CreateNodeCommand((Node)request.getNewObject(), |
| // parent, loc); |
| // getCommandStack().execute(c); |
| // } |
| // } |
| // public String getId(){ |
| // return CREATE_DECISION_BAR; |
| // } |
| // public boolean isEnabled(){ |
| // return true; |
| // } |
| // public String getToolTipText() { |
| // return |
| // DiagramUIResources.getString("DiagramUI.ActivityDiagram.DecisionBar.tooltip"); |
| // } |
| // |
| // }; |
| // getActionRegistry().registerAction(decisionBarAction); |
| |
| action = createAnAction( |
| DiagramUIResources.ActivityDiagram_StartNode_text, startNodeCreationFactory, |
| CREATE_START_NODE, |
| DiagramUIResources.ActivityDiagram_StartNode_tooltip, |
| AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "stnode_pal16.gif")); //$NON-NLS-1$ |
| getActionRegistry().registerAction(action); |
| |
| action = createAnAction( |
| DiagramUIResources.AbstractDiagram_FreeText_text, freeTxtNodeCreationFactory, |
| CREATE_FREE_TEXT, |
| DiagramUIResources.AbstractDiagram_FreeText_tooltip, |
| AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "freetext_pal16.gif")); //$NON-NLS-1$ |
| getActionRegistry().registerAction(action); |
| |
| action = createAnAction( |
| DiagramUIResources.ActivityDiagram_SyncBar_text, synchBarCreationFactory, |
| CREATE_SYNC_BAR, DiagramUIResources.ActivityDiagram_SyncBar_tooltip |
| , AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "syncbar_pal16.gif")); //$NON-NLS-1$ |
| getActionRegistry().registerAction(action); |
| |
| action = createAnAction( |
| DiagramUIResources.ActivityDiagram_DecisionNode_text, decisionNodeCreationFactory, |
| CREATE_DECISION_BAR, |
| DiagramUIResources.ActivityDiagram_DecisionNode_tooltip |
| , AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "decnode_pal16.gif")); //$NON-NLS-1$ |
| getActionRegistry().registerAction(action); |
| |
| action = createAnAction( |
| DiagramUIResources.ActivityDiagram_EndNode_text, endNodeCreationFactory, |
| CREATE_END_NODE, DiagramUIResources.ActivityDiagram_EndNode_tooltip |
| , AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "endnode_pal16.gif")); //$NON-NLS-1$ |
| getActionRegistry().registerAction(action); |
| |
| action = createAnAction( |
| DiagramUIResources.ActivityDiagram_Activity_text, activityNodeCreationFactory, |
| CREATE_ACTIVITY, |
| DiagramUIResources.ActivityDiagram_Activity_tooltip |
| , AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "activity16.gif")); //$NON-NLS-1$ |
| getActionRegistry().registerAction(action); |
| |
| action = createAnAction( |
| DiagramUIResources.ActivityDiagram_Iteration_text, iterationNodeCreationFactory, |
| CREATE_ITERATION, |
| DiagramUIResources.ActivityDiagram_Iteration_tooltip |
| , AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "Iteration16.gif")); //$NON-NLS-1$ |
| getActionRegistry().registerAction(action); |
| |
| action = createAnAction( |
| DiagramUIResources.ActivityDiagram_Phase_text, phaseNodeCreationFactory, |
| CREATE_PHASE, DiagramUIResources.ActivityDiagram_Phase_tooltip |
| , AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "Phase16.gif")); //$NON-NLS-1$ |
| getActionRegistry().registerAction(action); |
| |
| action = createAnAction( |
| DiagramUIResources.AbstractDiagram_TaskDescriptor_text, taskDescriptorNodeCreationFactory, |
| CREATE_TASK_DESCRIPTOR, |
| DiagramUIResources.AbstractDiagram_TaskDescriptor_tooltip |
| , AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "TaskDescriptor.gif")); //$NON-NLS-1$ |
| getActionRegistry().registerAction(action); |
| } |
| |
| /** |
| * @param event |
| */ |
| protected void handleDoubleClick(Event event) { |
| List editParts = getGraphicalViewer().getSelectedEditParts(); |
| |
| // do nothing if 0 or more than 1 edit parts are selected |
| // |
| if (editParts.size() != 1) |
| return; |
| |
| EditPart editPart = (EditPart) editParts.get(0); |
| WorkBreakdownElementNode node = null; |
| if (editPart.getModel() instanceof WorkBreakdownElementNode |
| && (node = (WorkBreakdownElementNode) editPart.getModel()).getObject() instanceof Activity) { |
| // open activity diagram of the selected activity in a new editor |
| // |
| try { |
| try { |
| BreakdownElementEditorInput editorInput = (BreakdownElementEditorInput) getEditorInput(); |
| Object object = node.isReadOnly() ? node.getWrapper() : node.getObject(); |
| IEditorInput input = new EditorInput(object, editorInput.getSuppression()); |
| IEditorPart parent = getSite().getPage().getActiveEditor(); |
| IEditorPart part = getSite().getPage().openEditor(input, |
| ProcessEditor.WORKFLOW_EDITOR_ID); |
| if (part instanceof AbstractDiagramEditor) { |
| AbstractDiagramEditor editor = (AbstractDiagramEditor) part; |
| editor.setParentEditor(parent); |
| } |
| } catch (PartInitException exception) { |
| exception.printStackTrace(); |
| } |
| } catch (RuntimeException e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| protected PaletteContainer createControlGroup(PaletteRoot root) { |
| initializeCreationFactories(); |
| |
| PaletteGroup controlGroup = new PaletteGroup("Control Group"); //$NON-NLS-1$ |
| |
| List entries = new ArrayList(); |
| |
| ToolEntry tool = new PanningSelectionToolEntry(DiagramUIResources.AbstractDiagram_Select_text, |
| DiagramUIResources.AbstractDiagram_Select_tooltip |
| ); |
| tool.setSmallIcon(AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "select_pal16.gif")); //$NON-NLS-1$ |
| tool.setLargeIcon(AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "select_pal24.gif")); //$NON-NLS-1$ |
| entries.add(tool); |
| root.setDefaultEntry(tool); |
| |
| tool = new MarqueeToolEntry(); |
| tool.setSmallIcon(AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "marq_pal16.gif")); //$NON-NLS-1$ |
| tool.setLargeIcon(AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "marq_pal24.gif")); //$NON-NLS-1$ |
| entries.add(tool); |
| |
| tool = new ConnectionCreationToolEntry(DiagramUIResources.AbstractDiagram_Link_text, |
| DiagramUIResources.AbstractDiagram_Link_tooltip, |
| null, AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "link_pal16.gif"), //$NON-NLS-1$ |
| AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "link_pal24.gif")//$NON-NLS-1$ |
| ); |
| entries.add(tool); |
| |
| CombinedTemplateCreationEntry combined = new CombinedTemplateCreationEntry( |
| DiagramUIResources.ActivityDiagram_StartNode_text, |
| DiagramUIResources.ActivityDiagram_StartNode_tooltip, |
| TemplateConstants.START_NODE, startNodeCreationFactory, |
| AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "stnode_pal16.gif"), //$NON-NLS-1$ |
| AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "stnode_pal24.gif")//$NON-NLS-1$ |
| ); |
| entries.add(combined); |
| |
| combined = new CombinedTemplateCreationEntry( |
| DiagramUIResources.AbstractDiagram_FreeText_text, |
| DiagramUIResources.AbstractDiagram_FreeText_tooltip, |
| TemplateConstants.FREE_TEXT, freeTxtNodeCreationFactory, |
| AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "freetext_pal16.gif"), //$NON-NLS-1$ |
| AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "freetext_pal24.gif")//$NON-NLS-1$ |
| ); |
| entries.add(combined); |
| |
| combined = new CombinedTemplateCreationEntry( |
| DiagramUIResources.ActivityDiagram_SyncBar_text, |
| DiagramUIResources.ActivityDiagram_SyncBar_tooltip, |
| TemplateConstants.SYNCH_BAR, synchBarCreationFactory, |
| AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "syncbar_pal16.gif"), //$NON-NLS-1$ |
| AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "syncbar_pal24.gif")//$NON-NLS-1$ |
| ); |
| entries.add(combined); |
| |
| combined = new CombinedTemplateCreationEntry( |
| DiagramUIResources.ActivityDiagram_DecisionNode_text, |
| DiagramUIResources.ActivityDiagram_DecisionNode_tooltip, |
| TemplateConstants.DECISION_NODE, decisionNodeCreationFactory, |
| AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "decnode_pal16.gif"), //$NON-NLS-1$ |
| AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "decnode_pal24.gif")//$NON-NLS-1$ |
| ); |
| entries.add(combined); |
| |
| combined = new CombinedTemplateCreationEntry( |
| DiagramUIResources.ActivityDiagram_EndNode_text, |
| DiagramUIResources.ActivityDiagram_EndNode_tooltip, |
| TemplateConstants.END_NODE, endNodeCreationFactory, |
| AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "endnode_pal16.gif"), //$NON-NLS-1$ |
| AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "endnode_pal24.gif")//$NON-NLS-1$ |
| ); |
| entries.add(combined); |
| |
| PaletteSeparator sep = new PaletteSeparator( |
| GraphicalWorkflowEditor.class.getName() + "sep1"); //$NON-NLS-1$ |
| sep |
| .setUserModificationPermission(PaletteEntry.PERMISSION_NO_MODIFICATION); |
| entries.add(sep); |
| |
| combined = new CombinedTemplateCreationEntry( |
| DiagramUIResources.ActivityDiagram_Activity_text, |
| DiagramUIResources.ActivityDiagram_Activity_tooltip, |
| TemplateConstants.ACTIVITY, activityNodeCreationFactory, |
| AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "activity16.gif"), //$NON-NLS-1$ |
| AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "activity24.gif")//$NON-NLS-1$ |
| ); |
| entries.add(combined); |
| |
| combined = new CombinedTemplateCreationEntry( |
| DiagramUIResources.ActivityDiagram_Iteration_text, |
| DiagramUIResources.ActivityDiagram_Iteration_tooltip, |
| TemplateConstants.ITERATION, iterationNodeCreationFactory, |
| AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "Iteration16.gif"), //$NON-NLS-1$ |
| AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "activity24.gif")//$NON-NLS-1$ |
| ); |
| entries.add(combined); |
| |
| combined = new CombinedTemplateCreationEntry(DiagramUIResources.ActivityDiagram_Phase_text, |
| DiagramUIResources.ActivityDiagram_Phase_tooltip, |
| TemplateConstants.PHASE, phaseNodeCreationFactory, |
| AuthoringUIPlugin.getDefault() |
| .getImageDescriptor("Phase16.gif"), //$NON-NLS-1$ |
| AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "activity24.gif")//$NON-NLS-1$ |
| ); |
| entries.add(combined); |
| |
| combined = new CombinedTemplateCreationEntry( |
| DiagramUIResources.AbstractDiagram_TaskDescriptor_text, |
| DiagramUIResources.AbstractDiagram_TaskDescriptor_tooltip, |
| TemplateConstants.TASK_DESCRIPTOR, |
| taskDescriptorNodeCreationFactory, AuthoringUIPlugin |
| .getDefault().getImageDescriptor("TaskDescriptor.gif"), //$NON-NLS-1$ |
| AuthoringUIPlugin.getDefault().getImageDescriptor( |
| "activity24.gif")//$NON-NLS-1$ |
| ); |
| entries.add(combined); |
| |
| controlGroup.addAll(entries); |
| return controlGroup; |
| } |
| |
| protected String getPartNamePrefix() { |
| MethodElement e = ((MethodElementEditorInput) getEditorInput()) |
| .getMethodElement(); |
| if (e instanceof Activity) { |
| return getTypeName((Activity) e) + ": "; //$NON-NLS-1$ |
| } |
| return ""; //$NON-NLS-1$ |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.epf.authoring.ui.editors.AbstractDiagramEditor#createDiagramEditPart() |
| */ |
| protected EditPart createDiagramEditPart() { |
| ActivityDiagramEditPart adEditPart = new ActivityDiagramEditPart(ModelFactory.eINSTANCE |
| .createActivityDiagram()); |
| adEditPart.markDirty(true); |
| return adEditPart; |
| } |
| |
| // protected EditPart createEditPart(Object e) { |
| // ActivityDiagram diagram = ModelFactory.eINSTANCE |
| // .createActivityDiagram(); |
| // diagram.setObject(e); |
| // EditPart part = new ActivityDiagramEditPart(diagram); |
| // part.setModel(diagram); |
| // diagram.addConsumer(this); |
| // return part; |
| // } |
| |
| private static String getTypeName(Activity act) { |
| if (act instanceof DeliveryProcess) { |
| return DiagramUIResources.ActvitivityDiagram_DeliveryProcess_text; |
| } else if (act instanceof CapabilityPattern) { |
| return DiagramUIResources.ActvitivityDiagram_CapabilityPattern_text; |
| } else if (act instanceof Phase) { |
| return DiagramUIResources.ActvitivityDiagram_Phase_tex; |
| } else if (act instanceof Iteration) { |
| return DiagramUIResources.ActvitivityDiagram_Iteration_text; |
| } |
| return DiagramUIResources.ActvitivityDiagram_Activity_text; |
| } |
| |
| // private static Image getTypeImage(Object object) { |
| // IItemLabelProvider adapter = (IItemLabelProvider) TngAdapterFactory.INSTANCE |
| // .getWBS_ComposedAdapterFactory().adapt(object, |
| // IItemLabelProvider.class); |
| // if (adapter != null) { |
| // // return new Image(Display.getCurrent(), |
| // // ((URL)adapter.getImage(object)).getContent()); |
| // } |
| // return null; |
| // } |
| |
| /** |
| * An editor input for grahical workflow editor |
| */ |
| public static class EditorInput extends BreakdownElementEditorInput { |
| |
| /** |
| * @param e |
| */ |
| public EditorInput(Object e, Suppression suppression) { |
| super(e, suppression); |
| } |
| |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see org.eclipse.epf.authoring.ui.editors.AbstractDiagramEditor#createEditPartFactory() |
| */ |
| protected EditPartFactory createEditPartFactory() { |
| return new ActivityDiagramEditPartFactory(); |
| } |
| |
| protected String getDiagramType() { |
| return ResourceHelper.DIAGRAM_TYPE_WORKFLOW; |
| } |
| |
| } |