KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jfree > chart > plot > CategoryMarker


1 /* ===========================================================
2  * JFreeChart : a free chart library for the Java(tm) platform
3  * ===========================================================
4  *
5  * (C) Copyright 2000-2006, by Object Refinery Limited and Contributors.
6  *
7  * Project Info: http://www.jfree.org/jfreechart/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  * CategoryMarker.java
29  * -------------------
30  * (C) Copyright 2005, 2006, by Object Refinery Limited.
31  *
32  * Original Author: David Gilbert (for Object Refinery Limited);
33  * Contributor(s): Nicolas Brodu;
34  *
35  * $Id: CategoryMarker.java,v 1.1.2.4 2006/10/24 15:39:20 mungady Exp $
36  *
37  * Changes
38  * -------
39  * 20-May-2005 : Version 1 (DG);
40  * 19-Aug-2005 : Implemented equals(), fixed bug in constructor (DG);
41  * ------------- JFREECHART 1.0.x ---------------------------------------------
42  * 05-Sep-2006 : Added MarkerChangeListener support (DG);
43  *
44  */

45
46 package org.jfree.chart.plot;
47
48 import java.awt.BasicStroke JavaDoc;
49 import java.awt.Color JavaDoc;
50 import java.awt.Paint JavaDoc;
51 import java.awt.Stroke JavaDoc;
52 import java.io.Serializable JavaDoc;
53
54 import org.jfree.chart.event.MarkerChangeEvent;
55 import org.jfree.ui.LengthAdjustmentType;
56
57 /**
58  * A marker for a category.
59  * <br><br>
60  * Note that for serialization to work correctly, the category key must be an
61  * instance of a serializable class.
62  *
63  * @see CategoryPlot#addDomainMarker(CategoryMarker)
64  */

65 public class CategoryMarker extends Marker implements Cloneable JavaDoc, Serializable JavaDoc {
66
67     /** The category key. */
68     private Comparable JavaDoc key;
69     
70     /**
71      * A hint that the marker should be drawn as a line rather than a region.
72      */

73     private boolean drawAsLine = false;
74     
75     /**
76      * Creates a new category marker for the specified category.
77      *
78      * @param key the category key.
79      */

80     public CategoryMarker(Comparable JavaDoc key) {
81         this(key, Color.gray, new BasicStroke JavaDoc(1.0f));
82     }
83     
84     /**
85      * Creates a new category marker.
86      *
87      * @param key the key.
88      * @param paint the paint (<code>null</code> not permitted).
89      * @param stroke the stroke (<code>null</code> not permitted).
90      */

91     public CategoryMarker(Comparable JavaDoc key, Paint JavaDoc paint, Stroke JavaDoc stroke) {
92         this(key, paint, stroke, paint, stroke, 1.0f);
93     }
94     
95     /**
96      * Creates a new category marker.
97      *
98      * @param key the key.
99      * @param paint the paint (<code>null</code> not permitted).
100      * @param stroke the stroke (<code>null</code> not permitted).
101      * @param outlinePaint the outline paint (<code>null</code> permitted).
102      * @param outlineStroke the outline stroke (<code>null</code> permitted).
103      * @param alpha the alpha transparency.
104      */

105     public CategoryMarker(Comparable JavaDoc key, Paint JavaDoc paint, Stroke JavaDoc stroke,
106                           Paint JavaDoc outlinePaint, Stroke JavaDoc outlineStroke,
107                           float alpha) {
108         super(paint, stroke, outlinePaint, outlineStroke, alpha);
109         this.key = key;
110         setLabelOffsetType(LengthAdjustmentType.EXPAND);
111     }
112     
113     /**
114      * Returns the key.
115      *
116      * @return The key.
117      */

118     public Comparable JavaDoc getKey() {
119         return this.key;
120     }
121     
122     /**
123      * Sets the key and sends a {@link MarkerChangeEvent} to all registered
124      * listeners.
125      *
126      * @param key the key (<code>null</code> not permitted).
127      *
128      * @since 1.0.3
129      */

130     public void setKey(Comparable JavaDoc key) {
131         if (key == null) {
132             throw new IllegalArgumentException JavaDoc("Null 'key' argument.");
133         }
134         this.key = key;
135         notifyListeners(new MarkerChangeEvent(this));
136     }
137     
138     /**
139      * Returns the flag that controls whether the marker is drawn as a region
140      * or a line.
141      *
142      * @return A line.
143      */

144     public boolean getDrawAsLine() {
145         return this.drawAsLine;
146     }
147     
148     /**
149      * Sets the flag that controls whether the marker is drawn as a region or
150      * as a line, and sends a {@link MarkerChangeEvent} to all registered
151      * listeners.
152      *
153      * @param drawAsLine the flag.
154      */

155     public void setDrawAsLine(boolean drawAsLine) {
156         this.drawAsLine = drawAsLine;
157         notifyListeners(new MarkerChangeEvent(this));
158     }
159     
160     /**
161      * Tests the marker for equality with an arbitrary object.
162      *
163      * @param obj the object (<code>null</code> permitted).
164      *
165      * @return A boolean.
166      */

167     public boolean equals(Object JavaDoc obj) {
168         if (obj == null) {
169             return false;
170         }
171         if (!(obj instanceof CategoryMarker)) {
172             return false;
173         }
174         if (!super.equals(obj)) {
175             return false;
176         }
177         CategoryMarker that = (CategoryMarker) obj;
178         if (!this.key.equals(that.key)) {
179             return false;
180         }
181         if (this.drawAsLine != that.drawAsLine) {
182             return false;
183         }
184         return true;
185     }
186     
187 }
188
Popular Tags