CubeTwister 2.0alpha130 2010-08-17

ch.randelshofer.io
Class BoundedRangeReader

java.lang.Object
  extended by java.io.Reader
      extended by java.io.FilterReader
          extended by ch.randelshofer.io.BoundedRangeReader
All Implemented Interfaces:
java.io.Closeable, java.lang.Readable, javax.swing.BoundedRangeModel

public class BoundedRangeReader
extends java.io.FilterReader
implements javax.swing.BoundedRangeModel

BoundedRangeReader.

Version:
1.0 April 23, 2004 Created.
Author:
Werner Randelshofer

Field Summary
protected  javax.swing.event.ChangeEvent changeEvent
          Only one ChangeEvent is needed per model instance since the event's only (read-only) state is the source property.
protected  javax.swing.event.EventListenerList listenerList
          The listeners waiting for model changes.
 
Fields inherited from class java.io.FilterReader
in
 
Fields inherited from class java.io.Reader
lock
 
Constructor Summary
BoundedRangeReader(java.io.File file, boolean isBuffered)
          Create a new instance.
BoundedRangeReader(java.io.File file, java.io.Reader in)
          Creates a new instance.
BoundedRangeReader(java.io.File file, java.lang.String charsetName, boolean isBuffered)
          Create a new instance.
BoundedRangeReader(java.io.Reader in)
          Create a new instance.
 
Method Summary
 void addChangeListener(javax.swing.event.ChangeListener l)
          Adds a ChangeListener to the model's listener list.
protected  void fireStateChanged()
          Run each ChangeListeners stateChanged() method.
 int getExtent()
          Returns the model's extent, the length of the inner range that begins at the model's value.
 int getMaximum()
          Returns the model's maximum.
 int getMinimum()
          Returns the minimum acceptable value.
 int getValue()
          Returns the current read position.
 boolean getValueIsAdjusting()
          Returns true if the current changes to the value property are part of a series of changes.
 void mark(int readAheadLimit)
          Mark the present position in the stream.
 boolean markSupported()
          Tell whether this stream supports the mark() operation.
 int read()
          Read a single character.
 int read(char[] cbuf, int off, int len)
          Read characters into a portion of an array.
 void removeChangeListener(javax.swing.event.ChangeListener l)
          Removes a ChangeListener.
 void reset()
          Reset the stream.
 void setExtent(int newExtent)
          Ignored: The extent is always zero.
 void setMaximum(int newMaximum)
          Ignored: The maximum of an input stream can not be changed.
 void setMinimum(int newMinimum)
          Ignored: The minimum of an input stream is always zero.
 void setRangeProperties(int value, int extent, int min, int max, boolean adjusting)
          Ignored: All values depend on the input stream.
 void setValue(int newValue)
          Ignored: The value is always zero.
 void setValueIsAdjusting(boolean b)
          This attribute indicates that any upcoming changes to the value of the model should be considered a single event.
 long skip(long n)
          Skip characters.
 
Methods inherited from class java.io.FilterReader
close, ready
 
Methods inherited from class java.io.Reader
read, read
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

changeEvent

protected transient javax.swing.event.ChangeEvent changeEvent
Only one ChangeEvent is needed per model instance since the event's only (read-only) state is the source property. The source of events generated here is always "this".


listenerList

protected javax.swing.event.EventListenerList listenerList
The listeners waiting for model changes.

Constructor Detail

BoundedRangeReader

public BoundedRangeReader(java.io.File file,
                          boolean isBuffered)
                   throws java.io.IOException
Create a new instance.

Throws:
java.io.IOException

BoundedRangeReader

public BoundedRangeReader(java.io.File file,
                          java.lang.String charsetName,
                          boolean isBuffered)
                   throws java.io.IOException
Create a new instance.

Throws:
java.io.IOException

BoundedRangeReader

public BoundedRangeReader(java.io.File file,
                          java.io.Reader in)
                   throws java.io.IOException
Creates a new instance.

Parameters:
file - The file is used to determine the maximum value of the bounded range model. The maximum value is only approximate, because the characters may be encoded by multiple bytes.
Throws:
java.io.IOException

BoundedRangeReader

public BoundedRangeReader(java.io.Reader in)
                   throws java.io.IOException
Create a new instance. Note that you to set the maximum value using setMaximum to get a bounded range.

Throws:
java.io.IOException
Method Detail

