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$RunnableCanvas.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  4.2 KB  |  221 lines

  1. package javax.swing;
  2.  
  3. import java.awt.Canvas;
  4. import java.awt.Component;
  5. import java.awt.Container;
  6. import java.awt.Dimension;
  7. import java.awt.Graphics;
  8. import java.util.Enumeration;
  9. import java.util.Hashtable;
  10. import java.util.Vector;
  11.  
  12. class SystemEventQueueUtilities$RunnableCanvas extends Canvas {
  13.    private static final Graphics nullGraphics = new SystemEventQueueUtilities.RunnableCanvasGraphics((SystemEventQueueUtilities.1)null);
  14.    private static Hashtable runnableCanvasTable = new Hashtable(1);
  15.    private Vector runnableEvents = new Vector(2);
  16.    private boolean isRegistered = false;
  17.  
  18.    SystemEventQueueUtilities$RunnableCanvas(JRootPane var1) {
  19.       ((Component)this).setBounds(0, 0, 1, 1);
  20.       if (runnableCanvasTable.get(Thread.currentThread()) == null) {
  21.          try {
  22.             runnableCanvasTable.put(Thread.currentThread(), this);
  23.             runnableCanvasTable.put(SystemEventQueueUtilities.access$300(), this);
  24.             if (SwingUtilities.isEventDispatchThread()) {
  25.                this.isRegistered = true;
  26.             }
  27.          } catch (Exception var3) {
  28.             System.err.println("Can't register RunnableCanvas");
  29.             ((Throwable)var3).printStackTrace();
  30.          }
  31.       }
  32.  
  33.       runnableCanvasTable.put(var1, this);
  34.       this.maybeRegisterEventDispatchThread();
  35.    }
  36.  
  37.    private void maybeRegisterEventDispatchThread() {
  38.       if (!this.isRegistered) {
  39.          synchronized(this) {
  40.             if (!this.isRegistered && SwingUtilities.isEventDispatchThread()) {
  41.                Thread var2 = Thread.currentThread();
  42.                if (runnableCanvasTable.get(var2) != null) {
  43.                   this.isRegistered = true;
  44.                } else {
  45.                   runnableCanvasTable.put(var2, this);
  46.                   runnableCanvasTable.put(SystemEventQueueUtilities.access$300(), this);
  47.                   this.isRegistered = true;
  48.                }
  49.             }
  50.          }
  51.       }
  52.  
  53.    }
  54.  
  55.    static SystemEventQueueUtilities$RunnableCanvas lookup(SystemEventQueueUtilities.RunnableEvent var0) {
  56.       if (var0.doRun instanceof SystemEventQueueUtilities.ComponentWorkRequest) {
  57.          SystemEventQueueUtilities.ComponentWorkRequest var8 = (SystemEventQueueUtilities.ComponentWorkRequest)var0.doRun;
  58.          synchronized(var8) {
  59.             JRootPane var9 = SwingUtilities.getRootPane(var8.component);
  60.             if (var9 != null) {
  61.                SystemEventQueueUtilities$RunnableCanvas var11 = (SystemEventQueueUtilities$RunnableCanvas)runnableCanvasTable.get(var9);
  62.                return var11;
  63.             } else {
  64.                var8.isPending = false;
  65.                Object var10 = null;
  66.                return (SystemEventQueueUtilities$RunnableCanvas)var10;
  67.             }
  68.          }
  69.       } else {
  70.          Object var1 = runnableCanvasTable.get(Thread.currentThread());
  71.          if (var1 != null) {
  72.             return (SystemEventQueueUtilities$RunnableCanvas)var1;
  73.          } else {
  74.             ThreadGroup var2;
  75.             try {
  76.                var2 = Thread.currentThread().getThreadGroup();
  77.             } catch (SecurityException var7) {
  78.                return null;
  79.             }
  80.  
  81.             SystemEventQueueUtilities$RunnableCanvas var3 = (SystemEventQueueUtilities$RunnableCanvas)runnableCanvasTable.get(var2);
  82.             if (var3 == null) {
  83.                Enumeration var4 = runnableCanvasTable.keys();
  84.                if (var4 == null) {
  85.                   return null;
  86.                }
  87.  
  88.                while(var4.hasMoreElements()) {
  89.                   Object var5 = var4.nextElement();
  90.                   if (var5 instanceof JRootPane && ((JRootPane)var5).isShowing()) {
  91.                      return (SystemEventQueueUtilities$RunnableCanvas)runnableCanvasTable.get(var5);
  92.                   }
  93.                }
  94.             }
  95.  
  96.             return var3;
  97.          }
  98.       }
  99.    }
  100.  
  101.    static void postRunnableEventToAll(SystemEventQueueUtilities.RunnableEvent var0) {
  102.       ThreadGroup var2;
  103.       try {
  104.          var2 = (new Thread()).getThreadGroup();
  105.       } catch (SecurityException var7) {
  106.          var2 = null;
  107.       }
  108.  
  109.       SystemEventQueueUtilities$RunnableCanvas var1;
  110.       if (var2 != null) {
  111.          var1 = (SystemEventQueueUtilities$RunnableCanvas)runnableCanvasTable.get(var2);
  112.       } else {
  113.          var1 = null;
  114.       }
  115.  
  116.       Enumeration var3 = runnableCanvasTable.keys();
  117.  
  118.       while(var3.hasMoreElements()) {
  119.          Object var4 = var3.nextElement();
  120.          if (var4 instanceof JRootPane) {
  121.             Object var5 = runnableCanvasTable.get(var4);
  122.             if (var5 != var1) {
  123.                SystemEventQueueUtilities$RunnableCanvas var6 = (SystemEventQueueUtilities$RunnableCanvas)var5;
  124.                var6.addRunnableEvent(var0);
  125.                ((Component)var6).repaint();
  126.             }
  127.          }
  128.       }
  129.  
  130.    }
  131.  
  132.    static void remove(JRootPane var0) {
  133.       SystemEventQueueUtilities$RunnableCanvas var1 = (SystemEventQueueUtilities$RunnableCanvas)runnableCanvasTable.get(var0);
  134.       if (var1 != null) {
  135.          SystemEventQueueUtilities$RunnableCanvas var2 = null;
  136.          JLayeredPane var3 = var0.getLayeredPane();
  137.          ((Container)var3).remove(var1);
  138.          Enumeration var4 = runnableCanvasTable.keys();
  139.  
  140.          while(var4.hasMoreElements()) {
  141.             Object var5 = var4.nextElement();
  142.             Object var6 = runnableCanvasTable.get(var5);
  143.             if (var1 == var6) {
  144.                runnableCanvasTable.remove(var5);
  145.             } else if (var2 == null) {
  146.                var2 = (SystemEventQueueUtilities$RunnableCanvas)var6;
  147.             }
  148.          }
  149.  
  150.          SystemEventQueueUtilities.RunnableEvent[] var9 = var1.getRunnableCanvasEvents();
  151.          int var10 = var9 == null ? 0 : var9.length;
  152.          if (var10 > 0) {
  153.             if (var2 != null) {
  154.                for(int var7 = 0; var7 < var10; ++var7) {
  155.                   SystemEventQueueUtilities.RunnableEvent var8 = var9[var7];
  156.                   if (var8.doRun instanceof Timer.DoPostEvent) {
  157.                      var2.addRunnableEvent(var8);
  158.                   }
  159.                }
  160.  
  161.                ((Component)var2).repaint();
  162.             } else {
  163.                for(int var11 = 0; var11 < var10; ++var11) {
  164.                   SystemEventQueueUtilities.RunnableEvent var12 = var9[var11];
  165.                   if (var12.doRun instanceof Timer.DoPostEvent) {
  166.                      ((Timer.DoPostEvent)var12.doRun).getTimer().eventQueued = false;
  167.                   }
  168.                }
  169.             }
  170.          }
  171.       }
  172.  
  173.    }
  174.  
  175.    public boolean isShowing() {
  176.       return this.runnableEvents.size() > 0;
  177.    }
  178.  
  179.    public Graphics getGraphics() {
  180.       return nullGraphics;
  181.    }
  182.  
  183.    public Dimension getPreferredSize() {
  184.       return new Dimension(1, 1);
  185.    }
  186.  
  187.    synchronized void addRunnableEvent(SystemEventQueueUtilities.RunnableEvent var1) {
  188.       this.runnableEvents.addElement(var1);
  189.    }
  190.  
  191.    private synchronized SystemEventQueueUtilities.RunnableEvent[] getRunnableCanvasEvents() {
  192.       int var1 = this.runnableEvents.size();
  193.       if (var1 == 0) {
  194.          return null;
  195.       } else {
  196.          SystemEventQueueUtilities.RunnableEvent[] var2 = new SystemEventQueueUtilities.RunnableEvent[var1];
  197.  
  198.          for(int var3 = 0; var3 < var1; ++var3) {
  199.             var2[var3] = (SystemEventQueueUtilities.RunnableEvent)this.runnableEvents.elementAt(var3);
  200.          }
  201.  
  202.          this.runnableEvents.removeAllElements();
  203.          return var2;
  204.       }
  205.    }
  206.  
  207.    public void paint(Graphics var1) {
  208.       this.maybeRegisterEventDispatchThread();
  209.    }
  210.  
  211.    public void update(Graphics var1) {
  212.       SystemEventQueueUtilities.RunnableEvent[] var2 = this.getRunnableCanvasEvents();
  213.       if (var2 != null) {
  214.          for(int var3 = 0; var3 < var2.length; ++var3) {
  215.             SystemEventQueueUtilities.access$100(var2[var3]);
  216.          }
  217.       }
  218.  
  219.    }
  220. }
  221.