info.monitorenter.gui.chart.traces
Class Trace2DLtd

java.lang.Object
  extended by info.monitorenter.gui.chart.traces.ATrace2D
      extended by info.monitorenter.gui.chart.traces.Trace2DLtd
All Implemented Interfaces:
ITrace2D, java.beans.PropertyChangeListener, java.io.Serializable, java.lang.Comparable<ITrace2D>, java.util.EventListener
Direct Known Subclasses:
Trace2DLtdReplacing

public class Trace2DLtd
extends ATrace2D
implements ITrace2D

Additional to the Trace2DSimple the Trace2DLimited adds the following functionality:

Take this implementation to display frequently changing data (nonstatic, time - dependant values). You will avoid a huge growing amount of tracepoints that would increase the time for scaling and painting until system hangs or java.lang.OutOfMemoryError is thrown.

Version:
$Revision: 1.19 $
Author:
Achim Westermann
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from interface info.monitorenter.gui.chart.ITrace2D
ITrace2D.DistancePoint
 
Field Summary
protected  IRingBuffer<ITracePoint2D> m_buffer
          Internal fast FIFO buffer implementation based upon indexed access to an array.
 
Fields inherited from class info.monitorenter.gui.chart.traces.ATrace2D
m_computingTraces, m_maxX, m_maxXErrorBar, m_maxY, m_maxYErrorBar, m_minX, m_minXErrorBar, m_minY, m_minYErrorBar, m_name, m_physicalUnitsX, m_physicalUnitsY, m_propertyChangeSupport, m_renderer
 
Fields inherited from interface info.monitorenter.gui.chart.ITrace2D
PROPERTY_COLOR, PROPERTY_ERRORBARPOLICY, PROPERTY_ERRORBARPOLICY_CONFIGURATION, PROPERTY_LABEL, PROPERTY_MAX_X, PROPERTY_MAX_Y, PROPERTY_MIN_X, PROPERTY_MIN_Y, PROPERTY_NAME, PROPERTY_PAINTERS, PROPERTY_PHYSICALUNITS, PROPERTY_POINT_CHANGED, PROPERTY_POINT_HIGHLIGHTERS_CHANGED, PROPERTY_STROKE, PROPERTY_TRACEPOINT, PROPERTY_VISIBLE, PROPERTY_ZINDEX, Z_INDEX_MIN, ZINDEX_MAX
 
Constructor Summary
Trace2DLtd()
          Constructs an instance with a default buffer size of 100.
Trace2DLtd(int maxsize)
          Constructs an instance with a buffersize of maxsize and a default name.
Trace2DLtd(int maxsize, java.lang.String name)
          Constructs an instance with a buffersize of maxsize and a default name.
Trace2DLtd(java.lang.String name)
          Creates an instance with a default buffersize of 100 and the given name.
 
Method Summary
protected  boolean addPointInternal(ITracePoint2D p)
           Override this template method for the custom add operation that depends on the policies of the implementation.
 boolean equals(java.lang.Object obj)
           
 int getMaxSize()
           Returns the maximum amount of TracePoint2D instances that may be added.
 int getSize()
          Returns the acutal amount of points in this trace.
 int hashCode()
           
 boolean isEmpty()
          Returns false if internal TracePoint2D instances are contained or true if not.
 java.util.Iterator<ITracePoint2D> iterator()
          Returns an Iterator over the internal TracePoint2D instances.
 void removeAllPointsInternal()
          Override this template method for the custom remove operation that depends on the Collection used in the implementation.
protected  ITracePoint2D removePointInternal(ITracePoint2D point)
          Returns null always because internally a ring buffer is used which does not allow removing of values because that would break the contract of a ring buffer.
 void setMaxSize(int amount)
          Sets the maximum amount of points that may be displayed.
 
Methods inherited from class info.monitorenter.gui.chart.traces.ATrace2D
addComputingTrace, addErrorBarPolicy, addPoint, addPoint, addPointHighlighter, addPropertyChangeListener, addTracePainter, compareTo, containsTracePainter, ensureInitialized, finalize, firePointAdded, firePointChanged, firePointRemoved, firePropertyChange, getChangeListeners, getColor, getErrorBarPolicies, getHasErrorBars, getInstanceCount, getLabel, getMaxX, getMaxY, getMinX, getMinY, getName, getNearestPointEuclid, getNearestPointManhattan, getPhysicalUnits, getPhysicalUnitsX, getPhysicalUnitsY, getPointHighlighters, getPropertyChangeListeners, getRenderer, getStroke, getTracePainters, getZIndex, isVisible, maxXSearch, maxYSearch, minXSearch, minYSearch, propertyChange, removeAllPointHighlighters, removeAllPoints, removeComputingTrace, removeErrorBarPolicy, removePoint, removePointHighlighter, removePropertyChangeListener, removePropertyChangeListener, removeTracePainter, setColor, setErrorBarPolicy, setName, setPhysicalUnits, setPointHighlighter, setRenderer, setStroke, setTracePainter, setVisible, setZIndex, showsErrorBars, showsNegativeXErrorBars, showsNegativeYErrorBars, showsPositiveXErrorBars, showsPositiveYErrorBars, toString
 
