Package org.opentrafficsim.draw.graphs
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-2020 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 Time
DEFAULT_INITIAL_UPPER_TIME_BOUND
Initial upper bound for the time scale.static EventType
GRAPH_ADD_EVENT
The (regular, not timed) event type for pub/sub indicating the addition of a graph.static EventType
GRAPH_REMOVE_EVENT
The (regular, not timed) event type for pub/sub indicating the removal of a graph.
-
Constructor Summary
Constructors Constructor Description AbstractPlot(OTSSimulatorInterface simulator, java.lang.String caption, Duration updateInterval, Duration delay)
Constructor.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
addChangeListener(DatasetChangeListener listener)
byte[]
encodeAsPng(int width, int height, double fontSize)
Returns the chart as a byte array representing a png image.java.lang.String
getCaption()
Retrieve the caption.JFreeChart
getChart()
Returns the chart.abstract GraphType
getGraphType()
Return the graph type for transceiver.DatasetGroup
getGroup()
java.lang.String
getId()
OTSSimulatorInterface
getSimulator()
Retrieve the simulator.abstract java.lang.String
getStatusLabel(double domainValue, double rangeValue)
Returns the status label when the mouse is over the given location.Time
getUpdateTime()
Returns time until which data should be plotted.protected abstract void
increaseTime(Time time)
Increase the simulated time span.void
notifyPlotChange()
Notify all change listeners.void
removeChangeListener(DatasetChangeListener listener)
void
setAutoBoundDomain(XYPlot plot)
Overridable; activates auto bounds on domain axis from user input.void
setAutoBoundRange(XYPlot plot)
Overridable; activates auto bounds on range axis from user input.protected void
setChart(JFreeChart chart)
Sets the chart and adds menus and listeners.void
setGroup(DatasetGroup group)
void
setUpdateInterval(Duration interval)
Sets a new update interval.protected void
update()
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(OTSSimulatorInterface simulator, java.lang.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 java.io.IOException
Returns 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:
java.io.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 ofXYPlot
s, but the auto bounds command comes from theChartPanel
that this class creates. In case the used plot is aXYPlot
, this method is then invoked. Sub classes with auto domain bounds that work with anXYPlot
should implement this. The method is not abstract as the use ofXYPlot
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 ofXYPlot
s, but the auto bounds command comes from theChartPanel
that this class creates. In case the used plot is aXYPlot
, this method is then invoked. Sub classes with auto range bounds that work with anXYPlot
should implement this. The method is not abstract as the use ofXYPlot
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 interfaceIdentifiable
-
addChangeListener
public final void addChangeListener(DatasetChangeListener listener)
- Specified by:
addChangeListener
in interfaceDataset
-
removeChangeListener
public final void removeChangeListener(DatasetChangeListener listener)
- Specified by:
removeChangeListener
in interfaceDataset
-
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
-
-