X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=plugins%2Forg.argeo.slc.client.ui%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fclient%2Fui%2Feditors%2FProcessBuilderPage.java;h=f1caa542439b69bd7699e586435c7727aa7ee035;hb=6867e7eef2de759cf14fabe575fcba0bea29d6fc;hp=6ed8debf636a5df345f3f864425f8f3784133177;hpb=7121bb7cee38038ef10a344cd84560367195fca8;p=gpl%2Fargeo-slc.git diff --git a/plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/editors/ProcessBuilderPage.java b/plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/editors/ProcessBuilderPage.java index 6ed8debf6..f1caa5424 100644 --- a/plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/editors/ProcessBuilderPage.java +++ b/plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/editors/ProcessBuilderPage.java @@ -32,6 +32,8 @@ import javax.jcr.observation.ObservationManager; import javax.jcr.query.Query; import javax.jcr.query.QueryManager; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.argeo.ArgeoException; import org.argeo.eclipse.ui.jcr.AsyncUiEventListener; import org.argeo.jcr.JcrUtils; @@ -43,6 +45,10 @@ import org.argeo.slc.execution.ExecutionProcess; import org.argeo.slc.jcr.SlcJcrUtils; import org.argeo.slc.jcr.SlcNames; import org.argeo.slc.jcr.SlcTypes; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jface.viewers.ColumnLabelProvider; import org.eclipse.jface.viewers.ColumnViewer; @@ -77,7 +83,10 @@ import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Table; +import org.eclipse.ui.IWorkbenchActionConstants; import org.eclipse.ui.forms.AbstractFormPart; import org.eclipse.ui.forms.IManagedForm; import org.eclipse.ui.forms.editor.FormPage; @@ -86,6 +95,8 @@ import org.eclipse.ui.forms.widgets.ScrolledForm; /** Definition of the process. */ public class ProcessBuilderPage extends FormPage implements SlcNames { + private final static Log log = LogFactory.getLog(ProcessBuilderPage.class); + public final static String ID = "processBuilderPage"; /** To be displayed in empty lists */ @@ -235,6 +246,9 @@ public class ProcessBuilderPage extends FormPage implements SlcNames { flowsViewer.addDropSupport(operations, tt, new FlowsDropListener( flowsViewer)); + // Context menu + addContextMenu(); + flowsViewer.setInput(getEditorSite()); flowsViewer.setInput(processNode); @@ -606,6 +620,47 @@ public class ProcessBuilderPage extends FormPage implements SlcNames { } } + private void addContextMenu() { + // Create the popup menu + final MenuManager menuMgr = new MenuManager(); + final Menu menu = menuMgr.createContextMenu(flowsViewer.getTree()); + menuMgr.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); + menuMgr.addMenuListener(new IMenuListener() { + + public void menuAboutToShow(IMenuManager manager) { + if (flowsViewer.getSelection().isEmpty()) { + log.debug("empty selection"); + return; + } + + if (flowsViewer.getSelection() instanceof IStructuredSelection) { + IStructuredSelection selection = (IStructuredSelection) flowsViewer + .getSelection(); + log.debug("got a selection"); + Node currNode = (Node) selection.getFirstElement(); + if (true) { + MenuItem renameItem = new MenuItem(menu, SWT.PUSH); + renameItem + .addSelectionListener(new SelectionListener() { + + public void widgetSelected(SelectionEvent e) { + removeSelectedFlows(); + } + + public void widgetDefaultSelected( + SelectionEvent e) { + } + }); + renameItem.setText("Remove selected"); + } + } + } + }); + // menuMgr.setRemoveAllWhenShown(true); + getSite().registerContextMenu(menuMgr, flowsViewer); + flowsViewer.getTree().setMenu(menu); + } + /** Manages drop event. */ class FlowsDropListener extends ViewerDropAdapter {