Perforce JViews Charts Sample: Real-time Supervision
Description
This sample simulates a real-time supervision system. Data is generated randomly by a sinusoidal value generator and added to the data sets each time a timer event occurs.
How to Use the Sample
- Click a legend item to select in the charts the renderers used to render this data set.
- Click one of the Display Type radio buttons to change the renderer type.
How to Run the Sample as an Application
This sample can
be run as an application.
The installation directory contains
an executable JAR file,
realtime.jar
,
that allows you to execute the sample with a double click from a
file browser. Note that if you are using Internet Explorer, you can
open the installation directory
and execute the JAR file from the browser. This
technique may not work in other Web browsers.
Alternatively, you
can run the sample application from the command line.
First check that the Ant utility is properly configured. If not, see the
instructions on how to configure Ant for Perforce JViews.
Then, go to the installation directory
of the sample and type:
ant run
Topics Covered
- Batching notification events.
- Use of cyclic data sets.
- Create a custom grid.
Detailed Description
This sample shows multiple charts being updated at real-time with cyclic data sets and batching notification events. Data is generated randomly by a sinusoidal value generator and added to the data sets each time a timer event occurs. The number of updates per second is set according to the value of the "Updates" slider and the number of data points added during an update is set according to the value of the "New Points" slider.
To have the best performances, two main features available in the Charts package are used:
- Use of cyclic data sets - A cyclic data set (instance of
IlvCyclicDataSet
) is a special data set where values are stored in a fixed-size buffer, meaning that when new values are added, the oldest values are removed if the buffer size is reached. This mechanism lets you handle a limited number of data points instead of a full set of points. - Batching the notifications - By default, each time a new data point
is added to a data set, a corresponding event
(
DATA_ADDED
) is sent to all the listeners so that, for example, the renderers can update themselves. To avoid sending a notification for every new point added, a batch notification mechanism is available on allIlvAbstractDataSet
subclasses. When this mechanism is started, all the notification events are buffered by the data set until the batch session ends (callingendBatch()
). Then, only one notification event describing the buffered notifications is sent to the listener.
Finally, the moving average of time spent in drawing operations for this sample (as a percentage of the overall time spent) is displayed by a polyline renderer.
Installation Directory
The Real-time Supervision sample is installed here.
Classes Involved
- ilog.views.chart.data.IlvCyclicDataSet
- ilog.views.chart.data.IlvAbstractDataSet
- ilog.views.chart.data.IlvMovingAvgDataSet
Source Files
- realtime.RealTimeDemo
- realtime.SimpleGrid
- realtime.AnimationPanel
- realtime.MonitorDataSet
- realtime.LogRepaintManager
- realtime.RandomGenerator