Source for java.awt.AWTEvent

   1: 
   2: /* AWTEvent.java -- the root event in AWT
   3:    Copyright (C) 1999, 2000, 2002, 2005 Free Software Foundation
   4: 
   5: This file is part of GNU Classpath.
   6: 
   7: GNU Classpath is free software; you can redistribute it and/or modify
   8: it under the terms of the GNU General Public License as published by
   9: the Free Software Foundation; either version 2, or (at your option)
  10: any later version.
  11: 
  12: GNU Classpath is distributed in the hope that it will be useful, but
  13: WITHOUT ANY WARRANTY; without even the implied warranty of
  14: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15: General Public License for more details.
  16: 
  17: You should have received a copy of the GNU General Public License
  18: along with GNU Classpath; see the file COPYING.  If not, write to the
  19: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  20: 02110-1301 USA.
  21: 
  22: Linking this library statically or dynamically with other modules is
  23: making a combined work based on this library.  Thus, the terms and
  24: conditions of the GNU General Public License cover the whole
  25: combination.
  26: 
  27: As a special exception, the copyright holders of this library give you
  28: permission to link this library with independent modules to produce an
  29: executable, regardless of the license terms of these independent
  30: modules, and to copy and distribute the resulting executable under
  31: terms of your choice, provided that you also meet, for each linked
  32: independent module, the terms and conditions of the license of that
  33: module.  An independent module is a module which is not derived from
  34: or based on this library.  If you modify this library, you may extend
  35: this exception to your version of the library, but you are not
  36: obligated to do so.  If you do not wish to do so, delete this
  37: exception statement from your version. */
  38: 
  39: 
  40: package java.awt;
  41: 
  42: import java.util.EventObject;
  43: 
  44: /**
  45:  * AWTEvent is the root event class for all AWT events in the JDK 1.1 event 
  46:  * model. It supersedes the Event class from JDK 1.0. Subclasses outside of
  47:  * the java.awt package should have IDs greater than RESERVED_ID_MAX.
  48:  *
  49:  * <p>Event masks defined here are used by components in
  50:  * <code>enableEvents</code> to select event types not selected by registered
  51:  * listeners. Event masks are appropriately set when registering on
  52:  * components.
  53:  *
  54:  * @author Warren Levy  (warrenl@cygnus.com)
  55:  * @author Aaron M. Renn (arenn@urbanophile.com)
  56:  * @since 1.1
  57:  * @status updated to 1.4
  58:  */
  59: public abstract class AWTEvent extends EventObject
  60: {
  61:   /**
  62:    * Compatible with JDK 1.1+.
  63:    */
  64:   private static final long serialVersionUID = -1825314779160409405L;
  65: 
  66:   /**
  67:    * The ID of the event.
  68:    *
  69:    * @see #getID()
  70:    * @see #AWTEvent(Object, int)
  71:    * @serial the identifier number of this event
  72:    */
  73:   protected int id;
  74: 
  75:   /**
  76:    * Indicates if the event has been consumed. False mean it is passed to
  77:    * the peer, true means it has already been processed. Semantic events
  78:    * generated by low-level events always have the value true.
  79:    *
  80:    * @see #consume()
  81:    * @see #isConsumed()
  82:    * @serial whether the event has been consumed
  83:    */
  84:   protected boolean consumed;
  85: 
  86:   /**
  87:    * Who knows? It's in the serial version.
  88:    *
  89:    * @serial No idea what this is for.
  90:    */
  91:   byte[] bdata;
  92: 
  93:   /** Mask for selecting component events. */
  94:   public static final long COMPONENT_EVENT_MASK = 0x00001;
  95: 
  96:   /** Mask for selecting container events. */
  97:   public static final long CONTAINER_EVENT_MASK = 0x00002;
  98: 
  99:   /** Mask for selecting component focus events. */
 100:   public static final long FOCUS_EVENT_MASK = 0x00004;
 101: 
 102:   /** Mask for selecting keyboard events. */
 103:   public static final long KEY_EVENT_MASK = 0x00008;
 104: 
 105:   /** Mask for mouse button events. */
 106:   public static final long MOUSE_EVENT_MASK = 0x00010;
 107: 
 108:   /** Mask for mouse motion events. */
 109:   public static final long MOUSE_MOTION_EVENT_MASK = 0x00020;
 110: 
 111:   /** Mask for window events. */
 112:   public static final long WINDOW_EVENT_MASK = 0x00040;
 113: 
 114:   /** Mask for action events. */
 115:   public static final long ACTION_EVENT_MASK = 0x00080;
 116: 
 117:   /** Mask for adjustment events. */
 118:   public static final long ADJUSTMENT_EVENT_MASK = 0x00100;
 119: 
 120:   /** Mask for item events. */
 121:   public static final long ITEM_EVENT_MASK = 0x00200;
 122: 
 123:   /** Mask for text events. */
 124:   public static final long TEXT_EVENT_MASK = 0x00400;
 125: 
 126:   /**
 127:    * Mask for input method events.
 128:    * @since 1.3
 129:    */
 130:   public static final long INPUT_METHOD_EVENT_MASK = 0x00800;
 131: 
 132:   /**
 133:    * Mask if input methods are enabled. Package visible only.
 134:    */
 135:   static final long INPUT_ENABLED_EVENT_MASK = 0x01000;
 136: 
 137:   /**
 138:    * Mask for paint events.
 139:    * @since 1.3
 140:    */
 141:   public static final long PAINT_EVENT_MASK = 0x02000;
 142: 
 143:   /**
 144:    * Mask for invocation events.
 145:    * @since 1.3
 146:    */
 147:   public static final long INVOCATION_EVENT_MASK = 0x04000;
 148: 
 149:   /**
 150:    * Mask for hierarchy events.
 151:    * @since 1.3
 152:    */
 153:   public static final long HIERARCHY_EVENT_MASK = 0x08000;
 154: 
 155:   /**
 156:    * Mask for hierarchy bounds events.
 157:    * @since 1.3
 158:    */
 159:   public static final long HIERARCHY_BOUNDS_EVENT_MASK = 0x10000;
 160: 
 161:   /**
 162:    * Mask for mouse wheel events.
 163:    * @since 1.4
 164:    */
 165:   public static final long MOUSE_WHEEL_EVENT_MASK = 0x20000;
 166: 
 167:   /**
 168:    * Mask for window state events.
 169:    * @since 1.4
 170:    */
 171:   public static final long WINDOW_STATE_EVENT_MASK = 0x40000;
 172: 
 173:   /**
 174:    * Mask for window focus events.
 175:    * @since 1.4
 176:    */
 177:   public static final long WINDOW_FOCUS_EVENT_MASK = 0x80000;
 178: 
 179:   /**
 180:   * This is the highest number for event ids that are reserved for use by
 181:   * the AWT system itself. Subclasses outside of java.awt should use higher
 182:   * ids.
 183:   */
 184:   public static final int RESERVED_ID_MAX = 1999;
 185: 
 186: 
 187:   /**
 188:    * Initializes a new AWTEvent from the old Java 1.0 event object.
 189:    *
 190:    * @param event the old-style event
 191:    * @throws NullPointerException if event is null
 192:    */
 193:   public AWTEvent(Event event)
 194:   {
 195:     this(event.target, event.id);
 196:     consumed = event.consumed;
 197:   }
 198: 
 199:   /**
 200:    * Create an event on the specified source object and id.
 201:    *
 202:    * @param source the object that caused the event
 203:    * @param id the event id
 204:    * @throws IllegalArgumentException if source is null
 205:    */
 206:   public AWTEvent(Object source, int id)
 207:   {
 208:     super(source);
 209:     this.id = id;
 210:   }
 211: 
 212:   /**
 213:    * Retarget the event, such as converting a heavyweight component to a
 214:    * lightweight child of the original. This is not for general use, but
 215:    * is for event targeting systems like KeyboardFocusManager.
 216:    *
 217:    * @param source the new source
 218:    */
 219:   public void setSource(Object source)
 220:   {
 221:     this.source = source;
 222:   }
 223: 
 224:   /**
 225:    * Returns the event type id.
 226:    *
 227:    * @return the id number of this event
 228:    */
 229:   public int getID()
 230:   {
 231:     return id;
 232:   }
 233: 
 234:   /**
 235:    * Create a string that represents this event in the format
 236:    * <code>classname[eventstring] on sourcecomponentname</code>.
 237:    *
 238:    * @return a string representing this event
 239:    */
 240:   public String toString ()
 241:   {
 242:     String string = getClass ().getName () + "[" + paramString () + "] on "
 243:     + source;
 244: 
 245:     return string;
 246:   }
 247: 
 248:   /**
 249:    * Returns a string representation of the state of this event. It may be
 250:    * empty, but must not be null; it is implementation defined.
 251:    *
 252:    * @return a string representation of this event
 253:    */
 254:   public String paramString()
 255:   {
 256:     return "";
 257:   }
 258: 
 259:   /**
 260:    * Consumes this event so that it will not be processed in the default
 261:    * manner.
 262:    */
 263:   protected void consume()
 264:   {
 265:     consumed = true;
 266:   }
 267: 
 268:   /**
 269:    * Tests whether not not this event has been consumed. A consumed event
 270:    * is not processed in the default manner.
 271:    *
 272:    * @return true if this event has been consumed
 273:    */
 274:   protected boolean isConsumed()
 275:   {
 276:     return consumed;
 277:   }
 278: } // class AWTEvent