001    /* AdjustmentEvent.java -- an adjustable value was changed
002       Copyright (C) 1999, 2002, 2004, 2005  Free Software Foundation, Inc.
003    
004    This file is part of GNU Classpath.
005    
006    GNU Classpath is free software; you can redistribute it and/or modify
007    it under the terms of the GNU General Public License as published by
008    the Free Software Foundation; either version 2, or (at your option)
009    any later version.
010    
011    GNU Classpath is distributed in the hope that it will be useful, but
012    WITHOUT ANY WARRANTY; without even the implied warranty of
013    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
014    General Public License for more details.
015    
016    You should have received a copy of the GNU General Public License
017    along with GNU Classpath; see the file COPYING.  If not, write to the
018    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
019    02110-1301 USA.
020    
021    Linking this library statically or dynamically with other modules is
022    making a combined work based on this library.  Thus, the terms and
023    conditions of the GNU General Public License cover the whole
024    combination.
025    
026    As a special exception, the copyright holders of this library give you
027    permission to link this library with independent modules to produce an
028    executable, regardless of the license terms of these independent
029    modules, and to copy and distribute the resulting executable under
030    terms of your choice, provided that you also meet, for each linked
031    independent module, the terms and conditions of the license of that
032    module.  An independent module is a module which is not derived from
033    or based on this library.  If you modify this library, you may extend
034    this exception to your version of the library, but you are not
035    obligated to do so.  If you do not wish to do so, delete this
036    exception statement from your version. */
037    
038    
039    package java.awt.event;
040    
041    import java.awt.AWTEvent;
042    import 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     */
054    public 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