home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / sun / awt / GlobalCursorManager.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  2.3 KB  |  112 lines

  1. package sun.awt;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Container;
  5. import java.awt.Cursor;
  6. import java.awt.IllegalComponentStateException;
  7. import java.awt.Point;
  8. import java.awt.Toolkit;
  9. import java.awt.Window;
  10. import java.awt.event.InputEvent;
  11.  
  12. public abstract class GlobalCursorManager {
  13.    private static GlobalCursorManager manager;
  14.    private static final CursorEvent curEvent = new CursorEvent();
  15.    private static long lastUpdateMillis;
  16.    private static final Object lastUpdateLock = new Object();
  17.    private static final Object treeLock = (new Container()).getTreeLock();
  18.  
  19.    public static void updateCursorImmediately() {
  20.       CursorEvent var0 = curEvent;
  21.       synchronized(var0) {
  22.          sun.awt.GlobalCursorManager.CursorEvent.pending = false;
  23.       }
  24.  
  25.       getInstance()._updateCursor(false);
  26.    }
  27.  
  28.    public static void updateCursorImmediately(InputEvent var0) {
  29.       Object var2 = lastUpdateLock;
  30.       boolean var1;
  31.       synchronized(var2) {
  32.          var1 = var0.getWhen() >= lastUpdateMillis;
  33.       }
  34.  
  35.       if (var1) {
  36.          getInstance()._updateCursor(true);
  37.       }
  38.  
  39.    }
  40.  
  41.    public static void updateCursorLater(Component var0) {
  42.       curEvent.postSelfIfNotPending(var0);
  43.    }
  44.  
  45.    private static GlobalCursorManager getInstance() {
  46.       if (manager == null) {
  47.          manager = ((SunToolkit)Toolkit.getDefaultToolkit()).getGlobalCursorManager();
  48.       }
  49.  
  50.       return manager;
  51.    }
  52.  
  53.    protected GlobalCursorManager() {
  54.    }
  55.  
  56.    protected abstract void setCursor(Component var1, Cursor var2, boolean var3);
  57.  
  58.    protected abstract void getCursorPos(Point var1);
  59.  
  60.    protected abstract Component findComponentAt(Container var1, int var2, int var3);
  61.  
  62.    protected abstract Point getLocationOnScreen(Component var1);
  63.  
  64.    protected abstract Component findHeavyweightUnderCursor(boolean var1);
  65.  
  66.    private void _updateCursor(boolean var1) {
  67.       Object var2 = lastUpdateLock;
  68.       synchronized(var2) {
  69.          lastUpdateMillis = System.currentTimeMillis();
  70.       }
  71.  
  72.       Object var3 = null;
  73.       Point var4 = null;
  74.  
  75.       try {
  76.          Component var5 = this.findHeavyweightUnderCursor(var1);
  77.          if (var5 == null) {
  78.             return;
  79.          }
  80.  
  81.          if (var5 instanceof Window) {
  82.             var4 = var5.getLocation();
  83.          } else if (var5 instanceof Container) {
  84.             var4 = this.getLocationOnScreen(var5);
  85.          }
  86.  
  87.          if (var4 != null) {
  88.             Point var9 = new Point();
  89.             this.getCursorPos(var9);
  90.             Component var6 = this.findComponentAt((Container)var5, var9.x - var4.x, var9.y - var4.y);
  91.             if (var6 != null) {
  92.                var5 = var6;
  93.             }
  94.          }
  95.  
  96.          this.setCursor(var5, var5.getCursor(), var1);
  97.       } catch (IllegalComponentStateException var7) {
  98.       }
  99.  
  100.    }
  101.  
  102.    // $FF: synthetic method
  103.    static GlobalCursorManager access$000() {
  104.       return getInstance();
  105.    }
  106.  
  107.    // $FF: synthetic method
  108.    static void access$100(GlobalCursorManager var0, boolean var1) {
  109.       var0._updateCursor(var1);
  110.    }
  111. }
  112.