KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > mail > gui > tree > util > CArrowImage


1 //The contents of this file are subject to the Mozilla Public License Version 1.1
2
//(the "License"); you may not use this file except in compliance with the
3
//License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
4
//
5
//Software distributed under the License is distributed on an "AS IS" basis,
6
//WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
7
//for the specific language governing rights and
8
//limitations under the License.
9
//
10
//The Original Code is "The Columba Project"
11
//
12
//The Initial Developers of the Original Code are Frederik Dietz and Timo Stich.
13
//Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
14
//
15
//All Rights Reserved.
16
package org.columba.mail.gui.tree.util;
17
18
19 /**
20  * @version 1.0
21  * @author
22  */

23 import java.awt.Color JavaDoc;
24 import java.awt.GradientPaint JavaDoc;
25 import java.awt.Graphics2D JavaDoc;
26 import java.awt.RenderingHints JavaDoc;
27 import java.awt.SystemColor JavaDoc;
28 import java.awt.geom.GeneralPath JavaDoc;
29 import java.awt.geom.Line2D JavaDoc;
30 import java.awt.image.BufferedImage JavaDoc;
31 import java.util.HashMap JavaDoc;
32 import java.util.Map JavaDoc;
33
34
35 /**
36 * A BufferedImage of one of four types of arrow (up, down, left or right)
37 * drawn to the size specified on the constructor.
38 */

