1 Clazz.declarePackage ("javax.swing");
\r
2 Clazz.load (["java.util.HashMap", "java.awt.Rectangle"], "javax.swing.RepaintManager", ["java.lang.StringBuffer", "$.Thread", "java.util.ArrayList", "$.HashSet", "$.IdentityHashMap", "java.applet.Applet", "java.awt.Frame", "$.Toolkit", "$.Window", "java.awt.event.InvocationEvent", "javax.swing.CellRendererPane", "$.JComponent", "$.SwingUtilities", "jssun.awt.AWTAccessor", "$.AppContext", "$.SunToolkit", "swingjs.JSToolkit"], function () {
\r
3 c$ = Clazz.decorateAsClass (function () {
\r
4 this.volatileMap = null;
\r
5 this.hwDirtyComponents = null;
\r
6 this.dirtyComponents = null;
\r
7 this.tmpDirtyComponents = null;
\r
8 this.invalidComponents = null;
\r
9 this.runnableList = null;
\r
10 this.paintDepth = 0;
\r
11 this.painting = false;
\r
12 this.repaintRoot = null;
\r
13 this.paintThread = null;
\r
14 this.processingRunnable = null;
\r
15 this.myComponent = null;
\r
17 if (!Clazz.isClassDefined ("javax.swing.RepaintManager.ProcessingRunnable")) {
\r
18 javax.swing.RepaintManager.$RepaintManager$ProcessingRunnable$ ();
\r
20 Clazz.instantialize (this, arguments);
\r
21 }, javax.swing, "RepaintManager");
\r
22 Clazz.prepareFields (c$, function () {
\r
23 this.volatileMap = new java.util.HashMap (1);
\r
24 this.tmp = new java.awt.Rectangle ();
\r
26 c$.currentManager = Clazz.defineMethod (c$, "currentManager",
\r
28 var appContext = jssun.awt.AppContext.getAppContext ();
\r
29 var rm = appContext.get (javax.swing.RepaintManager.repaintManagerKey);
\r
31 rm = new javax.swing.RepaintManager ();
\r
33 appContext.put (javax.swing.RepaintManager.repaintManagerKey, rm);
\r
35 }, "java.awt.Component");
\r
36 c$.setCurrentManager = Clazz.defineMethod (c$, "setCurrentManager",
\r
37 function (aRepaintManager) {
\r
38 if (aRepaintManager != null) {
\r
39 javax.swing.SwingUtilities.appContextPut (javax.swing.RepaintManager.repaintManagerKey, aRepaintManager);
\r
41 javax.swing.SwingUtilities.appContextRemove (javax.swing.RepaintManager.repaintManagerKey);
\r
42 }}, "javax.swing.RepaintManager");
\r
43 Clazz.makeConstructor (c$,
\r
45 this.processingRunnable = Clazz.innerTypeInstance (javax.swing.RepaintManager.ProcessingRunnable, this, null);
\r
47 Clazz.defineMethod (c$, "set",
\r
49 this.myComponent = c;
\r
50 this.dirtyComponents = new java.util.IdentityHashMap ();
\r
51 this.tmpDirtyComponents = new java.util.IdentityHashMap ();
\r
52 this.hwDirtyComponents = new java.util.IdentityHashMap ();
\r
53 }, "java.awt.Component");
\r
54 Clazz.defineMethod (c$, "addInvalidComponent",
\r
55 function (invalidComponent) {
\r
56 var validateRoot = null;
\r
57 for (var c = invalidComponent; c != null; c = c.getParent ()) {
\r
58 if ((Clazz.instanceOf (c, javax.swing.CellRendererPane))) {
\r
60 }if ((Clazz.instanceOf (c, javax.swing.JComponent)) && ((c).isValidateRoot ())) {
\r
64 if (validateRoot == null) {
\r
67 for (var c = validateRoot; c != null; c = c.getParent ()) {
\r
68 if (!c.isVisible ()) {
\r
70 }if ((Clazz.instanceOf (c, java.awt.Window)) || (Clazz.instanceOf (c, java.applet.Applet))) {
\r
76 }if (this.invalidComponents == null) {
\r
77 this.invalidComponents = new java.util.ArrayList ();
\r
79 var n = this.invalidComponents.size ();
\r
80 for (var i = 0; i < n; i++) {
\r
81 if (validateRoot === this.invalidComponents.get (i)) {
\r
84 }this.invalidComponents.add (validateRoot);
\r
85 this.scheduleProcessingRunnable (root);
\r
86 }, "javax.swing.JComponent");
\r
87 Clazz.defineMethod (c$, "removeInvalidComponent",
\r
88 function (component) {
\r
89 if (this.invalidComponents != null) {
\r
90 var index = this.invalidComponents.indexOf (component);
\r
92 this.invalidComponents.remove (index);
\r
93 }}}, "javax.swing.JComponent");
\r
94 Clazz.defineMethod (c$, "addDirtyRegion0",
\r
95 function (c, x, y, w, h) {
\r
97 var g = c.getGraphics();
\r
98 if (g == null || g.gc == null)return;
\r
99 }if ((w <= 0) || (h <= 0) || (c == null)) {
\r
101 }if ((c.getWidth () <= 0) || (c.getHeight () <= 0)) {
\r
103 }if (this.extendDirtyRegion (c, x, y, w, h)) {
\r
106 for (var p = c; p != null; p = p.getParent ()) {
\r
107 if (!p.isVisible () || p.getPeer () == null) {
\r
109 }if ((Clazz.instanceOf (p, java.awt.Window)) || (Clazz.instanceOf (p, java.applet.Applet))) {
\r
110 if (Clazz.instanceOf (p, java.awt.Frame) && ((p).getExtendedState () & 1) == 1) {
\r
115 if (root == null) return;
\r
117 if (this.extendDirtyRegion (c, x, y, w, h)) {
\r
119 }this.dirtyComponents.put (c, new java.awt.Rectangle (x, y, w, h));
\r
120 }this.scheduleProcessingRunnable (c);
\r
121 }, "java.awt.Container,~N,~N,~N,~N");
\r
122 Clazz.defineMethod (c$, "addDirtyRegion",
\r
123 function (c, x, y, w, h) {
\r
124 this.addDirtyRegion0 (c, x, y, w, h);
\r
125 }, "javax.swing.JComponent,~N,~N,~N,~N");
\r
126 Clazz.defineMethod (c$, "addDirtyRegion",
\r
127 function (window, x, y, w, h) {
\r
128 this.addDirtyRegion0 (window, x, y, w, h);
\r
129 }, "java.awt.Window,~N,~N,~N,~N");
\r
130 Clazz.defineMethod (c$, "addDirtyRegion",
\r
131 function (applet, x, y, w, h) {
\r
132 this.addDirtyRegion0 (applet, x, y, w, h);
\r
133 }, "java.applet.Applet,~N,~N,~N,~N");
\r
134 Clazz.defineMethod (c$, "scheduleHeavyWeightPaints",
\r
138 if (this.hwDirtyComponents.size () == 0) {
\r
140 }hws = this.hwDirtyComponents;
\r
141 this.hwDirtyComponents = new java.util.IdentityHashMap ();
\r
142 }for (var hw, $hw = hws.keySet ().iterator (); $hw.hasNext () && ((hw = $hw.next ()) || true);) {
\r
143 var dirty = hws.get (hw);
\r
144 if (Clazz.instanceOf (hw, java.awt.Window)) {
\r
145 this.addDirtyRegion (hw, dirty.x, dirty.y, dirty.width, dirty.height);
\r
146 } else if (Clazz.instanceOf (hw, java.applet.Applet)) {
\r
147 this.addDirtyRegion (hw, dirty.x, dirty.y, dirty.width, dirty.height);
\r
149 this.addDirtyRegion0 (hw, dirty.x, dirty.y, dirty.width, dirty.height);
\r
152 Clazz.defineMethod (c$, "nativeAddDirtyRegion",
\r
153 function (appContext, c, x, y, w, h) {
\r
154 if (w > 0 && h > 0) {
\r
156 var dirty = this.hwDirtyComponents.get (c);
\r
157 if (dirty == null) {
\r
158 this.hwDirtyComponents.put (c, new java.awt.Rectangle (x, y, w, h));
\r
160 this.hwDirtyComponents.put (c, javax.swing.SwingUtilities.computeUnion (x, y, w, h, dirty));
\r
161 }}this.scheduleProcessingRunnable (appContext);
\r
162 }}, "jssun.awt.AppContext,java.awt.Container,~N,~N,~N,~N");
\r
163 Clazz.defineMethod (c$, "extendDirtyRegion",
\r
164 function (c, x, y, w, h) {
\r
165 var r = this.dirtyComponents.get (c);
\r
167 javax.swing.SwingUtilities.computeUnion (x, y, w, h, r);
\r
170 }, "java.awt.Component,~N,~N,~N,~N");
\r
171 Clazz.defineMethod (c$, "getDirtyRegion",
\r
172 function (aComponent) {
\r
175 r = this.dirtyComponents.get (aComponent);
\r
176 }if (r == null) return new java.awt.Rectangle (0, 0, 0, 0);
\r
177 else return new java.awt.Rectangle (r);
\r
178 }, "javax.swing.JComponent");
\r
179 Clazz.defineMethod (c$, "markCompletelyDirty",
\r
180 function (aComponent) {
\r
181 this.addDirtyRegion (aComponent, 0, 0, 2147483647, 2147483647);
\r
182 }, "javax.swing.JComponent");
\r
183 Clazz.defineMethod (c$, "markCompletelyClean",
\r
184 function (aComponent) {
\r
186 this.dirtyComponents.remove (aComponent);
\r
187 }}, "javax.swing.JComponent");
\r
188 Clazz.defineMethod (c$, "isCompletelyDirty",
\r
189 function (aComponent) {
\r
191 r = this.getDirtyRegion (aComponent);
\r
192 if (r.width == 2147483647 && r.height == 2147483647) return true;
\r
194 }, "javax.swing.JComponent");
\r
195 Clazz.defineMethod (c$, "validateInvalidComponents",
\r
199 if (this.invalidComponents == null) {
\r
201 }ic = this.invalidComponents;
\r
202 this.invalidComponents = null;
\r
203 }var n = ic.size ();
\r
204 for (var i = 0; i < n; i++) {
\r
205 var c = ic.get (i);
\r
209 Clazz.defineMethod (c$, "prePaintDirtyRegions",
\r
211 var dirtyComponents;
\r
214 dirtyComponents = this.dirtyComponents;
\r
215 runnableList = this.runnableList;
\r
216 this.runnableList = null;
\r
217 }if (runnableList != null) {
\r
218 for (var runnable, $runnable = runnableList.iterator (); $runnable.hasNext () && ((runnable = $runnable.next ()) || true);) {
\r
221 }this.paintDirtyRegions ();
\r
222 if (dirtyComponents.size () > 0) {
\r
223 this.paintDirtyRegions1 (dirtyComponents);
\r
225 Clazz.defineMethod (c$, "updateWindows",
\r
226 function (dirtyComponents) {
\r
227 var toolkit = java.awt.Toolkit.getDefaultToolkit ();
\r
228 if (!(Clazz.instanceOf (toolkit, jssun.awt.SunToolkit) && (toolkit).needUpdateWindow ())) {
\r
229 return dirtyComponents;
\r
230 }var windows = new java.util.HashSet ();
\r
231 var dirtyComps = dirtyComponents.keySet ();
\r
232 for (var it = dirtyComps.iterator (); it.hasNext (); ) {
\r
233 var dirty = it.next ();
\r
234 var window = Clazz.instanceOf (dirty, java.awt.Window) ? dirty : javax.swing.SwingUtilities.getWindowAncestor (dirty);
\r
235 if (window != null && !jssun.awt.AWTAccessor.getWindowAccessor ().isOpaque (window)) {
\r
237 windows.add (window);
\r
239 for (var window, $window = windows.iterator (); $window.hasNext () && ((window = $window.next ()) || true);) {
\r
240 jssun.awt.AWTAccessor.getWindowAccessor ().updateWindow (window, null);
\r
242 return dirtyComponents;
\r
243 }, "java.util.Map");
\r
244 Clazz.defineMethod (c$, "paintDirtyRegions",
\r
247 var tmp = this.tmpDirtyComponents;
\r
248 this.tmpDirtyComponents = this.dirtyComponents;
\r
249 this.dirtyComponents = tmp;
\r
250 this.dirtyComponents.clear ();
\r
251 }this.paintDirtyRegions1 (this.tmpDirtyComponents);
\r
253 Clazz.defineMethod (c$, "paintDirtyRegions1",
\r
254 function (tmpDirtyComponents) {
\r
255 if (tmpDirtyComponents.isEmpty ()) {
\r
257 }this.updateWindows (tmpDirtyComponents);
\r
258 var roots = new java.util.ArrayList (tmpDirtyComponents.size ());
\r
259 for (var dirty, $dirty = tmpDirtyComponents.keySet ().iterator (); $dirty.hasNext () && ((dirty = $dirty.next ()) || true);) {
\r
260 this.collectDirtyComponents (tmpDirtyComponents, dirty, roots);
\r
262 var count = roots.size ();
\r
263 this.painting = true;
\r
265 for (var j = 0; j < count; j++) {
\r
267 var dirtyComponent = roots.get (j);
\r
268 var rect = tmpDirtyComponents.get (dirtyComponent);
\r
269 var localBoundsH = dirtyComponent.getHeight ();
\r
270 var localBoundsW = dirtyComponent.getWidth ();
\r
271 javax.swing.SwingUtilities.computeIntersection (0, 0, localBoundsW, localBoundsH, rect);
\r
272 if (Clazz.instanceOf (dirtyComponent, javax.swing.JComponent)) {
\r
273 (dirtyComponent).paintImmediately (rect.x, rect.y, rect.width, rect.height);
\r
274 } else if (dirtyComponent.isShowing ()) {
\r
275 var g = javax.swing.JComponent.safelyGetGraphics (dirtyComponent, dirtyComponent);
\r
278 dirtyComponent.paint (g);
\r
282 }}if (this.repaintRoot != null) {
\r
283 this.adjustRoots (this.repaintRoot, roots, i + 1);
\r
284 count = roots.size ();
\r
285 this.repaintRoot.paintImmediately (0, 0, this.repaintRoot.getWidth (), this.repaintRoot.getHeight ());
\r
286 this.repaintRoot = null;
\r
289 this.painting = false;
\r
291 tmpDirtyComponents.clear ();
\r
292 }, "java.util.Map");
\r
293 Clazz.defineMethod (c$, "adjustRoots",
\r
294 function (root, roots, index) {
\r
295 for (var i = roots.size () - 1; i >= index; i--) {
\r
296 var c = roots.get (i);
\r
298 if (c === root || c == null || !(Clazz.instanceOf (c, javax.swing.JComponent))) {
\r
300 }c = c.getParent ();
\r
305 }, "javax.swing.JComponent,java.util.List,~N");
\r
306 Clazz.defineMethod (c$, "collectDirtyComponents",
\r
307 function (dirtyComponents, dirtyComponent, roots) {
\r
313 var rootDirtyComponent;
\r
315 component = rootDirtyComponent = dirtyComponent;
\r
316 var x = dirtyComponent.getX ();
\r
317 var y = dirtyComponent.getY ();
\r
318 var w = dirtyComponent.getWidth ();
\r
319 var h = dirtyComponent.getHeight ();
\r
322 this.tmp.setBounds (dirtyComponents.get (dirtyComponent));
\r
323 javax.swing.SwingUtilities.computeIntersection (0, 0, w, h, this.tmp);
\r
324 if (this.tmp.isEmpty ()) {
\r
327 if (!(Clazz.instanceOf (component, javax.swing.JComponent))) break;
\r
328 parent = component.getParent ();
\r
329 if (parent == null) break;
\r
330 component = parent;
\r
333 this.tmp.setLocation (this.tmp.x + x, this.tmp.y + y);
\r
334 x = component.getX ();
\r
335 y = component.getY ();
\r
336 w = component.getWidth ();
\r
337 h = component.getHeight ();
\r
338 this.tmp = javax.swing.SwingUtilities.computeIntersection (0, 0, w, h, this.tmp);
\r
339 if (this.tmp.isEmpty ()) {
\r
341 }if (dirtyComponents.get (component) != null) {
\r
342 rootDirtyComponent = component;
\r
346 if (dirtyComponent !== rootDirtyComponent) {
\r
348 this.tmp.setLocation (this.tmp.x + rootDx - dx, this.tmp.y + rootDy - dy);
\r
349 r = dirtyComponents.get (rootDirtyComponent);
\r
350 javax.swing.SwingUtilities.computeUnion (this.tmp.x, this.tmp.y, this.tmp.width, this.tmp.height, r);
\r
351 }if (!roots.contains (rootDirtyComponent)) roots.add (rootDirtyComponent);
\r
352 }, "java.util.Map,java.awt.Component,java.util.List");
\r
353 Clazz.overrideMethod (c$, "toString",
\r
355 var sb = new StringBuffer ();
\r
356 if (this.dirtyComponents != null) sb.append ("" + this.dirtyComponents);
\r
357 return sb.toString ();
\r
359 Clazz.defineMethod (c$, "getOffscreenBuffer",
\r
360 function (c, proposedWidth, proposedHeight) {
\r
362 }, "java.awt.Component,~N,~N");
\r
363 Clazz.defineMethod (c$, "getVolatileOffscreenBuffer",
\r
364 function (c, proposedWidth, proposedHeight) {
\r
365 var config = c.getGraphicsConfiguration ();
\r
366 var maxSize = this.getDoubleBufferMaximumSize ();
\r
367 var width = proposedWidth < 1 ? 1 : (proposedWidth > maxSize.width ? maxSize.width : proposedWidth);
\r
368 var height = proposedHeight < 1 ? 1 : (proposedHeight > maxSize.height ? maxSize.height : proposedHeight);
\r
369 var image = this.volatileMap.get (config);
\r
370 if (image == null || image.getWidth () < width || image.getHeight () < height) {
\r
371 if (image != null) {
\r
373 }image = config.createCompatibleVolatileImage (width, height);
\r
374 this.volatileMap.put (config, image);
\r
376 }, "java.awt.Component,~N,~N");
\r
377 Clazz.defineMethod (c$, "setDoubleBufferMaximumSize",
\r
379 }, "java.awt.Dimension");
\r
380 Clazz.defineMethod (c$, "getDoubleBufferMaximumSize",
\r
384 Clazz.defineMethod (c$, "setDoubleBufferingEnabled",
\r
387 Clazz.defineMethod (c$, "resetDoubleBuffer",
\r
390 Clazz.defineMethod (c$, "resetVolatileDoubleBuffer",
\r
392 var image = this.volatileMap.remove (gc);
\r
393 if (image != null) {
\r
395 }}, "java.awt.GraphicsConfiguration");
\r
396 Clazz.defineMethod (c$, "useVolatileDoubleBuffer",
\r
398 return javax.swing.RepaintManager.volatileImageBufferEnabled;
\r
400 Clazz.defineMethod (c$, "isPaintingThread",
\r
402 return (Thread.currentThread () === this.paintThread);
\r
404 Clazz.defineMethod (c$, "paint",
\r
405 function (paintingComponent, bufferComponent, g, x, y, w, h) {
\r
406 paintingComponent.paintToOffscreen (g, x, y, w, h, x + w, y + h);
\r
407 }, "javax.swing.JComponent,javax.swing.JComponent,java.awt.Graphics,~N,~N,~N,~N");
\r
408 Clazz.defineMethod (c$, "beginPaint",
\r
410 var multiThreadedPaint = false;
\r
411 var paintDepth = 0;
\r
412 var currentThread = Thread.currentThread ();
\r
414 paintDepth = this.paintDepth;
\r
415 if (this.paintThread == null || currentThread === this.paintThread) {
\r
416 this.paintThread = currentThread;
\r
419 multiThreadedPaint = true;
\r
421 Clazz.defineMethod (c$, "endPaint",
\r
423 if (this.isPaintingThread ()) {
\r
425 Clazz.defineMethod (c$, "doubleBufferingChanged",
\r
426 function (rootPane) {
\r
427 }, "javax.swing.JRootPane");
\r
428 Clazz.defineMethod (c$, "scheduleProcessingRunnable",
\r
430 this.scheduleProcessingRunnable (c.getAppContext ());
\r
431 }, "java.awt.Component");
\r
432 Clazz.defineMethod (c$, "scheduleProcessingRunnable",
\r
433 function (context) {
\r
434 if (this.processingRunnable.markPending ()) {
\r
435 jssun.awt.SunToolkit.getSystemEventQueueImplPP (context).postEvent ( new java.awt.event.InvocationEvent (java.awt.Toolkit.getDefaultToolkit (), this.processingRunnable));
\r
436 }}, "jssun.awt.AppContext");
\r
437 c$.$RepaintManager$ProcessingRunnable$ = function () {
\r
438 Clazz.pu$h(self.c$);
\r
439 c$ = Clazz.decorateAsClass (function () {
\r
440 Clazz.prepareCallback (this, arguments);
\r
441 this.pending = false;
\r
442 Clazz.instantialize (this, arguments);
\r
443 }, javax.swing.RepaintManager, "ProcessingRunnable", null, Runnable);
\r
444 Clazz.defineMethod (c$, "markPending",
\r
446 if (!this.pending) {
\r
447 this.pending = true;
\r
451 Clazz.overrideMethod (c$, "run",
\r
454 this.pending = false;
\r
455 }this.b$["javax.swing.RepaintManager"].scheduleHeavyWeightPaints ();
\r
456 this.b$["javax.swing.RepaintManager"].validateInvalidComponents ();
\r
457 this.b$["javax.swing.RepaintManager"].prePaintDirtyRegions ();
\r
458 swingjs.JSToolkit.forceRepaint (this.b$["javax.swing.RepaintManager"].myComponent);
\r
462 Clazz.defineStatics (c$,
\r
463 "HANDLE_TOP_LEVEL_PAINT", false);
\r
464 c$.repaintManagerKey = c$.prototype.repaintManagerKey = javax.swing.RepaintManager;
\r
465 Clazz.defineStatics (c$,
\r
466 "volatileImageBufferEnabled", true);
\r
468 javax.swing.RepaintManager.volatileImageBufferEnabled = false;
\r
469 var headless = false;
\r
470 if (javax.swing.RepaintManager.volatileImageBufferEnabled && headless) {
\r
471 javax.swing.RepaintManager.volatileImageBufferEnabled = false;
\r
472 }javax.swing.RepaintManager.HANDLE_TOP_LEVEL_PAINT = true;
\r