Class BoundedRangeInputStream

java.lang.Object
java.io.InputStream
java.io.FilterInputStream
org.monte.media.io.BoundedRangeInputStream
All Implemented Interfaces:
Closeable, AutoCloseable, BoundedRangeModel

public class BoundedRangeInputStream extends FilterInputStream implements BoundedRangeModel
This input stream implements the BoundedRangeModel and allows the observation of the input reading process.
Author:
Werner Randelshofer, Hausmatt 10, CH-6405 Goldau, Switzerland.
  • Field Details

    • changeEvent_

      protected transient 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 EventListenerList listenerList_
      The listeners waiting for model changes.
  • Constructor Details

    • BoundedRangeInputStream

      public BoundedRangeInputStream(InputStream in)
      Create a new instance.
  • Method Details

    • read

      public int read() throws IOException
      Overrides FilterInputStream.read to update the value after the read.
      Overrides:
      read in class FilterInputStream
      Throws:
      IOException
    • read

      public int read(byte[] b) throws IOException
      Overrides FilterInputStream.read to update the value after the read.
      Overrides:
      read in class FilterInputStream
      Throws:
      IOException
    • read

      public int read(byte[] b, int off, int len) throws IOException
      Overrides FilterInputStream.read to update the value after the read.
      Overrides:
      read in class FilterInputStream
      Throws:
      IOException
    • skip

      public long skip(long n) throws IOException
      Overrides FilterInputStream.skip to update the value after the skip.
      Overrides:
      skip in class FilterInputStream
      Throws:
      IOException
    • reset

      public void reset() throws IOException
      Overrides FilterInputStream.reset to reset the progress monitor as well as the stream.
      Overrides:
      reset in class FilterInputStream
      Throws:
      IOException
    • getMinimum

      public int getMinimum()
      Returns the minimum acceptable value.
      Specified by:
      getMinimum in interface BoundedRangeModel
      Returns:
      the value of the minimum property
      See Also:
    • 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 BoundedRangeModel
      Parameters:
      newMinimum - the model's new minimum
      See Also:
    • 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 BoundedRangeModel
      Returns:
      the value of the maximum property.
      See Also:
    • 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 BoundedRangeModel
      Parameters:
      newMaximum - the model's new maximum
      See Also:
    • 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 BoundedRangeModel
      Returns:
      the model's value
      See Also:
    • 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 BoundedRangeModel
      Parameters:
      newValue - the model's new value
      See Also:
    • 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 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 BoundedRangeModel
      Returns:
      the valueIsAdjustingProperty.
      See Also:
    • 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 BoundedRangeModel
      Returns:
      the value of the model's extent property
      See Also:
    • 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 BoundedRangeModel
      Parameters:
      newExtent - the model's new extent
      See Also:
    • 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 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:
    • addChangeListener

      public void addChangeListener(ChangeListener l)
      Adds a ChangeListener to the model's listener list.
      Specified by:
      addChangeListener in interface BoundedRangeModel
      Parameters:
      l - the ChangeListener to add
      See Also:
    • removeChangeListener

      public void removeChangeListener(ChangeListener l)
      Removes a ChangeListener.
      Specified by:
      removeChangeListener in interface BoundedRangeModel
      Parameters:
      l - the ChangeListener to remove
      See Also:
    • fireStateChanged

      protected void fireStateChanged()
      Run each ChangeListeners stateChanged() method.
      See Also: