home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 June / CHIPHEFT062001.ISO / browser / nc32lyc / comm.z / java40.jar / java / awt / EventQueue.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-08-15  |  3.6 KB  |  164 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. import java.util.Hashtable;
  9.  
  10. public class EventQueue {
  11.    private static int threadInitNumber;
  12.    private static Hashtable eventQueuesTable = null;
  13.    private EventDispatchThread dispatchThread;
  14.    private EventQueueItem queue = null;
  15.  
  16.    private static synchronized int nextThreadNum() {
  17.       return threadInitNumber++;
  18.    }
  19.  
  20.    public EventQueue() {
  21.       String var1 = "AWT-EventQueue-" + nextThreadNum();
  22.       this.dispatchThread = new EventDispatchThread(var1, this);
  23.       putQueue(this.dispatchThread.getThreadGroup(), this);
  24.       this.dispatchThread.start();
  25.    }
  26.  
  27.    public EventQueue(Thread var1) {
  28.       putQueue(var1.getThreadGroup(), this);
  29.    }
  30.  
  31.    public static void putQueue(ThreadGroup var0, EventQueue var1) {
  32.       if (eventQueuesTable == null) {
  33.          eventQueuesTable = new Hashtable();
  34.       }
  35.  
  36.       eventQueuesTable.put(var0, var1);
  37.    }
  38.  
  39.    public static EventQueue getQueue(ThreadGroup var0) {
  40.       if (eventQueuesTable == null) {
  41.          return null;
  42.       } else if (var0 != null) {
  43.          Object var1 = eventQueuesTable.get(var0);
  44.          return var1 != null ? (EventQueue)var1 : getQueue(var0.getParent());
  45.       } else {
  46.          return null;
  47.       }
  48.    }
  49.  
  50.    public static void removeQueue(ThreadGroup var0) {
  51.       if (eventQueuesTable != null) {
  52.          EventQueue var1 = getQueue(var0);
  53.          if (var1 != null) {
  54.             if (var1.dispatchThread != null) {
  55.                var1.dispatchThread.stopDispatching();
  56.             }
  57.  
  58.             eventQueuesTable.remove(var0);
  59.          }
  60.  
  61.       }
  62.    }
  63.  
  64.    public static void clearQueuesTable() {
  65.       if (eventQueuesTable != null) {
  66.          eventQueuesTable.clear();
  67.       }
  68.    }
  69.  
  70.    public synchronized void postEvent(AWTEvent var1) {
  71.       EventQueueItem var2 = new EventQueueItem(var1);
  72.       if (this.queue == null) {
  73.          this.queue = var2;
  74.          this.notifyAll();
  75.       } else {
  76.          EventQueueItem var3 = this.queue;
  77.  
  78.          while(true) {
  79.             if (var3.id == var2.id) {
  80.                switch (var3.id) {
  81.                   case 503:
  82.                   case 506:
  83.                      MouseEvent var4 = (MouseEvent)var3.event;
  84.                      if (((EventObject)var4).getSource() == ((MouseEvent)var1).getSource() && ((InputEvent)var4).getModifiers() == ((MouseEvent)var1).getModifiers()) {
  85.                         var3.event = var2.event;
  86.                         return;
  87.                      }
  88.                      break;
  89.                   case 800:
  90.                   case 801:
  91.                      PaintEvent var5 = (PaintEvent)var3.event;
  92.                      if (((EventObject)var5).getSource() == ((EventObject)var1).getSource()) {
  93.                         Rectangle var6 = var5.getUpdateRect();
  94.                         Rectangle var7 = ((PaintEvent)var1).getUpdateRect();
  95.                         if (!var6.equals(var7)) {
  96.                            var5.setUpdateRect(var6.union(var7));
  97.                         }
  98.  
  99.                         return;
  100.                      }
  101.                }
  102.             }
  103.  
  104.             if (var3.next == null) {
  105.                var3.next = var2;
  106.                return;
  107.             }
  108.  
  109.             var3 = var3.next;
  110.          }
  111.       }
  112.    }
  113.  
  114.    public synchronized AWTEvent getNextEvent() throws InterruptedException {
  115.       while(this.queue == null) {
  116.          this.wait();
  117.       }
  118.  
  119.       EventQueueItem var1 = this.queue;
  120.       this.queue = this.queue.next;
  121.       return var1.event;
  122.    }
  123.  
  124.    public synchronized AWTEvent peekEvent() {
  125.       return this.queue != null ? this.queue.event : null;
  126.    }
  127.  
  128.    public synchronized AWTEvent peekEvent(int var1) {
  129.       for(EventQueueItem var2 = this.queue; var2 != null; var2 = var2.next) {
  130.          if (var2.id == var1) {
  131.             return var2.event;
  132.          }
  133.       }
  134.  
  135.       return null;
  136.    }
  137.  
  138.    synchronized void changeKeyEventFocus(Object var1) {
  139.       for(EventQueueItem var2 = this.queue; var2 != null; var2 = var2.next) {
  140.          if (var2.event instanceof KeyEvent) {
  141.             var2.event.setSource(var1);
  142.          }
  143.       }
  144.  
  145.    }
  146.  
  147.    synchronized void removeSourceEvents(Object var1) {
  148.       EventQueueItem var2 = this.queue;
  149.  
  150.       for(EventQueueItem var3 = null; var2 != null; var2 = var2.next) {
  151.          if (var2.event.getSource().equals(var1)) {
  152.             if (var3 == null) {
  153.                this.queue = var2.next;
  154.             } else {
  155.                var3.next = var2.next;
  156.             }
  157.          }
  158.  
  159.          var3 = var2;
  160.       }
  161.  
  162.    }
  163. }
  164.