001/* AdjustmentEvent.java -- an adjustable value was changed
002   Copyright (C) 1999, 2002, 2004, 2005  Free Software Foundation, Inc.
003
004This file is part of GNU Classpath.
005
006GNU Classpath is free software; you can redistribute it and/or modify
007it under the terms of the GNU General Public License as published by
008the Free Software Foundation; either version 2, or (at your option)
009any later version.
010
011GNU Classpath is distributed in the hope that it will be useful, but
012WITHOUT ANY WARRANTY; without even the implied warranty of
013MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
014General Public License for more details.
015
016You should have received a copy of the GNU General Public License
017along with GNU Classpath; see the file COPYING.  If not, write to the
018Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
01902110-1301 USA.
020
021Linking this library statically or dynamically with other modules is
022making a combined work based on this library.  Thus, the terms and
023conditions of the GNU General Public License cover the whole
024combination.
025
026As a special exception, the copyright holders of this library give you
027permission to link this library with independent modules to produce an
028executable, regardless of the license terms of these independent
029modules, and to copy and distribute the resulting executable under
030terms of your choice, provided that you also meet, for each linked
031independent module, the terms and conditions of the license of that
032module.  An independent module is a module which is not derived from
033or based on this library.  If you modify this library, you may extend
034this exception to your version of the library, but you are not
035obligated to do so.  If you do not wish to do so, delete this
036exception statement from your version. */
037
038
039package java.awt.event;
040
041import java.awt.AWTEvent;
042import java.awt.Adjustable;
043
044/**
045 * This class represents an event that is generated when an adjustable
046 * value is changed.
047 *
048 * @author Aaron M. Renn (arenn@urbanophile.com)
049 * @see Adjustable
050 * @see AdjustmentListener
051 * @since 1.1
052 * @status updated to 1.4
053 */
054public class AdjustmentEvent extends AWTEvent
055{
056  /**
057   * Compatible with JDK 1.1+.
058   */
059  private static final long serialVersionUID = 5700290645205279921L;
060
061  /** This is the first id in the range of ids used by adjustment events. */
062  public static final int ADJUSTMENT_FIRST = 601;
063
064  /** This is the last id in the range of ids used by adjustment events. */
065  public static final int ADJUSTMENT_LAST = 601;
066
067  /** This is the id indicating an adjustment value changed. */
068  public static final int ADJUSTMENT_VALUE_CHANGED = 601;
069
070  /** Adjustment type for unit increments. */
071  public static final int UNIT_INCREMENT = 1;
072
073  /** Adjustment type for unit decrements. */
074  public static final int UNIT_DECREMENT = 2;
075
076  /** Adjustment type for block decrements. */
077  public static final int BLOCK_DECREMENT = 3;
078
079  /** Adjustment type for block increments. */
080  public static final int BLOCK_INCREMENT = 4;
081
082  /** Adjustment type for tracking adjustments. */
083  public static final int TRACK = 5;
084
085  /**
086   * The adjustable object that caused the event.
087   *
088   * @see #getAdjustable()
089   * @serial the cause
090   */
091  private final Adjustable adjustable;
092
093  /**
094   * The type of adjustment, one of {@link #UNIT_INCREMENT},
095   * {@link #UNIT_DECREMENT}, {@link #BLOCK_INCREMENT},
096   * {@link #BLOCK_DECREMENT}, or {@link #TRACK}.
097   *
098   * @see #getAdjustmentType()
099   * @serial the adjustment type
100   */
101  private final int adjustmentType;
102
103  /**
104   * The new value of the adjustable; it should be in the range of the
105   * adjustable cause.
106   *
107   * @see #getValue()
108   * @serial the adjustment value
109   */
110  private final int value;
111
112  /**
113   * True if this is in a series of multiple adjustment events.
114   *
115   * @see #getValueIsAdjusting()
116   * @serial true if this is not the last adjustment
117   * @since 1.4
118   */
119  private final boolean isAdjusting;
120
121  /**
122   * Initializes an instance of <code>AdjustmentEvent</code> with the
123   * specified source, id, type, and value. Note that an invalid id leads to
124   * unspecified results.
125   *
126   * @param source the source of the event
127   * @param id the event id
128   * @param type the event type, one of the constants of this class
129   * @param value the value of the adjustment
130   * @throws IllegalArgumentException if source is null
131   */
132  public AdjustmentEvent(Adjustable source, int id, int type, int value)
133  {
134    this(source, id, type, value, false);
135  }
136
137  /**
138   * Initializes an instance of <code>AdjustmentEvent</code> with the
139   * specified source, id, type, and value. Note that an invalid id leads to
140   * unspecified results.
141   *
142   * @param source the source of the event
143   * @param id the event id
144   * @param type the event type, one of the constants of this class
145   * @param value the value of the adjustment
146   * @param isAdjusting if this event is in a chain of adjustments
147   * @throws IllegalArgumentException if source is null
148   * @since 1.4
149   */
150  public AdjustmentEvent(Adjustable source, int id, int type, int value,
151                         boolean isAdjusting)
152  {
153    super(source, id);
154    this.adjustmentType = type;
155    this.value = value;
156    adjustable = source;
157    this.isAdjusting = isAdjusting;
158  }
159
160  /**
161   * This method returns the source of the event as an <code>Adjustable</code>.
162   *
163   * @return the <code>Adjustable</code> source of the event
164   */
165  public Adjustable getAdjustable()
166  {
167    return adjustable;
168  }
169
170  /**
171   * Returns the new value of the adjustable object.
172   *
173   * @return the value of the event
174   */
175  public int getValue()
176  {
177    return value;
178  }
179
180  /**
181   * Returns the type of the event, which will be one of
182   * {@link #UNIT_INCREMENT}, {@link #UNIT_DECREMENT},
183   * {@link #BLOCK_INCREMENT}, {@link #BLOCK_DECREMENT}, or {@link #TRACK}.
184   *
185   * @return the type of the event
186   */
187  public int getAdjustmentType()
188  {
189    return adjustmentType;
190  }
191
192  /**
193   * Test if this event is part of a sequence of multiple adjustements.
194   *
195   * @return true if this is not the last adjustment
196   * @since 1.4
197   */
198  public boolean getValueIsAdjusting()
199  {
200    return isAdjusting;
201  }
202
203  /**
204   * Returns a string that describes the event. This is in the format
205   * <code>"ADJUSTMENT_VALUE_CHANGED,adjType=" + &lt;type&gt; + ",value="
206   * + getValue() + ",isAdjusting=" + getValueIsAdjusting()</code>, where
207   * type is the name of the constant returned by getAdjustmentType().
208   *
209   * @return a string that describes the event
210   */
211  public String paramString()
212  {
213    return (id == ADJUSTMENT_VALUE_CHANGED
214            ? "ADJUSTMENT_VALUE_CHANGED,adjType=" : "unknown type,adjType=")
215      + (adjustmentType == UNIT_INCREMENT ? "UNIT_INCREMENT,value="
216         : adjustmentType == UNIT_DECREMENT ? "UNIT_DECREMENT,value="
217         : adjustmentType == BLOCK_INCREMENT ? "BLOCK_INCREMENT,value="
218         : adjustmentType == BLOCK_DECREMENT ? "BLOCK_DECREMENT,value="
219         : adjustmentType == TRACK ? "TRACK,value=" : "unknown type,value=")
220      + value + ",isAdjusting=" + isAdjusting;
221  }
222} // class AdjustmentEvent