1 package org.simantics.debug.graphical.model;
\r
3 import java.awt.Font;
\r
4 import java.awt.Graphics2D;
\r
5 import java.awt.font.FontRenderContext;
\r
6 import java.awt.geom.AffineTransform;
\r
7 import java.awt.geom.Rectangle2D;
\r
9 public class LabelContent extends Content {
\r
10 public static final Font FONT = new Font("Arial", Font.PLAIN, 12);
\r
11 public static final FontRenderContext FRC =
\r
12 new FontRenderContext(new AffineTransform(), true, true);
\r
13 public static final Rectangle2D MAX_BOUNDS = FONT.getMaxCharBounds(FRC);
\r
14 public static final double FONT_HEIGHT = MAX_BOUNDS.getHeight();
\r
15 public static double PADDING = 3.0;
\r
18 double textX, textY;
\r
20 public LabelContent(String[] labels) {
\r
25 public void render(Graphics2D g) {
\r
27 for(int i=0;i<labels.length;++i) {
\r
28 g.drawString(labels[i], (float)textX, (float)(textY + i*FONT_HEIGHT));
\r
32 public void setLabels(String[] labels) {
\r
33 this.labels = labels;
\r
35 double maxWidth = 0.0;
\r
36 for(String label : labels) {
\r
37 Rectangle2D bounds = FONT.getStringBounds(label, FRC);
\r
38 maxWidth = Math.max(maxWidth, bounds.getWidth());
\r
41 textX = -0.5*maxWidth;
\r
42 textY = -0.5*labels.length*FONT_HEIGHT + FONT_HEIGHT - MAX_BOUNDS.getMaxY();
\r
44 radiusX = PADDING + 0.5*maxWidth;
\r
45 radiusY = PADDING + 0.5*labels.length*FONT_HEIGHT;
\r