]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.debug.graphical/src/org/simantics/debug/graphical/model/LabelContent.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.debug.graphical / src / org / simantics / debug / graphical / model / LabelContent.java
1 package org.simantics.debug.graphical.model;\r
2 \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
8 \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
16     \r
17     String[] labels;\r
18     double textX, textY;\r
19     \r
20     public LabelContent(String[] labels) {\r
21         setLabels(labels);\r
22     }\r
23 \r
24     @Override\r
25     public void render(Graphics2D g) {\r
26         g.setFont(FONT);\r
27         for(int i=0;i<labels.length;++i) {\r
28             g.drawString(labels[i], (float)textX, (float)(textY + i*FONT_HEIGHT));    \r
29         }        \r
30     }\r
31     \r
32     public void setLabels(String[] labels) {\r
33         this.labels = labels;\r
34 \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
39         }\r
40         \r
41         textX = -0.5*maxWidth;\r
42         textY = -0.5*labels.length*FONT_HEIGHT + FONT_HEIGHT - MAX_BOUNDS.getMaxY();\r
43         \r
44         radiusX = PADDING + 0.5*maxWidth;\r
45         radiusY = PADDING + 0.5*labels.length*FONT_HEIGHT;\r
46     }\r
47     \r
48 }\r