home *** CD-ROM | disk | FTP | other *** search
- package sun.awt;
-
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Cursor;
- import java.awt.IllegalComponentStateException;
- import java.awt.Point;
- import java.awt.Toolkit;
- import java.awt.Window;
- import java.awt.event.InputEvent;
-
- public abstract class GlobalCursorManager {
- private static GlobalCursorManager manager;
- private static final CursorEvent curEvent = new CursorEvent();
- private static long lastUpdateMillis;
- private static final Object lastUpdateLock = new Object();
- private static final Object treeLock = (new Container()).getTreeLock();
-
- public static void updateCursorImmediately() {
- CursorEvent var0 = curEvent;
- synchronized(var0) {
- sun.awt.GlobalCursorManager.CursorEvent.pending = false;
- }
-
- getInstance()._updateCursor(false);
- }
-
- public static void updateCursorImmediately(InputEvent var0) {
- Object var2 = lastUpdateLock;
- boolean var1;
- synchronized(var2) {
- var1 = var0.getWhen() >= lastUpdateMillis;
- }
-
- if (var1) {
- getInstance()._updateCursor(true);
- }
-
- }
-
- public static void updateCursorLater(Component var0) {
- curEvent.postSelfIfNotPending(var0);
- }
-
- private static GlobalCursorManager getInstance() {
- if (manager == null) {
- manager = ((SunToolkit)Toolkit.getDefaultToolkit()).getGlobalCursorManager();
- }
-
- return manager;
- }
-
- protected GlobalCursorManager() {
- }
-
- protected abstract void setCursor(Component var1, Cursor var2, boolean var3);
-
- protected abstract void getCursorPos(Point var1);
-
- protected abstract Component findComponentAt(Container var1, int var2, int var3);
-
- protected abstract Point getLocationOnScreen(Component var1);
-
- protected abstract Component findHeavyweightUnderCursor(boolean var1);
-
- private void _updateCursor(boolean var1) {
- Object var2 = lastUpdateLock;
- synchronized(var2) {
- lastUpdateMillis = System.currentTimeMillis();
- }
-
- Object var3 = null;
- Point var4 = null;
-
- try {
- Component var5 = this.findHeavyweightUnderCursor(var1);
- if (var5 == null) {
- return;
- }
-
- if (var5 instanceof Window) {
- var4 = var5.getLocation();
- } else if (var5 instanceof Container) {
- var4 = this.getLocationOnScreen(var5);
- }
-
- if (var4 != null) {
- Point var9 = new Point();
- this.getCursorPos(var9);
- Component var6 = this.findComponentAt((Container)var5, var9.x - var4.x, var9.y - var4.y);
- if (var6 != null) {
- var5 = var6;
- }
- }
-
- this.setCursor(var5, var5.getCursor(), var1);
- } catch (IllegalComponentStateException var7) {
- }
-
- }
-
- // $FF: synthetic method
- static GlobalCursorManager access$000() {
- return getInstance();
- }
-
- // $FF: synthetic method
- static void access$100(GlobalCursorManager var0, boolean var1) {
- var0._updateCursor(var1);
- }
- }
-