39 public class CArrowImage extends BufferedImage JavaDoc {
40     // Constants...
41
public static final int ARROW_UP = 0;
42     public static final int ARROW_DOWN = 1;
43     public static final int ARROW_LEFT = 2;
44     public static final int ARROW_RIGHT = 3;
45
46     // Member variables...
47
private GeneralPath JavaDoc _pathArrow = new GeneralPath JavaDoc();
48
49     // Constructor...
50
public CArrowImage(int nArrowDirection) {
51         this(15, 9, nArrowDirection);
52     }
53
54     public CArrowImage(int nWidth, int nHeight, int nArrowDirection) {
55         super(nWidth, nHeight, TYPE_INT_ARGB_PRE);
56
57         // Set the width, height and image type
58
Map JavaDoc map = new HashMap JavaDoc();
59         map.put(RenderingHints.KEY_ANTIALIASING,
60             RenderingHints.VALUE_ANTIALIAS_ON);
61         map.put(RenderingHints.KEY_RENDERING,
62             RenderingHints.VALUE_RENDER_QUALITY);
63
64         RenderingHints JavaDoc hints = new RenderingHints JavaDoc(map);
65
66         Graphics2D JavaDoc g2 = this.createGraphics();
67
68         // Create a graphics context for this buffered image
69
g2.setRenderingHints(hints);
70
71         float h = getHeight();
72         float w = getWidth();
73         float w13 = w / 3;
74         float w12 = w / 2;
75         float w23 = (w * 2) / 3;
76         float h13 = h / 3;
77         float h12 = h / 2;
78         float h23 = (h * 2) / 3;
79
80         switch (nArrowDirection) {
81         case ARROW_UP:
82             _pathArrow.moveTo(w12, h12);
83             _pathArrow.lineTo(w12, 0);
84             _pathArrow.lineTo(w, h - 1);
85             _pathArrow.lineTo(0, h - 1);
86             _pathArrow.closePath();
87             g2.setPaint(new GradientPaint JavaDoc(w13, h13,
88                     SystemColor.controlLtHighlight, w, h - 1,
89                     SystemColor.controlShadow));
90
91             g2.fill(_pathArrow);
92
93             g2.setColor(SystemColor.controlDkShadow);
94             g2.draw(new Line2D.Float JavaDoc(0, h - 1, w, h - 1));
95             g2.setColor(SystemColor.controlShadow);
96             g2.draw(new Line2D.Float JavaDoc(w12, 0, w, h - 1));
97             g2.setColor(SystemColor.controlLtHighlight);
98             g2.draw(new Line2D.Float JavaDoc(0, h - 1, w12, 0));
99
100             break;
101
102         case ARROW_DOWN:
103             _pathArrow.moveTo(w12, h12);
104             _pathArrow.lineTo(w, 0);
105             _pathArrow.lineTo(w12, h - 1);
106             _pathArrow.closePath();
107             g2.setPaint(new GradientPaint JavaDoc(0, 0, SystemColor.controlLtHighlight,
108                     w23, h23, SystemColor.controlShadow));
109             g2.fill(_pathArrow);
110
111             g2.setColor(SystemColor.controlDkShadow);
112             g2.draw(new Line2D.Float JavaDoc(w, 0, w12, h - 1));
113             g2.setColor(SystemColor.controlShadow);
114             g2.draw(new Line2D.Float JavaDoc(w12, h - 1, 0, 0));
115             g2.setColor(SystemColor.controlLtHighlight);
116             g2.draw(new Line2D.Float JavaDoc(0, 0, w, 0));
117
118             break;
119
120         case ARROW_LEFT:
121             _pathArrow.moveTo(w - 1, h13);
122             _pathArrow.lineTo(w13, h13);
123             _pathArrow.lineTo(w13, 0);
124             _pathArrow.lineTo(0, h12);
125             _pathArrow.lineTo(w13, h - 1);
126             _pathArrow.lineTo(w13, h23);
127             _pathArrow.lineTo(w - 1, h23);
128             _pathArrow.closePath();
129             g2.setPaint(new GradientPaint JavaDoc(0, 0, Color.white,
130             //SystemColor.controlLtHighlight,
131
0, h, SystemColor.controlShadow));
132             g2.fill(_pathArrow);
133
134             _pathArrow.reset();
135             _pathArrow.moveTo(w13, 0);
136             _pathArrow.lineTo(w13, h13);
137             _pathArrow.moveTo(w - 1, h13);
138             _pathArrow.lineTo(w - 1, h23);
139             _pathArrow.lineTo(w13, h23);
140             _pathArrow.lineTo(w13, h - 1);
141             g2.setColor(SystemColor.controlDkShadow);
142             g2.draw(_pathArrow);
143
144             g2.setColor(SystemColor.controlShadow);
145             g2.draw(new Line2D.Float JavaDoc(0, h12, w13, h - 1));
146
147             _pathArrow.reset();
148             _pathArrow.moveTo(0, h12);
149             _pathArrow.lineTo(w13, 0);
150             _pathArrow.moveTo(w13, h13);
151             _pathArrow.lineTo(w - 1, h13);
152             g2.setColor(SystemColor.controlLtHighlight);
153             g2.draw(_pathArrow);
154
155             break;
156
157         case ARROW_RIGHT:default: {
158             _pathArrow.moveTo(0, h13);
159             _pathArrow.lineTo(w23, h13);
160             _pathArrow.lineTo(w23, 0);
161             _pathArrow.lineTo(w - 1, h12);
162             _pathArrow.lineTo(w23, h - 1);
163             _pathArrow.lineTo(w23, h23);
164             _pathArrow.lineTo(0, h23);
165             _pathArrow.closePath();
166             g2.setPaint(new GradientPaint JavaDoc(0, 0, Color.white,
167             //SystemColor.controlLtHighlight,
168
0, h, SystemColor.controlShadow));
169             g2.fill(_pathArrow);
170
171             _pathArrow.reset();
172             _pathArrow.moveTo(0, h23);
173             _pathArrow.lineTo(w23, h23);
174             _pathArrow.moveTo(w23, h - 1);
175             _pathArrow.lineTo(w - 1, h12);
176             g2.setColor(SystemColor.controlDkShadow);
177             g2.draw(_pathArrow);
178
179             g2.setColor(SystemColor.controlShadow);
180             g2.draw(new Line2D.Float JavaDoc(w - 1, h12, w23, 0));
181
182             _pathArrow.reset();
183             _pathArrow.moveTo(w23, 0);
184             _pathArrow.lineTo(w23, h13);
185             _pathArrow.lineTo(0, h13);
186             _pathArrow.lineTo(0, h23);
187             _pathArrow.moveTo(w23, h23);
188             _pathArrow.lineTo(w23, h - 1);
189             g2.setColor(SystemColor.controlLtHighlight);
190             g2.draw(_pathArrow);
191
192             break;
193         }
194         }
195     }
196 }
197
Popular Tags