Class AbstractPlot

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

public abstract class AbstractPlot
extends java.lang.Object
implements Identifiable, 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-2019 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
BSD-style license. See OpenTrafficSim License.

Version:
$Revision$, $LastChangedDate$, by $Author$, initial version 4 okt. 2018
Author:
Alexander Verbraeck, Peter Knoppers, Wouter Schakel
  • Field Details

    • GRAPH_ADD_EVENT

      public static final 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 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 Time DEFAULT_INITIAL_UPPER_TIME_BOUND
      Initial upper bound for the time scale.
  • Constructor Details

    • AbstractPlot

      public AbstractPlot​(OTSSimulatorInterface simulator, java.lang.String caption, Duration updateInterval, Duration delay)
      Constructor.
      Parameters:
      simulator - OTSSimulatorInterface; simulator
      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​(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 java.io.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:
      java.io.IOException - on IO exception
    • getGroup

      public final DatasetGroup getGroup()
      Specified by:
      getGroup in interface Dataset
    • setGroup

      public final void setGroup​(DatasetGroup group)
      Specified by:
      setGroup in interface Dataset
    • setAutoBoundDomain

      public void setAutoBoundDomain​(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​(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 java.lang.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​(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 JFreeChart getChart()
      Returns the chart.
      Returns:
      JFreeChart; chart
    • getId

      public final java.lang.String getId()
      Specified by:
      getId in interface Identifiable
    • addChangeListener

      public final void addChangeListener​(DatasetChangeListener listener)
      Specified by:
      addChangeListener in interface Dataset
    • removeChangeListener

      public final void removeChangeListener​(DatasetChangeListener listener)
      Specified by:
      removeChangeListener in interface Dataset
    • getSimulator

      public OTSSimulatorInterface getSimulator()
      Retrieve the simulator.
      Returns:
      OTSSimulatorInterface; the simulator
    • setUpdateInterval

      public final void setUpdateInterval​(Duration interval)
      Sets a new update interval.
      Parameters:
      interval - Duration; update interval
    • getUpdateTime

      public final 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 java.lang.String getCaption()
      Retrieve the caption.
      Returns:
      String; the caption of the plot