blob: e68a3510d03cbba7b3d1db21e88bc36d7cef040b [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.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;
}
}