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.GradientPaint;
8   import java.awt.Graphics;
9   import java.awt.Graphics2D;
10  import java.awt.Toolkit;
11  
12  import javax.swing.Icon;
13  import javax.swing.SwingUtilities;
14  
15  public class GradientTextIcon implements Icon {
16  	
17  	
18  	public static final int VERTICAL = 0;
19  	public static final int HORIZONTAL = 1;
20    	private Color color;
21    	private int width;
22    	private int height;
23  	private FontMetrics fm;
24  	private String text;
25  	private Font font;
26  	private Color startColor;
27  	private Color endColor;
28  	private int orientation;
29  	private Graphics graphics;
30    	private static final int DEFAULT_WIDTH = 10;
31    	private static final int DEFAULT_HEIGHT = 10;
32    	public GradientTextIcon(Font font,String text,Color startColor, Color endColor, int orietation) {
33    		
34    		this.font = font;
35    		this.fm = Toolkit.getDefaultToolkit().getFontMetrics(font);
36  		this.text = text;
37  		this.width = SwingUtilities.computeStringWidth(fm, text);
38  		this.height = fm.getHeight();
39  		this.startColor = startColor; 
40  		this.endColor = endColor;
41  		this.orientation = orietation;
42  		
43    	}
44      
45    	public GradientTextIcon (Color color, int width, int height) {
46      	this.color = color;
47      	this.width = width;
48      	this.height = height;
49    	}
50    
51    	public int getIconHeight() {
52      	return height;
53    	}
54    	public int getIconWidth() {
55      	return width;
56    	}
57    	public Color getIconColor() {
58    		return color;
59    	}
60    	public void paintIcon(Component c, Graphics g, int x, int y) {
61    		this.graphics = g;
62      	g.translate (x, y);
63      	g.setFont(font);
64      	
65      	GradientPaint grad; 
66      	if( this.orientation == VERTICAL)
67      	  grad = new GradientPaint(0, 0, startColor, 0, height, endColor, false);
68      	else
69      	  grad = new GradientPaint(x, 0,startColor, width, 0,endColor, false);
70      	
71      	Graphics2D g2 = (Graphics2D) g;
72      	g2.setPaint(grad);
73      	g.drawString(this.text,0, fm.getLeading() + fm.getAscent());
74      	g.translate (-x, -y);
75    	}
76    	public Graphics getGraphics() {
77    		return this.graphics;
78    	}
79  }