001: /*
002: * @(#)EventHandler.java 1.15 06/10/10
003: *
004: * Copyright 1990-2006 Sun Microsystems, Inc. All Rights Reserved.
005: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License version
009: * 2 only, as published by the Free Software Foundation.
010: *
011: * This program 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 version 2 for more details (a copy is
015: * included at /legal/license.txt).
016: *
017: * You should have received a copy of the GNU General Public License
018: * version 2 along with this work; if not, write to the Free Software
019: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA
021: *
022: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
023: * Clara, CA 95054 or visit www.sun.com if you need additional
024: * information or have any questions.
025: *
026: */
027:
028: package sun.porting.windowsystem;
029:
030: /**
031: * The <code>EventHandler</code> interface is presented to the underlying
032: * operating system (by registering with the underlying <code>GraphicsSystem</code>)
033: * in order to allow events to flow into the system.
034: *
035: * @version 1.10, 08/19/02
036: */
037: public interface EventHandler {
038: /* event handling */
039:
040: /**
041: * Neither press nor release. This is used for events that have no "click"
042: * associated with them, e.g. a mouse move or drag.
043: */
044: static final int NONE = 0;
045: /**
046: * An actuator was pressed. This could be a mouse button, or a key on a
047: * keyboard, keypad, remote control, etc. which signifies an event that can
048: * be represented by a virtual key code (i.e. a constant in
049: * <code>java.awt.event.KeyEvent</code> whose name begins with <code>VK_</code>)
050: */
051: static final int PRESSED = 1;
052: /**
053: * An actuator was released. This could be a mouse button, or a key on a
054: * keyboard, keypad, remote control, etc. which signifies an event that can
055: * be represented by a virtual key code (i.e. a constant in
056: * <code>java.awt.event.KeyEvent</code> whose name begins with <code>VK_</code>)
057: */
058: static final int RELEASED = 2;
059: /**
060: * The <code>ACTION</code> event is sent whenever an action button
061: * is activated. This event is used for special keys
062: * (e.g. a "GO" key on a keypad) which cannot be represented by a virtual
063: * key code and are supposed to be handled or translated by the toolkit.
064: */
065: static final int ACTION = 3;
066: /**
067: * The <code>TYPED</code> event is used to deliver translated characters
068: * into the system. If translation from virtual keys to Unicode character codes
069: * is done at a low level, this event type is used to deliver them; if the
070: * translation must performed at a higher level (e.g. in the toolkit) then these
071: * events will never be seen.
072: */
073: static final int TYPED = 4;
074:
075: /**
076: * Called when an event on a pointing object (e.g. a mouse, track ball,
077: * joystick etc.) has occurred.
078: * @param when Time at which the event occurred, in milliseconds since
079: * 1/1/70 UTC.
080: * @param x Current position of pointer - x coordinate
081: * @param y Current position of pointer - y coordinate
082: * @param ID Type identifier indicating the kind of event
083: * @param number Used to distinguish among several buttons (etc) that
084: * could have been pressed or released.
085: * @see java.lang.System#currentTimeMillis
086: */
087: void pointerEventOccurred(long when, int x, int y, int ID,
088: int number);
089:
090: /**
091: * Called when an event on a key object (typewriter-style keyboard key,
092: * button on a remote control, etc) has occurred.
093: * @param when Time at which the event occurred, in milliseconds since
094: * 1/1/70 UTC.
095: * @param ID Type identifier indicating the kind of event
096: * @param keycode A code identifying which key was pressed.
097: * @param keychar Unicode character -- for TYPED events only. (Events
098: * with the TYPED id will only occur if the system is doing key-to-char
099: * translation at a low level.)
100: * @see java.awt.event.KeyEvent
101: * @see java.lang.System#currentTimeMillis
102: */
103: void keyboardEventOccurred(long when, int ID, int keycode,
104: char keychar);
105:
106: /**
107: * Indicates that some change or another happened at the graphics layer
108: * which has made the current state of the
109: * This is a bit that can be logically OR-ed with the other flags.
110: */
111: static final int GRAPHICS_INVALID_FLAG = 1;
112: /**
113: * Indicates that the pixel definition of the root window has changed.
114: * This is a bit that can be logically OR-ed with the other flags.
115: */
116: static final int COLORMODEL_CHANGE_FLAG = 2;
117: /**
118: * Indicates that the size of the root window area has changed.
119: * This is a bit that can be logically OR-ed with the other flags.
120: */
121: static final int SIZE_CHANGE_FLAG = 4;
122:
123: /**
124: * Called when a change occurred in the graphics system, e.g. the
125: * depth or size of the screen was changed. <code>GRAPHICS_INVALID_FLAG</code>
126: * forces the window system to repaint all of its windows; it may
127: * be sent all by itself if the system is an emulator and needs a
128: * refresh. The <code>Region</code> structure, if supplied, is used to clip the
129: * repaint. <code>GRAPHICS_INVALID_FLAG</code> should always be sent if the
130: * event is a change in color model. But it is permissible *not*
131: * to repaint on a size change in some circumstances (most likely
132: * in an emulator). Other actions are to be taken as appropriate
133: * (e.g. resetting the window system's idea of the root window
134: * clip area.)
135: */
136: void graphicsChange(long when, sun.porting.graphicssystem.Region r,
137: int flags);
138: }
|