19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  Licensed to the Apache Software Foundation (ASF) under one or more
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  contributor license agreements.  See the NOTICE file distributed with
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  this work for additional information regarding copyright ownership.
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  The ASF licenses this file to You under the Apache License, Version 2.0
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  (the "License"); you may not use this file except in compliance with
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  the License.  You may obtain a copy of the License at
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  See the License for the specific language governing permissions and
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  limitations under the License.
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @author Dmitry A. Durnev, Michael Danilov
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @version $Revision$
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage java.awt;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.EventObject;
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.Hashtable;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.EventListener;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.awt.event.*;
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The abstract class AWTEvent is the base class for all AWT events. This class
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and its subclasses supersede the original java.awt.Event class.
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @since Android 1.0
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic abstract class AWTEvent extends EventObject {
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant serialVersionUID.
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final long serialVersionUID = -1825314779160409405L;
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant COMPONENT_EVENT_MASK indicates the event relates to a
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * component.
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final long COMPONENT_EVENT_MASK = 1;
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant CONTAINER_EVENT_MASK indicates the event relates to a
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * container.
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final long CONTAINER_EVENT_MASK = 2;
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant FOCUS_EVENT_MASK indicates the event relates to the focus.
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final long FOCUS_EVENT_MASK = 4;
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant KEY_EVENT_MASK indicates the event relates to a key.
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final long KEY_EVENT_MASK = 8;
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant MOUSE_EVENT_MASK indicates the event relates to the mouse.
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final long MOUSE_EVENT_MASK = 16;
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant MOUSE_MOTION_EVENT_MASK indicates the event relates to a
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * mouse motion.
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final long MOUSE_MOTION_EVENT_MASK = 32;
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant WINDOW_EVENT_MASK indicates the event relates to a window.
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final long WINDOW_EVENT_MASK = 64;
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant ACTION_EVENT_MASK indicates the event relates to an action.
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final long ACTION_EVENT_MASK = 128;
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant ADJUSTMENT_EVENT_MASK indicates the event relates to an
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * adjustment.
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final long ADJUSTMENT_EVENT_MASK = 256;
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant ITEM_EVENT_MASK indicates the event relates to an item.
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final long ITEM_EVENT_MASK = 512;
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant TEXT_EVENT_MASK indicates the event relates to text.
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final long TEXT_EVENT_MASK = 1024;
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant INPUT_METHOD_EVENT_MASK indicates the event relates to an
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * input method.
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final long INPUT_METHOD_EVENT_MASK = 2048;
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant PAINT_EVENT_MASK indicates the event relates to a paint
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * method.
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final long PAINT_EVENT_MASK = 8192;
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant INVOCATION_EVENT_MASK indicates the event relates to a
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * method invocation.
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final long INVOCATION_EVENT_MASK = 16384;
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant HIERARCHY_EVENT_MASK indicates the event relates to a
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * hierarchy.
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final long HIERARCHY_EVENT_MASK = 32768;
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant HIERARCHY_BOUNDS_EVENT_MASK indicates the event relates to
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * hierarchy bounds.
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final long HIERARCHY_BOUNDS_EVENT_MASK = 65536;
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant MOUSE_WHEEL_EVENT_MASK indicates the event relates to the
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * mouse wheel.
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final long MOUSE_WHEEL_EVENT_MASK = 131072;
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant WINDOW_STATE_EVENT_MASK indicates the event relates to a
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * window state.
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final long WINDOW_STATE_EVENT_MASK = 262144;
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant WINDOW_FOCUS_EVENT_MASK indicates the event relates to a
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * window focus.
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final long WINDOW_FOCUS_EVENT_MASK = 524288;
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant RESERVED_ID_MAX indicates the maximum value for reserved AWT
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * event IDs.
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int RESERVED_ID_MAX = 1999;
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The Constant eventsMap.
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final Hashtable<Integer, EventDescriptor> eventsMap = new Hashtable<Integer, EventDescriptor>();
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The converter.
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static EventConverter converter;
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The ID of the event.
1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    protected int id;
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The consumed indicates whether or not the event is sent back down to the
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * peer once the source has processed it (false means it's sent to the peer,
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * true means it's not).
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    protected boolean consumed;
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The dispatched by kfm.
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean dispatchedByKFM;
1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The is posted.
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    transient boolean isPosted;
1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static {
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(KeyEvent.KEY_TYPED), new EventDescriptor(KEY_EVENT_MASK,
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                KeyListener.class));
1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(KeyEvent.KEY_PRESSED), new EventDescriptor(KEY_EVENT_MASK,
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                KeyListener.class));
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(KeyEvent.KEY_RELEASED), new EventDescriptor(KEY_EVENT_MASK,
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                KeyListener.class));
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(MouseEvent.MOUSE_CLICKED), new EventDescriptor(MOUSE_EVENT_MASK,
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                MouseListener.class));
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(MouseEvent.MOUSE_PRESSED), new EventDescriptor(MOUSE_EVENT_MASK,
1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                MouseListener.class));
1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(MouseEvent.MOUSE_RELEASED), new EventDescriptor(MOUSE_EVENT_MASK,
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                MouseListener.class));
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(MouseEvent.MOUSE_MOVED), new EventDescriptor(
2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                MOUSE_MOTION_EVENT_MASK, MouseMotionListener.class));
2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(MouseEvent.MOUSE_ENTERED), new EventDescriptor(MOUSE_EVENT_MASK,
2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                MouseListener.class));
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(MouseEvent.MOUSE_EXITED), new EventDescriptor(MOUSE_EVENT_MASK,
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                MouseListener.class));
2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(MouseEvent.MOUSE_DRAGGED), new EventDescriptor(
2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                MOUSE_MOTION_EVENT_MASK, MouseMotionListener.class));
2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(MouseEvent.MOUSE_WHEEL), new EventDescriptor(
2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                MOUSE_WHEEL_EVENT_MASK, MouseWheelListener.class));
2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(ComponentEvent.COMPONENT_MOVED), new EventDescriptor(
2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                COMPONENT_EVENT_MASK, ComponentListener.class));
2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(ComponentEvent.COMPONENT_RESIZED), new EventDescriptor(
2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                COMPONENT_EVENT_MASK, ComponentListener.class));
2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(ComponentEvent.COMPONENT_SHOWN), new EventDescriptor(
2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                COMPONENT_EVENT_MASK, ComponentListener.class));
2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(ComponentEvent.COMPONENT_HIDDEN), new EventDescriptor(
2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                COMPONENT_EVENT_MASK, ComponentListener.class));
2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(FocusEvent.FOCUS_GAINED), new EventDescriptor(FOCUS_EVENT_MASK,
2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                FocusListener.class));
2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(FocusEvent.FOCUS_LOST), new EventDescriptor(FOCUS_EVENT_MASK,
2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                FocusListener.class));
2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(PaintEvent.PAINT), new EventDescriptor(PAINT_EVENT_MASK, null));
2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(PaintEvent.UPDATE), new EventDescriptor(PAINT_EVENT_MASK, null));
2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(WindowEvent.WINDOW_OPENED), new EventDescriptor(
2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                WINDOW_EVENT_MASK, WindowListener.class));
2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(WindowEvent.WINDOW_CLOSING), new EventDescriptor(
2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                WINDOW_EVENT_MASK, WindowListener.class));
2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(WindowEvent.WINDOW_CLOSED), new EventDescriptor(
2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                WINDOW_EVENT_MASK, WindowListener.class));
2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(WindowEvent.WINDOW_DEICONIFIED), new EventDescriptor(
2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                WINDOW_EVENT_MASK, WindowListener.class));
2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(WindowEvent.WINDOW_ICONIFIED), new EventDescriptor(
2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                WINDOW_EVENT_MASK, WindowListener.class));
2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(WindowEvent.WINDOW_STATE_CHANGED), new EventDescriptor(
2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                WINDOW_STATE_EVENT_MASK, WindowStateListener.class));
2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(WindowEvent.WINDOW_LOST_FOCUS), new EventDescriptor(
2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                WINDOW_FOCUS_EVENT_MASK, WindowFocusListener.class));
2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(WindowEvent.WINDOW_GAINED_FOCUS), new EventDescriptor(
2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                WINDOW_FOCUS_EVENT_MASK, WindowFocusListener.class));
2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(WindowEvent.WINDOW_DEACTIVATED), new EventDescriptor(
2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                WINDOW_EVENT_MASK, WindowListener.class));
2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(WindowEvent.WINDOW_ACTIVATED), new EventDescriptor(
2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                WINDOW_EVENT_MASK, WindowListener.class));
2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(HierarchyEvent.HIERARCHY_CHANGED), new EventDescriptor(
2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                HIERARCHY_EVENT_MASK, HierarchyListener.class));
2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(HierarchyEvent.ANCESTOR_MOVED), new EventDescriptor(
2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                HIERARCHY_BOUNDS_EVENT_MASK, HierarchyBoundsListener.class));
2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(HierarchyEvent.ANCESTOR_RESIZED), new EventDescriptor(
2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                HIERARCHY_BOUNDS_EVENT_MASK, HierarchyBoundsListener.class));
2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(ContainerEvent.COMPONENT_ADDED), new EventDescriptor(
2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                CONTAINER_EVENT_MASK, ContainerListener.class));
2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(ContainerEvent.COMPONENT_REMOVED), new EventDescriptor(
2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                CONTAINER_EVENT_MASK, ContainerListener.class));
2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(InputMethodEvent.INPUT_METHOD_TEXT_CHANGED), new EventDescriptor(
2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                INPUT_METHOD_EVENT_MASK, InputMethodListener.class));
2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(InputMethodEvent.CARET_POSITION_CHANGED), new EventDescriptor(
2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                INPUT_METHOD_EVENT_MASK, InputMethodListener.class));
2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(InvocationEvent.INVOCATION_DEFAULT), new EventDescriptor(
2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                INVOCATION_EVENT_MASK, null));
2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(ItemEvent.ITEM_STATE_CHANGED), new EventDescriptor(
2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                ITEM_EVENT_MASK, ItemListener.class));
2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(TextEvent.TEXT_VALUE_CHANGED), new EventDescriptor(
2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                TEXT_EVENT_MASK, TextListener.class));
2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(ActionEvent.ACTION_PERFORMED), new EventDescriptor(
2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                ACTION_EVENT_MASK, ActionListener.class));
2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        eventsMap.put(new Integer(AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED), new EventDescriptor(
2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                ADJUSTMENT_EVENT_MASK, AdjustmentListener.class));
2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        converter = new EventConverter();
2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Instantiates a new AWT event from the specified Event object.
2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param event
2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Event object.
2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public AWTEvent(Event event) {
2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        this(event.target, event.id);
2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Instantiates a new AWT event with the specified object and type.
2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param source
2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the source Object.
2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param id
2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the event's type.
2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public AWTEvent(Object source, int id) {
2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super(source);
2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        this.id = id;
2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        consumed = false;
2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the event's type.
2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the event type ID.
3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getID() {
3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return id;
3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Sets a new source for the AWTEvent.
3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param newSource
3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the new source Object for the AWTEvent.
3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setSource(Object newSource) {
3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        source = newSource;
3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns a String representation of the AWTEvent.
3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the String representation of the AWTEvent.
3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String toString() {
3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        /*
3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * The format is based on 1.5 release behavior which can be revealed by
3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * the following code: AWTEvent event = new AWTEvent(new Component(){},
3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * 1){}; System.out.println(event);
3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         */
3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        String name = ""; //$NON-NLS-1$
3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (source instanceof Component && (source != null)) {
3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Component comp = (Component)getSource();
3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            name = comp.getName();
3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            if (name == null) {
3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                name = ""; //$NON-NLS-1$
3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            }
3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return (getClass().getName() + "[" + paramString() + "]" //$NON-NLS-1$ //$NON-NLS-2$
3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                + " on " + (name.length() > 0 ? name : source)); //$NON-NLS-1$
3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns a string representation of the AWTEvent state.
3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return a string representation of the AWTEvent state.
3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String paramString() {
3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // nothing to implement: all event types must override this method
3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return ""; //$NON-NLS-1$
3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Checks whether or not this AWTEvent has been consumed.
3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true, if this AWTEvent has been consumed, false otherwise.
3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    protected boolean isConsumed() {
3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return consumed;
3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Consumes the AWTEvent.
3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    protected void consume() {
3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        consumed = true;
3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Convert AWTEvent object to a corresponding (deprecated) Event object.
3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return new Event object which is a converted AWTEvent object or null if
3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         the conversion is not possible
3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Event getEvent() {
3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (id == ActionEvent.ACTION_PERFORMED) {
3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            ActionEvent ae = (ActionEvent)this;
3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return converter.convertActionEvent(ae);
3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } else if (id == AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED) {
3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            AdjustmentEvent ae = (AdjustmentEvent)this;
3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return converter.convertAdjustmentEvent(ae);
3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // ???AWT
3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // } else if (id == ComponentEvent.COMPONENT_MOVED
3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // && source instanceof Window) {
3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // //the only type of Component events is COMPONENT_MOVED on window
3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // ComponentEvent ce = (ComponentEvent) this;
3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // return converter.convertComponentEvent(ce);
3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } else if (id >= FocusEvent.FOCUS_FIRST && id <= FocusEvent.FOCUS_LAST) {
3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // nothing to convert
3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // ???AWT
3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // } else if (id == ItemEvent.ITEM_STATE_CHANGED) {
3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // ItemEvent ie = (ItemEvent) this;
3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // return converter.convertItemEvent(ie);
3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } else if (id == KeyEvent.KEY_PRESSED || id == KeyEvent.KEY_RELEASED) {
3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            KeyEvent ke = (KeyEvent)this;
4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return converter.convertKeyEvent(ke);
4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } else if (id >= MouseEvent.MOUSE_FIRST && id <= MouseEvent.MOUSE_LAST) {
4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            MouseEvent me = (MouseEvent)this;
4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return converter.convertMouseEvent(me);
4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } else if (id == WindowEvent.WINDOW_CLOSING || id == WindowEvent.WINDOW_ICONIFIED
4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                || id == WindowEvent.WINDOW_DEICONIFIED) {
4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // nothing to convert
4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } else {
4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return null;
4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return new Event(source, id, null);
4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The class EventDescriptor.
4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final class EventDescriptor {
4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        /**
4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * The event mask.
4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         */
4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        final long eventMask;
4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        /**
4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * The listener type.
4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         */
4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        final Class<? extends EventListener> listenerType;
4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        /**
4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * Instantiates a new event descriptor.
4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         *
4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * @param eventMask
4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         *            the event mask.
4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * @param listenerType
4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         *            the listener type.
4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         */
4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        EventDescriptor(long eventMask, Class<? extends EventListener> listenerType) {
4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            this.eventMask = eventMask;
4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            this.listenerType = listenerType;
4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The class EventTypeLookup.
4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final class EventTypeLookup {
4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        /**
4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * The last event.
4509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         */
4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        private AWTEvent lastEvent = null;
4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        /**
4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * The last event descriptor.
4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         */
4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        private EventDescriptor lastEventDescriptor = null;
4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        /**
4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * Gets the event descriptor.
4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         *
4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * @param event
4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         *            the event.
4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * @return the event descriptor.
4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         */
4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        EventDescriptor getEventDescriptor(AWTEvent event) {
4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            synchronized (this) {
4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                if (event != lastEvent) {
4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    lastEvent = event;
4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    lastEventDescriptor = eventsMap.get(new Integer(event.id));
4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                }
4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return lastEventDescriptor;
4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            }
4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        /**
4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * Gets the event mask.
4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         *
4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * @param event
4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         *            the event.
4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * @return the event mask.
4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         */
4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        long getEventMask(AWTEvent event) {
4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            final EventDescriptor ed = getEventDescriptor(event);
4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return ed == null ? -1 : ed.eventMask;
4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The class EventConverter.
4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final class EventConverter {
4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        /**
4959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * The constant OLD_MOD_MASK.
4969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         */
4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        static final int OLD_MOD_MASK = Event.ALT_MASK | Event.CTRL_MASK | Event.META_MASK
4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                | Event.SHIFT_MASK;
4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        /**
5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * Convert action event.
5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         *
5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * @param ae
5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         *            the ae.
5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * @return the event.
5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         */
5079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Event convertActionEvent(ActionEvent ae) {
5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Event evt = new Event(ae.getSource(), ae.getID(), ae.getActionCommand());
5099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            evt.when = ae.getWhen();
5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            evt.modifiers = ae.getModifiers() & OLD_MOD_MASK;
5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            /*
5139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project             * if (source instanceof Button) { arg = ((Button)
5149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project             * source).getLabel(); } else if (source instanceof Checkbox) { arg
5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project             * = new Boolean(((Checkbox) source).getState()); } else if (source
5169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project             * instanceof CheckboxMenuItem) { arg = ((CheckboxMenuItem)
5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project             * source).getLabel(); } else if (source instanceof Choice) { arg =
5189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project             * ((Choice) source).getSelectedItem(); } else if (source instanceof
5199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project             * List) { arg = ((List) source).getSelectedItem(); } else if
5209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project             * (source instanceof MenuItem) { arg = ((MenuItem)
5219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project             * source).getLabel(); } else if (source instanceof TextField) { arg
5229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project             * = ((TextField) source).getText(); }
5239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project             */
5249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return evt;
5259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
5269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        /**
5289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * Convert adjustment event.
5299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         *
5309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * @param ae
5319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         *            the ae.
5329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * @return the event.
5339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         */
5349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Event convertAdjustmentEvent(AdjustmentEvent ae) {
5359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // TODO: Event.SCROLL_BEGIN/SCROLL_END
5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return new Event(ae.source, ae.id + ae.getAdjustmentType() - 1, new Integer(ae
5379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    .getValue()));
5389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
5399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        /**
5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * Convert component event.
5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         *
5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * @param ce
5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         *            the ce.
5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * @return the event.
5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         */
5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Event convertComponentEvent(ComponentEvent ce) {
5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Component comp = ce.getComponent();
5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Event evt = new Event(comp, Event.WINDOW_MOVED, null);
5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            evt.x = comp.getX();
5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            evt.y = comp.getY();
5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return evt;
5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // ???AWT
5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        /*
5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * Event convertItemEvent(ItemEvent ie) { int oldId = ie.id +
5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * ie.getStateChange() - 1; Object source = ie.source; int idx = -1; if
5599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * (source instanceof List) { List list = (List) source; idx =
5609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * list.getSelectedIndex(); } else if (source instanceof Choice) {
5619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * Choice choice = (Choice) source; idx = choice.getSelectedIndex(); }
5629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * Object arg = idx >= 0 ? new Integer(idx) : null; return new
5639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * Event(source, oldId, arg); }
5649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         */
5659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        /**
5679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * Convert key event.
5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         *
5699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * @param ke
5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         *            the ke.
5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * @return the event.
5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         */
5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Event convertKeyEvent(KeyEvent ke) {
5749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int oldId = ke.id;
5759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // leave only old Event's modifiers
5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int mod = ke.getModifiers() & OLD_MOD_MASK;
5789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Component comp = ke.getComponent();
5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            char keyChar = ke.getKeyChar();
5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int keyCode = ke.getKeyCode();
5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int key = convertKey(keyChar, keyCode);
5829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            if (key >= Event.HOME && key <= Event.INSERT) {
5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                oldId += 2; // non-ASCII key -> action key
5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            }
5859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return new Event(comp, ke.getWhen(), oldId, 0, 0, key, mod);
5869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
5879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        /**
5899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * Convert mouse event.
5909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         *
5919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * @param me
5929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         *            the me.
5939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * @return the event.
5949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         */
5959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Event convertMouseEvent(MouseEvent me) {
5969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int id = me.id;
5979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            if (id != MouseEvent.MOUSE_CLICKED) {
5989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                Event evt = new Event(me.source, id, null);
5999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                evt.x = me.getX();
6009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                evt.y = me.getY();
6019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                int mod = me.getModifiers();
6029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                // in Event modifiers mean button number for mouse events:
6039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                evt.modifiers = mod & (Event.ALT_MASK | Event.META_MASK);
6049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                if (id == MouseEvent.MOUSE_PRESSED) {
6059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    evt.clickCount = me.getClickCount();
6069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                }
6079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return evt;
6089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            }
6099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return null;
6109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
6119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        /**
6139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * Convert key.
6149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         *
6159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * @param keyChar
6169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         *            the key char.
6179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * @param keyCode
6189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         *            the key code.
6199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * @return the int.
6209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         */
6219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        int convertKey(char keyChar, int keyCode) {
6229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int key;
6239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // F1 - F12
6249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            if (keyCode >= KeyEvent.VK_F1 && keyCode <= KeyEvent.VK_F12) {
6259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                key = Event.F1 + keyCode - KeyEvent.VK_F1;
6269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            } else {
6279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                switch (keyCode) {
6289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    default: // non-action key
6299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        key = keyChar;
6309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        break;
6319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    // action keys:
6329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    case KeyEvent.VK_HOME:
6339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        key = Event.HOME;
6349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        break;
6359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    case KeyEvent.VK_END:
6369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        key = Event.END;
6379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        break;
6389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    case KeyEvent.VK_PAGE_UP:
6399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        key = Event.PGUP;
6409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        break;
6419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    case KeyEvent.VK_PAGE_DOWN:
6429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        key = Event.PGDN;
6439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        break;
6449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    case KeyEvent.VK_UP:
6459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        key = Event.UP;
6469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        break;
6479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    case KeyEvent.VK_DOWN:
6489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        key = Event.DOWN;
6499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        break;
6509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    case KeyEvent.VK_LEFT:
6519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        key = Event.LEFT;
6529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        break;
6539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    case KeyEvent.VK_RIGHT:
6549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        key = Event.RIGHT;
6559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        break;
6569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    case KeyEvent.VK_PRINTSCREEN:
6579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        key = Event.PRINT_SCREEN;
6589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        break;
6599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    case KeyEvent.VK_SCROLL_LOCK:
6609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        key = Event.SCROLL_LOCK;
6619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        break;
6629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    case KeyEvent.VK_CAPS_LOCK:
6639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        key = Event.CAPS_LOCK;
6649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        break;
6659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    case KeyEvent.VK_NUM_LOCK:
6669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        key = Event.NUM_LOCK;
6679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        break;
6689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    case KeyEvent.VK_PAUSE:
6699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        key = Event.PAUSE;
6709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        break;
6719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    case KeyEvent.VK_INSERT:
6729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        key = Event.INSERT;
6739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        break;
6749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                }
6759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            }
6769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return key;
6779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
6789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
6809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
682