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
26 package sun.awt.windows;
27
28 import java.awt.*;
29 import sun.awt.GlobalCursorManager;
30
31 public final class WGlobalCursorManager extends GlobalCursorManager {
32 private static WGlobalCursorManager manager;
33
34 public static GlobalCursorManager getCursorManager() {
35 if (manager == null) {
36 manager = new WGlobalCursorManager();
37 }
38 return manager;
39 }
40
41 /**
42 * Should be called in response to a native mouse enter or native mouse
43 * button released message. Should not be called during a mouse drag.
44 */
45 public static void nativeUpdateCursor(Component heavy) {
46 WGlobalCursorManager.getCursorManager().updateCursorLater(heavy);
47 }
48
49 protected native void setCursor(Component comp, Cursor cursor, boolean u);
50 protected native void getCursorPos(Point p);
51 protected native Component findComponentAt(Container con, int x, int y);
52 /*
53 * two native methods to call corresponding methods in Container and
54 * Component
55 */
56 protected native Component findHeavyweightUnderCursor(boolean useCache);
57 protected native Point getLocationOnScreen(Component com);
58 }
|
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
26 package sun.awt.windows;
27
28 import java.awt.*;
29 import sun.awt.GlobalCursorManager;
30 import sun.awt.LightweightFrame;
31 import sun.swing.JLightweightFrame;
32 import sun.swing.LightweightContent;
33 import sun.swing.SwingAccessor;
34
35 public final class WGlobalCursorManager extends GlobalCursorManager {
36 private static WGlobalCursorManager manager;
37
38 public static GlobalCursorManager getCursorManager() {
39 if (manager == null) {
40 manager = new WGlobalCursorManager();
41 }
42 return manager;
43 }
44
45 /**
46 * Should be called in response to a native mouse enter or native mouse
47 * button released message. Should not be called during a mouse drag.
48 */
49 public static void nativeUpdateCursor(Component heavy) {
50 WGlobalCursorManager.getCursorManager().updateCursorLater(heavy);
51 }
52
53 protected void setCursor(final Component comp, final Cursor cursor, final boolean u) {
54 JLightweightFrame lwFrameUnderCursor = WLightweightFramePeer.getFrameUnderCursor();
55 if (lwFrameUnderCursor != null) {
56 LightweightContent lwContent = SwingAccessor
57 .getJLightweightFrameAccessor()
58 .getLightweightContent(lwFrameUnderCursor);
59 lwContent.invokeOnClientToolkitThread(() -> setCursorDirect(comp, cursor, u));
60 } else {
61 setCursorImpl(comp, cursor, u);
62 }
63 }
64
65 protected native void setCursorImpl(Component comp, Cursor cursor, boolean u);
66 protected native void setCursorDirect(Component component, Cursor cursor, boolean u);
67 protected native void getCursorPos(Point p);
68 protected native Component findComponentAt(Container con, int x, int y);
69 /*
70 * two native methods to call corresponding methods in Container and
71 * Component
72 */
73 protected native Component findHeavyweightUnderCursor(boolean useCache);
74 protected native Point getLocationOnScreen(Component com);
75 }
|