home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD 31 / SUPERCDa.iso / Inet / HotJava / hjava.exe / Windows / resource / jre / lib / rt.jar / java / awt / EventQueue.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-11-11  |  3.3 KB  |  151 lines

  1. package java.awt;
  2.  
  3. import java.awt.event.InputEvent;
  4. import java.awt.event.KeyEvent;
  5. import java.awt.event.MouseEvent;
  6. import java.awt.event.PaintEvent;
  7. import java.util.EventObject;
  8.  
  9. public class EventQueue {
  10.    private static int threadInitNumber;
  11.    private EventQueueItem queue = null;
  12.    EventQueueListener eventQueueListener;
  13.  
  14.    private static synchronized int nextThreadNum() {
  15.       return threadInitNumber++;
  16.    }
  17.  
  18.    public EventQueue() {
  19.       String var1 = "AWT-EventQueue-" + nextThreadNum();
  20.       (new EventDispatchThread(var1, this)).start();
  21.    }
  22.  
  23.    public synchronized void postEvent(AWTEvent var1) {
  24.       EventQueueItem var2 = new EventQueueItem(var1);
  25.       if (this.queue == null) {
  26.          this.queue = var2;
  27.          this.notifyAll();
  28.       } else {
  29.          EventQueueItem var3 = this.queue;
  30.  
  31.          while(true) {
  32.             if (var3.id == var2.id) {
  33.                switch (var3.id) {
  34.                   case 503:
  35.                   case 506:
  36.                      MouseEvent var4 = (MouseEvent)var3.event;
  37.                      if (((EventObject)var4).getSource() == ((MouseEvent)var1).getSource() && ((InputEvent)var4).getModifiers() == ((MouseEvent)var1).getModifiers()) {
  38.                         var3.event = var2.event;
  39.                         return;
  40.                      }
  41.                      break;
  42.                   case 800:
  43.                   case 801:
  44.                      PaintEvent var5 = (PaintEvent)var3.event;
  45.                      if (((EventObject)var5).getSource() == ((EventObject)var1).getSource()) {
  46.                         Rectangle var6 = var5.getUpdateRect();
  47.                         Rectangle var7 = ((PaintEvent)var1).getUpdateRect();
  48.                         if (!var6.equals(var7)) {
  49.                            var5.setUpdateRect(var6.union(var7));
  50.                         }
  51.  
  52.                         return;
  53.                      }
  54.                }
  55.             }
  56.  
  57.             if (var3.next == null) {
  58.                var3.next = var2;
  59.                break;
  60.             }
  61.  
  62.             var3 = var3.next;
  63.          }
  64.       }
  65.  
  66.       this.notifyEventQueueListeners(var1);
  67.    }
  68.  
  69.    public synchronized AWTEvent getNextEvent() throws InterruptedException {
  70.       while(this.queue == null) {
  71.          this.wait();
  72.       }
  73.  
  74.       EventQueueItem var1 = this.queue;
  75.       this.queue = this.queue.next;
  76.       return var1.event;
  77.    }
  78.  
  79.    public synchronized AWTEvent peekEvent() {
  80.       return this.queue != null ? this.queue.event : null;
  81.    }
  82.  
  83.    public synchronized AWTEvent peekEvent(int var1) {
  84.       for(EventQueueItem var2 = this.queue; var2 != null; var2 = var2.next) {
  85.          if (var2.id == var1) {
  86.             return var2.event;
  87.          }
  88.       }
  89.  
  90.       return null;
  91.    }
  92.  
  93.    synchronized void addEventQueueListener(EventQueueListener var1) {
  94.       this.eventQueueListener = java.awt.EventQueue.EventQueueMulticaster.add(this.eventQueueListener, var1);
  95.    }
  96.  
  97.    synchronized void removeEventQueueListener(EventQueueListener var1) {
  98.       this.eventQueueListener = java.awt.EventQueue.EventQueueMulticaster.remove(this.eventQueueListener, var1);
  99.    }
  100.  
  101.    synchronized void changeKeyEventFocus(Object var1) {
  102.       for(EventQueueItem var2 = this.queue; var2 != null; var2 = var2.next) {
  103.          if (var2.event instanceof KeyEvent) {
  104.             var2.event.setSource(var1);
  105.          }
  106.       }
  107.  
  108.    }
  109.  
  110.    synchronized void removeSourceEvents(Object var1) {
  111.       EventQueueItem var2 = this.queue;
  112.  
  113.       for(EventQueueItem var3 = null; var2 != null; var2 = var2.next) {
  114.          if (var2.event.getSource().equals(var1)) {
  115.             if (var3 == null) {
  116.                this.queue = var2.next;
  117.             } else {
  118.                var3.next = var2.next;
  119.             }
  120.          }
  121.  
  122.          var3 = var2;
  123.       }
  124.  
  125.    }
  126.  
  127.    synchronized void removeEvents(Class var1, int var2) {
  128.       EventQueueItem var3 = this.queue;
  129.  
  130.       for(EventQueueItem var4 = null; var3 != null; var3 = var3.next) {
  131.          if (var1.isInstance(var3.event) && var3.event.getID() == var2) {
  132.             if (var4 == null) {
  133.                this.queue = var3.next;
  134.             } else {
  135.                var4.next = var3.next;
  136.             }
  137.          }
  138.  
  139.          var4 = var3;
  140.       }
  141.  
  142.    }
  143.  
  144.    private void notifyEventQueueListeners(AWTEvent var1) {
  145.       if (this.eventQueueListener != null) {
  146.          this.eventQueueListener.eventPosted(var1);
  147.       }
  148.  
  149.    }
  150. }
  151.