Class ThermometerPlot

    • Field Detail

      • serialVersionUID

        private static final long serialVersionUID
        For serialization.
        See Also:
        Constant Field Values
      • UNITS_NONE

        public static final int UNITS_NONE
        A constant for unit type 'None'.
        See Also:
        Constant Field Values
      • UNITS_FAHRENHEIT

        public static final int UNITS_FAHRENHEIT
        A constant for unit type 'Fahrenheit'.
        See Also:
        Constant Field Values
      • UNITS_CELCIUS

        public static final int UNITS_CELCIUS
        A constant for unit type 'Celcius'.
        See Also:
        Constant Field Values
      • UNITS_KELVIN

        public static final int UNITS_KELVIN
        A constant for unit type 'Kelvin'.
        See Also:
        Constant Field Values
      • NONE

        public static final int NONE
        A constant for the value label position (no label).
        See Also:
        Constant Field Values
      • RIGHT

        public static final int RIGHT
        A constant for the value label position (right of the thermometer).
        See Also:
        Constant Field Values
      • LEFT

        public static final int LEFT
        A constant for the value label position (left of the thermometer).
        See Also:
        Constant Field Values
      • BULB

        public static final int BULB
        A constant for the value label position (in the thermometer bulb).
        See Also:
        Constant Field Values
      • NORMAL

        public static final int NORMAL
        A constant for the 'normal' range.
        See Also:
        Constant Field Values
      • WARNING

        public static final int WARNING
        A constant for the 'warning' range.
        See Also:
        Constant Field Values
      • CRITICAL

        public static final int CRITICAL
        A constant for the 'critical' range.
        See Also:
        Constant Field Values
      • UNITS

        protected static final java.lang.String[] UNITS
        The unit strings.
      • RANGE_LOW

        protected static final int RANGE_LOW
        Index for low value in subrangeInfo matrix.
        See Also:
        Constant Field Values
      • RANGE_HIGH

        protected static final int RANGE_HIGH
        Index for high value in subrangeInfo matrix.
        See Also:
        Constant Field Values
      • DISPLAY_LOW

        protected static final int DISPLAY_LOW
        Index for display low value in subrangeInfo matrix.
        See Also:
        Constant Field Values
      • DISPLAY_HIGH

        protected static final int DISPLAY_HIGH
        Index for display high value in subrangeInfo matrix.
        See Also:
        Constant Field Values
      • DEFAULT_LOWER_BOUND

        protected static final double DEFAULT_LOWER_BOUND
        The default lower bound.
        See Also:
        Constant Field Values
      • DEFAULT_UPPER_BOUND

        protected static final double DEFAULT_UPPER_BOUND
        The default upper bound.
        See Also:
        Constant Field Values
      • DEFAULT_BULB_RADIUS

        protected static final int DEFAULT_BULB_RADIUS
        The default bulb radius.
        See Also:
        Constant Field Values
      • DEFAULT_COLUMN_RADIUS

        protected static final int DEFAULT_COLUMN_RADIUS
        The default column radius.
        See Also:
        Constant Field Values
      • DEFAULT_GAP

        protected static final int DEFAULT_GAP
        The default gap between the outlines representing the thermometer.
        See Also:
        Constant Field Values
      • dataset

        private ValueDataset dataset
        The dataset for the plot.
      • rangeAxis

        private ValueAxis rangeAxis
        The range axis.
      • lowerBound

        private double lowerBound
        The lower bound for the thermometer.
      • upperBound

        private double upperBound
        The upper bound for the thermometer.
      • bulbRadius

        private int bulbRadius
        The value label position.
      • columnRadius

        private int columnRadius
        The column radius.
      • gap

        private int gap
        The gap between the two outlines the represent the thermometer.
      • padding

        private RectangleInsets padding
        Blank space inside the plot area around the outside of the thermometer.
      • thermometerStroke

        private transient java.awt.Stroke thermometerStroke
        Stroke for drawing the thermometer
      • thermometerPaint

        private transient java.awt.Paint thermometerPaint
        Paint for drawing the thermometer
      • units

        private int units
        The display units
      • valueLocation

        private int valueLocation
        The value label position.
      • axisLocation

        private int axisLocation
        The position of the axis
      • valueFont

        private java.awt.Font valueFont
        The font to write the value in
      • valuePaint

        private transient java.awt.Paint valuePaint
        Colour that the value is written in
      • valueFormat

        private java.text.NumberFormat valueFormat
        Number format for the value
      • mercuryPaint

        private transient java.awt.Paint mercuryPaint
        The default paint for the mercury in the thermometer.
      • showValueLines

        private boolean showValueLines
        A flag that controls whether value lines are drawn.
      • subrange

        private int subrange
        The display sub-range.
      • subrangeInfo

        private double[][] subrangeInfo
        The start and end values for the subranges.
      • followDataInSubranges

        private boolean followDataInSubranges
        A flag that controls whether or not the axis range adjusts to the sub-ranges.
      • useSubrangePaint

        private boolean useSubrangePaint
        A flag that controls whether or not the mercury paint changes with the subranges.
      • subrangePaint

        private transient java.awt.Paint[] subrangePaint
        Paint for each range
      • subrangeIndicatorsVisible

        private boolean subrangeIndicatorsVisible
        A flag that controls whether the sub-range indicators are visible.
      • subrangeIndicatorStroke

        private transient java.awt.Stroke subrangeIndicatorStroke
        The stroke for the sub-range indicators.
      • rangeIndicatorStroke

        private transient java.awt.Stroke rangeIndicatorStroke
        The range indicator stroke.
      • localizationResources

        protected static java.util.ResourceBundle localizationResources
        The resourceBundle for the localization.
    • Constructor Detail

      • ThermometerPlot

        public ThermometerPlot()
        Creates a new thermometer plot.
      • ThermometerPlot

        public ThermometerPlot​(ValueDataset dataset)
        Creates a new thermometer plot, using default attributes where necessary.
        Parameters:
        dataset - the data set.
    • Method Detail

      • setDataset

        public void setDataset​(ValueDataset dataset)
        Sets the dataset for the plot, replacing the existing dataset if there is one, and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        dataset - the dataset (null permitted).
        See Also:
        getDataset()
      • setRangeAxis

        public void setRangeAxis​(ValueAxis axis)
        Sets the range axis for the plot and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        axis - the new axis (null not permitted).
        See Also:
        getRangeAxis()
      • getLowerBound

        public double getLowerBound()
        Returns the lower bound for the thermometer. The data value can be set lower than this, but it will not be shown in the thermometer.
        Returns:
        The lower bound.
        See Also:
        setLowerBound(double)
      • setLowerBound

        public void setLowerBound​(double lower)
        Sets the lower bound for the thermometer.
        Parameters:
        lower - the lower bound.
        See Also:
        getLowerBound()
      • getUpperBound

        public double getUpperBound()
        Returns the upper bound for the thermometer. The data value can be set higher than this, but it will not be shown in the thermometer.
        Returns:
        The upper bound.
        See Also:
        setUpperBound(double)
      • setUpperBound

        public void setUpperBound​(double upper)
        Sets the upper bound for the thermometer.
        Parameters:
        upper - the upper bound.
        See Also:
        getUpperBound()
      • setRange

        public void setRange​(double lower,
                             double upper)
        Sets the lower and upper bounds for the thermometer.
        Parameters:
        lower - the lower bound.
        upper - the upper bound.
      • setPadding

        public void setPadding​(RectangleInsets padding)
        Sets the padding for the thermometer and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        padding - the padding (null not permitted).
        See Also:
        getPadding()
      • setThermometerStroke

        public void setThermometerStroke​(java.awt.Stroke s)
        Sets the stroke used to draw the thermometer outline and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        s - the new stroke (null ignored).
        See Also:
        getThermometerStroke()
      • setThermometerPaint

        public void setThermometerPaint​(java.awt.Paint paint)
        Sets the paint used to draw the thermometer outline and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        paint - the new paint (null ignored).
        See Also:
        getThermometerPaint()
      • setUnits

        public void setUnits​(int u)
        Sets the units to be displayed in the thermometer. Use one of the following constants:
        • UNITS_NONE : no units displayed.
        • UNITS_FAHRENHEIT : units displayed in Fahrenheit.
        • UNITS_CELCIUS : units displayed in Celcius.
        • UNITS_KELVIN : units displayed in Kelvin.
        Parameters:
        u - the new unit type.
        See Also:
        getUnits()
      • getValueLocation

        public int getValueLocation()
        Returns a code indicating the location at which the value label is displayed.
        Returns:
        The location (one of NONE, RIGHT, LEFT and BULB.).
      • setValueLocation

        public void setValueLocation​(int location)
        Sets the location at which the current value is displayed and sends a PlotChangeEvent to all registered listeners.

        The location can be one of the constants: NONE, RIGHT, LEFT and BULB.

        Parameters:
        location - the location.
      • setAxisLocation

        public void setAxisLocation​(int location)
        Sets the location at which the axis is displayed relative to the thermometer, and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        location - the location (one of NONE, LEFT and RIGHT).
        See Also:
        getAxisLocation()
      • getValueFont

        public java.awt.Font getValueFont()
        Gets the font used to display the current value.
        Returns:
        The font.
        See Also:
        setValueFont(Font)
      • setValueFont

        public void setValueFont​(java.awt.Font f)
        Sets the font used to display the current value.
        Parameters:
        f - the new font (null not permitted).
        See Also:
        getValueFont()
      • getValuePaint

        public java.awt.Paint getValuePaint()
        Gets the paint used to display the current value.
        Returns:
        The paint.
        See Also:
        setValuePaint(Paint)
      • setValuePaint

        public void setValuePaint​(java.awt.Paint paint)
        Sets the paint used to display the current value and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        paint - the new paint (null not permitted).
        See Also:
        getValuePaint()
      • setValueFormat

        public void setValueFormat​(java.text.NumberFormat formatter)
        Sets the formatter for the value label and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        formatter - the new formatter (null not permitted).
      • getMercuryPaint

        public java.awt.Paint getMercuryPaint()
        Returns the default mercury paint.
        Returns:
        The paint (never null).
        See Also:
        setMercuryPaint(Paint)
      • setMercuryPaint

        public void setMercuryPaint​(java.awt.Paint paint)
        Sets the default mercury paint and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        paint - the new paint (null not permitted).
        See Also:
        getMercuryPaint()
      • setSubrangeInfo

        public void setSubrangeInfo​(int range,
                                    double low,
                                    double hi)
        Sets information for a particular range.
        Parameters:
        range - the range to specify information about.
        low - the low value for the range
        hi - the high value for the range
      • setSubrangeInfo

        public void setSubrangeInfo​(int range,
                                    double rangeLow,
                                    double rangeHigh,
                                    double displayLow,
                                    double displayHigh)
        Sets the subrangeInfo attribute of the ThermometerPlot object
        Parameters:
        range - the new rangeInfo value.
        rangeLow - the new rangeInfo value
        rangeHigh - the new rangeInfo value
        displayLow - the new rangeInfo value
        displayHigh - the new rangeInfo value
      • setSubrange

        public void setSubrange​(int range,
                                double low,
                                double high)
        Sets the bounds for a subrange.
        Parameters:
        range - the range type.
        low - the low value.
        high - the high value.
      • setDisplayRange

        public void setDisplayRange​(int range,
                                    double low,
                                    double high)
        Sets the displayed bounds for a sub range.
        Parameters:
        range - the range type.
        low - the low value.
        high - the high value.
      • getSubrangePaint

        public java.awt.Paint getSubrangePaint​(int range)
        Gets the paint used for a particular subrange.
        Parameters:
        range - the range (.
        Returns:
        The paint.
        See Also:
        setSubrangePaint(int, Paint)
      • setSubrangePaint

        public void setSubrangePaint​(int range,
                                     java.awt.Paint paint)
        Sets the paint to be used for a subrange and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        range - the range (0, 1 or 2).
        paint - the paint to be applied (null not permitted).
        See Also:
        getSubrangePaint(int)
      • getFollowDataInSubranges

        public boolean getFollowDataInSubranges()
        Returns a flag that controls whether or not the thermometer axis zooms to display the subrange within which the data value falls.
        Returns:
        The flag.
      • setFollowDataInSubranges

        public void setFollowDataInSubranges​(boolean flag)
        Sets the flag that controls whether or not the thermometer axis zooms to display the subrange within which the data value falls.
        Parameters:
        flag - the flag.
      • getUseSubrangePaint

        public boolean getUseSubrangePaint()
        Returns a flag that controls whether or not the mercury color changes for each subrange.
        Returns:
        The flag.
        See Also:
        setUseSubrangePaint(boolean)
      • setUseSubrangePaint

        public void setUseSubrangePaint​(boolean flag)
        Sets the range colour change option.
        Parameters:
        flag - the new range colour change option
        See Also:
        getUseSubrangePaint()
      • getBulbRadius

        public int getBulbRadius()
        Returns the bulb radius, in Java2D units.
        Returns:
        The bulb radius.
      • setBulbRadius

        public void setBulbRadius​(int r)
        Sets the bulb radius (in Java2D units) and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        r - the new radius (in Java2D units).
        See Also:
        getBulbRadius()
      • getBulbDiameter

        public int getBulbDiameter()
        Returns the bulb diameter, which is always twice the value returned by getBulbRadius().
        Returns:
        The bulb diameter.
      • getColumnRadius

        public int getColumnRadius()
        Returns the column radius, in Java2D units.
        Returns:
        The column radius.
        See Also:
        setColumnRadius(int)
      • setColumnRadius

        public void setColumnRadius​(int r)
        Sets the column radius (in Java2D units) and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        r - the new radius.
        See Also:
        getColumnRadius()
      • getColumnDiameter

        public int getColumnDiameter()
        Returns the column diameter, which is always twice the value returned by getColumnRadius().
        Returns:
        The column diameter.
      • getGap

        public int getGap()
        Returns the gap, in Java2D units, between the two outlines that represent the thermometer.
        Returns:
        The gap.
        See Also:
        setGap(int)
      • setGap

        public void setGap​(int gap)
        Sets the gap (in Java2D units) between the two outlines that represent the thermometer, and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        gap - the new gap.
        See Also:
        getGap()
      • draw

        public void draw​(java.awt.Graphics2D g2,
                         java.awt.geom.Rectangle2D area,
                         java.awt.geom.Point2D anchor,
                         PlotState parentState,
                         PlotRenderingInfo info)
        Draws the plot on a Java 2D graphics device (such as the screen or a printer).
        Specified by:
        draw in class Plot
        Parameters:
        g2 - the graphics device.
        area - the area within which the plot should be drawn.
        anchor - the anchor point (null permitted).
        parentState - the state from the parent plot, if there is one.
        info - collects info about the drawing.
      • zoom

        public void zoom​(double percent)
        A zoom method that does nothing. Plots are required to support the zoom operation. In the case of a thermometer chart, it doesn't make sense to zoom in or out, so the method is empty.
        Overrides:
        zoom in class Plot
        Parameters:
        percent - the zoom percentage.
      • getPlotType

        public java.lang.String getPlotType()
        Returns a short string describing the type of plot.
        Specified by:
        getPlotType in class Plot
        Returns:
        A short string describing the type of plot.
      • getDataRange

        public Range getDataRange​(ValueAxis axis)
        Returns the data range.
        Specified by:
        getDataRange in interface ValueAxisPlot
        Parameters:
        axis - the axis.
        Returns:
        The range of data displayed.
      • setAxisRange

        protected void setAxisRange()
        Sets the axis range to the current values in the rangeInfo array.
      • isValidNumber

        protected static boolean isValidNumber​(double d)
        Determine whether a number is valid and finite.
        Parameters:
        d - the number to be tested.
        Returns:
        true if the number is valid and finite, and false otherwise.
      • inSubrange

        private boolean inSubrange​(int subrange,
                                   double value)
        Returns true if the value is in the specified range, and false otherwise.
        Parameters:
        subrange - the subrange.
        value - the value to check.
        Returns:
        A boolean.
      • equals

        public boolean equals​(java.lang.Object obj)
        Tests this plot for equality with another object. The plot's dataset is not considered in the test.
        Overrides:
        equals in class Plot
        Parameters:
        obj - the object (null permitted).
        Returns:
        true or false.
      • equal

        private static boolean equal​(double[][] array1,
                                     double[][] array2)
        Tests two double[][] arrays for equality.
        Parameters:
        array1 - the first array (null permitted).
        array2 - the second arrray (null permitted).
        Returns:
        A boolean.
      • clone

        public java.lang.Object clone()
                               throws java.lang.CloneNotSupportedException
        Returns a clone of the plot.
        Specified by:
        clone in interface PublicCloneable
        Overrides:
        clone in class Plot
        Returns:
        A clone.
        Throws:
        java.lang.CloneNotSupportedException - if the plot cannot be cloned.
      • writeObject

        private void writeObject​(java.io.ObjectOutputStream stream)
                          throws java.io.IOException
        Provides serialization support.
        Parameters:
        stream - the output stream.
        Throws:
        java.io.IOException - if there is an I/O error.
      • readObject

        private void readObject​(java.io.ObjectInputStream stream)
                         throws java.io.IOException,
                                java.lang.ClassNotFoundException
        Provides serialization support.
        Parameters:
        stream - the input stream.
        Throws:
        java.io.IOException - if there is an I/O error.
        java.lang.ClassNotFoundException - if there is a classpath problem.
      • zoomRangeAxes

        public void zoomRangeAxes​(double factor,
                                  PlotRenderingInfo state,
                                  java.awt.geom.Point2D source,
                                  boolean useAnchor)
        Multiplies the range on the range axis/axes by the specified factor.
        Specified by:
        zoomRangeAxes in interface Zoomable
        Parameters:
        factor - the zoom factor.
        state - the plot state.
        source - the source point.
        useAnchor - a flag that controls whether or not the source point is used for the zoom anchor.
        See Also:
        Zoomable.zoomDomainAxes(double, PlotRenderingInfo, Point2D)