content: /* ===========================================================
   * JFreeChart : a free chart library for the Java(tm) platform
   * ===========================================================
   *
   * (C) Copyright 2000-2013, by Object Refinery Limited and Contributors.
   *
   * Project Info:  http://www.jfree.org/jfreechart/index.html
   *
   * This library is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as published by
   * the Free Software Foundation; either version 2.1 of the License, or
   * (at your option) any later version.
   *
   * This library is distributed in the hope that it will be useful, but
   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
   * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
   * License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this library; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
   * USA.
   *
   * [Oracle and Java are registered trademarks of Oracle and/or its affiliates. 
   * Other names may be trademarks of their respective owners.]
   *
   * -----------------
   * XYItemEntity.java
   * -----------------
   * (C) Copyright 2002-2013, by Object Refinery Limited.
   *
   * Original Author:  David Gilbert (for Object Refinery Limited);
   * Contributor(s):   Richard Atkinson;
   *                   Christian W. Zuckschwerdt;
   *
   * Changes:
   * --------
   * 23-May-2002 : Version 1 (DG);
   * 12-Jun-2002 : Added accessor methods and Javadoc comments (DG);
   * 26-Jun-2002 : Added getImageMapAreaTag() method (DG);
   * 05-Aug-2002 : Added new constructor to populate URLText
   *               Moved getImageMapAreaTag() to ChartEntity (superclass) (RA);
   * 03-Oct-2002 : Fixed errors reported by Checkstyle (DG);
   * 30-Jun-2003 : Added XYDataset reference (CZ);
   * 20-May-2004 : Added equals() and clone() methods and implemented
   *               Serializable (DG);
   * 11-Jan-2005 : Removed deprecated code in preparation for 1.0.0 release (DG);
   *
   */
  
  package org.jfree.chart.entity;
  
  import java.awt.Shape;
  
  import org.jfree.data.extension.DatasetCursor;
  import org.jfree.data.extension.impl.XYCursor;
  import org.jfree.data.general.Dataset;
  import org.jfree.data.xy.XYDataset;
  
  /**
   * A chart entity that represents one item within an
   * {@link org.jfree.chart.plot.XYPlot}.
   */
  public class XYItemEntity extends DataItemEntity {
  
      /** For serialization. */
      private static final long serialVersionUID = -3870862224880283771L;
  
      /** The dataset. */
      private transient XYDataset dataset;
  
      /** The series. */
      private int series;
  
      /** The item. */
      private int item;
  
      /**
       * Creates a new entity.
       *
       * @param area  the area.
       * @param dataset  the dataset.
       * @param series  the series (zero-based index).
       * @param item  the item (zero-based index).
       * @param toolTipText  the tool tip text.
       * @param urlText  the URL text for HTML image maps.
       */
      public XYItemEntity(Shape area, XYDataset dataset, int series, int item,
                          String toolTipText, String urlText) {
          super(area, toolTipText, urlText);
          this.dataset = dataset;
          this.series = series;
          this.item = item;
      }
  
      /**
       * Returns the dataset this entity refers to.
       *
       * @return The dataset.
       */
      public XYDataset getDataset() {
          return this.dataset;
      }
  
      /**
       * @see DataItemEntity#getGeneralDataset() 
       */
      public Dataset getGeneralDataset() {
          return this.dataset;
      }
  
      /**
       * Sets the dataset this entity refers to.
       *
       * @param dataset  the dataset.
       */
      public void setDataset(XYDataset dataset) {
          this.dataset = dataset;
      }
  
      /**
       * Returns the series index.
       *
       * @return The series index.
       */
      public int getSeriesIndex() {
          return this.series;
      }
  
      /**
       * Sets the series index.
       *
       * @param series the series index (zero-based).
       */
      public void setSeriesIndex(int series) {
          this.series = series;
      }
  
      /**
       * Returns the item index.
       *
       * @return The item index.
       */
      public int getItem() {
          return this.item;
      }
  
      /**
       * Sets the item index.
       *
       * @param item the item index (zero-based).
       */
      public void setItem(int item) {
          this.item = item;
      }
  
      /**
       * Tests the entity for equality with an arbitrary object.
       *
       * @param obj  the object (<code>null</code> permitted).
       *
       * @return A boolean.
       */
      @Override
      public boolean equals(Object obj) {
          if (obj == this) {
              return true;
          }
          if (obj instanceof XYItemEntity && super.equals(obj)) {
              XYItemEntity ie = (XYItemEntity) obj;
              if (this.series != ie.series) {
                  return false;
              }
              if (this.item != ie.item) {
                  return false;
              }
              return true;
          }
          return false;
      }
  
      /**
       * Returns a string representation of this instance, useful for debugging
       * purposes.
       *
       * @return A string.
       */
      @Override
      public String toString() {
          return "XYItemEntity: series = " + getSeriesIndex() + ", item = "
              + getItem() + ", dataset = " + getDataset();
      }
  
      @Override
      public DatasetCursor getItemCursor() {
          return new XYCursor(series, item);
      }
  
  }
  