Methods inherited from class java.lang.Object
clone, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface info.monitorenter.gui.chart.ITrace2D
addComputingTrace, addErrorBarPolicy, addPoint, addPoint, addPointHighlighter, addPropertyChangeListener, addTracePainter, containsTracePainter, firePointChanged, getColor, getErrorBarPolicies, getHasErrorBars, getLabel, getMaxX, getMaxY, getMinX, getMinY, getName, getNearestPointEuclid, getNearestPointManhattan, getPhysicalUnits, getPhysicalUnitsX, getPhysicalUnitsY, getPointHighlighters, getPropertyChangeListeners, getRenderer, getStroke, getTracePainters, getZIndex, isVisible, removeAllPointHighlighters, removeAllPoints, removeComputingTrace, removeErrorBarPolicy, removePoint, removePointHighlighter, removePropertyChangeListener, removePropertyChangeListener, removeTracePainter, setColor, setErrorBarPolicy, setName, setPhysicalUnits, setPointHighlighter, setRenderer, setStroke, setTracePainter, setVisible, setZIndex, showsErrorBars, showsNegativeXErrorBars, showsNegativeYErrorBars, showsPositiveXErrorBars, showsPositiveYErrorBars
 
Methods inherited from interface java.beans.PropertyChangeListener
propertyChange
 
Methods inherited from interface java.lang.Comparable
compareTo
 

Field Detail

m_buffer

protected IRingBuffer<ITracePoint2D> m_buffer
Internal fast FIFO buffer implementation based upon indexed access to an array.

Constructor Detail

Trace2DLtd

public Trace2DLtd()
Constructs an instance with a default buffer size of 100.


Trace2DLtd

public Trace2DLtd(int maxsize)
Constructs an instance with a buffersize of maxsize and a default name.

Parameters:
maxsize - the buffer size for the maximum amount of points that will be shown.

Trace2DLtd

public Trace2DLtd(int maxsize,
                  java.lang.String name)
Constructs an instance with a buffersize of maxsize and a default name.

Parameters:
maxsize - the buffer size for the maximum amount of points that will be shown.
name - the name that will be displayed for this trace.

Trace2DLtd

public Trace2DLtd(java.lang.String name)
Creates an instance with a default buffersize of 100 and the given name.

Parameters:
name - the name that will be displayed for the trace.
Method Detail

addPointInternal

protected boolean addPointInternal(ITracePoint2D p)
Description copied from class: ATrace2D

Override this template method for the custom add operation that depends on the policies of the implementation.

No property change events have to be fired by default. If this method returns true the outer logic of the calling method ATrace2D.addPoint(ITracePoint2D) will perform bound checks for the new point and fire property changes as described in method ATrace2D.firePointChanged(ITracePoint2D, int).

In special cases - when additional modifications to the internal set of points take place (e.g. a further point gets removed) this method should return false (regardless whether the new point was accepted or not) and perform bound checks and fire the property changes as mentioned above "manually".

Specified by:
addPointInternal in class ATrace2D
Parameters:
p - the point to add.
Returns:
true if the given point was accepted or false if not.
See Also:
ATrace2D.addPointInternal(info.monitorenter.gui.chart.ITracePoint2D)

equals

public boolean equals(java.lang.Object obj)
Overrides:
equals in class java.lang.Object
See Also:
Object.equals(java.lang.Object)

getMaxSize

public int getMaxSize()
Description copied from interface: ITrace2D

Returns the maximum amount of TracePoint2D instances that may be added. For implementations that limit the maximum amount this is a reasonable amount. Non-limiting implementations should return Integer.MAX_VALUE. This allows to detect the unlimitedness. Of course no implementation could store that amount of points.

Specified by:
getMaxSize in interface ITrace2D
Returns:
The maximum amount of TracePoint2D instances that may be added.
See Also:
ITrace2D.getMaxSize()

getSize

public int getSize()
Returns the acutal amount of points in this trace.

Specified by:
getSize in interface ITrace2D
Returns:
the acutal amount of points in this trace.
See Also:
ITrace2D.getSize()

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object
See Also:
Object.hashCode()

isEmpty

public boolean isEmpty()
Description copied from interface: ITrace2D
Returns false if internal TracePoint2D instances are contained or true if not.

Specified by:
isEmpty in interface ITrace2D
Returns:
false if internal TracePoint2D instances are contained or true if not.
See Also:
ITrace2D.isEmpty()

iterator

public java.util.Iterator<ITracePoint2D> iterator()
Description copied from interface: ITrace2D
Returns an Iterator over the internal TracePoint2D instances.

Implementations should be synchronized. This method is meant to allow modifications of the intenal TracePoint2D instances, so the original points should be returned.

There is no guarantee that changes made to the contained tracepoints will be reflected in the display immediately. The order the iterator returns the TracePoint2D instances decides how the Chart2D will paint the trace.

Specified by:
iterator in interface ITrace2D
Returns:
an Iterator over the internal TracePoint2D instances.
See Also:
ITrace2D.iterator()

removeAllPointsInternal

public void removeAllPointsInternal()
Description copied from class: ATrace2D
Override this template method for the custom remove operation that depends on the Collection used in the implementation.

No change events have to be fired, this is done by ATrace2D.

Specified by:
removeAllPointsInternal in class ATrace2D
See Also:
ITrace2D.removeAllPoints()

removePointInternal

protected ITracePoint2D removePointInternal(ITracePoint2D point)
Returns null always because internally a ring buffer is used which does not allow removing of values because that would break the contract of a ring buffer.

Specified by:
removePointInternal in class ATrace2D
Parameters:
point - the point to remove.
Returns:
null always because internally a ring buffer is used which does not allow removing of values because that would break the contract of a ring buffer.

setMaxSize

public final void setMaxSize(int amount)
Sets the maximum amount of points that may be displayed.

Don't use this too often as decreases in size may cause expensive array copy operations and new searches on all points for bound changes.

TODO: Only search for bounds if size is smaller than before, debug and test.

Parameters:
amount - the new maximum amount of points to show.


Copyright © 2001 - 2010 LGPL, All Rights Footloose.