tmf.ui: make hiding column menu in the displayed order
authorMatthew Khouzam <matthew.khouzam@ericsson.com>
Fri, 5 Jun 2015 13:36:48 +0000 (09:36 -0400)
committerMatthew Khouzam <matthew.khouzam@ericsson.com>
Thu, 11 Jun 2015 00:24:26 +0000 (20:24 -0400)
Change-Id: Ibd9622e89ecb615c279e66f7dcca925500f8f049
Signed-off-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/49518
Reviewed-by: Patrick Tasse <patrick.tasse@gmail.com>
Tested-by: Patrick Tasse <patrick.tasse@gmail.com>
Reviewed-by: Hudson CI
org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/internal/tmf/ui/Messages.java
org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/internal/tmf/ui/messages.properties
org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/events/TmfEventsTable.java

index bef1fd5e7c3a022e6fc0c0c7e762dbf3ea4efe96..513534af750548e21d5fcd9c7cd615321559588e 100644 (file)
@@ -56,7 +56,7 @@ public class Messages extends NLS {
     public static String TmfEventsTable_SearchHint;
     public static String TmfEventsTable_SearchingJobName;
 
-    public static String TmfEventsTable_showAll;
+    public static String TmfEventsTable_ShowAll;
     public static String TmfEventsTable_ShowFilterBarActionText;
     public static String TmfEventsTable_ShowRawActionText;
     public static String TmfEventsTable_ShowSearchBarActionText;
index aeffaeccacfa8494a7c590c6fcefedd664283ab5..c1c42847fa0143a4dfe6f33d46f7b9e98263b2bb 100644 (file)
@@ -48,7 +48,7 @@ TmfEventsTable_ReferenceColumnHeader=File
 TmfEventsTable_RemoveBookmarkActionText=Remove Bookmark
 TmfEventsTable_SearchHint=<srch>
 TmfEventsTable_SearchingJobName=Searching...
-TmfEventsTable_showAll=Show all
+TmfEventsTable_ShowAll=Show All
 TmfEventsTable_ShowFilterBarActionText=Show Filter Bar
 TmfEventsTable_ShowRawActionText=Show Raw
 TmfEventsTable_ShowSearchBarActionText=Show Search Bar
index 798e403657c40dfa448e60e884dbc69450385fa0..56bd95d977b211a3a6218d1552ecb2167619e5cf 100644 (file)
@@ -108,7 +108,6 @@ import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
 import org.eclipse.swt.widgets.MessageBox;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.TableColumn;
@@ -463,7 +462,7 @@ public class TmfEventsTable extends TmfComponent implements IGotoMarker, IColorS
                 column.setResizable(false);
             } else {
                 column.setMoveable(true);
-                createHeaderMenuItem(fHeaderMenu, column);
+                column.setData(Key.WIDTH, -1);
             }
             column.addControlListener(new ControlAdapter() {
                 /*
@@ -865,14 +864,11 @@ public class TmfEventsTable extends TmfComponent implements IGotoMarker, IColorS
      * @param column
      *            the column
      */
-    private static void createHeaderMenuItem(Menu parent, final TableColumn column) {
-        final MenuItem columnMenuItem = new MenuItem(parent, SWT.CHECK);
-        columnMenuItem.setText(column.getText());
-        columnMenuItem.setSelection(column.getResizable());
-        columnMenuItem.addSelectionListener(new SelectionAdapter() {
+    private static IAction createHeaderAction(final TableColumn column) {
+        final IAction columnMenuAction = new Action(column.getText(), IAction.AS_CHECK_BOX) {
             @Override
-            public void widgetSelected(SelectionEvent e) {
-                if (columnMenuItem.getSelection()) {
+            public void run() {
+                if (isChecked()) {
                     column.setWidth((int) column.getData(Key.WIDTH));
                     column.setResizable(true);
                 } else {
@@ -881,15 +877,15 @@ public class TmfEventsTable extends TmfComponent implements IGotoMarker, IColorS
                     column.setResizable(false);
                 }
             }
-        });
+        };
+        columnMenuAction.setChecked(column.getResizable());
+        return columnMenuAction;
     }
 
-    private void createResetHeaderMenuItem() {
-        final MenuItem resetMenu = new MenuItem(fHeaderMenu, SWT.PUSH);
-        resetMenu.setText(Messages.TmfEventsTable_showAll);
-        resetMenu.addSelectionListener(new SelectionAdapter() {
+    private IAction createResetHeaderAction() {
+        return new Action(Messages.TmfEventsTable_ShowAll) {
             @Override
-            public void widgetSelected(SelectionEvent e) {
+            public void run() {
                 for (TableColumn column : fTable.getColumns()) {
                     final Object widthVal = column.getData(Key.WIDTH);
                     if (widthVal instanceof Integer) {
@@ -910,12 +906,8 @@ public class TmfEventsTable extends TmfComponent implements IGotoMarker, IColorS
                         }
                     }
                 }
-                for (MenuItem menuItem : fHeaderMenu.getItems()) {
-                    menuItem.setSelection(true);
-                }
-
             }
-        });
+        };
     }
 
     // ------------------------------------------------------------------------
@@ -926,7 +918,6 @@ public class TmfEventsTable extends TmfComponent implements IGotoMarker, IColorS
      * Create a pop-up menu.
      */
     private void createPopupMenu() {
-        createResetHeaderMenuItem();
         final IAction showTableAction = new Action(Messages.TmfEventsTable_ShowTableActionText) {
             @Override
             public void run() {
@@ -1157,6 +1148,21 @@ public class TmfEventsTable extends TmfComponent implements IGotoMarker, IColorS
             }
         }
 
+        final MenuManager headerPopupMenu = new MenuManager();
+        headerPopupMenu.setRemoveAllWhenShown(true);
+        headerPopupMenu.addMenuListener(new IMenuListener() {
+            @Override
+            public void menuAboutToShow(IMenuManager manager) {
+                for (int index : fTable.getColumnOrder()) {
+                    if (fTable.getColumns()[index].getData(Key.WIDTH) != null) {
+                        headerPopupMenu.add(createHeaderAction(fTable.getColumns()[index]));
+                    }
+                }
+                headerPopupMenu.add(new Separator());
+                headerPopupMenu.add(createResetHeaderAction());
+            }
+        });
+
         final MenuManager tablePopupMenu = new MenuManager();
         tablePopupMenu.setRemoveAllWhenShown(true);
         tablePopupMenu.addMenuListener(new IMenuListener() {
@@ -1286,6 +1292,8 @@ public class TmfEventsTable extends TmfComponent implements IGotoMarker, IColorS
             }
         });
 
+        fHeaderMenu = headerPopupMenu.createContextMenu(fTable);
+
         fTablePopup = tablePopupMenu.createContextMenu(fTable);
         fTable.setMenu(fTablePopup);
 
@@ -2322,7 +2330,6 @@ public class TmfEventsTable extends TmfComponent implements IGotoMarker, IColorS
             for (int i = 0; i < tableColumns.length; i++) {
                 final TableColumn column = tableColumns[i];
                 packSingleColumn(i, column);
-                column.setData(Key.WIDTH, column.getWidth());
             }
 
         } finally {
This page took 0.030311 seconds and 5 git commands to generate.