< 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 >