tmf: add support for enter to expand/collapse tree TimeGraphCombo
authorBernd Hufmann <Bernd.Hufmann@ericsson.com>
Fri, 8 Apr 2016 15:13:24 +0000 (11:13 -0400)
committerBernd Hufmann <bernd.hufmann@ericsson.com>
Tue, 12 Apr 2016 19:55:51 +0000 (15:55 -0400)
This aligns the behavior of the TimeGraphViewer.

Change-Id: I211d69d72353622b380bbef88802d2745407b10f
Signed-off-by: Bernd Hufmann <Bernd.Hufmann@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/70257
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Tested-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Reviewed-by: Hudson CI
tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/timegraph/AbstractTimeGraphView.java
tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/widgets/timegraph/TimeGraphCombo.java

index 01a0b1c5cedfec22596d2deddfa16f5bb532406d..c615ab215fe886af812dc15cba4ca0879aca6f42 100644 (file)
@@ -59,6 +59,7 @@ import org.eclipse.jface.viewers.ILabelProviderListener;
 import org.eclipse.jface.viewers.ISelectionProvider;
 import org.eclipse.jface.viewers.ITableLabelProvider;
 import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.TreeSelection;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.jface.viewers.ViewerFilter;
 import org.eclipse.osgi.util.NLS;
@@ -285,6 +286,10 @@ public abstract class AbstractTimeGraphView extends TmfView implements ITmfTimeA
 
         void setAutoExpandLevel(int level);
 
+        boolean getExpandedState(ITimeGraphEntry entry);
+
+        void setExpandedState(ITimeGraphEntry entry, boolean expanded);
+
         void setFilterColumns(String[] columnNames);
 
         void setFilterContentProvider(ITreeContentProvider contentProvider);
@@ -406,6 +411,16 @@ public abstract class AbstractTimeGraphView extends TmfView implements ITmfTimeA
             viewer.setAutoExpandLevel(level);
         }
 
+        @Override
+        public boolean getExpandedState(ITimeGraphEntry entry) {
+            return viewer.getExpandedState(entry);
+        }
+
+        @Override
+        public void setExpandedState(ITimeGraphEntry entry, boolean expanded) {
+            viewer.setExpandedState(entry, expanded);
+        }
+
         @Override
         public void performAlign(int offset, int width) {
             viewer.performAlign(offset, width);
@@ -534,6 +549,16 @@ public abstract class AbstractTimeGraphView extends TmfView implements ITmfTimeA
             combo.setAutoExpandLevel(level);
         }
 
+        @Override
+        public boolean getExpandedState(ITimeGraphEntry entry) {
+            return combo.getExpandedState(entry);
+        }
+
+        @Override
+        public void setExpandedState(ITimeGraphEntry entry, boolean expanded) {
+            combo.setExpandedState(entry, expanded);
+        }
+
         TimeGraphCombo getTimeGraphCombo() {
             return combo;
         }
@@ -1170,6 +1195,8 @@ public abstract class AbstractTimeGraphView extends TmfView implements ITmfTimeA
             if (fColumnComparators != null) {
                 createColumnSelectionListener(combo.getTreeViewer());
             }
+            // Add double click listener to tree viewer
+            createDoubleClickListener(combo.getTreeViewer());
         }
         fTimeGraphWrapper.setTimeGraphContentProvider(fTimeGraphContentProvider);
         fTimeGraphWrapper.setFilterContentProvider(fFilterContentProvider != null ? fFilterContentProvider : fTimeGraphContentProvider);
@@ -2040,6 +2067,21 @@ public abstract class AbstractTimeGraphView extends TmfView implements ITmfTimeA
         }
     }
 
+    private void createDoubleClickListener(TreeViewer treeViewer) {
+        treeViewer.addDoubleClickListener(event -> {
+            if (event.getSelection() instanceof TreeSelection) {
+                TreeSelection selection = (TreeSelection) event.getSelection();
+                if (selection.getFirstElement() instanceof ITimeGraphEntry) {
+                    ITimeGraphEntry entry = (ITimeGraphEntry) selection.getFirstElement();
+                    if (entry.hasChildren()) {
+                        fTimeGraphWrapper.setExpandedState(entry, !fTimeGraphWrapper.getExpandedState(entry));
+                    }
+                }
+            }
+        });
+    }
+
+
     private void restoreViewContext() {
         TimeGraphCombo combo = getTimeGraphCombo();
         ViewContext viewContext = fViewContext.get(fTrace);
index 646d8e9af876aa0fb3197d4c2097a1b052c93e04..3ddf3cd5ba39fc4bd1f7ce948e4fb4e9ac7d4d7e 100644 (file)
@@ -1224,6 +1224,18 @@ public class TimeGraphCombo extends Composite {
         return fTimeGraphViewer.getAutoExpandLevel();
     }
 
+    /**
+     * Get the expanded state of an entry.
+     *
+     * @param entry
+     *            The entry
+     * @return true if the entry is expanded, false if collapsed
+     * @since 2.0
+     */
+    public boolean getExpandedState(ITimeGraphEntry entry) {
+        return fTimeGraphViewer.getExpandedState(entry);
+    }
+
     /**
      * Set the expanded state of an entry
      *
This page took 0.028126 seconds and 5 git commands to generate.