History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg/java/awt/MouseInfo.java (1 of 18352 files). Show all

Unified · Split

java/pkg/java/awt/MouseInfo.java+135−0
@@ -0,0 +1,135 @@
1/*
2 * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26package java.awt;
27
28import sun.security.util.SecurityConstants;
29/**
30 * <code>MouseInfo</code> provides methods for getting information about the mouse,
31 * such as mouse pointer location and the number of mouse buttons.
32 *
33 * @author Roman Poborchiy
34 * @since 1.5
35 */
36
37public class MouseInfo {
38
39 /**
40 * Private constructor to prevent instantiation.
41 */
42 private MouseInfo() {
43 }
44
45 /**
46 * Returns a <code>PointerInfo</code> instance that represents the current
47 * location of the mouse pointer.
48 * The <code>GraphicsDevice</code> stored in this <code>PointerInfo</code>
49 * contains the mouse pointer. The coordinate system used for the mouse position
50 * depends on whether or not the <code>GraphicsDevice</code> is part of a virtual
51 * screen device.
52 * For virtual screen devices, the coordinates are given in the virtual
53 * coordinate system, otherwise they are returned in the coordinate system
54 * of the <code>GraphicsDevice</code>. See {@link GraphicsConfiguration}
55 * for more information about the virtual screen devices.
56 * On systems without a mouse, returns <code>null</code>.
57 * <p>
58 * If there is a security manager, its <code>checkPermission</code> method
59 * is called with an <code>AWTPermission("watchMousePointer")</code>
60 * permission before creating and returning a <code>PointerInfo</code>
61 * object. This may result in a <code>SecurityException</code>.
62 *
63 * @exception HeadlessException if GraphicsEnvironment.isHeadless() returns true
64 * @exception SecurityException if a security manager exists and its
65 * <code>checkPermission</code> method doesn't allow the operation
66 * @see GraphicsConfiguration
67 * @see SecurityManager#checkPermission
68 * @see java.awt.AWTPermission
69 * @return location of the mouse pointer
70 * @since 1.5
71 */
72 public static PointerInfo getPointerInfo() throws HeadlessException {
73 if (GraphicsEnvironment.isHeadless()) {
74 throw new HeadlessException();
75 }
76
77 SecurityManager security = System.getSecurityManager();
78 if (security != null) {
79 security.checkPermission(SecurityConstants.AWT.WATCH_MOUSE_PERMISSION);
80 }
81
82 Point point = new Point(0, 0);
83 int deviceNum = Toolkit.getDefaultToolkit().getMouseInfoPeer().fillPointWithCoords(point);
84 GraphicsDevice[] gds = GraphicsEnvironment.getLocalGraphicsEnvironment().
85 getScreenDevices();
86 PointerInfo retval = null;
87 if (areScreenDevicesIndependent(gds)) {
88 retval = new PointerInfo(gds[deviceNum], point);
89 } else {
90 for (int i = 0; i < gds.length; i++) {
91 GraphicsConfiguration gc = gds[i].getDefaultConfiguration();
92 Rectangle bounds = gc.getBounds();
93 if (bounds.contains(point)) {
94 retval = new PointerInfo(gds[i], point);
95 }
96 }
97 }
98
99 return retval;
100 }
101
102 private static boolean areScreenDevicesIndependent(GraphicsDevice[] gds) {
103 for (int i = 0; i < gds.length; i++) {
104 Rectangle bounds = gds[i].getDefaultConfiguration().getBounds();
105 if (bounds.x != 0 || bounds.y != 0) {
106 return false;
107 }
108 }
109 return true;
110 }
111
112 /**
113 * Returns the number of buttons on the mouse.
114 * On systems without a mouse, returns <code>-1</code>.
115 *
116 * @exception HeadlessException if GraphicsEnvironment.isHeadless() returns true
117 * @return number of buttons on the mouse
118 * @since 1.5
119 */
120 public static int getNumberOfButtons() throws HeadlessException {
121 if (GraphicsEnvironment.isHeadless()) {
122 throw new HeadlessException();
123 }
124 Object prop = Toolkit.getDefaultToolkit().
125 getDesktopProperty("awt.mouse.numButtons");
126 if (prop instanceof Integer) {
127 return ((Integer)prop).intValue();
128 }
129
130 // This should never happen.
131 assert false : "awt.mouse.numButtons is not an integer property";
132 return 0;
133 }
134
135}