--- /dev/null
+package org.simantics.debug.graphical.model;\r
+\r
+import java.awt.Font;\r
+import java.awt.Graphics2D;\r
+import java.awt.font.FontRenderContext;\r
+import java.awt.geom.AffineTransform;\r
+import java.awt.geom.Rectangle2D;\r
+\r
+public class LabelContent extends Content {\r
+ public static final Font FONT = new Font("Arial", Font.PLAIN, 12);\r
+ public static final FontRenderContext FRC = \r
+ new FontRenderContext(new AffineTransform(), true, true);\r
+ public static final Rectangle2D MAX_BOUNDS = FONT.getMaxCharBounds(FRC);\r
+ public static final double FONT_HEIGHT = MAX_BOUNDS.getHeight();\r
+ public static double PADDING = 3.0;\r
+ \r
+ String[] labels;\r
+ double textX, textY;\r
+ \r
+ public LabelContent(String[] labels) {\r
+ setLabels(labels);\r
+ }\r
+\r
+ @Override\r
+ public void render(Graphics2D g) {\r
+ g.setFont(FONT);\r
+ for(int i=0;i<labels.length;++i) {\r
+ g.drawString(labels[i], (float)textX, (float)(textY + i*FONT_HEIGHT)); \r
+ } \r
+ }\r
+ \r
+ public void setLabels(String[] labels) {\r
+ this.labels = labels;\r
+\r
+ double maxWidth = 0.0;\r
+ for(String label : labels) {\r
+ Rectangle2D bounds = FONT.getStringBounds(label, FRC);\r
+ maxWidth = Math.max(maxWidth, bounds.getWidth());\r
+ }\r
+ \r
+ textX = -0.5*maxWidth;\r
+ textY = -0.5*labels.length*FONT_HEIGHT + FONT_HEIGHT - MAX_BOUNDS.getMaxY();\r
+ \r
+ radiusX = PADDING + 0.5*maxWidth;\r
+ radiusY = PADDING + 0.5*labels.length*FONT_HEIGHT;\r
+ }\r
+ \r
+}\r