Package org.opentrafficsim.draw.graphs
Class AbstractPlot
- java.lang.Object
-
- org.opentrafficsim.draw.graphs.AbstractPlot
-
- All Implemented Interfaces:
Dataset,org.opentrafficsim.base.Identifiable
- Direct Known Subclasses:
AbstractBoundedPlot
public abstract class AbstractPlot extends Object implements org.opentrafficsim.base.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-2022 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 Summary
Fields Modifier and Type Field Description static TimeDEFAULT_INITIAL_UPPER_TIME_BOUNDInitial upper bound for the time scale.static EventTypeGRAPH_ADD_EVENTThe (regular, not timed) event type for pub/sub indicating the addition of a graph.static EventTypeGRAPH_REMOVE_EVENTThe (regular, not timed) event type for pub/sub indicating the removal of a graph.
-
Constructor Summary
Constructors Constructor Description AbstractPlot(org.opentrafficsim.core.dsol.OTSSimulatorInterface simulator, String caption, Duration updateInterval, Duration delay)Constructor.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidaddChangeListener(DatasetChangeListener listener)byte[]encodeAsPng(int width, int height, double fontSize)Returns the chart as a byte array representing a png image.StringgetCaption()Retrieve the caption.JFreeChartgetChart()Returns the chart.abstract GraphTypegetGraphType()Return the graph type for transceiver.DatasetGroupgetGroup()StringgetId()org.opentrafficsim.core.dsol.OTSSimulatorInterfacegetSimulator()Retrieve the simulator.abstract StringgetStatusLabel(double domainValue, double rangeValue)Returns the status label when the mouse is over the given location.TimegetUpdateTime()Returns time until which data should be plotted.protected abstract voidincreaseTime(Time time)Increase the simulated time span.voidnotifyPlotChange()Notify all change listeners.voidremoveChangeListener(DatasetChangeListener listener)voidsetAutoBoundDomain(XYPlot plot)Overridable; activates auto bounds on domain axis from user input.voidsetAutoBoundRange(XYPlot plot)Overridable; activates auto bounds on range axis from user input.protected voidsetChart(JFreeChart chart)Sets the chart and adds menus and listeners.voidsetGroup(DatasetGroup group)voidsetUpdateInterval(Duration interval)Sets a new update interval.protected voidupdate()Redraws the plot and schedules the next update.
-
-
-
Field Detail
-
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 Detail
-
AbstractPlot
public AbstractPlot(org.opentrafficsim.core.dsol.OTSSimulatorInterface simulator, String caption, Duration updateInterval, Duration delay)Constructor.- Parameters:
simulator- OTSSimulatorInterface; simulatorcaption- String; captionupdateInterval- Duration; regular update interval (simulation time)delay- Duration; amount of time that chart runs behind simulation to prevent gaps in the charted data
-
-
Method Detail
-
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 IOExceptionReturns the chart as a byte array representing a png image.- Parameters:
width- int; widthheight- int; heightfontSize- 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 DatasetGroup getGroup()
-
setGroup
public final void setGroup(DatasetGroup group)
-
setAutoBoundDomain
public void setAutoBoundDomain(XYPlot plot)
Overridable; activates auto bounds on domain axis from user input. This class does not force the use ofXYPlots, but the auto bounds command comes from theChartPanelthat this class creates. In case the used plot is aXYPlot, this method is then invoked. Sub classes with auto domain bounds that work with anXYPlotshould implement this. The method is not abstract as the use ofXYPlotis 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 ofXYPlots, but the auto bounds command comes from theChartPanelthat this class creates. In case the used plot is aXYPlot, this method is then invoked. Sub classes with auto range bounds that work with anXYPlotshould implement this. The method is not abstract as the use ofXYPlotis 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(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 String getId()
- Specified by:
getIdin interfaceorg.opentrafficsim.base.Identifiable
-
addChangeListener
public final void addChangeListener(DatasetChangeListener listener)
- Specified by:
addChangeListenerin interfaceDataset
-
removeChangeListener
public final void removeChangeListener(DatasetChangeListener listener)
- Specified by:
removeChangeListenerin interfaceDataset
-
getSimulator
public org.opentrafficsim.core.dsol.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 String getCaption()
Retrieve the caption.- Returns:
- String; the caption of the plot
-
-