home *** CD-ROM | disk | FTP | other *** search
- package java.awt;
-
- import java.awt.event.InputEvent;
- import java.awt.event.KeyEvent;
- import java.awt.event.MouseEvent;
- import java.awt.event.PaintEvent;
- import java.util.EventObject;
- import java.util.Hashtable;
-
- public class EventQueue {
- private static int threadInitNumber;
- private static Hashtable eventQueuesTable = null;
- private EventDispatchThread dispatchThread;
- private EventQueueItem queue = null;
-
- private static synchronized int nextThreadNum() {
- return threadInitNumber++;
- }
-
- public EventQueue() {
- String var1 = "AWT-EventQueue-" + nextThreadNum();
- this.dispatchThread = new EventDispatchThread(var1, this);
- putQueue(this.dispatchThread.getThreadGroup(), this);
- this.dispatchThread.start();
- }
-
- public EventQueue(Thread var1) {
- putQueue(var1.getThreadGroup(), this);
- }
-
- public static void putQueue(ThreadGroup var0, EventQueue var1) {
- if (eventQueuesTable == null) {
- eventQueuesTable = new Hashtable();
- }
-
- eventQueuesTable.put(var0, var1);
- }
-
- public static EventQueue getQueue(ThreadGroup var0) {
- if (eventQueuesTable == null) {
- return null;
- } else if (var0 != null) {
- Object var1 = eventQueuesTable.get(var0);
- return var1 != null ? (EventQueue)var1 : getQueue(var0.getParent());
- } else {
- return null;
- }
- }
-
- public static void removeQueue(ThreadGroup var0) {
- if (eventQueuesTable != null) {
- EventQueue var1 = getQueue(var0);
- if (var1 != null) {
- if (var1.dispatchThread != null) {
- var1.dispatchThread.stopDispatching();
- }
-
- eventQueuesTable.remove(var0);
- }
-
- }
- }
-
- public static void clearQueuesTable() {
- if (eventQueuesTable != null) {
- eventQueuesTable.clear();
- }
- }
-
- public synchronized void postEvent(AWTEvent var1) {
- EventQueueItem var2 = new EventQueueItem(var1);
- if (this.queue == null) {
- this.queue = var2;
- this.notifyAll();
- } else {
- EventQueueItem var3 = this.queue;
-
- while(true) {
- if (var3.id == var2.id) {
- switch (var3.id) {
- case 503:
- case 506:
- MouseEvent var4 = (MouseEvent)var3.event;
- if (((EventObject)var4).getSource() == ((MouseEvent)var1).getSource() && ((InputEvent)var4).getModifiers() == ((MouseEvent)var1).getModifiers()) {
- var3.event = var2.event;
- return;
- }
- break;
- case 800:
- case 801:
- PaintEvent var5 = (PaintEvent)var3.event;
- if (((EventObject)var5).getSource() == ((EventObject)var1).getSource()) {
- Rectangle var6 = var5.getUpdateRect();
- Rectangle var7 = ((PaintEvent)var1).getUpdateRect();
- if (!var6.equals(var7)) {
- var5.setUpdateRect(var6.union(var7));
- }
-
- return;
- }
- }
- }
-
- if (var3.next == null) {
- var3.next = var2;
- return;
- }
-
- var3 = var3.next;
- }
- }
- }
-
- public synchronized AWTEvent getNextEvent() throws InterruptedException {
- while(this.queue == null) {
- this.wait();
- }
-
- EventQueueItem var1 = this.queue;
- this.queue = this.queue.next;
- return var1.event;
- }
-
- public synchronized AWTEvent peekEvent() {
- return this.queue != null ? this.queue.event : null;
- }
-
- public synchronized AWTEvent peekEvent(int var1) {
- for(EventQueueItem var2 = this.queue; var2 != null; var2 = var2.next) {
- if (var2.id == var1) {
- return var2.event;
- }
- }
-
- return null;
- }
-
- synchronized void changeKeyEventFocus(Object var1) {
- for(EventQueueItem var2 = this.queue; var2 != null; var2 = var2.next) {
- if (var2.event instanceof KeyEvent) {
- var2.event.setSource(var1);
- }
- }
-
- }
-
- synchronized void removeSourceEvents(Object var1) {
- EventQueueItem var2 = this.queue;
-
- for(EventQueueItem var3 = null; var2 != null; var2 = var2.next) {
- if (var2.event.getSource().equals(var1)) {
- if (var3 == null) {
- this.queue = var2.next;
- } else {
- var3.next = var2.next;
- }
- }
-
- var3 = var2;
- }
-
- }
- }
-