tmf: API to add commands to context sensitive menu of TmfSimpleTable
authorBernd Hufmann <Bernd.Hufmann@ericsson.com>
Fri, 25 Sep 2015 11:27:55 +0000 (07:27 -0400)
committerBernd Hufmann <bernd.hufmann@ericsson.com>
Fri, 25 Sep 2015 22:31:49 +0000 (18:31 -0400)
Change-Id: Ibb3b105d0f7c39404fb4e3bb087ab2c4f65d7407
Signed-off-by: Bernd Hufmann <Bernd.Hufmann@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/56708
Reviewed-by: Hudson CI
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Tested-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Reviewed-by: Bernd Hufmann <bernd.hufmann@ericsson.com>
tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/table/TmfSimpleTableViewer.java

index 49050c4ff4e0ebdc6bd0cb298cd988ff20db49e0..b5ff3318d4f2cd7515dd147da1361cb42741f22c 100644 (file)
@@ -21,9 +21,14 @@ import java.util.Comparator;
 
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.viewers.ColumnLabelProvider;
 import org.eclipse.jface.viewers.IContentProvider;
 import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.TableViewerColumn;
 import org.eclipse.jface.viewers.Viewer;
@@ -37,6 +42,7 @@ import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.TableColumn;
 import org.eclipse.tracecompass.tmf.ui.viewers.TmfViewer;
@@ -144,6 +150,8 @@ public class TmfSimpleTableViewer extends TmfViewer {
     private int fDirection;
     private int fSelectedColumn;
 
+    private MenuManager fTablePopupMenuManager;
+
     /**
      * Constructor that initializes the parent of the viewer
      *
@@ -161,6 +169,44 @@ public class TmfSimpleTableViewer extends TmfViewer {
         fDirection = SWT.DOWN;
         fTableViewer.setUseHashlookup(true);
         fTableViewer.getControl().addMouseListener(new MouseColumnListener());
+
+        fTablePopupMenuManager = new MenuManager();
+        fTablePopupMenuManager.setRemoveAllWhenShown(true);
+
+        fTablePopupMenuManager.addMenuListener(new IMenuListener() {
+            @Override
+            public void menuAboutToShow(final @Nullable IMenuManager manager) {
+                TableViewer viewer = getTableViewer();
+                ISelection selection = viewer.getSelection();
+                if (selection instanceof IStructuredSelection) {
+                    IStructuredSelection sel = (IStructuredSelection) selection;
+                    if (manager != null) {
+                        appendToTablePopupMenu(manager, sel);
+                    }
+                }
+            }
+        });
+
+        Menu tablePopup = fTablePopupMenuManager.createContextMenu(getTableViewer().getTable());
+        getTableViewer().getTable().setMenu(tablePopup);
+    }
+
+    @Override
+    public void dispose() {
+        if (fTablePopupMenuManager != null) {
+            fTablePopupMenuManager.dispose();
+        }
+        super.dispose();
+    }
+
+    /**
+     * Method to add commands to the context sensitive menu.
+     * @param manager
+     *          the menu manager
+     * @param sel
+     *          the current selection
+     */
+    protected void appendToTablePopupMenu(@NonNull IMenuManager manager, @NonNull IStructuredSelection sel) {
     }
 
     /**
This page took 0.026671 seconds and 5 git commands to generate.