home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 144 / DPCS0200.iso / Internet / Supanet / system / swing.jar / javax / swing / TimerQueue.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-11-05  |  3.5 KB  |  191 lines

  1. package javax.swing;
  2.  
  3. class TimerQueue implements Runnable {
  4.    Timer firstTimer;
  5.    boolean running;
  6.    private static final Object sharedInstanceKey = new StringBuffer("TimerQueue.sharedInstanceKey");
  7.    private static final Object expiredTimersKey = new StringBuffer("TimerQueue.expiredTimersKey");
  8.    // $FF: synthetic field
  9.    static Class class$javax$swing$TimerQueue;
  10.  
  11.    public TimerQueue() {
  12.       this.start();
  13.    }
  14.  
  15.    synchronized void addTimer(Timer var1, long var2) {
  16.       if (!var1.running) {
  17.          Timer var4 = null;
  18.  
  19.          Timer var5;
  20.          for(var5 = this.firstTimer; var5 != null && var5.expirationTime <= var2; var5 = var5.nextTimer) {
  21.             var4 = var5;
  22.          }
  23.  
  24.          if (var4 == null) {
  25.             this.firstTimer = var1;
  26.          } else {
  27.             var4.nextTimer = var1;
  28.          }
  29.  
  30.          var1.expirationTime = var2;
  31.          var1.nextTimer = var5;
  32.          var1.running = true;
  33.          this.notify();
  34.       }
  35.    }
  36.  
  37.    // $FF: synthetic method
  38.    static Class class$(String var0) {
  39.       try {
  40.          return Class.forName(var0);
  41.       } catch (ClassNotFoundException var2) {
  42.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  43.       }
  44.    }
  45.  
  46.    synchronized boolean containsTimer(Timer var1) {
  47.       return var1.running;
  48.    }
  49.  
  50.    synchronized long postExpiredTimers() {
  51.       long var3;
  52.       do {
  53.          Timer var5 = this.firstTimer;
  54.          if (var5 == null) {
  55.             return 0L;
  56.          }
  57.  
  58.          long var1 = System.currentTimeMillis();
  59.          var3 = var5.expirationTime - var1;
  60.          if (var3 <= 0L) {
  61.             try {
  62.                var5.post();
  63.             } catch (SecurityException var7) {
  64.             }
  65.  
  66.             this.removeTimer(var5);
  67.             if (var5.isRepeats()) {
  68.                this.addTimer(var5, var1 + (long)var5.getDelay());
  69.             }
  70.          }
  71.  
  72.          try {
  73.             this.wait(1L);
  74.          } catch (InterruptedException var6) {
  75.          }
  76.       } while(var3 <= 0L);
  77.  
  78.       return var3;
  79.    }
  80.  
  81.    synchronized void removeTimer(Timer var1) {
  82.       if (var1.running) {
  83.          Timer var3 = null;
  84.          Timer var4 = this.firstTimer;
  85.  
  86.          boolean var2;
  87.          for(var2 = false; var4 != null; var4 = var4.nextTimer) {
  88.             if (var4 == var1) {
  89.                var2 = true;
  90.                break;
  91.             }
  92.  
  93.             var3 = var4;
  94.          }
  95.  
  96.          if (var2) {
  97.             if (var3 == null) {
  98.                this.firstTimer = var1.nextTimer;
  99.             } else {
  100.                var3.nextTimer = var1.nextTimer;
  101.             }
  102.  
  103.             var1.expirationTime = 0L;
  104.             var1.nextTimer = null;
  105.             var1.running = false;
  106.          }
  107.       }
  108.    }
  109.  
  110.    public synchronized void run() {
  111.       try {
  112.          while(this.running) {
  113.             long var1 = this.postExpiredTimers();
  114.  
  115.             try {
  116.                this.wait(var1);
  117.             } catch (InterruptedException var5) {
  118.             }
  119.          }
  120.  
  121.       } catch (ThreadDeath var6) {
  122.          this.running = false;
  123.  
  124.          for(Timer var4 = this.firstTimer; var4 != null; var4 = var4.nextTimer) {
  125.             var4.eventQueued = false;
  126.          }
  127.  
  128.          SystemEventQueueUtilities.restartTimerQueueThread();
  129.          throw var6;
  130.       }
  131.    }
  132.  
  133.    public static TimerQueue sharedInstance() {
  134.       Class var1 = class$javax$swing$TimerQueue != null ? class$javax$swing$TimerQueue : (class$javax$swing$TimerQueue = class$("javax.swing.TimerQueue"));
  135.       synchronized(var1){}
  136.  
  137.       TimerQueue var0;
  138.       try {
  139.          TimerQueue var3 = (TimerQueue)SwingUtilities.appContextGet(sharedInstanceKey);
  140.          if (var3 == null) {
  141.             var3 = new TimerQueue();
  142.             SwingUtilities.appContextPut(sharedInstanceKey, var3);
  143.          }
  144.  
  145.          var0 = var3;
  146.       } catch (Throwable var5) {
  147.          throw var5;
  148.       }
  149.  
  150.       return var0;
  151.    }
  152.  
  153.    synchronized void start() {
  154.       if (this.running) {
  155.          throw new RuntimeException("Can't start a TimerQueue that is already running");
  156.       } else {
  157.          Thread var1 = new Thread(this, "TimerQueue");
  158.  
  159.          try {
  160.             var1.setDaemon(true);
  161.          } catch (SecurityException var2) {
  162.          }
  163.  
  164.          var1.start();
  165.          this.running = true;
  166.       }
  167.    }
  168.  
  169.    synchronized void stop() {
  170.       this.running = false;
  171.       this.notify();
  172.    }
  173.  
  174.    public synchronized String toString() {
  175.       StringBuffer var1 = new StringBuffer();
  176.       var1.append("TimerQueue (");
  177.       Timer var2 = this.firstTimer;
  178.  
  179.       while(var2 != null) {
  180.          var1.append(var2.toString());
  181.          var2 = var2.nextTimer;
  182.          if (var2 != null) {
  183.             var1.append(", ");
  184.          }
  185.       }
  186.  
  187.       var1.append(")");
  188.       return var1.toString();
  189.    }
  190. }
  191.