KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jfree > ui > StrokeSample


1 /* ========================================================================
2  * JCommon : a free general purpose class library for the Java(tm) platform
3  * ========================================================================
4  *
5  * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
6  *
7  * Project Info: http://www.jfree.org/jcommon/index.html
8  *
9  * This library is free software; you can redistribute it and/or modify it
10  * under the terms of the GNU Lesser General Public License as published by
11  * the Free Software Foundation; either version 2.1 of the License, or
12  * (at your option) any later version.
13  *
14  * This library is distributed in the hope that it will be useful, but
15  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
17  * License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public
20  * License along with this library; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
22  * USA.
23  *
24  * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
25  * in the United States and other countries.]
26  *
27  * -----------------
28  * StrokeSample.java
29  * -----------------
30  * (C) Copyright 2000-2004, by Object Refinery Limited.
31  *
32  * Original Author: David Gilbert (for Object Refinery Limited);
33  * Contributor(s): -;
34  *
35  * $Id: StrokeSample.java,v 1.3 2005/10/18 13:18:34 mungady Exp $
36  *
37  * Changes (from 26-Oct-2001)
38  * --------------------------
39  * 26-Oct-2001 : Changed package to com.jrefinery.ui.*;
40  * 14-Oct-2002 : Fixed errors reported by Checkstyle (DG);
41  * 21-Mar-2003 : Fixed null pointer exception, bug 705126 (DG);
42  *
43  */

44
45 package org.jfree.ui;
46
47 import java.awt.BasicStroke JavaDoc;
48 import java.awt.Component JavaDoc;
49 import java.awt.Dimension JavaDoc;
50 import java.awt.Graphics JavaDoc;
51 import java.awt.Graphics2D JavaDoc;
52 import java.awt.Insets JavaDoc;
53 import java.awt.RenderingHints JavaDoc;
54 import java.awt.Stroke JavaDoc;
55 import java.awt.geom.Ellipse2D JavaDoc;
56 import java.awt.geom.Line2D JavaDoc;
57 import java.awt.geom.Point2D JavaDoc;
58
59 import javax.swing.JComponent JavaDoc;
60 import javax.swing.JList JavaDoc;
61 import javax.swing.ListCellRenderer JavaDoc;
62
63 /**
64  * A panel that displays a stroke sample.
65  *
66  * @author David Gilbert
67  */

68 public class StrokeSample extends JComponent JavaDoc implements ListCellRenderer JavaDoc {
69
70     /** The stroke being displayed. */
71     private Stroke JavaDoc stroke;
72
73     /** The preferred size of the component. */
74     private Dimension JavaDoc preferredSize;
75
76     /**
77      * Creates a StrokeSample for the specified stroke.
78      *
79      * @param stroke the sample stroke.
80      */

81     public StrokeSample(final Stroke JavaDoc stroke) {
82         this.stroke = stroke;
83         this.preferredSize = new Dimension JavaDoc(80, 18);
84     }
85
86     /**
87      * Returns the current Stroke object being displayed.
88      *
89      * @return the stroke.
90      */

91     public Stroke JavaDoc getStroke() {
92         return this.stroke;
93     }
94
95     /**
96      * Sets the Stroke object being displayed.
97      *
98      * @param stroke the stroke.
99      */

100     public void setStroke(final Stroke JavaDoc stroke) {
101         this.stroke = stroke;
102         repaint();
103     }
104
105     /**
106      * Returns the preferred size of the component.
107      *
108      * @return the preferred size of the component.
109      */

110     public Dimension JavaDoc getPreferredSize() {
111         return this.preferredSize;
112     }
113
114     /**
115      * Draws a line using the sample stroke.
116      *
117      * @param g the graphics device.
118      */

119     public void paintComponent(final Graphics JavaDoc g) {
120
121         final Graphics2D JavaDoc g2 = (Graphics2D JavaDoc) g;
122         g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
123         final Dimension JavaDoc size = getSize();
124         final Insets JavaDoc insets = getInsets();
125         final double xx = insets.left;
126         final double yy = insets.top;
127         final double ww = size.getWidth() - insets.left - insets.right;
128         final double hh = size.getHeight() - insets.top - insets.bottom;
129
130         // calculate point one
131
final Point2D JavaDoc one = new Point2D.Double JavaDoc(xx + 6, yy + hh / 2);
132         // calculate point two
133
final Point2D JavaDoc two = new Point2D.Double JavaDoc(xx + ww - 6, yy + hh / 2);
134         // draw a circle at point one
135
final Ellipse2D JavaDoc circle1 = new Ellipse2D.Double JavaDoc(one.getX() - 5, one.getY() - 5, 10, 10);
136         final Ellipse2D JavaDoc circle2 = new Ellipse2D.Double JavaDoc(two.getX() - 6, two.getY() - 5, 10, 10);
137
138         // draw a circle at point two
139
g2.draw(circle1);
140         g2.fill(circle1);
141         g2.draw(circle2);
142         g2.fill(circle2);
143
144         // draw a line connecting the points
145
final Line2D JavaDoc line = new Line2D.Double JavaDoc(one, two);
146         if (this.stroke != null) {
147             g2.setStroke(this.stroke);
148         }
149         else {
150             g2.setStroke(new BasicStroke JavaDoc(0.0f));
151         }
152         g2.draw(line);
153
154     }
155
156     /**
157      * Returns a list cell renderer for the stroke, so the sample can be displayed in a list or
158      * combo.
159      *
160      * @param list the list.
161      * @param value the value.
162      * @param index the index.
163      * @param isSelected selected?
164      * @param cellHasFocus focussed?
165      *
166      * @return the component for rendering.
167      */

168     public Component JavaDoc getListCellRendererComponent(final JList JavaDoc list, final Object JavaDoc value, final int index,
169                                                   final boolean isSelected, final boolean cellHasFocus) {
170         if (value instanceof StrokeSample) {
171             final StrokeSample in = (StrokeSample) value;
172             setStroke(in.getStroke());
173         }
174         return this;
175     }
176
177 }
178
Popular Tags