1 Clazz.declarePackage ("java.awt");
\r
2 Clazz.load (["java.lang.Thread"], ["java.awt.EventQueueItem", "$.EventQueue", "$.Queue"], ["java.lang.Error", "java.lang.reflect.InvocationTargetException", "java.util.EmptyStackException", "java.awt.ActiveEvent", "$.Component", "$.EventDispatchThread", "$.SentEvent", "$.SequencedEvent", "$.Toolkit", "java.awt.event.ActionEvent", "$.FocusEvent", "$.InputEvent", "$.InputMethodEvent", "$.InvocationEvent", "$.KeyEvent", "$.MouseEvent", "$.PaintEvent", "$.WindowEvent", "jssun.awt.AWTAutoShutdown", "$.AppContext", "$.PeerEvent", "$.SunToolkit", "swingjs.JSToolkit"], function () {
\r
3 c$ = Clazz.decorateAsClass (function () {
\r
5 this.nextQueue = null;
\r
6 this.previousQueue = null;
\r
7 this.dispatchThread = null;
\r
8 this.threadGroup = null;
\r
9 this.mostRecentEventTime = 0;
\r
10 this.currentEvent = null;
\r
13 Clazz.instantialize (this, arguments);
\r
14 }, java.awt, "EventQueue");
\r
15 Clazz.prepareFields (c$, function () {
\r
16 this.queues = new Array (4);
\r
17 this.threadGroup = Thread.currentThread ().getThreadGroup ();
\r
18 this.mostRecentEventTime = System.currentTimeMillis ();
\r
19 this.name = "AWT-EventQueue-" + java.awt.EventQueue.nextThreadNum ();
\r
21 c$.nextThreadNum = Clazz.defineMethod (c$, "nextThreadNum",
\r
23 return java.awt.EventQueue.threadInitNumber++;
\r
25 c$.noEvents = Clazz.defineMethod (c$, "noEvents",
\r
26 function (eventQueue) {
\r
27 return eventQueue.noEvents ();
\r
28 }, "java.awt.EventQueue");
\r
29 c$.getNextQueue = Clazz.defineMethod (c$, "getNextQueue",
\r
30 function (eventQueue) {
\r
31 return eventQueue.nextQueue;
\r
32 }, "java.awt.EventQueue");
\r
33 c$.removeSourceEvents = Clazz.defineMethod (c$, "removeSourceEvents",
\r
34 function (eventQueue, source, removeAllEvents) {
\r
35 eventQueue.removeSourceEvents (source, removeAllEvents);
\r
36 }, "java.awt.EventQueue,~O,~B");
\r
37 Clazz.makeConstructor (c$,
\r
39 for (var i = 0; i < 4; i++) {
\r
40 this.queues[i] = new java.awt.Queue ();
\r
43 Clazz.defineMethod (c$, "postEvent",
\r
45 jssun.awt.SunToolkit.flushPendingEvents ();
\r
46 this.postEventPrivate (event);
\r
47 }, "java.awt.AWTEvent");
\r
48 Clazz.defineMethod (c$, "postEventPrivate",
\r
49 function (theEvent) {
\r
50 theEvent.isPosted = true;
\r
52 if (this.dispatchThread == null && this.nextQueue == null) {
\r
53 if (theEvent.getSource () === jssun.awt.AWTAutoShutdown.getInstance ()) {
\r
56 this.initDispatchThread ();
\r
57 }}if (this.nextQueue != null) {
\r
58 this.nextQueue.postEventPrivate (theEvent);
\r
60 }this.postEventNow (theEvent, java.awt.EventQueue.getPriority (theEvent));
\r
61 }}, "java.awt.AWTEvent");
\r
62 c$.getPriority = Clazz.defineMethod (c$, "getPriority",
\r
63 function (theEvent) {
\r
64 if (Clazz.instanceOf (theEvent, jssun.awt.PeerEvent)) {
\r
65 var flags = (theEvent).getFlags ();
\r
66 if ((flags & 2) != 0) return 3;
\r
67 if ((flags & 1) != 0) return 2;
\r
68 if ((flags & 4) != 0) return 0;
\r
69 }switch (theEvent.getID ()) {
\r
77 }, "java.awt.AWTEvent");
\r
78 Clazz.defineMethod (c$, "postEventNow",
\r
79 function (theEvent, priority) {
\r
80 if (this.coalesceEvent (theEvent, priority)) {
\r
82 }var newItem = new java.awt.EventQueueItem (theEvent);
\r
83 this.cacheEQItem (newItem);
\r
84 if (this.queues[priority].head == null) {
\r
85 var shouldNotify = this.noEvents ();
\r
86 this.queues[priority].head = this.queues[priority].tail = newItem;
\r
88 if (theEvent.getSource () !== jssun.awt.AWTAutoShutdown.getInstance ()) {
\r
89 jssun.awt.AWTAutoShutdown.getInstance ().notifyThreadBusy (this.dispatchThread);
\r
91 this.queues[priority].tail.next = newItem;
\r
92 this.queues[priority].tail = newItem;
\r
93 }}, "java.awt.AWTEvent,~N");
\r
94 Clazz.defineMethod (c$, "coalescePaintEvent",
\r
96 var sourcePeer = (e.getSource ()).peer;
\r
97 if (sourcePeer != null) {
\r
98 sourcePeer.coalescePaintEvent (e);
\r
99 }var cache = (e.getSource ()).eventCache;
\r
100 if (cache == null) {
\r
102 }var index = java.awt.EventQueue.eventToCacheIndex (e);
\r
103 if (index != -1 && cache[index] != null) {
\r
104 var merged = this.mergePaintEvents (e, cache[index].event);
\r
105 if (merged != null) {
\r
106 cache[index].event = merged;
\r
109 }, "java.awt.event.PaintEvent");
\r
110 Clazz.defineMethod (c$, "mergePaintEvents",
\r
112 var aRect = a.getUpdateRect ();
\r
113 var bRect = b.getUpdateRect ();
\r
114 if (bRect.contains (aRect)) {
\r
116 }if (aRect.contains (bRect)) {
\r
119 }, "java.awt.event.PaintEvent,java.awt.event.PaintEvent");
\r
120 Clazz.defineMethod (c$, "coalesceMouseEvent",
\r
122 var cache = (e.getSource ()).eventCache;
\r
123 if (cache == null) {
\r
125 }var index = java.awt.EventQueue.eventToCacheIndex (e);
\r
126 if (index != -1 && cache[index] != null) {
\r
127 cache[index].event = e;
\r
130 }, "java.awt.event.MouseEvent");
\r
131 Clazz.defineMethod (c$, "coalescePeerEvent",
\r
133 var cache = (e.getSource ()).eventCache;
\r
134 if (cache == null) {
\r
136 }var index = java.awt.EventQueue.eventToCacheIndex (e);
\r
137 if (index != -1 && cache[index] != null) {
\r
138 e = e.coalesceEvents (cache[index].event);
\r
140 cache[index].event = e;
\r
143 cache[index] = null;
\r
145 }, "jssun.awt.PeerEvent");
\r
146 Clazz.defineMethod (c$, "coalesceOtherEvent",
\r
147 function (e, priority) {
\r
148 var id = e.getID ();
\r
149 var source = e.getSource ();
\r
150 for (var entry = this.queues[priority].head; entry != null; entry = entry.next) {
\r
151 if (entry.event.getSource () === source && entry.id == id) {
\r
152 var coalescedEvent = source.coalesceEvents (entry.event, e);
\r
153 if (coalescedEvent != null) {
\r
154 entry.event = coalescedEvent;
\r
158 }, "java.awt.AWTEvent,~N");
\r
159 Clazz.defineMethod (c$, "coalesceEvent",
\r
160 function (e, priority) {
\r
161 if (!(Clazz.instanceOf (e.getSource (), java.awt.Component))) {
\r
163 }if (Clazz.instanceOf (e, jssun.awt.PeerEvent)) {
\r
164 return this.coalescePeerEvent (e);
\r
165 }if ((e.getSource ()).isCoalescingEnabled () && this.coalesceOtherEvent (e, priority)) {
\r
167 }if (Clazz.instanceOf (e, java.awt.event.PaintEvent)) {
\r
168 return this.coalescePaintEvent (e);
\r
169 }if (Clazz.instanceOf (e, java.awt.event.MouseEvent)) {
\r
170 return this.coalesceMouseEvent (e);
\r
172 }, "java.awt.AWTEvent,~N");
\r
173 Clazz.defineMethod (c$, "cacheEQItem",
\r
175 var index = java.awt.EventQueue.eventToCacheIndex (entry.event);
\r
176 if (index != -1 && Clazz.instanceOf (entry.event.getSource (), java.awt.Component)) {
\r
177 var source = entry.event.getSource ();
\r
178 if (source.eventCache == null) {
\r
179 source.eventCache = new Array (5);
\r
180 }source.eventCache[index] = entry;
\r
181 }}, "java.awt.EventQueueItem");
\r
182 Clazz.defineMethod (c$, "uncacheEQItem",
\r
184 var index = java.awt.EventQueue.eventToCacheIndex (entry.event);
\r
185 if (index != -1 && Clazz.instanceOf (entry.event.getSource (), java.awt.Component)) {
\r
186 var source = entry.event.getSource ();
\r
187 if (source.eventCache == null) {
\r
189 }source.eventCache[index] = null;
\r
190 }}, "java.awt.EventQueueItem");
\r
191 c$.eventToCacheIndex = Clazz.defineMethod (c$, "eventToCacheIndex",
\r
193 switch (e.getID ()) {
\r
205 }, "java.awt.AWTEvent");
\r
206 Clazz.defineMethod (c$, "noEvents",
\r
208 for (var i = 0; i < 4; i++) {
\r
209 if (this.queues[i].head != null) {
\r
214 Clazz.defineMethod (c$, "getNextEvent",
\r
216 jssun.awt.SunToolkit.flushPendingEvents ();
\r
218 for (var i = 3; i >= 0; i--) {
\r
219 if (this.queues[i].head != null) {
\r
220 var entry = this.queues[i].head;
\r
221 this.queues[i].head = entry.next;
\r
222 if (entry.next == null) {
\r
223 this.queues[i].tail = null;
\r
224 }this.uncacheEQItem (entry);
\r
225 return entry.event;
\r
227 jssun.awt.AWTAutoShutdown.getInstance ().notifyThreadFree (this.dispatchThread);
\r
230 Clazz.defineMethod (c$, "getNextEventForID",
\r
232 jssun.awt.SunToolkit.flushPendingEvents ();
\r
234 for (var i = 0; i < 4; i++) {
\r
235 for (var entry = this.queues[i].head, prev = null; entry != null; prev = entry, entry = entry.next) {
\r
236 if (entry.id == id) {
\r
237 if (prev == null) {
\r
238 this.queues[i].head = entry.next;
\r
240 prev.next = entry.next;
\r
241 }if (this.queues[i].tail === entry) {
\r
242 this.queues[i].tail = prev;
\r
243 }this.uncacheEQItem (entry);
\r
244 return entry.event;
\r
247 this.waitForID = id;
\r
248 this.waitForID = 0;
\r
251 Clazz.defineMethod (c$, "peekEvent",
\r
253 for (var i = 3; i >= 0; i--) {
\r
254 if (this.queues[i].head != null) {
\r
255 return this.queues[i].head.event;
\r
259 Clazz.defineMethod (c$, "peekEvent",
\r
261 for (var i = 3; i >= 0; i--) {
\r
262 var q = this.queues[i].head;
\r
263 for (; q != null; q = q.next) {
\r
270 Clazz.defineMethod (c$, "dispatchEvent",
\r
272 var src = event.getSource ();
\r
273 this.dispatchEventImpl (event, src, false);
\r
274 }, "java.awt.AWTEvent");
\r
275 Clazz.defineMethod (c$, "dispatchEventAndWait",
\r
276 function (event, src) {
\r
277 this.dispatchEventImpl (event, src, true);
\r
278 }, "java.awt.AWTEvent,~O");
\r
279 Clazz.defineMethod (c$, "dispatchEventImpl",
\r
280 function (event, src, andWait) {
\r
281 event.isPosted = true;
\r
282 if (Clazz.instanceOf (event, java.awt.ActiveEvent)) {
\r
283 this.setCurrentEventAndMostRecentTimeImpl (event);
\r
284 swingjs.JSToolkit.dispatchEvent (event, null, andWait);
\r
285 } else if (Clazz.instanceOf (src, java.awt.Component)) {
\r
286 swingjs.JSToolkit.dispatchEvent (event, src, andWait);
\r
287 event.dispatched ();
\r
288 } else if (Clazz.instanceOf (src, jssun.awt.AWTAutoShutdown)) {
\r
289 if (this.noEvents ()) {
\r
290 this.dispatchThread.stopDispatching ();
\r
292 System.err.println ("unable to dispatch event: " + event);
\r
293 }}, "java.awt.AWTEvent,~O,~B");
\r
294 c$.getMostRecentEventTime = Clazz.defineMethod (c$, "getMostRecentEventTime",
\r
298 Clazz.defineMethod (c$, "getMostRecentEventTimeEx",
\r
300 return this.mostRecentEventTime;
\r
302 c$.getCurrentEvent = Clazz.defineMethod (c$, "getCurrentEvent",
\r
304 return java.awt.Toolkit.getEventQueue ().getCurrentEventImpl ();
\r
306 Clazz.defineMethod (c$, "getCurrentEventImpl",
\r
308 return (swingjs.JSToolkit.isDispatchThread () ? (this.currentEvent) : null);
\r
310 Clazz.defineMethod (c$, "push",
\r
311 function (newEventQueue) {
\r
312 if (this.nextQueue != null) {
\r
313 this.nextQueue.push (newEventQueue);
\r
316 while (this.peekEvent () != null) {
\r
318 newEventQueue.postEventPrivate (this.getNextEvent ());
\r
320 if (Clazz.exceptionOf (ie, InterruptedException)) {
\r
326 newEventQueue.previousQueue = this;
\r
327 }if (this.dispatchThread != null) {
\r
328 this.dispatchThread.stopDispatchingLater ();
\r
329 }this.nextQueue = newEventQueue;
\r
330 var appContext = jssun.awt.AppContext.getAppContext ();
\r
331 if (appContext.get (jssun.awt.AppContext.EVENT_QUEUE_KEY) === this) {
\r
332 appContext.put (jssun.awt.AppContext.EVENT_QUEUE_KEY, newEventQueue);
\r
333 }}, "java.awt.EventQueue");
\r
334 Clazz.defineMethod (c$, "pop",
\r
336 var prev = this.previousQueue;
\r
339 if (this.nextQueue != null) {
\r
340 this.nextQueue.pop ();
\r
342 }if (this.previousQueue == null) {
\r
343 throw new java.util.EmptyStackException ();
\r
344 }this.previousQueue.nextQueue = null;
\r
345 while (this.peekEvent () != null) {
\r
347 this.previousQueue.postEventPrivate (this.getNextEvent ());
\r
349 if (Clazz.exceptionOf (ie, InterruptedException)) {
\r
355 var appContext = jssun.awt.AppContext.getAppContext ();
\r
356 if (appContext.get (jssun.awt.AppContext.EVENT_QUEUE_KEY) === this) {
\r
357 appContext.put (jssun.awt.AppContext.EVENT_QUEUE_KEY, this.previousQueue);
\r
358 }this.previousQueue = null;
\r
359 }}var dt = this.dispatchThread;
\r
361 dt.stopDispatching ();
\r
363 c$.isDispatchThread = Clazz.defineMethod (c$, "isDispatchThread",
\r
365 return swingjs.JSToolkit.isDispatchThread ();
\r
367 Clazz.defineMethod (c$, "initDispatchThread",
\r
370 if (this.dispatchThread == null) {
\r
371 var t = new java.awt.EventDispatchThread (this.threadGroup, this.name, this);
\r
372 jssun.awt.AWTAutoShutdown.getInstance ().notifyThreadBusy (t);
\r
373 this.dispatchThread = t;
\r
374 this.dispatchThread.start ();
\r
376 Clazz.defineMethod (c$, "detachDispatchThread",
\r
378 this.dispatchThread = null;
\r
380 Clazz.defineMethod (c$, "getDispatchThread",
\r
382 return this.dispatchThread;
\r
384 Clazz.defineMethod (c$, "removeSourceEvents",
\r
385 function (source, removeAllEvents) {
\r
386 jssun.awt.SunToolkit.flushPendingEvents ();
\r
388 for (var i = 0; i < 4; i++) {
\r
389 var entry = this.queues[i].head;
\r
391 while (entry != null) {
\r
392 if ((entry.event.getSource () === source) && (removeAllEvents || !(Clazz.instanceOf (entry.event, java.awt.SequencedEvent) || Clazz.instanceOf (entry.event, java.awt.SentEvent) || Clazz.instanceOf (entry.event, java.awt.event.FocusEvent) || Clazz.instanceOf (entry.event, java.awt.event.WindowEvent) || Clazz.instanceOf (entry.event, java.awt.event.KeyEvent) || Clazz.instanceOf (entry.event, java.awt.event.InputMethodEvent)))) {
\r
393 if (Clazz.instanceOf (entry.event, java.awt.SequencedEvent)) {
\r
394 (entry.event).dispose ();
\r
395 }if (Clazz.instanceOf (entry.event, java.awt.SentEvent)) {
\r
396 (entry.event).dispose ();
\r
397 }if (prev == null) {
\r
398 this.queues[i].head = entry.next;
\r
400 prev.next = entry.next;
\r
401 }this.uncacheEQItem (entry);
\r
404 }entry = entry.next;
\r
406 this.queues[i].tail = prev;
\r
409 c$.setCurrentEventAndMostRecentTime = Clazz.defineMethod (c$, "setCurrentEventAndMostRecentTime",
\r
411 java.awt.Toolkit.getEventQueue ().setCurrentEventAndMostRecentTimeImpl (e);
\r
412 }, "java.awt.AWTEvent");
\r
413 Clazz.defineMethod (c$, "setCurrentEventAndMostRecentTimeImpl",
\r
415 if (swingjs.JSToolkit.isDispatchThread ()) {
\r
417 }this.currentEvent = e;
\r
418 var mostRecentEventTime2 = -9223372036854775808;
\r
419 if (Clazz.instanceOf (e, java.awt.event.InputEvent)) {
\r
421 mostRecentEventTime2 = ie.getWhen ();
\r
422 } else if (Clazz.instanceOf (e, java.awt.event.InputMethodEvent)) {
\r
424 mostRecentEventTime2 = ime.getWhen ();
\r
425 } else if (Clazz.instanceOf (e, java.awt.event.ActionEvent)) {
\r
427 mostRecentEventTime2 = ae.getWhen ();
\r
428 } else if (Clazz.instanceOf (e, java.awt.event.InvocationEvent)) {
\r
430 mostRecentEventTime2 = ie.getWhen ();
\r
431 }this.mostRecentEventTime = Math.max (this.mostRecentEventTime, mostRecentEventTime2);
\r
432 }, "java.awt.AWTEvent");
\r
433 c$.invokeLater = Clazz.defineMethod (c$, "invokeLater",
\r
434 function (runnable) {
\r
435 java.awt.Toolkit.getEventQueue ().postEvent ( new java.awt.event.InvocationEvent (java.awt.Toolkit.getDefaultToolkit (), runnable));
\r
437 c$.invokeAndWait = Clazz.defineMethod (c$, "invokeAndWait",
\r
438 function (runnable) {
\r
439 java.awt.EventQueue.invokeAndWaitStatic (java.awt.Toolkit.getDefaultToolkit (), runnable);
\r
441 c$.invokeAndWaitStatic = Clazz.defineMethod (c$, "invokeAndWaitStatic",
\r
442 function (source, runnable) {
\r
443 if (java.awt.EventQueue.isDispatchThread ()) {
\r
444 throw new Error ("Cannot call invokeAndWait from the event dispatcher thread");
\r
445 }var event = new java.awt.event.InvocationEvent (source, runnable, null, true);
\r
446 swingjs.JSToolkit.dispatchEvent (event, null, true);
\r
447 var eventThrowable = event.getThrowable ();
\r
448 if (eventThrowable != null) {
\r
449 throw new java.lang.reflect.InvocationTargetException (eventThrowable);
\r
450 }}, "~O,Runnable");
\r
451 Clazz.defineMethod (c$, "wakeup",
\r
452 function (isShutdown) {
\r
454 if (this.nextQueue != null) {
\r
455 this.nextQueue.wakeup (isShutdown);
\r
456 } else if (this.dispatchThread != null) {
\r
458 this.dispatchThread.start ();
\r
460 if (Clazz.exceptionOf (e, IllegalThreadStateException)) {
\r
461 this.dispatchThread.run ();
\r
466 } else if (!isShutdown) {
\r
467 this.initDispatchThread ();
\r
469 Clazz.defineStatics (c$,
\r
470 "threadInitNumber", 0,
\r
472 "NORM_PRIORITY", 1,
\r
473 "HIGH_PRIORITY", 2,
\r
474 "ULTIMATE_PRIORITY", 3,
\r
475 "NUM_PRIORITIES", 4,
\r
481 "CACHE_LENGTH", 5);
\r
482 c$ = Clazz.decorateAsClass (function () {
\r
485 Clazz.instantialize (this, arguments);
\r
486 }, java.awt, "Queue");
\r
487 c$ = Clazz.decorateAsClass (function () {
\r
491 Clazz.instantialize (this, arguments);
\r
492 }, java.awt, "EventQueueItem");
\r
493 Clazz.makeConstructor (c$,
\r
496 this.id = evt.getID ();
\r
497 }, "java.awt.AWTEvent");
\r