Frames | No Frames |
1: /* BoundedRangeModel.java -- 2: Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc. 3: 4: This file is part of GNU Classpath. 5: 6: GNU Classpath is free software; you can redistribute it and/or modify 7: it under the terms of the GNU General Public License as published by 8: the Free Software Foundation; either version 2, or (at your option) 9: any later version. 10: 11: GNU Classpath is distributed in the hope that it will be useful, but 12: WITHOUT ANY WARRANTY; without even the implied warranty of 13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14: General Public License for more details. 15: 16: You should have received a copy of the GNU General Public License 17: along with GNU Classpath; see the file COPYING. If not, write to the 18: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 19: 02110-1301 USA. 20: 21: Linking this library statically or dynamically with other modules is 22: making a combined work based on this library. Thus, the terms and 23: conditions of the GNU General Public License cover the whole 24: combination. 25: 26: As a special exception, the copyright holders of this library give you 27: permission to link this library with independent modules to produce an 28: executable, regardless of the license terms of these independent 29: modules, and to copy and distribute the resulting executable under 30: terms of your choice, provided that you also meet, for each linked 31: independent module, the terms and conditions of the license of that 32: module. An independent module is a module which is not derived from 33: or based on this library. If you modify this library, you may extend 34: this exception to your version of the library, but you are not 35: obligated to do so. If you do not wish to do so, delete this 36: exception statement from your version. */ 37: 38: 39: package javax.swing; 40: 41: import javax.swing.event.ChangeEvent; 42: import javax.swing.event.ChangeListener; 43: 44: /** 45: * The data model that represents a <i>range</i> that is constrained to fit 46: * within specified <i>bounds</i>. The range is defined as <code>value</code> 47: * to <code>value + extent</code>, where both <code>value</code> and 48: * <code>extent</code> are integers, and <code>extent >= 0</code>. The bounds 49: * are defined by integers <code>minimum</code> and <code>maximum</code>. 50: * <p> 51: * This type of model is used in components that display a range of values, 52: * like {@link JProgressBar} and {@link JSlider}. 53: * 54: * @author Andrew Selkirk 55: */ 56: public interface BoundedRangeModel 57: { 58: /** 59: * Returns the current value for the model. 60: * 61: * @return The current value for the model. 62: * 63: * @see #setValue(int) 64: */ 65: int getValue(); 66: 67: /** 68: * Sets the value for the model and sends a {@link ChangeEvent} to 69: * all registered listeners. The new value must satisfy the constraint 70: * <code>min <= value <= value + extent <= max</code>. 71: * 72: * @param value the value 73: * 74: * @see #getValue() 75: */ 76: void setValue(int value); 77: 78: /** 79: * Returns the lower bound for the model. The start of the model's range 80: * (see {@link #getValue()}) cannot be less than this lower bound. 81: * 82: * @return The lower bound for the model. 83: * 84: * @see #setMinimum(int) 85: * @see #getMaximum() 86: */ 87: int getMinimum(); 88: 89: /** 90: * Sets the lower bound for the model and sends a {@link ChangeEvent} to all 91: * registered listeners. The new minimum must be less than or equal to the 92: * start value of the model's range (as returned by {@link #getValue()}). 93: * 94: * @param minimum the minimum value 95: * 96: * @see #getMinimum() 97: */ 98: void setMinimum(int minimum); 99: 100: /** 101: * Returns the upper bound for the model. This sets an upper limit for the 102: * end value of the model's range ({@link #getValue()} + 103: * {@link #getExtent()}). 104: * 105: * @return The upper bound for the model. 106: * 107: * @see #setMaximum(int) 108: * @see #getMinimum() 109: */ 110: int getMaximum(); 111: 112: /** 113: * Sets the upper bound for the model and sends a {@link ChangeEvent} to all 114: * registered listeners. The new maximum must be greater than or equal to the 115: * end value of the model's range (as returned by {@link #getValue()} + 116: * {@link #getExtent()}). 117: * 118: * @param maximum the maximum value 119: * 120: * @see #getMaximum() 121: */ 122: void setMaximum(int maximum); 123: 124: /** 125: * Returns the value of the <code>valueIsAdjusting</code> property. 126: * 127: * @return <code>true</code> if value is adjusting, 128: * otherwise <code>false</code> 129: * 130: * @see #setValueIsAdjusting(boolean) 131: */ 132: boolean getValueIsAdjusting(); 133: 134: /** 135: * Sets the <code>valueIsAdjusting</code> property. 136: * 137: * @param adjusting <code>true</code> if adjusting, 138: * <code>false</code> otherwise 139: * 140: * @see #getValueIsAdjusting() 141: */ 142: void setValueIsAdjusting(boolean adjusting); 143: 144: /** 145: * Returns the current extent. 146: * 147: * @return the extent 148: * 149: * @see #setExtent(int) 150: */ 151: int getExtent(); 152: 153: /** 154: * Sets the extent, which is the length of the model's range, and sends a 155: * {@link ChangeEvent} to all registered listeners. 156: * 157: * @param extent the extent 158: * 159: * @see #getExtent() 160: */ 161: void setExtent(int extent); 162: 163: /** 164: * Sets all the properties for the model in a single call. 165: * 166: * @param value the value 167: * @param extent the extent 168: * @param minimum the minimum value 169: * @param maximum the maximum value 170: * @param adjusting a flag that indicates the model is being adjusted 171: * continuously. 172: */ 173: void setRangeProperties(int value, int extent, int minimum, int maximum, 174: boolean adjusting); 175: 176: /** 177: * Adds a <code>ChangeListener</code> to this object. 178: * 179: * @param listener the listener to add 180: * 181: * @see #removeChangeListener(ChangeListener) 182: */ 183: void addChangeListener(ChangeListener listener); 184: 185: /** 186: * Removes a <code>ChangeListener</code> from this object. 187: * 188: * @param listener the listener to remove 189: * 190: * @see #addChangeListener(ChangeListener) 191: */ 192: void removeChangeListener(ChangeListener listener); 193: }