pt.uminho.generic.components
Class DefaultDoubleBoundedRangeModel

java.lang.Object
  extended by pt.uminho.generic.components.DefaultDoubleBoundedRangeModel
All Implemented Interfaces:
javax.swing.BoundedRangeModel, DoubleBoundedRangeModel

public class DefaultDoubleBoundedRangeModel
extends java.lang.Object
implements DoubleBoundedRangeModel

Caution this is a modified version of the infovis toolkit which strips down the minimal code to use the DoubleRangeSlider. Please find the orginial code at: http://ivtk.sourceforge.net/.

Defaut implementation of BoundedRangeModel for double.

Version:
$Revision: 1.1 $
Author:
Jean-Daniel Fekete

Constructor Summary
DefaultDoubleBoundedRangeModel()
          Creates a new DefaultDoubleBoundedRangeModel object.
DefaultDoubleBoundedRangeModel(double value, double extent, double min, double max)
          Creates a new DefaultDoubleBoundedRangeModel object.
 
Method Summary
 void addChangeListener(javax.swing.event.ChangeListener l)
          Adds a ChangeListener to the sizeModel's listener list.
 javax.swing.event.ChangeListener[] getChangeListeners()
          Returns an array of all the change listeners registered on this DefaultDoubleBoundedRangeModel.
 int getExtent()
          
 double getExtentDouble()
          Returns the sizeModel's extent, the length of the inner range that begins at the sizeModel's value.
 int getMaximum()
          
 double getMaximumDouble()
          Returns the sizeModel's maximum.
 int getMinimum()
          
 double getMinimumDouble()
          Returns the minimum acceptable value.
 int getValue()
          
 double getValueDouble()
          Returns the sizeModel's current value.
 boolean getValueIsAdjusting()
          Returns true if the current changes to the value property are part of a series of changes.
 void removeChangeListener(javax.swing.event.ChangeListener l)
          Removes a ChangeListener from the sizeModel's listener list.
 void setExtent(double n)
          Sets the sizeModel's extent.
 void setExtent(int newExtent)
          
 void setMaximum(double n)
          Sets the sizeModel's maximum to newMaximum.
 void setMaximum(int newMaximum)
          
 void setMinimum(double n)
          Sets the sizeModel's minimum to newMinimum.
 void setMinimum(int newMinimum)
          
 void setRangeProperties(double newValue, double newExtent, double newMin, double newMax, boolean adjusting)
          This method sets all of the sizeModel's data with a single method call.
 void setRangeProperties(int value, int extent, int min, int max, boolean adjusting)
          
 void setValue(double n)
          Sets the sizeModel's current value to newValue if newValue satisfies the sizeModel's constraints.
 void setValue(int newValue)
          
 void setValueIsAdjusting(boolean b)
          This attribute indicates that any upcoming changes to the value of the sizeModel should be considered a single event.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DefaultDoubleBoundedRangeModel

public DefaultDoubleBoundedRangeModel()
Creates a new DefaultDoubleBoundedRangeModel object.


DefaultDoubleBoundedRangeModel

public DefaultDoubleBoundedRangeModel(double value,
                                      double extent,
                                      double min,
                                      double max)
Creates a new DefaultDoubleBoundedRangeModel object. Maintains min <= value <= (value+extent) <= max

Parameters:
value - the current value
extent - the current extent
min - the minimum value
max - the maximum value
Method Detail

getValueDouble

public double getValueDouble()
Returns the sizeModel's current value. Note that the upper limit on the sizeModel's value is maximum - extent and the lower limit is minimum.

Specified by:
getValueDouble in interface DoubleBoundedRangeModel
Returns:
the sizeModel's value
See Also:
DoubleBoundedRangeModel.setValue(double)

getValue

public int getValue()

Specified by:
getValue in interface javax.swing.BoundedRangeModel

getExtentDouble

public double getExtentDouble()
Returns the sizeModel's extent, the length of the inner range that begins at the sizeModel's value.