read

public int read()
         throws java.io.IOException
Read a single character.

Overrides:
read in class java.io.FilterReader
Throws:
java.io.IOException - If an I/O error occurs

read

public int read(char[] cbuf,
                int off,
                int len)
         throws java.io.IOException
Read characters into a portion of an array.

Overrides:
read in class java.io.FilterReader
Throws:
java.io.IOException - If an I/O error occurs

skip

public long skip(long n)
          throws java.io.IOException
Skip characters.

Overrides:
skip in class java.io.FilterReader
Throws:
java.io.IOException - If an I/O error occurs

markSupported

public boolean markSupported()
Tell whether this stream supports the mark() operation.

Overrides:
markSupported in class java.io.FilterReader

mark

public void mark(int readAheadLimit)
          throws java.io.IOException
Mark the present position in the stream.

Overrides:
mark in class java.io.FilterReader
Throws:
java.io.IOException - If an I/O error occurs

reset

public void reset()
           throws java.io.IOException
Reset the stream.

Overrides:
reset in class java.io.FilterReader
Throws:
java.io.IOException - If an I/O error occurs

getMinimum

public int getMinimum()
Returns the minimum acceptable value.

Specified by:
getMinimum in interface javax.swing.BoundedRangeModel
Returns:
the value of the minimum property
See Also:
setMinimum(int)

setMinimum

public void setMinimum(int newMinimum)
Ignored: The minimum of an input stream is always zero. Sets the model'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 model changes.

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

getMaximum

public int getMaximum()
Returns the model's maximum. Note that the upper limit on the model's value is (maximum - extent).

Specified by:
getMaximum in interface javax.swing.BoundedRangeModel
Returns:
the value of the maximum property.
See Also:
setMaximum(int), setExtent(int)

setMaximum

public void setMaximum(int newMaximum)
Ignored: The maximum of an input stream can not be changed. # Sets the model'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 model changes.

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

getValue

public int getValue()
Returns the current read position. Returns the model's current value. Note that the upper limit on the model's value is maximum - extent and the lower limit is minimum.

Specified by:
getValue in interface javax.swing.BoundedRangeModel
Returns:
the model's value
See Also:
setValue(int)

setValue

public void setValue(int newValue)
Ignored: The value is always zero. Sets the model's current value to newValue if newValue satisfies the model'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 model 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 model changes.

Specified by:
setValue in interface javax.swing.BoundedRangeModel
Parameters:
newValue - the model's new value
See Also:
getValue()

setValueIsAdjusting

public void setValueIsAdjusting(boolean b)
This attribute indicates that any upcoming changes to the value of the model 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
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
Returns:
the valueIsAdjustingProperty.
See Also:
setValueIsAdjusting(boolean)

getExtent

public int getExtent()
Returns the model's extent, the length of the inner range that begins at the model's value.

Specified by:
getExtent in interface javax.swing.BoundedRangeModel
Returns:
the value of the model's extent property
See Also:
setExtent(int), setValue(int)

setExtent

public void setExtent(int newExtent)
Ignored: The extent is always zero. The extent depends on the current read position. Sets the model'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 model 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 model changes.

Specified by:
setExtent in interface javax.swing.BoundedRangeModel
Parameters:
newExtent - the model's new extent
See Also:
getExtent(), setValue(int)

setRangeProperties

public void setRangeProperties(int value,
                               int extent,
                               int min,
                               int max,
                               boolean adjusting)
Ignored: All values depend on the input stream. This method sets all of the model'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 model data simulaneously and do not want individual change events to occur.

Specified by:
setRangeProperties in interface javax.swing.BoundedRangeModel
Parameters:
value - an int giving the current value
extent - an int giving the amount by which the value can "jump"
min - an int giving the minimum value
max - an int giving the maximum value
adjusting - a boolean, true if a series of changes are in progress
See Also:
setValue(int), setExtent(int), setMinimum(int), setMaximum(int), setValueIsAdjusting(boolean)

addChangeListener

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

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

removeChangeListener

public void removeChangeListener(javax.swing.event.ChangeListener l)
Removes a ChangeListener.

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

fireStateChanged

protected void fireStateChanged()
Run each ChangeListeners stateChanged() method.

See Also:
setRangeProperties(int, int, int, int, boolean), EventListenerList

Copyright 2003-2009 (c) Werner Randelshofer.
All rights reserved.