001 /* ===========================================================
002 * JFreeChart : a free chart library for the Java(tm) platform
003 * ===========================================================
004 *
005 * (C) Copyright 2000-2006, by Object Refinery Limited and Contributors.
006 *
007 * Project Info: http://www.jfree.org/jfreechart/index.html
008 *
009 * This library is free software; you can redistribute it and/or modify it
010 * under the terms of the GNU Lesser General Public License as published by
011 * the Free Software Foundation; either version 2.1 of the License, or
012 * (at your option) any later version.
013 *
014 * This library is distributed in the hope that it will be useful, but
015 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
016 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
017 * License for more details.
018 *
019 * You should have received a copy of the GNU Lesser General Public
020 * License along with this library; if not, write to the Free Software
021 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
022 * USA.
023 *
024 * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
025 * in the United States and other countries.]
026 *
027 * ---------------
028 * WindNeedle.java
029 * ---------------
030 * (C) Copyright 2002-2006, by the Australian Antarctic Division and
031 * Contributors.
032 *
033 * Original Author: Bryan Scott (for the Australian Antarctic Division);
034 * Contributor(s): David Gilbert (for Object Refinery Limited);
035 *
036 * $Id: WindNeedle.java,v 1.4.2.3 2006/08/02 10:40:57 mungady Exp $
037 *
038 * Changes:
039 * --------
040 * 25-Sep-2002 : Version 1, contributed by Bryan Scott (DG);
041 * 09-Sep-2003 : Added equals() method (DG);
042 *
043 */
044
045 package org.jfree.chart.needle;
046
047 import java.awt.Graphics2D;
048 import java.awt.geom.Point2D;
049 import java.awt.geom.Rectangle2D;
050 import java.io.Serializable;
051
052 /**
053 * A needle that indicates wind direction, for use with the
054 * {@link org.jfree.chart.plot.CompassPlot} class.
055 */
056 public class WindNeedle extends ArrowNeedle
057 implements Cloneable, Serializable {
058
059 /** For serialization. */
060 private static final long serialVersionUID = -2861061368907167834L;
061
062 /**
063 * Default constructor.
064 */
065 public WindNeedle() {
066 super(false); // isArrowAtTop
067 }
068
069 /**
070 * Draws the needle.
071 *
072 * @param g2 the graphics device.
073 * @param plotArea the plot area.
074 * @param rotate the rotation point.
075 * @param angle the angle.
076 */
077 protected void drawNeedle(Graphics2D g2, Rectangle2D plotArea,
078 Point2D rotate, double angle) {
079
080 super.drawNeedle(g2, plotArea, rotate, angle);
081 if ((rotate != null) && (plotArea != null)) {
082
083 int spacing = getSize() * 3;
084 Rectangle2D newArea = new Rectangle2D.Double();
085
086 Point2D newRotate = rotate;
087 newArea.setRect(plotArea.getMinX() - spacing, plotArea.getMinY(),
088 plotArea.getWidth(), plotArea.getHeight());
089 super.drawNeedle(g2, newArea, newRotate, angle);
090
091 newArea.setRect(plotArea.getMinX() + spacing,
092 plotArea.getMinY(), plotArea.getWidth(),
093 plotArea.getHeight());
094 super.drawNeedle(g2, newArea, newRotate, angle);
095
096 }
097 }
098
099 /**
100 * Tests another object for equality with this object.
101 *
102 * @param object the object to test.
103 *
104 * @return A boolean.
105 */
106 public boolean equals(Object object) {
107 if (object == null) {
108 return false;
109 }
110 if (object == this) {
111 return true;
112 }
113 if (super.equals(object) && object instanceof WindNeedle) {
114 return true;
115 }
116 return false;
117 }
118
119 }
120