]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/editors/ProcessBuilderPage.java
enhance context menu management
[gpl/argeo-slc.git] / plugins / org.argeo.slc.client.ui / src / main / java / org / argeo / slc / client / ui / editors / ProcessBuilderPage.java
index 6ed8debf636a5df345f3f864425f8f3784133177..f1caa542439b69bd7699e586435c7727aa7ee035 100644 (file)
@@ -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 {