Class AbstractPlot

java.lang.Object
org.opentrafficsim.draw.graphs.AbstractPlot
All Implemented Interfaces:
org.djutils.base.Identifiable, org.jfree.data.general.Dataset
Direct Known Subclasses:
AbstractBoundedPlot

public abstract class AbstractPlot extends Object implements org.djutils.base.Identifiable, org.jfree.data.general.Dataset
Super class of all plots. This schedules regular updates, creates menus and deals with listeners. There are a number of delegate methods for sub classes to implement.

Copyright (c) 2013-2024 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
BSD-style license. See OpenTrafficSim License.

Author:
Alexander Verbraeck, Peter Knoppers, Wouter Schakel
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final org.djunits.value.vdouble.scalar.Time
    Initial upper bound for the time scale.
    static final org.djutils.event.EventType
    The (regular, not timed) event type for pub/sub indicating the addition of a graph.
    static final org.djutils.event.EventType
    The (regular, not timed) event type for pub/sub indicating the removal of a graph.
  • Constructor Summary

    Constructors
    Constructor
    Description
    AbstractPlot(PlotScheduler scheduler, String caption, org.djunits.value.vdouble.scalar.Duration updateInterval, org.djunits.value.vdouble.scalar.Duration delay)
    Constructor.
  • Method Summary

    Modifier and Type
    Method
    Description
    final void
    addChangeListener(org.jfree.data.general.DatasetChangeListener listener)
    byte[]
    encodeAsPng(int width, int height, double fontSize)
    Returns the chart as a byte array representing a png image.
    Retrieve the caption.
    final org.jfree.chart.JFreeChart
    Returns the chart.
    abstract GraphType
    Return the graph type for transceiver.
    final org.jfree.data.general.DatasetGroup
    final String
    abstract String
    getStatusLabel(double domainValue, double rangeValue)
    Returns the status label when the mouse is over the given location.
    final org.djunits.value.vdouble.scalar.Time
    Returns time until which data should be plotted.
    protected abstract void
    increaseTime(org.djunits.value.vdouble.scalar.Time time)
    Increase the simulated time span.
    final void
    Notify all change listeners.
    final void
    removeChangeListener(org.jfree.data.general.DatasetChangeListener listener)
    void
    setAutoBoundDomain(org.jfree.chart.plot.XYPlot plot)
    Overridable; activates auto bounds on domain axis from user input.
    void
    setAutoBoundRange(org.jfree.chart.plot.XYPlot plot)
    Overridable; activates auto bounds on range axis from user input.
    protected void
    setChart(org.jfree.chart.JFreeChart chart)
    Sets the chart and adds menus and listeners.
    final void
    setGroup(org.jfree.data.general.DatasetGroup group)
    final void
    setUpdateInterval(org.djunits.value.vdouble.scalar.Duration interval)
    Sets a new update interval.
    protected void
    Redraws the plot and schedules the next update.

    Methods inherited from class java.lang.Object

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

    • GRAPH_ADD_EVENT

      public static final org.djutils.event.EventType GRAPH_ADD_EVENT
      The (regular, not timed) event type for pub/sub indicating the addition of a graph. Not used internally.
      Payload: String graph caption (not an array, just a String)
    • GRAPH_REMOVE_EVENT

      public static final org.djutils.event.EventType GRAPH_REMOVE_EVENT
      The (regular, not timed) event type for pub/sub indicating the removal of a graph. Not used internally.
      Payload: String Graph caption (not an array, just a String)
    • DEFAULT_INITIAL_UPPER_TIME_BOUND

      public static final org.djunits.value.vdouble.scalar.Time DEFAULT_INITIAL_UPPER_TIME_BOUND
      Initial upper bound for the time scale.
  • Constructor Details

    • AbstractPlot

      public AbstractPlot(PlotScheduler scheduler, String caption, org.djunits.value.vdouble.scalar.Duration updateInterval, org.djunits.value.vdouble.scalar.Duration delay)
      Constructor.
      Parameters:
      scheduler - PlotScheduler; scheduler.
      caption - String; caption
      updateInterval - Duration; regular update interval (simulation time)
      delay - Duration; amount of time that chart runs behind simulation to prevent gaps in the charted data
  • Method Details

    • setChart

      protected void setChart(org.jfree.chart.JFreeChart chart)
      Sets the chart and adds menus and listeners.
      Parameters:
      chart - JFreeChart; chart
    • encodeAsPng

      public byte[] encodeAsPng(int width, int height, double fontSize) throws IOException
      Returns the chart as a byte array representing a png image.
      Parameters:
      width - int; width
      height - int; height
      fontSize - double; font size (16 is the original on screen size)
      Returns:
      byte[]; the chart as a byte array representing a png image
      Throws:
      IOException - on IO exception
    • getGroup

      public final org.jfree.data.general.DatasetGroup getGroup()
      Specified by:
      getGroup in interface org.jfree.data.general.Dataset
    • setGroup

      public final void setGroup(org.jfree.data.general.DatasetGroup group)
      Specified by:
      setGroup in interface org.jfree.data.general.Dataset
    • setAutoBoundDomain

      public void setAutoBoundDomain(org.jfree.chart.plot.XYPlot plot)
      Overridable; activates auto bounds on domain axis from user input. This class does not force the use of XYPlots, but the auto bounds command comes from the ChartPanel that this class creates. In case the used plot is a XYPlot, this method is then invoked. Sub classes with auto domain bounds that work with an XYPlot should implement this. The method is not abstract as the use of XYPlot is not obligated.
      Parameters:
      plot - XYPlot; plot
    • setAutoBoundRange

      public void setAutoBoundRange(org.jfree.chart.plot.XYPlot plot)
      Overridable; activates auto bounds on range axis from user input. This class does not force the use of XYPlots, but the auto bounds command comes from the ChartPanel that this class creates. In case the used plot is a XYPlot, this method is then invoked. Sub classes with auto range bounds that work with an XYPlot should implement this. The method is not abstract as the use of XYPlot is not obligated.
      Parameters:
      plot - XYPlot; plot
    • getGraphType

      public abstract GraphType getGraphType()
      Return the graph type for transceiver.
      Returns:
      GraphType; the graph type.
    • getStatusLabel

      public abstract String getStatusLabel(double domainValue, double rangeValue)
      Returns the status label when the mouse is over the given location.
      Parameters:
      domainValue - double; domain value (x-axis)
      rangeValue - double; range value (y-axis)
      Returns:
      String; status label when the mouse is over the given location
    • increaseTime

      protected abstract void increaseTime(org.djunits.value.vdouble.scalar.Time time)
      Increase the simulated time span.
      Parameters:
      time - Time; time to increase to
    • notifyPlotChange

      public final void notifyPlotChange()
      Notify all change listeners.
    • getChart

      public final org.jfree.chart.JFreeChart getChart()
      Returns the chart.
      Returns:
      JFreeChart; chart
    • getId

      public final String getId()
      Specified by:
      getId in interface org.djutils.base.Identifiable
    • addChangeListener

      public final void addChangeListener(org.jfree.data.general.DatasetChangeListener listener)
      Specified by:
      addChangeListener in interface org.jfree.data.general.Dataset
    • removeChangeListener

      public final void removeChangeListener(org.jfree.data.general.DatasetChangeListener listener)
      Specified by:
      removeChangeListener in interface org.jfree.data.general.Dataset
    • setUpdateInterval

      public final void setUpdateInterval(org.djunits.value.vdouble.scalar.Duration interval)
      Sets a new update interval.
      Parameters:
      interval - Duration; update interval
    • getUpdateTime

      public final org.djunits.value.vdouble.scalar.Time getUpdateTime()
      Returns time until which data should be plotted.
      Returns:
      Time; time until which data should be plotted
    • update

      protected void update()
      Redraws the plot and schedules the next update.
    • getCaption

      public String getCaption()
      Retrieve the caption.
      Returns:
      String; the caption of the plot