home *** CD-ROM | disk | FTP | other *** search
- package java.awt;
-
- import java.awt.event.InvocationEvent;
- import java.awt.event.KeyEvent;
- import java.awt.event.MouseEvent;
- import java.lang.reflect.InvocationTargetException;
- import java.util.EmptyStackException;
- import java.util.EventObject;
- import sun.awt.DebugHelper;
- import sun.awt.PeerEvent;
- import sun.awt.SunToolkit;
-
- public class EventQueue {
- private static final DebugHelper dbg;
- private static int threadInitNumber;
- private static final int LOW_PRIORITY = 0;
- private static final int NORM_PRIORITY = 1;
- private static final int HIGH_PRIORITY = 2;
- private static final int NUM_PRIORITIES = 3;
- private Queue[] queues = new Queue[3];
- private EventQueue nextQueue;
- private EventQueue previousQueue;
- private EventDispatchThread dispatchThread;
- private static final boolean debug = false;
- // $FF: synthetic field
- static Class class$java$awt$EventQueue;
-
- private static synchronized int nextThreadNum() {
- return threadInitNumber++;
- }
-
- public EventQueue() {
- for(int var1 = 0; var1 < 3; ++var1) {
- this.queues[var1] = new Queue();
- }
-
- String var2 = "AWT-EventQueue-" + nextThreadNum();
- this.dispatchThread = new EventDispatchThread(var2, this);
- this.dispatchThread.setPriority(6);
- this.dispatchThread.start();
- }
-
- public void postEvent(AWTEvent var1) {
- Toolkit var2 = Toolkit.getDefaultToolkit();
- if (var2 instanceof SunToolkit) {
- ((SunToolkit)var2).flushPendingEvents();
- }
-
- this.postEventPrivate(var1);
- }
-
- final void postEventPrivate(AWTEvent var1) {
- synchronized(this) {
- int var3 = var1.getID();
- if (this.nextQueue != null) {
- this.nextQueue.postEventPrivate(var1);
- } else if (var1 instanceof PeerEvent && (((PeerEvent)var1).getFlags() & 1L) != 0L) {
- this.postEvent(var1, 2);
- } else if (var3 != 800 && var3 != 801) {
- this.postEvent(var1, 1);
- } else {
- this.postEvent(var1, 0);
- }
-
- }
- }
-
- private void postEvent(AWTEvent var1, int var2) {
- EventQueueItem var3 = new EventQueueItem(var1);
- if (this.queues[var2].head == null) {
- boolean var4 = this.noEvents();
- this.queues[var2].head = this.queues[var2].tail = var3;
- if (var1.getID() == 800 || var1.getID() == 801) {
- Object var5 = ((EventObject)var1).getSource();
- ((Component)var5).coalesceEvents(var1, var1);
- }
-
- if (var4) {
- this.notifyAll();
- }
- } else {
- Object var8 = ((EventObject)var1).getSource();
- boolean var9 = var1 instanceof PeerEvent;
- if (var8 instanceof Component) {
- EventQueueItem var6 = this.queues[var2].head;
- if (var1.id == 503 || var1.id == 506) {
- for(EventQueueItem var7 = var6; var7 != null; var7 = var7.next) {
- if (var7.event instanceof MouseEvent && var7.id != var1.id) {
- var6 = var7;
- }
- }
- }
-
- while(true) {
- if (var6.id == var3.id && var6.event.getSource() == var8) {
- Object var10 = ((Component)var8).coalesceEvents(var6.event, var1);
- if (var9 && var10 == null && var6.event instanceof PeerEvent) {
- var10 = ((PeerEvent)var6.event).coalesceEvents((PeerEvent)var1);
- }
-
- if (var10 != null) {
- var6.event = (AWTEvent)var10;
- return;
- }
- }
-
- if (var6.next == null) {
- break;
- }
-
- var6 = var6.next;
- }
- }
-
- if (var1.getID() == 800 || var1.getID() == 801) {
- ((Component)var8).coalesceEvents(var1, var1);
- }
-
- this.queues[var2].tail.next = var3;
- this.queues[var2].tail = var3;
- }
-
- }
-
- private boolean noEvents() {
- for(int var1 = 0; var1 < 3; ++var1) {
- if (this.queues[var1].head != null) {
- return false;
- }
- }
-
- return true;
- }
-
- public synchronized AWTEvent getNextEvent() throws InterruptedException {
- while(true) {
- for(int var1 = 2; var1 >= 0; --var1) {
- if (this.queues[var1].head != null) {
- EventQueueItem var2 = this.queues[var1].head;
- this.queues[var1].head = var2.next;
- if (var2.next == null) {
- this.queues[var1].tail = null;
- }
-
- return var2.event;
- }
- }
-
- this.wait();
- }
- }
-
- public synchronized AWTEvent peekEvent() {
- for(int var1 = 2; var1 >= 0; --var1) {
- if (this.queues[var1].head != null) {
- return this.queues[var1].head.event;
- }
- }
-
- return null;
- }
-
- public synchronized AWTEvent peekEvent(int var1) {
- for(int var2 = 2; var2 >= 0; --var2) {
- for(EventQueueItem var3 = this.queues[var2].head; var3 != null; var3 = var3.next) {
- if (var3.id == var1) {
- return var3.event;
- }
- }
- }
-
- return null;
- }
-
- protected void dispatchEvent(AWTEvent var1) {
- Object var2 = ((EventObject)var1).getSource();
- if (var1 instanceof ActiveEvent) {
- ((ActiveEvent)var1).dispatch();
- } else if (var2 instanceof Component) {
- ((Component)var2).dispatchEvent(var1);
- } else if (var2 instanceof MenuComponent) {
- ((MenuComponent)var2).dispatchEvent(var1);
- } else {
- System.err.println("unable to dispatch event: " + var1);
- }
-
- }
-
- public synchronized void push(EventQueue var1) {
- if (this.nextQueue != null) {
- this.nextQueue.push(var1);
- } else {
- synchronized(var1) {
- while(this.peekEvent() != null) {
- try {
- var1.postEventPrivate(this.getNextEvent());
- } catch (InterruptedException var5) {
- }
- }
-
- var1.previousQueue = this;
- }
-
- this.nextQueue = var1;
- }
- }
-
- protected void pop() throws EmptyStackException {
- EventQueue var1 = this.previousQueue;
- EventQueue var2 = var1 != null ? var1 : this;
- synchronized(var2) {
- synchronized(this) {
- if (this.nextQueue != null) {
- this.nextQueue.pop();
- return;
- }
-
- if (this.previousQueue == null) {
- throw new EmptyStackException();
- }
-
- this.previousQueue.nextQueue = null;
-
- while(this.peekEvent() != null) {
- try {
- this.previousQueue.postEventPrivate(this.getNextEvent());
- } catch (InterruptedException var7) {
- }
- }
-
- this.previousQueue = null;
- }
- }
-
- this.dispatchThread.stopDispatching();
- }
-
- public static boolean isDispatchThread() {
- EventQueue var0 = Toolkit.getEventQueue();
-
- for(EventQueue var1 = var0.nextQueue; var1 != null; var1 = var1.nextQueue) {
- var0 = var1;
- }
-
- return Thread.currentThread() == var0.dispatchThread;
- }
-
- final EventDispatchThread getDispatchThread() {
- return this.dispatchThread;
- }
-
- final synchronized void changeKeyEventFocus(Object var1) {
- for(int var2 = 0; var2 < 3; ++var2) {
- for(EventQueueItem var3 = this.queues[var2].head; var3 != null; var3 = var3.next) {
- if (var3.event instanceof KeyEvent) {
- ((KeyEvent)var3.event).setSource(var1);
- }
- }
- }
-
- }
-
- final void removeSourceEvents(Object var1) {
- Toolkit var2 = Toolkit.getDefaultToolkit();
- if (var2 instanceof SunToolkit) {
- ((SunToolkit)var2).flushPendingEvents();
- }
-
- synchronized(this) {
- for(int var4 = 0; var4 < 3; ++var4) {
- EventQueueItem var5 = this.queues[var4].head;
-
- EventQueueItem var6;
- for(var6 = null; var5 != null; var5 = var5.next) {
- if (var5.event.getSource() == var1) {
- if (var6 == null) {
- this.queues[var4].head = var5.next;
- } else {
- var6.next = var5.next;
- }
- } else {
- var6 = var5;
- }
- }
-
- this.queues[var4].tail = var6;
- }
-
- }
- }
-
- public static void invokeLater(Runnable var0) {
- Toolkit.getEventQueue().postEvent(new InvocationEvent(Toolkit.getDefaultToolkit(), var0));
- }
-
- public static void invokeAndWait(Runnable var0) throws InterruptedException, InvocationTargetException {
- if (isDispatchThread()) {
- throw new Error("Cannot call invokeAndWait from the event dispatcher thread");
- } else {
- 1.AWTInvocationLock var1 = new 1.AWTInvocationLock();
- EventQueue var2 = Toolkit.getEventQueue();
- InvocationEvent var3 = new InvocationEvent(Toolkit.getDefaultToolkit(), var0, var1, true);
- synchronized(var1) {
- Toolkit.getEventQueue().postEvent(var3);
- var1.wait();
- }
-
- Exception var5 = var3.getException();
- if (var5 != null) {
- throw new InvocationTargetException(var5);
- }
- }
- }
-
- // $FF: synthetic method
- static Class class$(String var0) {
- try {
- return Class.forName(var0);
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
- }
-
- static {
- dbg = DebugHelper.create(class$java$awt$EventQueue == null ? (class$java$awt$EventQueue = class$("java.awt.EventQueue")) : class$java$awt$EventQueue);
- }
- }
-