Search in sources :

Example 1 with DocumentStorage

use of com.centurylink.mdw.plugin.designer.storage.DocumentStorage 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;
}
Also used : DocumentStorage(com.centurylink.mdw.plugin.designer.storage.DocumentStorage) WorkflowPackage(com.centurylink.mdw.plugin.designer.model.WorkflowPackage) Activity(com.centurylink.mdw.plugin.designer.model.Activity) StorageEditorInput(com.centurylink.mdw.plugin.designer.storage.StorageEditorInput) IStorageEditorInput(org.eclipse.ui.IStorageEditorInput) Shell(org.eclipse.swt.widgets.Shell) SelectionEvent(org.eclipse.swt.events.SelectionEvent) ImageDescriptor(org.eclipse.jface.resource.ImageDescriptor) Menu(org.eclipse.swt.widgets.Menu) PartInitException(org.eclipse.ui.PartInitException) WorkflowProcess(com.centurylink.mdw.plugin.designer.model.WorkflowProcess) DocumentReference(com.centurylink.mdw.model.value.variable.DocumentReference) IStorageEditorInput(org.eclipse.ui.IStorageEditorInput) ActivityInstanceDialog(com.centurylink.mdw.plugin.designer.dialogs.ActivityInstanceDialog) ActivityInstanceVO(com.centurylink.mdw.model.value.work.ActivityInstanceVO) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) MenuItem(org.eclipse.swt.widgets.MenuItem) IStorage(org.eclipse.core.resources.IStorage) InvocationTargetException(java.lang.reflect.InvocationTargetException) TaskInstanceVO(com.centurylink.mdw.model.value.task.TaskInstanceVO) IWorkbenchPage(org.eclipse.ui.IWorkbenchPage) ProcessInstanceVO(com.centurylink.mdw.model.value.process.ProcessInstanceVO) WebApp(com.centurylink.mdw.plugin.actions.WebLaunchActions.WebApp)

Example 2 with DocumentStorage

use of com.centurylink.mdw.plugin.designer.storage.DocumentStorage in project mdw-designer by CenturyLinkCloud.

the class ProcessInstanceListView method createContextMenu.

