Module platform

Class ThermometerPlot

java.lang.Object
org.jfree.chart.plot.Plot
org.jfree.chart.plot.ThermometerPlot
All Implemented Interfaces:
Disposable, Serializable, Cloneable, EventListener, AnnotationChangeListener, AxisChangeListener, MarkerChangeListener, LegendItemSource, ValueAxisPlot, Zoomable, PublicCloneable, DatasetChangeListener

public class ThermometerPlot extends Plot implements ValueAxisPlot, Zoomable, Cloneable, Serializable
A plot that displays a single value (from a ValueDataset) in a thermometer type display.

This plot supports a number of options:

  1. three sub-ranges which could be viewed as 'Normal', 'Warning' and 'Critical' ranges.
  2. the thermometer can be run in two modes:
    • fixed range, or
    • range adjusts to current sub-range.
  3. settable units to be displayed.
  4. settable display location for the value text.
See Also:
  • Field Details

    • UNITS_NONE

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

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

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

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

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

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

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

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

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

      public static final int CRITICAL
      A constant for the 'critical' range.
      See Also:
    • AXIS_GAP

      protected static final int AXIS_GAP
      The axis gap.
      See Also:
    • UNITS

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

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

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

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

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

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

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

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

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

      protected static final int DEFAULT_GAP
      The default gap between the outlines representing the thermometer.
      See Also:
    • localizationResources

      protected static ResourceBundle localizationResources
      The resourceBundle for the localization.
  • Constructor Details

    • 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 Details

    • getDataset

      public ValueDataset getDataset()
      Returns the dataset for the plot.
      Returns:
      The dataset (possibly null).
      See Also:
    • 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:
    • getRangeAxis

      public ValueAxis getRangeAxis()
      Returns the range axis.
      Returns:
      The range axis (never null).
      See Also:
    • 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:
    • 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

      public void setLowerBound(double lower)
      Sets the lower bound for the thermometer.
      Parameters:
      lower - the lower bound.
      See Also:
    • 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

      public void setUpperBound(double upper)
      Sets the upper bound for the thermometer.
      Parameters:
      upper - the upper bound.
      See Also:
    • 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.
    • getPadding

      public RectangleInsets getPadding()
      Returns the padding for the thermometer. This is the space inside the plot area.
      Returns:
      The padding (never null).
      See Also:
    • 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:
    • getThermometerStroke

      public Stroke getThermometerStroke()
      Returns the stroke used to draw the thermometer outline.
      Returns:
      The stroke (never null).
      See Also:
    • setThermometerStroke

      public void setThermometerStroke(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:
    • getThermometerPaint

      public Paint getThermometerPaint()
      Returns the paint used to draw the thermometer outline.
      Returns:
      The paint (never null).
      See Also:
    • setThermometerPaint

      public void setThermometerPaint(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:
    • getUnits

      public int getUnits()
      Returns a code indicating the unit display type. This is one of UNITS_NONE, UNITS_FAHRENHEIT, UNITS_CELCIUS and UNITS_KELVIN.
      Returns:
      The units type.
      See Also:
    • 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:
    • 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.
    • getAxisLocation

      public int getAxisLocation()
      Returns the axis location.
      Returns:
      The location (one of NONE, LEFT and RIGHT).
      See Also:
    • 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:
    • getValueFont

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

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

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

      public void setValuePaint(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:
    • setValueFormat

      public void setValueFormat(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 Paint getMercuryPaint()
      Returns the default mercury paint.
      Returns:
      The paint (never null).
      See Also:
    • setMercuryPaint

      public void setMercuryPaint(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:
    • 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 Paint getSubrangePaint(int range)
      Gets the paint used for a particular subrange.
      Parameters:
      range - the range (.
      Returns:
      The paint.
      See Also:
    • setSubrangePaint

      public void setSubrangePaint(int range, 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:
    • 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

      public void setUseSubrangePaint(boolean flag)
      Sets the range colour change option.
      Parameters:
      flag - the new range colour change option
      See Also:
    • 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:
    • 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

      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:
    • 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

      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:
    • draw

      public void draw(Graphics2D g2, Rectangle2D area, 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 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.
    • datasetChanged

      public void datasetChanged(DatasetChangeEvent event)
      Checks to see if a new value means the axis range needs adjusting.
      Specified by:
      datasetChanged in interface DatasetChangeListener
      Overrides:
      datasetChanged in class Plot
      Parameters:
      event - the dataset change event.
    • 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.
    • getLegendItems

      public LegendItemCollection getLegendItems()
      Returns the legend items for the plot.
      Specified by:
      getLegendItems in interface LegendItemSource
      Overrides:
      getLegendItems in class Plot
      Returns:
      null.
    • getOrientation

      public PlotOrientation getOrientation()
      Returns the orientation of the plot.
      Specified by:
      getOrientation in interface Zoomable
      Returns:
      The orientation (always PlotOrientation.VERTICAL).
    • 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.
    • equals

      public boolean equals(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.
    • clone

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

      public void zoomDomainAxes(double factor, PlotRenderingInfo state, Point2D source)
      Multiplies the range on the domain axis/axes by the specified factor.
      Specified by:
      zoomDomainAxes in interface Zoomable
      Parameters:
      factor - the zoom factor.
      state - the plot state.
      source - the source point.
      See Also:
    • zoomDomainAxes

      public void zoomDomainAxes(double factor, PlotRenderingInfo state, Point2D source, boolean useAnchor)
      Multiplies the range on the domain axis/axes by the specified factor.
      Specified by:
      zoomDomainAxes 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:
    • zoomRangeAxes

      public void zoomRangeAxes(double factor, PlotRenderingInfo state, Point2D source)
      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.
      See Also:
    • zoomRangeAxes

      public void zoomRangeAxes(double factor, PlotRenderingInfo state, 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:
    • zoomDomainAxes

      public void zoomDomainAxes(double lowerPercent, double upperPercent, PlotRenderingInfo state, Point2D source)
      This method does nothing.
      Specified by:
      zoomDomainAxes in interface Zoomable
      Parameters:
      lowerPercent - the lower percent.
      upperPercent - the upper percent.
      state - the plot state.
      source - the source point.
      See Also:
    • zoomRangeAxes

      public void zoomRangeAxes(double lowerPercent, double upperPercent, PlotRenderingInfo state, Point2D source)
      Zooms the range axes.
      Specified by:
      zoomRangeAxes in interface Zoomable
      Parameters:
      lowerPercent - the lower percent.
      upperPercent - the upper percent.
      state - the plot state.
      source - the source point.
      See Also:
    • isDomainZoomable

      public boolean isDomainZoomable()
      Returns false.
      Specified by:
      isDomainZoomable in interface Zoomable
      Returns:
      A boolean.
      See Also:
    • isRangeZoomable

      public boolean isRangeZoomable()
      Returns true.
      Specified by:
      isRangeZoomable in interface Zoomable
      Returns:
      A boolean.
      See Also:
    • dispose

      public void dispose()
      Specified by:
      dispose in interface Disposable