enhance context menu management
authorBruno Sinou <bsinou@argeo.org>
Mon, 25 Mar 2013 15:17:04 +0000 (15:17 +0000)
committerBruno Sinou <bsinou@argeo.org>
Mon, 25 Mar 2013 15:17:04 +0000 (15:17 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@6213 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/commands/DeleteItems.java
plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/editors/ProcessBuilderPage.java
plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/views/JcrExecutionModulesView.java
plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/views/JcrResultTreeView.java

index 08d4798d82d415fe27a6d035ad110406658b11fa..5858f67be18883789ac6cbf04eb8c1cf55ec45f7 100644 (file)
@@ -123,4 +123,4 @@ public class DeleteItems extends AbstractHandler {
                job.schedule();\r
                return null;\r
        }\r
-}\r
+}
\ No newline at end of file
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 {
 
index dca7fc79988fa4bb003b3547befca357344c6916..1db61bd3e20b223d78ccefe81cee12199a5b4373 100644 (file)
@@ -402,19 +402,10 @@ public class JcrExecutionModulesView extends ViewPart implements SlcTypes,
                                event.data = buf.toString();
                                log.debug("data set to : " + buf.toString());
                        }
-                       // if (selection.getFirstElement() instanceof Node) {
-                       // Node node = (Node) selection.getFirstElement();
-                       // if (TextTransfer.getInstance().isSupportedType(event.dataType)) {
-                       // try {
-                       // event.data = node.getPath();
-                       // } catch (RepositoryException e) {
-                       // throw new SlcException("Cannot read node", e);
-                       // }
-                       // }
-                       // }
                }
        }
 
+       // DEPENDENCY INJECTION
        public void setSession(Session session) {
                this.session = session;
        }
@@ -422,5 +413,4 @@ public class JcrExecutionModulesView extends ViewPart implements SlcTypes,
        public void setModulesManager(ExecutionModulesManager modulesManager) {
                this.modulesManager = modulesManager;
        }
-
 }
\ No newline at end of file
index c0e750187bd4db39d2a8c2cee0aef5328042cc99..ab312d6e1c081b7668c50c914793757e4322a9e4 100644 (file)
@@ -124,17 +124,8 @@ public class JcrResultTreeView extends ViewPart {
        private final static String[] observedNodeTypesUnderAllResults = {\r
                        SlcTypes.SLC_TEST_RESULT, NodeType.NT_UNSTRUCTURED };\r
 \r
-       // FIXME cache to ease D&D\r
-       // private boolean isActionUnderMyResult = false;\r
-       // private ResultParent lastSelectedTargetElement;\r
-       // private ResultParent lastSelectedSourceElement;\r
-       // private ResultParent lastSelectedSourceElementParent;\r
        private boolean isResultFolder = false;\r
 \r
-       // FIXME we cache the fact that we are moving a node to avoid exception\r
-       // triggered by the "Add Node" event while moving\r
-       // boolean isMoveInProgress = false;\r
-\r
        /**\r
         * To be overridden to adapt size of form and result frames.\r
         */\r
@@ -221,8 +212,7 @@ public class JcrResultTreeView extends ViewPart {
 \r
                // Override default behaviour to insure that 2 distincts results that\r
                // have the same name will be correctly and distincly returned by\r
-               // corresponding\r
-               // TreeViewer.getSelection() method.\r
+               // corresponding TreeViewer.getSelection() method.\r
                viewer.setComparer(new ResultItemsComparer());\r
 \r
                // viewer.setLabelProvider(rtLblProvider);\r