Package org.opentrafficsim.draw.graphs
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
Modifier and TypeFieldDescriptionstatic 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
ConstructorDescriptionAbstractPlot
(PlotScheduler scheduler, String caption, org.djunits.value.vdouble.scalar.Duration updateInterval, org.djunits.value.vdouble.scalar.Duration delay) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionfinal 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
getChart()
Returns the chart.abstract GraphType
Return the graph type for transceiver.final org.jfree.data.general.DatasetGroup
getGroup()
final String
getId()
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
update()
Redraws the plot and schedules the next update.
-
Field Details
-
GRAPH_ADD_EVENT
public static final org.djutils.event.EventType GRAPH_ADD_EVENTThe (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_EVENTThe (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_BOUNDInitial 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; 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 Details
-
setChart
protected void setChart(org.jfree.chart.JFreeChart chart) Sets the chart and adds menus and listeners.- Parameters:
chart
- JFreeChart; chart
-
encodeAsPng
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:
IOException
- on IO exception
-
getGroup
public final org.jfree.data.general.DatasetGroup getGroup()- Specified by:
getGroup
in interfaceorg.jfree.data.general.Dataset
-
setGroup
public final void setGroup(org.jfree.data.general.DatasetGroup group) - Specified by:
setGroup
in interfaceorg.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 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(org.jfree.chart.plot.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
Return the graph type for transceiver.- Returns:
- GraphType; the graph type.
-
getStatusLabel
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
- Specified by:
getId
in interfaceorg.djutils.base.Identifiable
-
addChangeListener
public final void addChangeListener(org.jfree.data.general.DatasetChangeListener listener) - Specified by:
addChangeListener
in interfaceorg.jfree.data.general.Dataset
-
removeChangeListener
public final void removeChangeListener(org.jfree.data.general.DatasetChangeListener listener) - Specified by:
removeChangeListener
in interfaceorg.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
Retrieve the caption.- Returns:
- String; the caption of the plot
-