tmf: Bug 488806: Mouse scroll with count of zero not handled correctly
[deliverable/tracecompass.git] / tmf / org.eclipse.tracecompass.tmf.ui / src / org / eclipse / tracecompass / tmf / ui / widgets / timegraph / TimeGraphViewer.java
index f5dc386c5286540c3867294cce8367469e926f1f..76de9c8963aee9f21c358b2260052b31c84bf607 100644 (file)
@@ -77,6 +77,7 @@ import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.IMarkerEvent;
 import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.ITimeEvent;
 import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.ITimeGraphEntry;
 import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.MarkerEvent;
+import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.widgets.IMarkerAxisListener;
 import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.widgets.ITimeDataProvider;
 import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.widgets.TimeDataProviderCyclesConverter;
 import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.widgets.TimeGraphColorScheme;
@@ -93,7 +94,7 @@ import org.eclipse.ui.PlatformUI;
  *
  * @author Patrick Tasse, and others
  */
-public class TimeGraphViewer implements ITimeDataProvider, SelectionListener {
+public class TimeGraphViewer implements ITimeDataProvider, IMarkerAxisListener, SelectionListener {
 
     /** Constant indicating that all levels of the time graph should be expanded */
     public static final int ALL_LEVELS = AbstractTreeViewer.ALL_LEVELS;
@@ -501,6 +502,9 @@ public class TimeGraphViewer implements ITimeDataProvider, SelectionListener {
         fTimeScaleCtrl.addMouseWheelListener(new MouseWheelListener() {
             @Override
             public void mouseScrolled(MouseEvent e) {
+                if (e.count == 0) {
+                    return;
+                }
                 fTimeGraphCtrl.zoom(e.count > 0);
             }
         });
@@ -514,6 +518,9 @@ public class TimeGraphViewer implements ITimeDataProvider, SelectionListener {
         fTimeGraphCtrl.addMouseWheelListener(new MouseWheelListener() {
             @Override
             public void mouseScrolled(MouseEvent e) {
+                if (e.count == 0) {
+                    return;
+                }
                 adjustVerticalScrollBar();
             }
         });
@@ -545,9 +552,13 @@ public class TimeGraphViewer implements ITimeDataProvider, SelectionListener {
 
         fMarkerAxisCtrl = createTimeGraphMarkerAxis(fTimeAlignedComposite, fColorScheme, this);
         fMarkerAxisCtrl.setLayoutData(new GridData(SWT.FILL, SWT.DEFAULT, true, false));
+        fMarkerAxisCtrl.addMarkerAxisListener(this);
         fMarkerAxisCtrl.addMouseWheelListener(new MouseWheelListener() {
             @Override
             public void mouseScrolled(MouseEvent e) {
+                if (e.count == 0) {
+                    return;
+                }
                 fTimeGraphCtrl.zoom(e.count > 0);
             }
         });
@@ -566,13 +577,16 @@ public class TimeGraphViewer implements ITimeDataProvider, SelectionListener {
         fHorizontalScrollBar.addListener(SWT.MouseWheel, new Listener() {
             @Override
             public void handleEvent(Event event) {
+                // don't handle the immediately following SWT.Selection event
+                event.doit = false;
+                if (event.count == 0) {
+                    return;
+                }
                 if ((event.stateMask & SWT.MODIFIER_MASK) == SWT.CTRL) {
                     getTimeGraphControl().zoom(event.count > 0);
                 } else {
                     getTimeGraphControl().horizontalScroll(event.count > 0);
                 }
-                // don't handle the immediately following SWT.Selection event
-                event.doit = false;
             }
         });
         fHorizontalScrollBar.addListener(SWT.Selection, new Listener() {
@@ -1310,6 +1324,24 @@ public class TimeGraphViewer implements ITimeDataProvider, SelectionListener {
         fMarkerAxisCtrl.setMarkerCategories(fMarkerCategories);
     }
 
+    /**
+     * @since 2.0
+     */
+    @Override
+    public void setMarkerCategoryVisible(String category, boolean visible) {
+        boolean changed = false;
+        if (visible) {
+            changed = fHiddenMarkerCategories.remove(category);
+        } else {
+            changed = fHiddenMarkerCategories.add(category);
+        }
+        if (changed) {
+            updateMarkerList();
+            updateMarkerActions();
+            getControl().redraw();
+        }
+    }
+
     /**
      * Set the markers list.
      *
@@ -2224,14 +2256,7 @@ public class TimeGraphViewer implements ITimeDataProvider, SelectionListener {
                         final Action action = new Action(category, IAction.AS_CHECK_BOX) {
                             @Override
                             public void runWithEvent(Event event) {
-                                if (isChecked()) {
-                                    fHiddenMarkerCategories.remove(getText());
-                                } else {
-                                    fHiddenMarkerCategories.add(getText());
-                                }
-                                updateMarkerList();
-                                updateMarkerActions();
-                                getControl().redraw();
+                                setMarkerCategoryVisible(getText(), isChecked());
                             }
                         };
                         action.setChecked(!fHiddenMarkerCategories.contains(category));
This page took 0.034604 seconds and 5 git commands to generate.