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 Michael Danilov 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @version $Revision$ 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage java.awt.event; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.awt.Component; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This class is not supported in Android 1.0. It is merely provided to maintain 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * interface compatibility with desktop Java implementations. 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @since Android 1.0 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic abstract class InputEvent extends ComponentEvent { 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final long serialVersionUID = -2482525981698309786L; 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int SHIFT_MASK = 1; 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int CTRL_MASK = 2; 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int META_MASK = 4; 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int ALT_MASK = 8; 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int ALT_GRAPH_MASK = 32; 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int BUTTON1_MASK = 16; 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int BUTTON2_MASK = 8; 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int BUTTON3_MASK = 4; 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int SHIFT_DOWN_MASK = 64; 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int CTRL_DOWN_MASK = 128; 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int META_DOWN_MASK = 256; 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int ALT_DOWN_MASK = 512; 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int BUTTON1_DOWN_MASK = 1024; 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int BUTTON2_DOWN_MASK = 2048; 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int BUTTON3_DOWN_MASK = 4096; 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int ALT_GRAPH_DOWN_MASK = 8192; 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final int DOWN_MASKS = SHIFT_DOWN_MASK | CTRL_DOWN_MASK | 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project META_DOWN_MASK | ALT_DOWN_MASK | BUTTON1_DOWN_MASK | 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project BUTTON2_DOWN_MASK | BUTTON3_DOWN_MASK | ALT_GRAPH_DOWN_MASK; 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private long when; 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int modifiersEx; 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static String getModifiersExText(int modifiers/*Ex*/) { 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return MouseEvent.addMouseModifiersExText( 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project KeyEvent.getKeyModifiersExText(modifiers), modifiers); 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static int extractExFlags(int modifiers) { 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int exFlags = modifiers & DOWN_MASKS; 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((modifiers & SHIFT_MASK) != 0) { 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project exFlags |= SHIFT_DOWN_MASK; 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((modifiers & CTRL_MASK) != 0) { 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project exFlags |= CTRL_DOWN_MASK; 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((modifiers & META_MASK) != 0) { 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project exFlags |= META_DOWN_MASK; 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((modifiers & ALT_MASK) != 0) { 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project exFlags |= ALT_DOWN_MASK; 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((modifiers & ALT_GRAPH_MASK) != 0) { 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project exFlags |= ALT_GRAPH_DOWN_MASK; 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((modifiers & BUTTON1_MASK) != 0) { 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project exFlags |= BUTTON1_DOWN_MASK; 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((modifiers & BUTTON2_MASK) != 0) { 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project exFlags |= BUTTON2_DOWN_MASK; 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((modifiers & BUTTON3_MASK) != 0) { 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project exFlags |= BUTTON3_DOWN_MASK; 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return exFlags; 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project InputEvent(Component source, int id, long when, int modifiers) { 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super(source, id); 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.when = when; 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project modifiersEx = extractExFlags(modifiers); 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getModifiers() { 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int modifiers = 0; 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((modifiersEx & SHIFT_DOWN_MASK) != 0) { 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project modifiers |= SHIFT_MASK; 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((modifiersEx & CTRL_DOWN_MASK) != 0) { 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project modifiers |= CTRL_MASK; 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((modifiersEx & META_DOWN_MASK) != 0) { 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project modifiers |= META_MASK; 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((modifiersEx & ALT_DOWN_MASK) != 0) { 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project modifiers |= ALT_MASK; 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((modifiersEx & ALT_GRAPH_DOWN_MASK) != 0) { 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project modifiers |= ALT_GRAPH_MASK; 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((modifiersEx & BUTTON1_DOWN_MASK) != 0) { 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project modifiers |= BUTTON1_MASK; 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((modifiersEx & BUTTON2_DOWN_MASK) != 0) { 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project modifiers |= BUTTON2_MASK; 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((modifiersEx & BUTTON3_DOWN_MASK) != 0) { 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project modifiers |= BUTTON3_MASK; 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return modifiers; 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getModifiersEx() { 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return modifiersEx; 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setModifiers(int modifiers) { 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project modifiersEx = extractExFlags(modifiers); 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean isAltDown() { 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ((modifiersEx & ALT_DOWN_MASK) != 0); 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean isAltGraphDown() { 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ((modifiersEx & ALT_GRAPH_DOWN_MASK) != 0); 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean isControlDown() { 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ((modifiersEx & CTRL_DOWN_MASK) != 0); 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean isMetaDown() { 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ((modifiersEx & META_DOWN_MASK) != 0); 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean isShiftDown() { 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ((modifiersEx & SHIFT_DOWN_MASK) != 0); 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public long getWhen() { 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return when; 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void consume() { 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.consume(); 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean isConsumed() { 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return super.isConsumed(); 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 191