< prev index next >

application/org.openjdk.jmc.ui/src/main/java/org/openjdk/jmc/ui/misc/ChartCanvas.java

Print this page

        

@@ -75,10 +75,11 @@
 
 public class ChartCanvas extends Canvas {
         private int lastMouseX = -1;
         private int lastMouseY = -1;
         private List<Rectangle2D> highlightRects;
+        private Object hoveredItemData;
 
         private class Selector extends MouseAdapter implements MouseMoveListener, MouseTrackListener {
 
                 int selectionStartX = -1;
                 int selectionStartY = -1;

@@ -150,10 +151,11 @@
                 public void mouseEnter(MouseEvent e) {
                 }
 
                 @Override
                 public void mouseExit(MouseEvent e) {
+                        resetHoveredItemData();
                         clearHighlightRects();
                 }
 
                 @Override
                 public void mouseHover(MouseEvent e) {

@@ -389,10 +391,22 @@
          */
         private int translateDisplayToImageXCoordinates(int x) {
                 return (int) Math.round(x / xScale);
         }
 
+        public Object getHoveredItemData() {
+                return this.hoveredItemData;
+        }
+
+        public void setHoveredItemData(Object data) {
+                this.hoveredItemData = data;
+        }
+
+        public void resetHoveredItemData() {
+                this.hoveredItemData = null;
+        }
+
         private void updateHighlightRects() {
                 List<Rectangle2D> newRects = new ArrayList<>();
                 infoAt(new IChartInfoVisitor.Adapter() {
                         @Override
                         public void visit(IBucket bucket) {

@@ -418,10 +432,17 @@
 
                         @Override
                         public void visit(ILane lane) {
                                 // FIXME: Do we want this highlighted?
                         }
+
+                        @Override
+                        public void hover(Object data) {
+                                if (data != null) {
+                                        setHoveredItemData(data);
+                                }
+                        }
                 }, lastMouseX, lastMouseY);
                 // Attempt to reduce flicker by avoiding unnecessary updates.
                 if (!newRects.equals(highlightRects)) {
                         highlightRects = newRects;
                         redraw();
< prev index next >