Specified by:
getExtentDouble in interface DoubleBoundedRangeModel
Returns:
the value of the sizeModel's extent property
See Also:
DoubleBoundedRangeModel.setExtent(double), DoubleBoundedRangeModel.setValue(double)

getExtent

public int getExtent()

Specified by:
getExtent in interface javax.swing.BoundedRangeModel

getMinimumDouble

public double getMinimumDouble()
Returns the minimum acceptable value.

Specified by:
getMinimumDouble in interface DoubleBoundedRangeModel
Returns:
the value of the minimum property
See Also:
DoubleBoundedRangeModel.setMinimum(double)

getMinimum

public int getMinimum()

Specified by:
getMinimum in interface javax.swing.BoundedRangeModel

getMaximumDouble

public double getMaximumDouble()
Returns the sizeModel's maximum. Note that the upper limit on the sizeModel's value is (maximum - extent).

Specified by:
getMaximumDouble in interface DoubleBoundedRangeModel
Returns:
the value of the maximum property.
See Also:
DoubleBoundedRangeModel.setMaximum(double), DoubleBoundedRangeModel.setExtent(double)

getMaximum

public int getMaximum()

Specified by:
getMaximum in interface javax.swing.BoundedRangeModel

setValue

public void setValue(double n)
Sets the sizeModel's current value to newValue if newValue satisfies the sizeModel's constraints. Those constraints are:
 minimum <= value <= value + extent <= maximum
 
Otherwise, if newValue is less than minimum it's set to minimum, if its greater than maximum then it's set to maximum, and if it's greater than value+extent then it's set to value+extent.

When a BoundedRange sizeModel is used with a scrollbar the value specifies the origin of the scrollbar knob (aka the "thumb" or "elevator"). The value usually represents the origin of the visible part of the object being scrolled.

Notifies any listeners if the sizeModel changes.

Specified by:
setValue in interface DoubleBoundedRangeModel
Parameters:
n - the sizeModel's new value
See Also:
BoundedRangeModel.getValue()

setValue

public void setValue(int newValue)

Specified by:
setValue in interface javax.swing.BoundedRangeModel

setExtent

public void setExtent(double n)
Sets the sizeModel's extent. The newExtent is forced to be greater than or equal to zero and less than or equal to maximum - value.

When a BoundedRange sizeModel is used with a scrollbar the extent defines the length of the scrollbar knob (aka the "thumb" or "elevator"). The extent usually represents how much of the object being scrolled is visible. When used with a slider, the extent determines how much the value can "jump", for example when the user presses PgUp or PgDn.

Notifies any listeners if the sizeModel changes.

Specified by:
setExtent in interface DoubleBoundedRangeModel
Parameters:
n - the sizeModel's new extent
See Also:
BoundedRangeModel.getExtent(), DoubleBoundedRangeModel.setValue(double)

setExtent

public void setExtent(int newExtent)

Specified by:
setExtent in interface javax.swing.BoundedRangeModel

setMinimum

public void setMinimum(double n)
Sets the sizeModel's minimum to newMinimum. The other three properties may be changed as well, to ensure that:
 minimum <= value <= value + extent <= maximum
 

Notifies any listeners if the sizeModel changes.

Specified by:
setMinimum in interface DoubleBoundedRangeModel
Parameters:
n - the sizeModel's new minimum
See Also:
BoundedRangeModel.getMinimum(), DoubleBoundedRangeModel.addChangeListener(javax.swing.event.ChangeListener)

setMinimum

public void setMinimum(int newMinimum)

Specified by:
setMinimum in interface javax.swing.BoundedRangeModel

setMaximum

public void setMaximum(double n)
Sets the sizeModel's maximum to newMaximum. The other three properties may be changed as well, to ensure that
 minimum <= value <= value + extent <= maximum
 

Notifies any listeners if the sizeModel changes.

