    001    /* ===========================================================
    002     * JFreeChart : a free chart library for the Java(tm) platform
    003     * ===========================================================
    004     *
    005     * (C) Copyright 2000-2008, 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     * VectorSeries.java
    029     * -----------------
    030     * (C) Copyright 2007, 2008, by Object Refinery Limited.
    031     *
    032     * Original Author:  David Gilbert (for Object Refinery Limited);
    033     * Contributor(s):   -;
    034     *
    035     * Changes
    036     * -------
    037     * 30-Jan-2007 : Version 1 (DG);
    038     * 24-May-2007 : Renamed getDeltaXValue() --> getVectorXValue(), and likewise
    039     *               for getDeltaYValue() (DG);
    040     * 25-May-2007 : Added remove(int) and clear() methods, and moved from the
    041     *               experimental to the main source tree (DG);
    042     * 27-Nov-2007 : Removed redundant clear() method (DG);
    043     *
    044     */
    045
    046    package org.jfree.data.xy;
    047
    048    import org.jfree.data.ComparableObjectItem;
    049    import org.jfree.data.ComparableObjectSeries;
    050    import org.jfree.data.general.SeriesChangeEvent;
    051
    052    /**
    053     * A list of (x,y, deltaX, deltaY) data items.
    054     *
    055     * @since 1.0.6
    056     *
    057     * @see VectorSeriesCollection
    058     */
    059    public class VectorSeries extends ComparableObjectSeries {
    060
    061        /**
    062         * Creates a new empty series.
    063         *
    064         * @param key  the series key (<code>null</code> not permitted).
    065         */
    066        public VectorSeries(Comparable key) {
    067            this(key, false, true);
    068        }
    069
    070        /**
    071         * Constructs a new series that contains no data.  You can specify
    072         * whether or not duplicate x-values are allowed for the series.
    073         *
    074         * @param key  the series key (<code>null</code> not permitted).
    075         * @param autoSort  a flag that controls whether or not the items in the
    076         *                  series are sorted.
    077         * @param allowDuplicateXValues  a flag that controls whether duplicate
    078         *                               x-values are allowed.
    079         */
    080        public VectorSeries(Comparable key, boolean autoSort,
    081                boolean allowDuplicateXValues) {
    082            super(key, autoSort, allowDuplicateXValues);
    083        }
    084
    085        /**
    086         * Adds a data item to the series.
    087         *
    088         * @param x  the x-value.
    089         * @param y  the y-value.
    090         * @param deltaX  the vector x.
    091         * @param deltaY  the vector y.
    092         */
    093        public void add(double x, double y, double deltaX, double deltaY) {
    094            super.add(new VectorDataItem(x, y, deltaX, deltaY), true);
    095        }
    096
    097        /**
    098         * Removes the item at the specified index and sends a
    099         * {@link SeriesChangeEvent} to all registered listeners.
    100         *
    101         * @param index  the index.
    102         *
    103         * @return The item removed.
    104         */
    105        public ComparableObjectItem remove(int index) {
    106            VectorDataItem result = (VectorDataItem) this.data.remove(index);
    107            fireSeriesChanged();
    108            return result;
    109        }
    110
    111        /**
    112         * Returns the x-value for the specified item.
    113         *
    114         * @param index  the item index.
    115         *
    116         * @return The x-value.
    117         */
    118        public double getXValue(int index) {
    119            VectorDataItem item = (VectorDataItem) this.getDataItem(index);
    120            return item.getXValue();
    121        }
    122
    123        /**
    124         * Returns the y-value for the specified item.
    125         *
    126         * @param index  the item index.
    127         *
    128         * @return The y-value.
    129         */
    130        public double getYValue(int index) {
    131            VectorDataItem item = (VectorDataItem) getDataItem(index);
    132            return item.getYValue();
    133        }
    134
    135        /**
    136         * Returns the x-component of the vector for an item in the series.
    137         *
    138         * @param index  the item index.
    139         *
    140         * @return The x-component of the vector.
    141         */
    142        public double getVectorXValue(int index) {
    143            VectorDataItem item = (VectorDataItem) getDataItem(index);
    144            return item.getVectorX();
    145        }
    146
    147        /**
    148         * Returns the y-component of the vector for an item in the series.
    149         *
    150         * @param index  the item index.
    151         *
    152         * @return The y-component of the vector.
    153         */
    154        public double getVectorYValue(int index) {
    155            VectorDataItem item = (VectorDataItem) getDataItem(index);
    156            return item.getVectorY();
    157        }
    158
    159        /**
    160         * Returns the data item at the specified index.
    161         *
    162         * @param index  the item index.
    163         *
    164         * @return The data item.
    165         */
    166        public ComparableObjectItem getDataItem(int index) {
    167            // overridden to make public
    168            return super.getDataItem(index);
    169        }
    170
    171    }