/*
* Licensed Materials - Property of Rogue Wave Software, Inc.
* © Copyright Rogue Wave Software, Inc. 2014, 2017
* © Copyright IBM Corp. 2009, 2014
* © Copyright ILOG 1996, 2009
* All Rights Reserved.
*
* Note to U.S. Government Users Restricted Rights:
* The Software and Documentation were developed at private expense and
* are "Commercial Items" as that term is defined at 48 CFR 2.101,
* consisting of "Commercial Computer Software" and
* "Commercial Computer Software Documentation", as such terms are
* used in 48 CFR 12.212 or 48 CFR 227.7202-1 through 227.7202-4,
* as applicable.
*/
package realtime;
import java.awt.Color;
import ilog.views.chart.IlvStyle;
import ilog.views.chart.data.IlvCyclicDataSet;
import ilog.views.chart.graphic.IlvDataIndicator;
class MonitorDataSet extends IlvCyclicDataSet {
private static final IlvStyle CURSOR_STYLE = IlvStyle.createStroked(Color.white);
private int counter = 0;
private boolean sweepMode = false;
private int bufferSize;
private IlvDataIndicator cursor;
/**
* Creates a new <code>MonitorDataSet</code>.
*/
public MonitorDataSet(String name, int bufferSize) {
super(name, bufferSize, ROTATE_MODE, false);
this.bufferSize = bufferSize;
cursor = new IlvDataIndicator(-1, 0, null);
cursor.setDrawOrder(2);
cursor.setStyle(CURSOR_STYLE);
cursor.setVisible(false);
}
/**
* Returns the indicator used by the sweep mode.
*/
public final IlvDataIndicator getCursor() {
return cursor;
}
/**
* Indicates whether the sweep mode is on.
*/
public final boolean isSweepMode() {
return sweepMode;
}
/**
* Toggles the sweep mode.
*/
public void setSweepMode(boolean sweepMode) {
this.sweepMode = sweepMode;
setData(null, new double[0], 0);
counter = 0;
cursor.setVisible(sweepMode);
if (getDataCount() > 0)
cursor.setValue(getXData(counter % bufferSize));
else
cursor.setValue(0);
}
/**
* Returns the number of points added to this data set.
*/
public final int getCounter() {
return counter;
}
/**
* Processes a new data value.
*/
public void processData(double v) {
if (isSweepMode() && getDataCount() == bufferSize) {
setData(counter % bufferSize, 0, v);
} else {
this.addData(0, v);
}
cursor.setValue(getXData(counter % bufferSize));
++counter;
}
}