use of com.centurylink.mdw.plugin.designer.model.Activity in project mdw-designer by CenturyLinkCloud.
the class ArtifactEditor method openTempFile.
public void openTempFile(IProgressMonitor monitor) {
tempFileEditor = null;
try {
IFolder folder = getTempFolder();
if (!folder.exists())
PluginUtil.createFoldersAsNeeded(getElement().getProject().getSourceProject(), folder, monitor);
final IFile file = getTempFile(folder);
final IWorkbenchPage activePage = MdwPlugin.getActivePage();
if (file.exists()) {
IEditorInput editorInput = new FileEditorInput(file);
tempFileEditor = activePage.findEditor(editorInput);
if (tempFileEditor == null) {
// we'll refresh from attribute value
new TempFileRemover(folder, file).remove(monitor);
} else {
// activate existing editor
tempFileEditor = IDE.openEditor(activePage, file, true);
}
}
if (tempFileEditor == null) {
// either the file didn't exist or it was not currently open,
// set from value
byte[] value = valueProvider.getArtifactContent();
if (value == null)
value = "".getBytes();
InputStream source = new ByteArrayInputStream(value);
file.create(source, true, monitor);
if (getElement().isReadOnly()) {
ResourceAttributes resourceAttrs = file.getResourceAttributes();
resourceAttrs.setReadOnly(true);
file.setResourceAttributes(resourceAttrs);
}
final Display display = Display.getCurrent();
if (display != null) {
display.syncExec(new Runnable() {
public void run() {
try {
if (!valueProvider.beforeTempFileOpened())
return;
tempFileEditor = IDE.openEditor(activePage, file, true);
if (tempFileEditor != null) {
// listen for artifact made dirty and
// propagate to process canvas
tempFileEditor.addPropertyListener(new IPropertyListener() {
public void propertyChanged(Object source, int propId) {
if (source instanceof EditorPart && propId == IWorkbenchPartConstants.PROP_DIRTY) {
if (((EditorPart) source).isDirty())
// process
fireValueChanged(null, true);
// editor
// should
// show
// dirty
}
}
});
// listen for artifact resource changes
ArtifactResourceListener resourceListener = new ArtifactResourceListener(getElement(), valueProvider, file);
getProject().addArtifactResourceListener(resourceListener);
// listen for workbench closed to prevent
// re-opening editor when the workbench is
// next opened
PlatformUI.getWorkbench().addWorkbenchListener(new ArtifactEditorWorkbenchListener(tempFileEditor));
}
valueProvider.afterTempFileOpened(tempFileEditor);
} catch (PartInitException ex) {
PluginMessages.log(ex);
}
}
});
}
// register to listen to process editor events
WorkflowProcess processVersion = null;
if (getElement() instanceof Activity)
processVersion = ((Activity) getElement()).getProcess();
else if (getElement() instanceof WorkflowProcess)
processVersion = (WorkflowProcess) getElement();
if (processVersion != null) {
IEditorPart processEditor = activePage.findEditor(processVersion);
if (processEditor != null && tempFileEditor != null)
((ProcessEditor) processEditor).addActiveScriptEditor(tempFileEditor);
}
}
} catch (Exception ex) {
PluginMessages.uiError(ex, "Open Temp File", getElement().getProject());
}
}
use of com.centurylink.mdw.plugin.designer.model.Activity in project mdw-designer by CenturyLinkCloud.
the class EventsSection method select.
@Override
public boolean select(Object toTest) {
if (toTest == null || !(toTest instanceof Activity))
return false;
Activity activity = (Activity) toTest;
if (activity.isForProcessInstance())
return false;
PropertyEditorList propEditorList = new PropertyEditorList(activity);
for (PropertyEditor propertyEditor : propEditorList) {
// return true if any widgets specify EVENTS section
if (PropertyEditor.SECTION_EVENTS.equals(propertyEditor.getSection()))
return true;
}
return false;
}
use of com.centurylink.mdw.plugin.designer.model.Activity in project mdw-designer by CenturyLinkCloud.
the class ActivityLaunchShortcut method launch.
@Override
public void launch(ISelection selection, String mode) {
Object firstElement = ((StructuredSelection) selection).getFirstElement();
if (firstElement instanceof Activity) {
Activity activity = (Activity) firstElement;
try {
boolean prevEnablement = disableBuildBeforeLaunch();
performLaunch(activity, mode);
setBuildBeforeLaunch(prevEnablement);
} catch (Exception ex) {
PluginMessages.uiError(ex, "Activity Launch", activity.getProject());
}
}
}
use of com.centurylink.mdw.plugin.designer.model.Activity in project mdw-designer by CenturyLinkCloud.
the class ProcessCanvasWrapper method eventDispatched.
/**
* Handles Swing events (running on the AWT UI thread).
*/
public void eventDispatched(AWTEvent event) {
// check for relevance and consistency
if (isInstance()) {
if (getProcessInstancePage() == null || !event.getSource().equals(getProcessInstancePage().canvas) || getProcessInstancePage().getProcess() == null)
return;
} else {
if (!event.getSource().equals(getFlowchartPage().canvas) || getFlowchartPage().getProcess() == null)
return;
}
if (event.getID() == MouseEvent.MOUSE_RELEASED) {
final MouseEvent mouseEvent = (MouseEvent) event;
if (mouseEvent.isPopupTrigger() || (PluginUtil.isMac() && mouseEvent.getButton() == 3)) {
getDisplay().asyncExec(new Runnable() {
public void run() {
final Menu menu = buildPopupMenu(mouseEvent.getX(), mouseEvent.getY());
if (menu != null) {
getEmbeddedSwingComposite().setMenu(menu);
menu.setVisible(true);
}
}
});
mouseEvent.consume();
}
if (!isInstance() && (getFlowchartPage().canvas.getAnchor() == -2 || designerCanvasSelection instanceof Note))
// no in-place editing unless specified
mouseEvent.consume();
} else if (event.getID() == MouseEvent.MOUSE_CLICKED) {
// don't propagate double-click events
MouseEvent mouseEvent = (MouseEvent) event;
if (mouseEvent.getClickCount() > 1)
mouseEvent.consume();
} else if (event.getID() == MouseEvent.MOUSE_DRAGGED) {
MouseEvent mouseEvent = (MouseEvent) event;
// ignore drag events for instances and read-only
if (isInstance() || (process.isReadOnly() && flowchartPage.canvas.getMarquee() == null))
mouseEvent.consume();
} else if (event.getID() == MouseEvent.MOUSE_PRESSED) {
// set the current selection
MouseEvent mouseEvent = (MouseEvent) event;
final boolean doubleClick = mouseEvent.getClickCount() > 1;
if (doubleClick)
// don't select twice
mouseEvent.consume();
else
handleSelection(mouseEvent);
if (!isInstance() && getFlowchartPage().canvas.getAnchor() == -2)
// no in-place editing
mouseEvent.consume();
final boolean isSubProcessActivity = designerCanvasSelection instanceof Activity && ((Activity) designerCanvasSelection).isSubProcessInvoke();
final boolean isScriptActivity = designerCanvasSelection instanceof Activity && ((Activity) designerCanvasSelection).isScript();
getDisplay().asyncExec(new Runnable() {
public void run() {
setEditorFocus();
getSelectionProvider().setSelection(designerCanvasSelection);
if (doubleClick) {
showPropertiesView();
if (!isInstance() && MdwPlugin.getDefault().getPreferenceStore().getBoolean(PreferenceConstants.PREFS_DOUBLE_CLICK_OPENS_SUBPROCESSES_AND_SCRIPTS)) {
if (isSubProcessActivity) {
Activity subProcessActivity = (Activity) designerCanvasSelection;
openSubProcess(subProcessActivity);
} else if (isScriptActivity) {
Activity scriptActivity = (Activity) designerCanvasSelection;
openScript(scriptActivity);
}
}
}
}
});
} else if (event.getID() == KeyEvent.KEY_PRESSED) {
KeyEvent keyEvent = (KeyEvent) event;
int keycode = keyEvent.getKeyCode();
if (keycode != KeyEvent.VK_DELETE && keycode != KeyEvent.VK_UP && keycode != KeyEvent.VK_DOWN && keycode != KeyEvent.VK_LEFT && keycode != KeyEvent.VK_RIGHT) {
keyEvent.consume();
}
} else if (event.getID() == KeyEvent.KEY_RELEASED) {
KeyEvent keyEvent = (KeyEvent) event;
// override ctrl-x since canvas uses non-standard mnemonics
if (keyEvent.isControlDown() && keyEvent.getKeyCode() == KeyEvent.VK_X) {
cutSelection();
keyEvent.consume();
}
}
if (!isInstance()) {
// check for effect on dirtiness
boolean newDirty = getFlowchartPage().getProcess().dirtyLevel > 0;
if (newDirty != dirty) {
dirty = newDirty;
getDisplay().asyncExec(new Runnable() {
public void run() {
fireDirtyStateChanged(dirty);
}
});
}
}
}
use of com.centurylink.mdw.plugin.designer.model.Activity in project mdw-designer by CenturyLinkCloud.
the class ProcessCanvasWrapper method buildPopupMenu.
/**
* Needs to run on the SWT UI thread.
*/
private Menu buildPopupMenu(final int x, final int y) {
if (popupMenu != null)
popupMenu.dispose();
popupMenu = new Menu(getParent().getShell(), SWT.POP_UP);
if (!isInstance()) {
if (designerCanvasSelection instanceof WorkflowProcess) {
if (process.getPackage() != null && process.isUserAuthorized(UserRoleVO.ASSET_DESIGN)) {
// save as
MenuItem saveAsItem = new MenuItem(popupMenu, SWT.PUSH);
saveAsItem.setText("Save as...");
ImageDescriptor propsImageDescForSave = MdwPlugin.getImageDescriptor("icons/save.gif");
saveAsItem.setImage(propsImageDescForSave.createImage());
saveAsItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
saveProcessAs();
}
});
}
MenuItem exportAsItem = new MenuItem(popupMenu, SWT.PUSH);
exportAsItem.setText("Export as...");
ImageDescriptor exportAsDesc = MdwPlugin.getImageDescriptor("icons/export_as.gif");
exportAsItem.setImage(exportAsDesc.createImage());
exportAsItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
exportAs(ProcessCanvasWrapper.this.getDisplay().getActiveShell());
}
});
}
if (!process.isReadOnly()) {
if (designerCanvasSelection instanceof WorkflowProcess) {
if (process.isInRuleSet()) {
// notes
MenuItem noteItem = new MenuItem(popupMenu, SWT.PUSH);
noteItem.setText("Add Note");
ImageDescriptor noteImageDesc = MdwPlugin.getImageDescriptor(ICON_DOC_GIF);
noteItem.setImage(noteImageDesc.createImage());
noteItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
addNote(x, y);
}
});
}
// paste
MenuItem pasteItem = new MenuItem(popupMenu, SWT.PUSH);
pasteItem.setText("Paste\tCtrl+V");
ImageDescriptor pasteImageDesc = MdwPlugin.getImageDescriptor("icons/paste.gif");
pasteItem.setImage(pasteImageDesc.createImage());
pasteItem.setEnabled(GraphClipboard.getInstance().get() != null);
pasteItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
pasteSelection();
}
});
} else {
// cut
MenuItem cutItem = new MenuItem(popupMenu, SWT.PUSH);
cutItem.setText("Cut\tCtrl+X");
ImageDescriptor cutImageDesc = MdwPlugin.getImageDescriptor("icons/cut.gif");
cutItem.setImage(cutImageDesc.createImage());
cutItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
cutSelection();
}
});
}
}
if (!(designerCanvasSelection instanceof WorkflowProcess)) {
// copy
MenuItem copyItem = new MenuItem(popupMenu, SWT.PUSH);
copyItem.setText("Copy\tCtrl+C");
ImageDescriptor copyImageDesc = MdwPlugin.getImageDescriptor("icons/copy.gif");
copyItem.setImage(copyImageDesc.createImage());
copyItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
copySelection();
}
});
// delete
if (!process.isReadOnly()) {
MenuItem deleteItem = new MenuItem(popupMenu, SWT.PUSH);
deleteItem.setText("Delete\tDel");
ImageDescriptor deleteImageDesc = MdwPlugin.getImageDescriptor("icons/delete.gif");
deleteItem.setImage(deleteImageDesc.createImage());
deleteItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
deleteSelection();
}
});
}
}
}
// properties
MenuItem propsItem = new MenuItem(popupMenu, SWT.PUSH);
propsItem.setText("Show Properties");
ImageDescriptor propsImageDesc = MdwPlugin.getImageDescriptor("icons/properties.gif");
propsItem.setImage(propsImageDesc.createImage());
propsItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
showPropertiesView();
}
});
// documentation
if (!isInstance()) {
MenuItem docsItem = new MenuItem(popupMenu, SWT.PUSH);
docsItem.setText("Documentation");
ImageDescriptor docsImageDesc = MdwPlugin.getImageDescriptor("icons/word.gif");
docsItem.setImage(docsImageDesc.createImage());
docsItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
openDocumentation();
}
});
}
// process definition xml
if (!isInstance() && (designerCanvasSelection instanceof WorkflowProcess) && getProcess().isInRuleSet()) {
MenuItem defXmlItem = new MenuItem(popupMenu, SWT.PUSH);
defXmlItem.setText("Definition Doc");
ImageDescriptor docsImageDesc = MdwPlugin.getImageDescriptor(ICON_DOC_GIF);
defXmlItem.setImage(docsImageDesc.createImage());
defXmlItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
openDefinitionXml();
}
});
}
// open subprocess
boolean isSubProcessActivity = designerCanvasSelection instanceof Activity && ((Activity) designerCanvasSelection).isSubProcessInvoke();
if (!isInstance() && isSubProcessActivity) {
final Activity subProcessActivity = (Activity) designerCanvasSelection;
if (!subProcessActivity.isHeterogeneousSubProcInvoke()) {
MenuItem subProcItem = new MenuItem(popupMenu, SWT.PUSH);
subProcItem.setText(OPEN_SUBPROCESS);
ImageDescriptor subProcImageDesc = MdwPlugin.getImageDescriptor("icons/designer.gif");
subProcItem.setImage(subProcImageDesc.createImage());
subProcItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
openSubProcess(subProcessActivity);
}
});
}
}
// edit script
boolean isScript = designerCanvasSelection instanceof Activity && ((Activity) designerCanvasSelection).isScript();
if (!isInstance() && isScript) {
final Activity scriptActivity = (Activity) designerCanvasSelection;
MenuItem editScriptItem = new MenuItem(popupMenu, SWT.PUSH);
String artifactTitle = "Script";
if (scriptActivity.isRule())
artifactTitle = "Rule";
else if (TransformEditorValueProvider.isTransformActivity(scriptActivity))
artifactTitle = "Transform";
else if (scriptActivity.getAttribute("Rule") != null)
artifactTitle += " *";
if (process.isReadOnly())
editScriptItem.setText("View " + artifactTitle);
else
editScriptItem.setText("Edit " + artifactTitle);
ImageDescriptor scriptImageDesc = MdwPlugin.getImageDescriptor("icons/script.gif");
editScriptItem.setImage(scriptImageDesc.createImage());
editScriptItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
openScript(scriptActivity);
}
});
}
// edit java
boolean isJava = designerCanvasSelection instanceof Activity && ((Activity) designerCanvasSelection).isDynamicJava();
if (!isInstance() && isJava) {
final Activity javaActivity = (Activity) designerCanvasSelection;
MenuItem editJavaItem = new MenuItem(popupMenu, SWT.PUSH);
String artifactTitle = "Java";
if (process.isReadOnly())
editJavaItem.setText("View " + artifactTitle);
else
editJavaItem.setText("Edit " + artifactTitle);
ImageDescriptor javaImageDesc = MdwPlugin.getImageDescriptor("icons/java.gif");
editJavaItem.setImage(javaImageDesc.createImage());
editJavaItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
openJava(javaActivity);
}
});
}
// open task instance or process instance
if (isInstance() && designerCanvasSelection instanceof Activity) {
final Activity activity = (Activity) designerCanvasSelection;
if (activity.isManualTask()) {
if (activity.getTaskInstances() != null && !activity.getTaskInstances().isEmpty()) {
MenuItem viewTaskItem = new MenuItem(popupMenu, SWT.PUSH);
viewTaskItem.setText("View Task");
viewTaskItem.setImage(MdwPlugin.getImageDescriptor("icons/taskmgr.gif").createImage());
viewTaskItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
TaskInstanceVO taskInstanceVO = null;
for (TaskInstanceVO taskInstance : activity.getTaskInstances()) {
if (taskInstanceVO == null || taskInstance.getTaskInstanceId() > taskInstanceVO.getTaskInstanceId())
taskInstanceVO = taskInstance;
}
if (taskInstanceVO != null) {
boolean assigned = activity.getProject().getUser().getUsername().equals(taskInstanceVO.getTaskClaimUserCuid());
String taskInstParams = activity.getProject().getTaskInstancePath(taskInstanceVO.getTaskInstanceId(), assigned);
WorkflowPackage packageVersion = activity.getPackage();
String packageParam = packageVersion.isDefaultPackage() ? "" : "&packageName=" + packageVersion.getName();
WebApp webapp = activity.getProject().checkRequiredVersion(5, 5) ? WebApp.MdwHub : WebApp.TaskManager;
WebLaunchActions.getLaunchAction(activity.getProject(), webapp).launch(activity.getProject(), taskInstParams + packageParam);
}
}
});
}
} else if (activity.isSubProcessInvoke() && activity.getSubProcessInstances() != null && !activity.getSubProcessInstances().isEmpty() && activity.getSubProcessInstances().size() < 50) {
MenuItem subMenuItem = new MenuItem(popupMenu, SWT.CASCADE);
subMenuItem.setText("SubProcesses");
subMenuItem.setImage(MdwPlugin.getImageDescriptor("icons/processfolder.gif").createImage());
Menu subMenu = new Menu(subMenuItem);
subMenuItem.setMenu(subMenu);
for (final ProcessInstanceVO subProcInst : activity.getSubProcessInstances()) {
MenuItem subProcItem = new MenuItem(subMenu, SWT.PUSH);
subProcItem.setText("Instance " + subProcInst.getId());
subProcItem.setImage(MdwPlugin.getImageDescriptor(ICON_PROCESS_GIF).createImage());
subProcItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
openProcessInstance(subProcInst);
}
});
}
}
}
// launch process, lock, show instances, find calling processes
if (!isInstance() && designerCanvasSelection instanceof WorkflowProcess) {
if (designerCanvasSelection.isUserAuthorized(UserRoleVO.PROCESS_EXECUTION)) {
MenuItem runItem = new MenuItem(popupMenu, SWT.PUSH);
runItem.setText("Run...");
ImageDescriptor runImageDesc = MdwPlugin.getImageDescriptor(ICON_RUN_GIF);
runItem.setImage(runImageDesc.createImage());
runItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
launchProcess((WorkflowProcess) designerCanvasSelection, false);
}
});
MenuItem runPageItem = new MenuItem(popupMenu, SWT.PUSH);
runPageItem.setText("Run Start Page...");
ImageDescriptor runPageImageDesc = MdwPlugin.getImageDescriptor(ICON_RUN_GIF);
runPageItem.setImage(runPageImageDesc.createImage());
runPageItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
launchProcessPage((WorkflowProcess) designerCanvasSelection);
}
});
if (!MdwPlugin.isRcp()) {
MenuItem debugItem = new MenuItem(popupMenu, SWT.PUSH);
debugItem.setText("Debug...");
ImageDescriptor debugImageDesc = MdwPlugin.getImageDescriptor("icons/debug.gif");
debugItem.setImage(debugImageDesc.createImage());
debugItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
launchProcess((WorkflowProcess) designerCanvasSelection, true);
}
});
}
}
if (isLockAllowed()) {
MenuItem lockItem = new MenuItem(popupMenu, SWT.PUSH);
lockItem.setText(getProcess().isLockedToUser() ? "Unlock Process" : "Lock Process");
ImageDescriptor lockImageDesc = MdwPlugin.getImageDescriptor("icons/lock.gif");
lockItem.setImage(lockImageDesc.createImage());
lockItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
toggleProcessLock(!((WorkflowProcess) designerCanvasSelection).isLockedToUser());
}
});
}
if (getProcess().getProject().isPureMdw52()) {
MenuItem callersItem = new MenuItem(popupMenu, SWT.PUSH);
callersItem.setText("Find Calling Processes");
ImageDescriptor callersImageDesc = MdwPlugin.getImageDescriptor(ICON_PROCESS_GIF);
callersItem.setImage(callersImageDesc.createImage());
callersItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
actionHandler.findCallers(designerCanvasSelection);
}
});
if (getProject().isFilePersist()) {
MenuItem hierarchyItem = new MenuItem(popupMenu, SWT.PUSH);
hierarchyItem.setText("Process Hierarchy");
ImageDescriptor hierarchyImageDesc = MdwPlugin.getImageDescriptor("icons/hierarchy.gif");
hierarchyItem.setImage(hierarchyImageDesc.createImage());
hierarchyItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
actionHandler.showHierarchy(designerCanvasSelection);
}
});
}
}
MenuItem instancesItem = new MenuItem(popupMenu, SWT.PUSH);
instancesItem.setText("View Instances");
ImageDescriptor instancesImageDesc = MdwPlugin.getImageDescriptor("icons/list.gif");
instancesItem.setImage(instancesImageDesc.createImage());
instancesItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
showProcessInstances((WorkflowProcess) designerCanvasSelection);
}
});
}
// launch activity
if (!isInstance() && designerCanvasSelection instanceof Activity && ((Activity) designerCanvasSelection).getProcess().isUserAuthorized(UserRoleVO.PROCESS_EXECUTION)) {
MenuItem runItem = new MenuItem(popupMenu, SWT.PUSH);
runItem.setText("Run from Here...");
ImageDescriptor runImageDesc = MdwPlugin.getImageDescriptor(ICON_RUN_GIF);
runItem.setImage(runImageDesc.createImage());
runItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
launchProcess((Activity) designerCanvasSelection, false);
}
});
if (!MdwPlugin.isRcp()) {
MenuItem debugItem = new MenuItem(popupMenu, SWT.PUSH);
debugItem.setText("Debug from Here...");
ImageDescriptor debugImageDesc = MdwPlugin.getImageDescriptor("icons/debug.gif");
debugItem.setImage(debugImageDesc.createImage());
debugItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
launchProcess((Activity) designerCanvasSelection, true);
}
});
}
}
// refresh
if (designerCanvasSelection instanceof WorkflowProcess) {
MenuItem refreshItem = new MenuItem(popupMenu, SWT.PUSH);
refreshItem.setText("Refresh");
ImageDescriptor refreshImageDesc = MdwPlugin.getImageDescriptor("icons/refresh.gif");
refreshItem.setImage(refreshImageDesc.createImage());
refreshItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
refresh();
}
});
// open in hub
if (getProject().checkRequiredVersion(6)) {
MenuItem hubItem = new MenuItem(popupMenu, SWT.PUSH);
hubItem.setText("Open in MDWHub");
ImageDescriptor hubImageDesc = MdwPlugin.getImageDescriptor("icons/webtools.gif");
hubItem.setImage(hubImageDesc.createImage());
hubItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
String resourcePath;
if (isInstance())
resourcePath = "#/workflow/processes/" + getProcess().getProcessInstance().getId();
else
resourcePath = "#/workflow/definitions/" + getProcess().getPackage().getName() + "/" + getProcess().getName();
WebLaunchActions.getLaunchAction(getProject(), WebApp.MdwHub).launch(getProject(), resourcePath);
}
});
}
}
// process definition and open calling process instance
if (isInstance() && designerCanvasSelection instanceof WorkflowProcess) {
final WorkflowProcess processInstVersion = (WorkflowProcess) designerCanvasSelection;
MenuItem procDefItem = new MenuItem(popupMenu, SWT.PUSH);
procDefItem.setText("Process Definition");
ImageDescriptor procDefImageDesc = MdwPlugin.getImageDescriptor(ICON_PROCESS_GIF);
procDefItem.setImage(procDefImageDesc.createImage());
procDefItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
openProcessDefinition(new WorkflowProcess(processInstVersion));
}
});
if (OwnerType.PROCESS_INSTANCE.equals(processInstVersion.getProcessInstance().getOwner())) {
MenuItem callingInstanceItem = new MenuItem(popupMenu, SWT.PUSH);
callingInstanceItem.setText("Calling Process Instance");
ImageDescriptor callerImageDesc = MdwPlugin.getImageDescriptor("icons/launch.gif");
callingInstanceItem.setImage(callerImageDesc.createImage());
callingInstanceItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
openCallingInstance();
}
});
}
MenuItem instanceHierarchyItem = new MenuItem(popupMenu, SWT.PUSH);
instanceHierarchyItem.setText("Instance Hierarchy");
ImageDescriptor hierarchyImageDesc = MdwPlugin.getImageDescriptor("icons/hierarchy.gif");
instanceHierarchyItem.setImage(hierarchyImageDesc.createImage());
instanceHierarchyItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
actionHandler.showHierarchy(designerCanvasSelection);
}
});
if (OwnerType.ERROR.equals(processInstVersion.getProcessInstance().getOwner())) {
MenuItem errorTriggerItem = new MenuItem(popupMenu, SWT.PUSH);
errorTriggerItem.setText("Triggering Process");
ImageDescriptor errorImageDesc = MdwPlugin.getImageDescriptor("icons/error.gif");
errorTriggerItem.setImage(errorImageDesc.createImage());
errorTriggerItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
openTriggeringInstance();
}
});
}
}
// retry and skip
if (isInstance() && designerCanvasSelection instanceof Activity && ((Activity) designerCanvasSelection).hasInstanceInfo() && ((Activity) designerCanvasSelection).getProcess().isUserAuthorized(UserRoleVO.PROCESS_EXECUTION)) {
MenuItem retryItem = new MenuItem(popupMenu, SWT.PUSH);
retryItem.setText("Retry");
ImageDescriptor retryImageDesc = MdwPlugin.getImageDescriptor("icons/retry.gif");
retryItem.setImage(retryImageDesc.createImage());
retryItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
PanelBusyIndicator pbi = new PanelBusyIndicator(getDisplay(), getCanvas());
try {
pbi.busyWhile(new Runnable() {
public void run() {
Activity activity = (Activity) designerCanvasSelection;
Shell shell = MdwPlugin.getActiveWorkbenchWindow().getShell();
ActivityInstanceVO actInstVO = activity.getInstances().get(activity.getInstances().size() - 1);
ActivityInstanceDialog actInstDlg = new ActivityInstanceDialog(shell, activity, actInstVO, Mode.RETRY);
actInstDlg.open();
}
});
} catch (InvocationTargetException ex) {
PluginMessages.uiError(ex, "Retry Activity", getProject());
}
}
});
MenuItem skipItem = new MenuItem(popupMenu, SWT.PUSH);
skipItem.setText("Proceed");
ImageDescriptor skipImageDesc = MdwPlugin.getImageDescriptor("icons/skip.gif");
skipItem.setImage(skipImageDesc.createImage());
skipItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
PanelBusyIndicator pbi = new PanelBusyIndicator(getDisplay(), getCanvas());
try {
pbi.busyWhile(new Runnable() {
public void run() {
Activity activity = (Activity) designerCanvasSelection;
Shell shell = MdwPlugin.getActiveWorkbenchWindow().getShell();
ActivityInstanceVO actInstVO = activity.getInstances().get(activity.getInstances().size() - 1);
ActivityInstanceDialog actInstDlg = new ActivityInstanceDialog(shell, activity, actInstVO, Mode.SKIP);
actInstDlg.open();
}
});
} catch (InvocationTargetException ex) {
PluginMessages.uiError(ex, "Skip Activity", getProject());
}
}
});
}
// view owning document
if (isInstance() && designerCanvasSelection instanceof WorkflowProcess && (OwnerType.DOCUMENT.equals(getProcess().getProcessInstance().getOwner()) || OwnerType.TESTER.equals(getProcess().getProcessInstance().getOwner()))) {
MenuItem docItem = new MenuItem(popupMenu, SWT.PUSH);
docItem.setText("View Owning Document");
ImageDescriptor docImageDesc = MdwPlugin.getImageDescriptor(ICON_DOC_GIF);
docItem.setImage(docImageDesc.createImage());
docItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
PanelBusyIndicator pbi = new PanelBusyIndicator(getDisplay(), getCanvas());
try {
pbi.busyWhile(new Runnable() {
public void run() {
IStorage storage = new DocumentStorage(getProject(), new DocumentReference(getProcess().getProcessInstance().getOwnerId(), null));
final IStorageEditorInput input = new StorageEditorInput(storage);
final IWorkbenchPage page = MdwPlugin.getActivePage();
if (page != null) {
try {
page.openEditor(input, "org.eclipse.ui.DefaultTextEditor");
} catch (PartInitException ex) {
PluginMessages.uiError(ex, "View Document", getProject());
}
}
}
});
} catch (InvocationTargetException ex) {
PluginMessages.uiError(ex, "View Document", getProject());
}
}
});
}
return popupMenu;
}
Aggregations