< prev index next >
application/org.openjdk.jmc.ui/src/main/java/org/openjdk/jmc/ui/charts/QuantitySpanRenderer.java
Print this page
@@ -58,25 +58,31 @@
private final Paint paint;
private final int minOutlineHeight;
private final IXDataRenderer content;
private final String text;
private final String description;
+ private final Object data;
public QuantitySpanRenderer(IQuantitySeries<?> ranges, IXDataRenderer content, Paint paint, int minOutlineHeight,
- String text, String description) {
+ String text, String description, Object data) {
this.ranges = ranges;
this.content = content;
this.paint = paint;
this.minOutlineHeight = minOutlineHeight;
this.text = text;
this.description = description;
+ this.data = data;
}
private static int calcMargin(int height) {
return Math.min(5, (height + 10) / 20);
}
+ public Object getData() {
+ return data;
+ }
+
@Override
public IRenderedRow render(Graphics2D context, SubdividedQuantityRange xRange, int height) {
int margin = calcMargin(height);
int innerHeight = height - 2 * margin;
context.translate(0, margin);
@@ -89,34 +95,37 @@
if (innerHeight >= minOutlineHeight) {
context.setPaint(Color.BLACK);
AWTChartToolkit.drawRanges(context, quantities, innerHeight, false);
}
context.translate(0, -margin);
- return new QuantitySpanRendering(margin, quantities, renderedContent, paint, text, description);
+ return new QuantitySpanRendering(margin, quantities, renderedContent, paint, text, description, data);
}
private static class QuantitySpanRendering extends RenderedRowBase {
private final XYQuantities<?> points;
private final IRenderedRow content;
private final Paint paint;
private final int margin;
- private String description;
+ private final String description;
+ private final Object data;
public QuantitySpanRendering(int margin, XYQuantities<?> points, IRenderedRow content, Paint paint, String text,
- String description) {
+ String description, Object data) {
super(Arrays.asList(new RenderedRowBase(margin), content, new RenderedRowBase(margin)),
content.getHeight() + 2 * margin, text, description, null);
this.margin = margin;
this.points = points;
this.content = content;
this.paint = paint;
this.description = description;
+ this.data = data;
}
@Override
public void infoAt(IChartInfoVisitor visitor, int x, int y, Point offset) {
+ visitor.hover(data);
offset = new Point(offset.x, offset.y + margin);
content.infoAt(visitor, x, y, offset);
// FIXME: Only output this if near the boundaries? At least handle infinite lengths.
if (points != null) {
< prev index next >