Specified by:
setMaximum in interface DoubleBoundedRangeModel
Parameters:
n - the sizeModel's new maximum
See Also:
BoundedRangeModel.getMaximum(), DoubleBoundedRangeModel.addChangeListener(javax.swing.event.ChangeListener)

setMaximum

public void setMaximum(int newMaximum)

Specified by:
setMaximum in interface javax.swing.BoundedRangeModel

setValueIsAdjusting

public void setValueIsAdjusting(boolean b)
This attribute indicates that any upcoming changes to the value of the sizeModel should be considered a single event.

This attribute will be set to true at the start of a series of changes to the value, and will be set to false when the value has finished changing. Normally this allows a listener to only take action when the final value change in committed, instead of having to do updates for all intermediate values.

Sliders and scrollbars use this property when a drag is underway.

Specified by:
setValueIsAdjusting in interface javax.swing.BoundedRangeModel
Specified by:
setValueIsAdjusting in interface DoubleBoundedRangeModel
Parameters:
b - true if the upcoming changes to the value property are part of a series

getValueIsAdjusting

public boolean getValueIsAdjusting()
Returns true if the current changes to the value property are part of a series of changes.

Specified by:
getValueIsAdjusting in interface javax.swing.BoundedRangeModel
Specified by:
getValueIsAdjusting in interface DoubleBoundedRangeModel
Returns:
the valueIsAdjustingProperty.
See Also:
DoubleBoundedRangeModel.setValueIsAdjusting(boolean)

setRangeProperties

public void setRangeProperties(double newValue,
                               double newExtent,
                               double newMin,
                               double newMax,
                               boolean adjusting)
This method sets all of the sizeModel's data with a single method call. The method results in a single change event being generated. This is convenient when you need to adjust all the sizeModel data simultaneously and do not want individual change events to occur.

Specified by:
setRangeProperties in interface DoubleBoundedRangeModel
Parameters:
newValue - an double giving the current value
newExtent - an double giving the amount by which the value can "jump"
newMin - an double giving the minimum value
newMax - an double giving the maximum value
adjusting - a boolean, true if a series of changes are in progress
See Also:
DoubleBoundedRangeModel.setValue(double), DoubleBoundedRangeModel.setExtent(double), DoubleBoundedRangeModel.setMinimum(double), DoubleBoundedRangeModel.setMaximum(double), DoubleBoundedRangeModel.setValueIsAdjusting(boolean)

setRangeProperties

public void setRangeProperties(int value,
                               int extent,
                               int min,
                               int max,
                               boolean adjusting)

Specified by:
setRangeProperties in interface javax.swing.BoundedRangeModel

addChangeListener

public void addChangeListener(javax.swing.event.ChangeListener l)
Adds a ChangeListener to the sizeModel's listener list.

Specified by:
addChangeListener in interface javax.swing.BoundedRangeModel
Specified by:
addChangeListener in interface DoubleBoundedRangeModel
Parameters:
l - the ChangeListener to add
See Also:
DoubleBoundedRangeModel.removeChangeListener(javax.swing.event.ChangeListener)

removeChangeListener

public void removeChangeListener(javax.swing.event.ChangeListener l)
Removes a ChangeListener from the sizeModel's listener list.

Specified by:
removeChangeListener in interface javax.swing.BoundedRangeModel
Specified by:
removeChangeListener in interface DoubleBoundedRangeModel
Parameters:
l - the ChangeListener to remove
See Also:
DoubleBoundedRangeModel.addChangeListener(javax.swing.event.ChangeListener)

getChangeListeners

public javax.swing.event.ChangeListener[] getChangeListeners()
Returns an array of all the change listeners registered on this DefaultDoubleBoundedRangeModel.

Returns:
all of this sizeModel's ChangeListeners or an empty array if no change listeners are currently registered
See Also:
addChangeListener(javax.swing.event.ChangeListener), removeChangeListener(javax.swing.event.ChangeListener)