home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / javax / swing / SystemEventQueueUtilities.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  4.6 KB  |  183 lines

  1. package javax.swing;
  2.  
  3. import java.applet.Applet;
  4. import java.awt.Component;
  5. import java.awt.EventQueue;
  6. import java.awt.Toolkit;
  7. import java.awt.Window;
  8. import java.awt.event.InvocationEvent;
  9. import java.util.Collections;
  10. import java.util.Map;
  11. import java.util.WeakHashMap;
  12. import sun.awt.AppContext;
  13. import sun.awt.SunToolkit;
  14.  
  15. class SystemEventQueueUtilities {
  16.    private static final Object classLock = new Object();
  17.    private static final Object rootTableKey = new StringBuffer("SystemEventQueueUtilties.rootTableKey");
  18.  
  19.    private static Map getRootTable() {
  20.       return getRootTable(AppContext.getAppContext());
  21.    }
  22.  
  23.    private static Map getRootTable(AppContext var0) {
  24.       Map var1 = (Map)var0.get(rootTableKey);
  25.       if (var1 == null) {
  26.          synchronized(rootTableKey) {
  27.             var1 = (Map)var0.get(rootTableKey);
  28.             if (var1 == null) {
  29.                var1 = Collections.synchronizedMap(new WeakHashMap(4));
  30.                var0.put(rootTableKey, var1);
  31.             }
  32.          }
  33.       }
  34.  
  35.       return var1;
  36.    }
  37.  
  38.    static void queueComponentWorkRequest(Component var0) {
  39.       queueComponentWorkRequest(var0, AppContext.getAppContext());
  40.    }
  41.  
  42.    static void queueComponentWorkRequest(Component var0, AppContext var1) {
  43.       ComponentWorkRequest var2 = (ComponentWorkRequest)getRootTable(var1).get(var0);
  44.       boolean var3 = var2 == null;
  45.       if (var3) {
  46.          var2 = new ComponentWorkRequest(var0);
  47.       }
  48.  
  49.       boolean var4 = false;
  50.       synchronized(var2) {
  51.          if (var3) {
  52.             getRootTable(var1).put(var0, var2);
  53.          }
  54.  
  55.          if (!var2.isPending) {
  56.             var2.isPending = true;
  57.             var4 = true;
  58.          }
  59.       }
  60.  
  61.       if (var4) {
  62.          SunToolkit.getSystemEventQueueImplPP(var1).postEvent(new InvocationEvent(Toolkit.getDefaultToolkit(), var2));
  63.       }
  64.  
  65.    }
  66.  
  67.    static void addRunnableCanvas(JRootPane var0) {
  68.       synchronized(classLock) {
  69.          if (javax.swing.SystemEventQueueUtilities.SystemEventQueue.get(var0) == null) {
  70.             JLayeredPane var2 = var0.getLayeredPane();
  71.             if (var2 != null) {
  72.                RunnableCanvas var3 = new RunnableCanvas(var0);
  73.                var2.add(var3);
  74.             }
  75.  
  76.          }
  77.       }
  78.    }
  79.  
  80.    static void removeRunnableCanvas(JRootPane var0) {
  81.       synchronized(classLock) {
  82.          Object var2 = null;
  83.  
  84.          for(Object var3 = var0; var3 != null; var3 = ((Component)var3).getParent()) {
  85.             if (var3 instanceof Window || var3 instanceof Applet) {
  86.                var2 = var3;
  87.                break;
  88.             }
  89.          }
  90.  
  91.          if (var2 != null) {
  92.             getRootTable().remove(var2);
  93.          }
  94.  
  95.          javax.swing.SystemEventQueueUtilities.RunnableCanvas.remove(var0);
  96.       }
  97.    }
  98.  
  99.    static Exception postRunnable(Runnable var0, Object var1) {
  100.       EventQueue var2 = javax.swing.SystemEventQueueUtilities.SystemEventQueue.get();
  101.       RunnableEvent var3 = new RunnableEvent(var0, var1);
  102.       if (var2 != null) {
  103.          var2.postEvent(var3);
  104.       } else {
  105.          postRunnableCanvasEvent(var3);
  106.       }
  107.  
  108.       return var3.exception;
  109.    }
  110.  
  111.    static void restartTimerQueueThread() {
  112.       synchronized(classLock) {
  113.          if (javax.swing.SystemEventQueueUtilities.SystemEventQueue.get() == null) {
  114.             TimerQueueRestart var1 = new TimerQueueRestart((1)null);
  115.             RunnableEvent var2 = new RunnableEvent(var1, (Object)null);
  116.             javax.swing.SystemEventQueueUtilities.RunnableCanvas.postRunnableEventToAll(var2);
  117.          }
  118.  
  119.       }
  120.    }
  121.  
  122.    private static void processRunnableEvent(RunnableEvent var0) {
  123.       Object var1 = var0.lock;
  124.       if (var1 == null) {
  125.          var0.doRun.run();
  126.       } else {
  127.          synchronized(var1) {
  128.             try {
  129.                var0.doRun.run();
  130.             } catch (Exception var9) {
  131.                var0.exception = var9;
  132.             } finally {
  133.                if (var0.lock != null) {
  134.                   var0.lock.notify();
  135.                }
  136.  
  137.             }
  138.          }
  139.       }
  140.  
  141.    }
  142.  
  143.    private static void postRunnableCanvasEvent(RunnableEvent var0) {
  144.       synchronized(classLock) {
  145.          RunnableCanvas var2 = javax.swing.SystemEventQueueUtilities.RunnableCanvas.lookup(var0);
  146.          if (var2 == null) {
  147.             if (var0.doRun instanceof ComponentWorkRequest) {
  148.                ComponentWorkRequest var3 = (ComponentWorkRequest)var0.doRun;
  149.                synchronized(var3) {
  150.                   var3.isPending = false;
  151.                }
  152.             }
  153.  
  154.             if (var0.doRun instanceof Timer.DoPostEvent) {
  155.                ((Timer.DoPostEvent)var0.doRun).getTimer().cancelEvent();
  156.             }
  157.  
  158.             if (var0.lock != null) {
  159.                var0.lock.notify();
  160.             }
  161.  
  162.          } else {
  163.             var2.addRunnableEvent(var0);
  164.             var2.repaint();
  165.          }
  166.       }
  167.    }
  168.  
  169.    private static ThreadGroup getThreadGroupSafely() {
  170.       return (new Thread()).getThreadGroup();
  171.    }
  172.  
  173.    // $FF: synthetic method
  174.    static void access$100(RunnableEvent var0) {
  175.       processRunnableEvent(var0);
  176.    }
  177.  
  178.    // $FF: synthetic method
  179.    static ThreadGroup access$300() {
  180.       return getThreadGroupSafely();
  181.    }
  182. }
  183.