< prev index next >

application/org.openjdk.jmc.ui/src/main/java/org/openjdk/jmc/ui/charts/QuantitySpanRenderer.java

Print this page

        

*** 58,82 **** private final Paint paint; private final int minOutlineHeight; private final IXDataRenderer content; private final String text; private final String description; public QuantitySpanRenderer(IQuantitySeries<?> ranges, IXDataRenderer content, Paint paint, int minOutlineHeight, ! String text, String description) { this.ranges = ranges; this.content = content; this.paint = paint; this.minOutlineHeight = minOutlineHeight; this.text = text; this.description = description; } private static int calcMargin(int height) { return Math.min(5, (height + 10) / 20); } @Override public IRenderedRow render(Graphics2D context, SubdividedQuantityRange xRange, int height) { int margin = calcMargin(height); int innerHeight = height - 2 * margin; context.translate(0, margin); --- 58,88 ---- 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, 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,122 **** 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); } 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; public QuantitySpanRendering(int margin, XYQuantities<?> points, IRenderedRow content, Paint paint, String text, ! String description) { 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; } @Override public void infoAt(IChartInfoVisitor visitor, int x, int y, Point offset) { 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) { --- 95,131 ---- 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, data); } private static class QuantitySpanRendering extends RenderedRowBase { private final XYQuantities<?> points; private final IRenderedRow content; private final Paint paint; private final int margin; ! private final String description; ! private final Object data; public QuantitySpanRendering(int margin, XYQuantities<?> points, IRenderedRow content, Paint paint, String text, ! 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 >