home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / swing / SystemEventQueueUtilities.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  4.2 KB  |  179 lines

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