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$RunnableCanvas.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  4.1 KB  |  217 lines

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