1 /* ===========================================================
2  * JFreeChart : a free chart library for the Java(tm) platform
3  * ===========================================================
4  *
5  * (C) Copyright 2000-2013, 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  * [Oracle and Java are registered trademarks of Oracle and/or its affiliates.
25  * Other names may be trademarks of their respective owners.]
26  *
27  * -----------------
28  * VectorSeries.java
29  * -----------------
30  * (C) Copyright 2007, 2008, by Object Refinery Limited.
31  *
32  * Original Author:  David Gilbert (for Object Refinery Limited);
33  * Contributor(s):   -;
34  *
35  * Changes
36  * -------
37  * 30-Jan-2007 : Version 1 (DG);
38  * 24-May-2007 : Renamed getDeltaXValue() --> getVectorXValue(), and likewise
39  *               for getDeltaYValue() (DG);
40  * 25-May-2007 : Added remove(int) and clear() methods, and moved from the
41  *               experimental to the main source tree (DG);
42  * 27-Nov-2007 : Removed redundant clear() method (DG);
43  *
44  */
45 
46 package org.jfree.data.xy;
47 
48 import org.jfree.data.ComparableObjectItem;
49 import org.jfree.data.ComparableObjectSeries;
50 import org.jfree.data.general.SeriesChangeEvent;
51 
52 /**
53  * A list of (x,y, deltaX, deltaY) data items.
54  *
55  * @since 1.0.6
56  *
57  * @see VectorSeriesCollection
58  */
59 public class VectorSeries extends ComparableObjectSeries {
60 
61     /**
62      * Creates a new empty series.
63      *
64      * @param key  the series key (<code>null</code> not permitted).
65      */
VectorSeries(Comparable key)66     public VectorSeries(Comparable key) {
67         this(key, false, true);
68     }
69 
70     /**
71      * Constructs a new series that contains no data.  You can specify
72      * whether or not duplicate x-values are allowed for the series.
73      *
74      * @param key  the series key (<code>null</code> not permitted).
75      * @param autoSort  a flag that controls whether or not the items in the
76      *                  series are sorted.
77      * @param allowDuplicateXValues  a flag that controls whether duplicate
78      *                               x-values are allowed.
79      */
VectorSeries(Comparable key, boolean autoSort, boolean allowDuplicateXValues)80     public VectorSeries(Comparable key, boolean autoSort,
81             boolean allowDuplicateXValues) {
82         super(key, autoSort, allowDuplicateXValues);
83     }
84 
85     /**
86      * Adds a data item to the series.
87      *
88      * @param x  the x-value.
89      * @param y  the y-value.
90      * @param deltaX  the vector x.
91      * @param deltaY  the vector y.
92      */
add(double x, double y, double deltaX, double deltaY)93     public void add(double x, double y, double deltaX, double deltaY) {
94         super.add(new VectorDataItem(x, y, deltaX, deltaY), true);
95     }
96 
97     /**
98      * Removes the item at the specified index and sends a
99      * {@link SeriesChangeEvent} to all registered listeners.
100      *
101      * @param index  the index.
102      *
103      * @return The item removed.
104      */
105     @Override
remove(int index)106     public ComparableObjectItem remove(int index) {
107         VectorDataItem result = (VectorDataItem) this.data.remove(index);
108         fireSeriesChanged();
109         return result;
110     }
111 
112     /**
113      * Returns the x-value for the specified item.
114      *
115      * @param index  the item index.
116      *
117      * @return The x-value.
118      */
getXValue(int index)119     public double getXValue(int index) {
120         VectorDataItem item = (VectorDataItem) this.getDataItem(index);
121         return item.getXValue();
122     }
123 
124     /**
125      * Returns the y-value for the specified item.
126      *
127      * @param index  the item index.
128      *
129      * @return The y-value.
130      */
getYValue(int index)131     public double getYValue(int index) {
132         VectorDataItem item = (VectorDataItem) getDataItem(index);
133         return item.getYValue();
134     }
135 
136     /**
137      * Returns the x-component of the vector for an item in the series.
138      *
139      * @param index  the item index.
140      *
141      * @return The x-component of the vector.
142      */
getVectorXValue(int index)143     public double getVectorXValue(int index) {
144         VectorDataItem item = (VectorDataItem) getDataItem(index);
145         return item.getVectorX();
146     }
147 
148     /**
149      * Returns the y-component of the vector for an item in the series.
150      *
151      * @param index  the item index.
152      *
153      * @return The y-component of the vector.
154      */
getVectorYValue(int index)155     public double getVectorYValue(int index) {
156         VectorDataItem item = (VectorDataItem) getDataItem(index);
157         return item.getVectorY();
158     }
159 
160     /**
161      * Returns the data item at the specified index.
162      *
163      * @param index  the item index.
164      *
165      * @return The data item.
166      */
167     @Override
getDataItem(int index)168     public ComparableObjectItem getDataItem(int index) {
169         // overridden to make public
170         return super.getDataItem(index);
171     }
172 
173 }
174