/*
* @(#)BoundedRangeModel.java 1.30 06/03/01
*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package javax.swing;
import javax.swing.event.*;
/**
* Defines the data model used by components like <code>Slider</code>s
* and <code>ProgressBar</code>s.
* Defines four interrelated integer properties: minimum, maximum, extent
* and value. These four integers define two nested ranges like this:
* <pre>
* minimum <= value <= value+extent <= maximum
* </pre>
* The outer range is <code>minimum,maximum</code> and the inner
* range is <code>value,value+extent</code>. The inner range
* must lie within the outer one, i.e. <code>value</code> must be
* less than or equal to <code>maximum</code> and <code>value+extent</code>
* must greater than or equal to <code>minimum</code>, and <code>maximum</code>
* must be greater than or equal to <code>minimum</code>.
* There are a few features of this model that one might find a little
* surprising. These quirks exist for the convenience of the
* Swing BoundedRangeModel clients, such as <code>Slider</code> and
* <code>ScrollBar</code>.
* <ul>
* <li>
* The minimum and maximum set methods "correct" the other
* three properties to accommodate their new value argument. For
* example setting the model's minimum may change its maximum, value,
* and extent properties (in that order), to maintain the constraints
* specified above.
*
* <li>
* The value and extent set methods "correct" their argument to
* fit within the limits defined by the other three properties.
* For example if <code>value == maximum</code>, <code>setExtent(10)</code>
* would change the extent (back) to zero.
*
* <li>
* The four BoundedRangeModel values are defined as Java Beans properties
* however Swing ChangeEvents are used to notify clients of changes rather
* than PropertyChangeEvents. This was done to keep the overhead of monitoring
* a BoundedRangeModel low. Changes are often reported at MouseDragged rates.
* </ul>
*
* <p>
*
* For an example of specifying custom bounded range models used by sliders,
* see <a
href="http://java.sun.com/docs/books/tutorial/uiswing/overview/anatomy.html">The Anatomy of a Swing-Based Program</a>
* in <em>The Java Tutorial.</em>
*
* @version 1.30 03/01/06
* @author Hans Muller
* @see DefaultBoundedRangeModel
*/
public interface BoundedRangeModel
{
/**
* Returns the minimum acceptable value.
*
* @return the value of the minimum property
* @see #setMinimum
*/
int getMinimum();
/**
* Sets the model's minimum to <I>newMinimum</I>. The
* other three properties may be changed as well, to ensure
* that:
* <pre>
* minimum <= value <= value+extent <= maximum
* </pre>
* <p>
* Notifies any listeners if the model changes.
*
* @param newMinimum the model's new minimum
* @see #getMinimum
* @see #addChangeListener
*/
void setMinimum(int newMinimum);
/**
* Returns the model's maximum. Note that the upper
* limit on the model's value is (maximum - extent).
*
* @return the value of the maximum property.
* @see #setMaximum
* @see #setExtent
*/
int getMaximum();
=1= |