--- old/application/org.openjdk.jmc.ui/src/main/java/org/openjdk/jmc/ui/misc/ChartCanvas.java 2019-05-09 10:24:57.356217006 -0400 +++ new/application/org.openjdk.jmc.ui/src/main/java/org/openjdk/jmc/ui/misc/ChartCanvas.java 2019-05-09 10:24:57.288216297 -0400 @@ -77,6 +77,7 @@ private int lastMouseX = -1; private int lastMouseY = -1; private List highlightRects; + private Object hoveredItemData; private class Selector extends MouseAdapter implements MouseMoveListener, MouseTrackListener { @@ -152,6 +153,7 @@ @Override public void mouseExit(MouseEvent e) { + resetHoveredItemData(); clearHighlightRects(); } @@ -391,6 +393,18 @@ 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 newRects = new ArrayList<>(); infoAt(new IChartInfoVisitor.Adapter() { @@ -420,6 +434,13 @@ 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)) {