View Javadoc

1   package org.telscenter.pas.common.ui.button;
2   
3   import java.awt.Color;
4   import java.awt.Component;
5   import java.awt.Font;
6   import java.awt.FontMetrics;
7   import java.awt.Graphics;
8   import java.awt.Graphics2D;
9   import java.awt.Toolkit;
10  import java.awt.geom.AffineTransform;
11  
12  import javax.swing.Icon;
13  import javax.swing.SwingConstants;
14  import javax.swing.SwingUtilities;
15  
16  public class VerticalTextIcon implements Icon, SwingConstants{ 
17      private Font font;
18      private FontMetrics fm;
19   
20      private String text; 
21      private int width, height; 
22      private boolean clockwize; 
23      private Color fontColor;
24   
25      public VerticalTextIcon(String text, boolean clockwize,Color fontColor, Font font){
26      	this.fontColor = fontColor;
27      	this.font = font;
28      	this.fm = Toolkit.getDefaultToolkit().getFontMetrics(font); 
29          this.text = text; 
30          width = SwingUtilities.computeStringWidth(fm, text); 
31          height = fm.getHeight(); 
32          this.clockwize = clockwize; 
33      } 
34   
35      public void paintIcon(Component c, Graphics g, int x, int y){ 
36          Graphics2D g2 = (Graphics2D)g; 
37          Font oldFont = g.getFont(); 
38          Color oldColor = g.getColor(); 
39          AffineTransform oldTransform = g2.getTransform(); 
40   
41          g.setFont(font); 
42          g.setColor(fontColor); 
43          if(clockwize){ 
44              g2.translate(x+getIconWidth(), y); 
45              g2.rotate(Math.PI/2); 
46          }else{ 
47              g2.translate(x, y+getIconHeight()); 
48              g2.rotate(-Math.PI/2); 
49          } 
50          g.drawString(text, 0, fm.getLeading()+fm.getAscent()); 
51   
52          g.setFont(oldFont); 
53          g.setColor(oldColor); 
54          g2.setTransform(oldTransform); 
55      } 
56   
57      public int getIconWidth(){ 
58          return height; 
59      } 
60   
61      public int getIconHeight(){ 
62          return width; 
63      } 
64  }