private Menu createContextMenu(Shell shell) {
    Menu menu = new Menu(shell, SWT.POP_UP);
    final StructuredSelection selection = (StructuredSelection) getTableViewer().getSelection();
    if (selection.size() == 1 && selection.getFirstElement() instanceof ProcessInstanceVO) {
        final ProcessInstanceVO processInstanceInfo = (ProcessInstanceVO) selection.getFirstElement();
        // open instance
        MenuItem openItem = new MenuItem(menu, SWT.PUSH);
        openItem.setText("Open");
        ImageDescriptor openImageDesc = MdwPlugin.getImageDescriptor("icons/process.gif");
        openItem.setImage(openImageDesc.createImage());
        openItem.addSelectionListener(new SelectionAdapter() {

            @Override
            public void widgetSelected(SelectionEvent e) {
                handleOpen(processInstanceInfo);
            }
        });
        // owning document
        if (OwnerType.DOCUMENT.equals(processInstanceInfo.getOwner()) || OwnerType.TESTER.equals(processInstanceInfo.getOwner())) {
            MenuItem docItem = new MenuItem(menu, SWT.PUSH);
            docItem.setText("View Owning Document");
            ImageDescriptor docImageDesc = MdwPlugin.getImageDescriptor("icons/doc.gif");
            docItem.setImage(docImageDesc.createImage());
            docItem.addSelectionListener(new SelectionAdapter() {

                @Override
                public void widgetSelected(SelectionEvent e) {
                    IStorage storage = new DocumentStorage(workflowProject, new DocumentReference(processInstanceInfo.getOwnerId(), null));
                    final IStorageEditorInput input = new StorageEditorInput(storage);
                    final IWorkbenchPage page = MdwPlugin.getActivePage();
                    if (page != null) {
                        BusyIndicator.showWhile(getSite().getShell().getDisplay(), new Runnable() {

                            public void run() {
                                try {
                                    page.openEditor(input, "org.eclipse.ui.DefaultTextEditor");
                                } catch (PartInitException ex) {
                                    PluginMessages.uiError(ex, "View Document", workflowProject);
                                }
                            }
                        });
                    }
                }
            });
        }
        // instance hierarchy
        MenuItem hierarchyItem = new MenuItem(menu, SWT.PUSH);
        hierarchyItem.setText("Instance Hierarchy");
        ImageDescriptor hierarchyImageDesc = MdwPlugin.getImageDescriptor("icons/hierarchy.gif");
        hierarchyItem.setImage(hierarchyImageDesc.createImage());
        hierarchyItem.addSelectionListener(new SelectionAdapter() {

            @Override
            public void widgetSelected(SelectionEvent e) {
                WorkflowProcess pv = new WorkflowProcess(processVersion);
                pv.setProcessVO(processVersion.getProcessVO());
                pv.setProcessInstance(processInstanceInfo);
                new WorkflowElementActionHandler().showHierarchy(pv);
            }
        });
    }
    // delete
    if (!selection.isEmpty() && !processVersion.getProject().isProduction() && processVersion.isUserAuthorized(UserRoleVO.PROCESS_EXECUTION)) {
        MenuItem deleteItem = new MenuItem(menu, SWT.PUSH);
        deleteItem.setText("Delete...");
        ImageDescriptor deleteImageDesc = MdwPlugin.getImageDescriptor("icons/delete.gif");
        deleteItem.setImage(deleteImageDesc.createImage());
        deleteItem.addSelectionListener(new SelectionAdapter() {

            @Override
            public void widgetSelected(SelectionEvent e) {
                if (selection.size() == 1 && selection.getFirstElement() instanceof ProcessInstanceVO) {
                    ProcessInstanceVO pii = (ProcessInstanceVO) selection.getFirstElement();
                    if (MessageDialog.openConfirm(getSite().getShell(), "Confirm Delete", "Delete process instance ID: " + pii.getId() + " for workflow project '" + processVersion.getProject().getName() + "'?")) {
                        List<ProcessInstanceVO> instances = new ArrayList<>();
                        instances.add((ProcessInstanceVO) selection.getFirstElement());
                        handleDelete(instances);
                    }
                } else {
                    if (MessageDialog.openConfirm(getSite().getShell(), "Confirm Delete", "Delete selected process instances for workflow project '" + processVersion.getProject().getName() + "'?")) {
                        List<ProcessInstanceVO> instances = new ArrayList<>();
                        for (Object instance : selection.toArray()) {
                            if (instance instanceof ProcessInstanceVO)
                                instances.add((ProcessInstanceVO) instance);
                        }
                        handleDelete(instances);
                    }
                }
            }
        });
    }
    return menu;
}
Also used : DocumentStorage(com.centurylink.mdw.plugin.designer.storage.DocumentStorage) IStorageEditorInput(org.eclipse.ui.IStorageEditorInput) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) StructuredSelection(org.eclipse.jface.viewers.StructuredSelection) MenuItem(org.eclipse.swt.widgets.MenuItem) IStorage(org.eclipse.core.resources.IStorage) WorkflowElementActionHandler(com.centurylink.mdw.plugin.actions.WorkflowElementActionHandler) StorageEditorInput(com.centurylink.mdw.plugin.designer.storage.StorageEditorInput) IStorageEditorInput(org.eclipse.ui.IStorageEditorInput) SelectionEvent(org.eclipse.swt.events.SelectionEvent) IWorkbenchPage(org.eclipse.ui.IWorkbenchPage) ImageDescriptor(org.eclipse.jface.resource.ImageDescriptor) List(java.util.List) ArrayList(java.util.ArrayList) Menu(org.eclipse.swt.widgets.Menu) PartInitException(org.eclipse.ui.PartInitException) WorkflowProcess(com.centurylink.mdw.plugin.designer.model.WorkflowProcess) ProcessInstanceVO(com.centurylink.mdw.model.value.process.ProcessInstanceVO) DocumentReference(com.centurylink.mdw.model.value.variable.DocumentReference)

Aggregations

ProcessInstanceVO (com.centurylink.mdw.model.value.process.ProcessInstanceVO)2 DocumentReference (com.centurylink.mdw.model.value.variable.DocumentReference)2 WorkflowProcess (com.centurylink.mdw.plugin.designer.model.WorkflowProcess)2 DocumentStorage (com.centurylink.mdw.plugin.designer.storage.DocumentStorage)2 StorageEditorInput (com.centurylink.mdw.plugin.designer.storage.StorageEditorInput)2 IStorage (org.eclipse.core.resources.IStorage)2 ImageDescriptor (org.eclipse.jface.resource.ImageDescriptor)2 SelectionAdapter (org.eclipse.swt.events.SelectionAdapter)2 SelectionEvent (org.eclipse.swt.events.SelectionEvent)2 Menu (org.eclipse.swt.widgets.Menu)2 MenuItem (org.eclipse.swt.widgets.MenuItem)2 IStorageEditorInput (org.eclipse.ui.IStorageEditorInput)2 IWorkbenchPage (org.eclipse.ui.IWorkbenchPage)2 PartInitException (org.eclipse.ui.PartInitException)2 TaskInstanceVO (com.centurylink.mdw.model.value.task.TaskInstanceVO)1 ActivityInstanceVO (com.centurylink.mdw.model.value.work.ActivityInstanceVO)1 WebApp (com.centurylink.mdw.plugin.actions.WebLaunchActions.WebApp)1 WorkflowElementActionHandler (com.centurylink.mdw.plugin.actions.WorkflowElementActionHandler)1 ActivityInstanceDialog (com.centurylink.mdw.plugin.designer.dialogs.ActivityInstanceDialog)1 Activity (com.centurylink.mdw.plugin.designer.model.Activity)1