Class CrosshairState

  • Direct Known Subclasses:
    CategoryCrosshairState, XYCrosshairState

    public class CrosshairState
    extends java.lang.Object
    Maintains state information about crosshairs on a plot between successive calls to the renderer's draw method. This class is used internally by JFreeChart - it is not intended for external use.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.awt.geom.Point2D anchor
      The anchor point in Java2D space - if null, don't update crosshair.
      private double anchorX
      The x-value (in data space) for the anchor point.
      private double anchorY
      The y-value (in data space) for the anchor point.
      private boolean calculateDistanceInDataSpace
      A flag that controls whether the distance is calculated in data space or Java2D space.
      private double crosshairX
      The x-value for the current crosshair point.
      private double crosshairY
      The y-value for the current crosshair point.
      private int datasetIndex
      The dataset index that the crosshair point relates to (this determines the axes that the crosshairs will be plotted against).
      private double distance
      The smallest distance (so far) between the anchor point and a data point.
    • Constructor Summary

      Constructors 
      Constructor Description
      CrosshairState()
      Creates a new crosshairState instance that calculates distance in Java2D space.
      CrosshairState​(boolean calculateDistanceInDataSpace)
      Creates a new crosshairState instance.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.awt.geom.Point2D getAnchor()
      Returns the anchor point.
      double getAnchorX()
      Returns the x-coordinate (in data space) for the anchor point.
      double getAnchorY()
      Returns the y-coordinate (in data space) for the anchor point.
      double getCrosshairDistance()
      Returns the distance between the anchor point and the current crosshair point.
      double getCrosshairX()
      Get the x-value for the crosshair point.
      double getCrosshairY()
      Get the y-value for the crosshair point.
      int getDatasetIndex()
      Returns the dataset index that the crosshair values relate to.
      void setAnchor​(java.awt.geom.Point2D anchor)
      Sets the anchor point.
      void setAnchorX​(double x)
      Sets the x-coordinate (in data space) for the anchor point.
      void setAnchorY​(double y)
      Sets the y-coordinate (in data space) for the anchor point.
      void setCrosshairDistance​(double distance)
      Sets the distance between the anchor point and the current crosshair point.
      void setCrosshairX​(double x)
      Sets the x coordinate for the crosshair.
      void setCrosshairY​(double y)
      Sets the y coordinate for the crosshair.
      void setDatasetIndex​(int index)
      Sets the dataset index that the current crosshair values relate to.
      void updateCrosshairPoint​(double x, double y, int datasetIndex, double transX, double transY, PlotOrientation orientation)
      Updates the crosshair point.
      void updateCrosshairX​(double x, double transX, int datasetIndex)
      Checks to see if the specified data point is the closest to the anchor point and, if yes, updates the current state.
      void updateCrosshairY​(double candidateY, double transY, int datasetIndex)
      Evaluates a y-value and if it is the closest to the anchor y-value it becomes the new crosshair value.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • calculateDistanceInDataSpace

        private boolean calculateDistanceInDataSpace
        A flag that controls whether the distance is calculated in data space or Java2D space.
      • anchorX

        private double anchorX
        The x-value (in data space) for the anchor point.
      • anchorY

        private double anchorY
        The y-value (in data space) for the anchor point.
      • anchor

        private java.awt.geom.Point2D anchor
        The anchor point in Java2D space - if null, don't update crosshair.
      • crosshairX

        private double crosshairX
        The x-value for the current crosshair point.
      • crosshairY

        private double crosshairY
        The y-value for the current crosshair point.
      • datasetIndex

        private int datasetIndex
        The dataset index that the crosshair point relates to (this determines the axes that the crosshairs will be plotted against).
      • distance

        private double distance
        The smallest distance (so far) between the anchor point and a data point.
    • Constructor Detail

      • CrosshairState

        public CrosshairState()
        Creates a new crosshairState instance that calculates distance in Java2D space.
      • CrosshairState

        public CrosshairState​(boolean calculateDistanceInDataSpace)
        Creates a new crosshairState instance. Determination of the data point nearest the anchor point can be calculated in either dataspace or Java2D space. The former should only be used for charts with a single set of axes.
        Parameters:
        calculateDistanceInDataSpace - a flag that controls whether the distance is calculated in data space or Java2D space.
    • Method Detail

      • getCrosshairDistance

        public double getCrosshairDistance()
        Returns the distance between the anchor point and the current crosshair point.
        Returns:
        The distance.
        See Also:
        setCrosshairDistance(double)
      • setCrosshairDistance

        public void setCrosshairDistance​(double distance)
        Sets the distance between the anchor point and the current crosshair point. As each data point is processed, its distance to the anchor point is compared with this value and, if it is closer, the data point becomes the new crosshair point.
        Parameters:
        distance - the distance.
        See Also:
        getCrosshairDistance()
      • updateCrosshairPoint

        public void updateCrosshairPoint​(double x,
                                         double y,
                                         int datasetIndex,
                                         double transX,
                                         double transY,
                                         PlotOrientation orientation)
        Updates the crosshair point.
        Parameters:
        x - the x-value.
        y - the y-value.
        datasetIndex - the dataset index.
        transX - the x-value in Java2D space.
        transY - the y-value in Java2D space.
        orientation - the plot orientation (null not permitted).
      • updateCrosshairX

        public void updateCrosshairX​(double x,
                                     double transX,
                                     int datasetIndex)
        Checks to see if the specified data point is the closest to the anchor point and, if yes, updates the current state.
        Parameters:
        x - the x-value.
        transX - the x-value in Java2D space.
        datasetIndex - the dataset index.
      • updateCrosshairY

        public void updateCrosshairY​(double candidateY,
                                     double transY,
                                     int datasetIndex)
        Evaluates a y-value and if it is the closest to the anchor y-value it becomes the new crosshair value.

        Used in cases where only the y-axis is numerical.

        Parameters:
        candidateY - y position of the candidate for the new crosshair point.
        transY - the y-value in Java2D space.
        datasetIndex - the index of the range axis for this y-value.
      • getAnchor

        public java.awt.geom.Point2D getAnchor()
        Returns the anchor point.
        Returns:
        The anchor point.
        See Also:
        setAnchor(Point2D)
      • setAnchor

        public void setAnchor​(java.awt.geom.Point2D anchor)
        Sets the anchor point. This is usually the mouse click point in a chart panel, and the crosshair point will often be the data item that is closest to the anchor point.

        Note that the x and y coordinates (in data space) are not updated by this method - the caller is responsible for ensuring that this happens in sync.
        Parameters:
        anchor - the anchor point (null permitted).
        See Also:
        getAnchor()
      • getAnchorX

        public double getAnchorX()
        Returns the x-coordinate (in data space) for the anchor point.
        Returns:
        The x-coordinate of the anchor point.
      • setAnchorX

        public void setAnchorX​(double x)
        Sets the x-coordinate (in data space) for the anchor point. Note that this does NOT update the anchor itself - the caller is responsible for ensuring this is done in sync.
        Parameters:
        x - the x-coordinate.
      • getAnchorY

        public double getAnchorY()
        Returns the y-coordinate (in data space) for the anchor point.
        Returns:
        The y-coordinate of teh anchor point.
      • setAnchorY

        public void setAnchorY​(double y)
        Sets the y-coordinate (in data space) for the anchor point. Note that this does NOT update the anchor itself - the caller is responsible for ensuring this is done in sync.
        Parameters:
        y - the y-coordinate.
      • getCrosshairX

        public double getCrosshairX()
        Get the x-value for the crosshair point.
        Returns:
        The x position of the crosshair point.
        See Also:
        setCrosshairX(double)
      • getCrosshairY

        public double getCrosshairY()
        Get the y-value for the crosshair point. This is the coordinate in data space measured against the range axis.
        Returns:
        The y position of the crosshair point.
        See Also:
        setCrosshairY(double)
      • getDatasetIndex

        public int getDatasetIndex()
        Returns the dataset index that the crosshair values relate to. The dataset is mapped to specific axes, and this is how the crosshairs are mapped also.
        Returns:
        The dataset index.
        See Also:
        setDatasetIndex(int)
      • setDatasetIndex

        public void setDatasetIndex​(int index)
        Sets the dataset index that the current crosshair values relate to.
        Parameters:
        index - the dataset index.
        See Also:
        getDatasetIndex()