3525ef060c6efba044ddd86faa4f9669bfc2ad30
[jalviewjs.git] / site / j2s / javax / swing / JViewport.js
1 Clazz.declarePackage ("javax.swing");
2 Clazz.load (["java.awt.event.ComponentAdapter", "javax.swing.JComponent"], "javax.swing.JViewport", ["java.lang.IllegalArgumentException", "java.applet.Applet", "java.awt.Dimension", "$.Insets", "$.Point", "$.Rectangle", "$.Window", "javax.swing.CellRendererPane", "$.RepaintManager", "$.SwingUtilities", "$.UIManager", "$.ViewportLayout", "javax.swing.event.ChangeEvent", "$.ChangeListener"], function () {
3 c$ = Clazz.decorateAsClass (function () {
4 this.isViewSizeSet = false;
5 this.lastPaintPosition = null;
6 this.backingStore = false;
7 this.backingStoreImage = null;
8 this.scrollUnderway = false;
9 this.viewListener = null;
10 this.changeEvent = null;
11 this.scrollMode = 1;
12 this.repaintAll = false;
13 this.waitingForRepaint = false;
14 this.inBlitPaint = false;
15 this.hasHadValidView = false;
16 if (!Clazz.isClassDefined ("javax.swing.JViewport.ViewListener")) {
17 javax.swing.JViewport.$JViewport$ViewListener$ ();
18 }
19 Clazz.instantialize (this, arguments);
20 }, javax.swing, "JViewport", javax.swing.JComponent);
21 Clazz.makeConstructor (c$, 
22 function () {
23 Clazz.superConstructor (this, javax.swing.JViewport);
24 this.setLayout (this.createLayoutManager ());
25 this.setOpaque (true);
26 this.updateUI ();
27 this.setInheritsPopupMenu (true);
28 });
29 Clazz.overrideMethod (c$, "getUI", 
30 function () {
31 return this.ui;
32 });
33 Clazz.overrideMethod (c$, "updateUI", 
34 function () {
35 this.setUI (javax.swing.UIManager.getUI (this));
36 });
37 Clazz.overrideMethod (c$, "getUIClassID", 
38 function () {
39 return "ViewportUI";
40 });
41 Clazz.overrideMethod (c$, "addImpl", 
42 function (child, constraints, index) {
43 this.setView (child);
44 return child;
45 }, "java.awt.Component,~O,~N");
46 Clazz.defineMethod (c$, "remove", 
47 function (child) {
48 child.removeComponentListener (this.viewListener);
49 this.removeChild (child);
50 }, "java.awt.Component");
51 Clazz.overrideMethod (c$, "scrollRectToVisible", 
52 function (contentRect) {
53 var view = this.getView ();
54 if (view == null) {
55 return;
56 } else {
57 if (!view.isValid ()) {
58 this.validateView ();
59 }var dx = 0;
60 var dy = 0;
61 dx = this.positionAdjustment (this.getWidth (), contentRect.width, contentRect.x);
62 dy = this.positionAdjustment (this.getHeight (), contentRect.height, contentRect.y);
63 if (dx != 0 || dy != 0) {
64 var viewPosition = this.getViewPosition ();
65 var viewSize = view.getSize ();
66 var startX = viewPosition.x;
67 var startY = viewPosition.y;
68 var extent = this.getExtentSize ();
69 viewPosition.x -= dx;
70 viewPosition.y -= dy;
71 if (view.isValid ()) {
72 if (this.getParent ().getComponentOrientation ().isLeftToRight ()) {
73 if (viewPosition.x + extent.width > viewSize.width) {
74 viewPosition.x = Math.max (0, viewSize.width - extent.width);
75 } else if (viewPosition.x < 0) {
76 viewPosition.x = 0;
77 }} else {
78 if (extent.width > viewSize.width) {
79 viewPosition.x = viewSize.width - extent.width;
80 } else {
81 viewPosition.x = Math.max (0, Math.min (viewSize.width - extent.width, viewPosition.x));
82 }}if (viewPosition.y + extent.height > viewSize.height) {
83 viewPosition.y = Math.max (0, viewSize.height - extent.height);
84 } else if (viewPosition.y < 0) {
85 viewPosition.y = 0;
86 }}if (viewPosition.x != startX || viewPosition.y != startY) {
87 this.setViewPosition (viewPosition);
88 this.scrollUnderway = false;
89 }}}}, "java.awt.Rectangle");
90 Clazz.defineMethod (c$, "validateView", 
91  function () {
92 var validateRoot = null;
93 for (var c = this; c != null; c = c.getParent ()) {
94 if ((Clazz.instanceOf (c, javax.swing.CellRendererPane)) || !c.isLightweight ()) {
95 return;
96 }if ((Clazz.instanceOf (c, javax.swing.JComponent)) && ((c).isValidateRoot ())) {
97 validateRoot = c;
98 break;
99 }}
100 if (validateRoot == null) {
101 return;
102 }var root = null;
103 for (var c = validateRoot; c != null; c = c.getParent ()) {
104 if (!c.isLightweight ()) {
105 return;
106 }if ((Clazz.instanceOf (c, java.awt.Window)) || (Clazz.instanceOf (c, java.applet.Applet))) {
107 root = c;
108 break;
109 }}
110 if (root == null) {
111 return;
112 }validateRoot.validate ();
113 var rm = javax.swing.RepaintManager.currentManager (this);
114 if (rm != null) {
115 rm.removeInvalidComponent (validateRoot);
116 }});
117 Clazz.defineMethod (c$, "positionAdjustment", 
118  function (parentWidth, childWidth, childAt) {
119 if (childAt >= 0 && childWidth + childAt <= parentWidth) {
120 return 0;
121 }if (childAt <= 0 && childWidth + childAt >= parentWidth) {
122 return 0;
123 }if (childAt > 0 && childWidth <= parentWidth) {
124 return -childAt + parentWidth - childWidth;
125 }if (childAt >= 0 && childWidth >= parentWidth) {
126 return -childAt;
127 }if (childAt <= 0 && childWidth <= parentWidth) {
128 return -childAt;
129 }if (childAt < 0 && childWidth >= parentWidth) {
130 return -childAt + parentWidth - childWidth;
131 }return 0;
132 }, "~N,~N,~N");
133 Clazz.overrideMethod (c$, "setBorder", 
134 function (border) {
135 if (border != null) {
136 throw  new IllegalArgumentException ("JViewport.setBorder() not supported");
137 }}, "javax.swing.border.Border");
138 Clazz.defineMethod (c$, "getInsets", 
139 function () {
140 return  new java.awt.Insets (0, 0, 0, 0);
141 });
142 Clazz.defineMethod (c$, "getInsets", 
143 function (insets) {
144 insets.left = insets.top = insets.right = insets.bottom = 0;
145 return insets;
146 }, "java.awt.Insets");
147 Clazz.defineMethod (c$, "getBackingStoreGraphics", 
148  function (g) {
149 var bsg = this.backingStoreImage.getGraphics ();
150 bsg.setColor (g.getColor ());
151 bsg.setFont (g.getFont ());
152 bsg.setClip (g.getClipBounds ());
153 return bsg;
154 }, "java.awt.Graphics");
155 Clazz.defineMethod (c$, "paintViaBackingStore", 
156  function (g) {
157 var bsg = this.getBackingStoreGraphics (g);
158 try {
159 Clazz.superCall (this, javax.swing.JViewport, "paint", [bsg]);
160 g.drawImage (this.backingStoreImage, 0, 0, this);
161 } finally {
162 bsg.dispose ();
163 }
164 }, "java.awt.Graphics");
165 Clazz.defineMethod (c$, "paintViaBackingStore", 
166  function (g, oClip) {
167 var bsg = this.getBackingStoreGraphics (g);
168 try {
169 Clazz.superCall (this, javax.swing.JViewport, "paint", [bsg]);
170 g.setClip (oClip);
171 g.drawImage (this.backingStoreImage, 0, 0, this);
172 } finally {
173 bsg.dispose ();
174 }
175 }, "java.awt.Graphics,java.awt.Rectangle");
176 Clazz.defineMethod (c$, "isOptimizedDrawingEnabled", 
177 function () {
178 return false;
179 });
180 Clazz.overrideMethod (c$, "isPaintingOrigin", 
181 function () {
182 if (this.scrollMode == 2) {
183 return true;
184 }return false;
185 });
186 Clazz.defineMethod (c$, "getViewLocation", 
187  function () {
188 var view = this.getView ();
189 if (view != null) {
190 return view.getLocation ();
191 } else {
192 return  new java.awt.Point (0, 0);
193 }});
194 Clazz.defineMethod (c$, "paint", 
195 function (g) {
196 var width = this.getWidth ();
197 var height = this.getHeight ();
198 if ((width <= 0) || (height <= 0)) {
199 return;
200 }if (this.inBlitPaint) {
201 Clazz.superCall (this, javax.swing.JViewport, "paint", [g]);
202 return;
203 }if (this.repaintAll) {
204 this.repaintAll = false;
205 var clipB = g.getClipBounds ();
206 } else if (this.waitingForRepaint) {
207 var clipB = g.getClipBounds ();
208 if (clipB.width >= this.getWidth () && clipB.height >= this.getHeight ()) {
209 this.waitingForRepaint = false;
210 }}if (!this.backingStore || this.isBlitting () || this.getView () == null) {
211 Clazz.superCall (this, javax.swing.JViewport, "paint", [g]);
212 this.lastPaintPosition = this.getViewLocation ();
213 return;
214 }var viewBounds = this.getView ().getBounds ();
215 if (!this.isOpaque ()) {
216 g.clipRect (0, 0, viewBounds.width, viewBounds.height);
217 }if (this.backingStoreImage == null) {
218 this.backingStoreImage = this.createImage (width, height);
219 var clip = g.getClipBounds ();
220 if (clip.width != width || clip.height != height) {
221 if (!this.isOpaque ()) {
222 g.setClip (0, 0, Math.min (viewBounds.width, width), Math.min (viewBounds.height, height));
223 } else {
224 g.setClip (0, 0, width, height);
225 }this.paintViaBackingStore (g, clip);
226 } else {
227 this.paintViaBackingStore (g);
228 }} else {
229 if (!this.scrollUnderway || this.lastPaintPosition.equals (this.getViewLocation ())) {
230 this.paintViaBackingStore (g);
231 } else {
232 var blitFrom =  new java.awt.Point ();
233 var blitTo =  new java.awt.Point ();
234 var blitSize =  new java.awt.Dimension ();
235 var blitPaint =  new java.awt.Rectangle ();
236 var newLocation = this.getViewLocation ();
237 var dx = newLocation.x - this.lastPaintPosition.x;
238 var dy = newLocation.y - this.lastPaintPosition.y;
239 var canBlit = this.computeBlit (dx, dy, blitFrom, blitTo, blitSize, blitPaint);
240 if (!canBlit) {
241 this.paintViaBackingStore (g);
242 } else {
243 var bdx = blitTo.x - blitFrom.x;
244 var bdy = blitTo.y - blitFrom.y;
245 var clip = g.getClipBounds ();
246 g.setClip (0, 0, width, height);
247 var bsg = this.getBackingStoreGraphics (g);
248 try {
249 bsg.copyArea (blitFrom.x, blitFrom.y, blitSize.width, blitSize.height, bdx, bdy);
250 g.setClip (clip.x, clip.y, clip.width, clip.height);
251 var r = viewBounds.intersection (blitPaint);
252 bsg.setClip (r);
253 Clazz.superCall (this, javax.swing.JViewport, "paint", [bsg]);
254 g.drawImage (this.backingStoreImage, 0, 0, this);
255 } finally {
256 bsg.dispose ();
257 }
258 }}}this.lastPaintPosition = this.getViewLocation ();
259 this.scrollUnderway = false;
260 }, "java.awt.Graphics");
261 Clazz.defineMethod (c$, "reshape", 
262 function (x, y, w, h) {
263 var sizeChanged = (this.getWidth () != w) || (this.getHeight () != h);
264 if (sizeChanged) {
265 this.backingStoreImage = null;
266 }Clazz.superCall (this, javax.swing.JViewport, "reshape", [x, y, w, h]);
267 if (sizeChanged) {
268 this.fireStateChanged ();
269 }}, "~N,~N,~N,~N");
270 Clazz.defineMethod (c$, "setScrollMode", 
271 function (mode) {
272 this.scrollMode = mode;
273 if (mode == 2) {
274 this.backingStore = true;
275 } else {
276 this.backingStore = false;
277 }}, "~N");
278 Clazz.defineMethod (c$, "getScrollMode", 
279 function () {
280 return this.scrollMode;
281 });
282 Clazz.defineMethod (c$, "isBackingStoreEnabled", 
283 function () {
284 return this.scrollMode == 2;
285 });
286 Clazz.defineMethod (c$, "setBackingStoreEnabled", 
287 function (enabled) {
288 if (enabled) {
289 this.setScrollMode (2);
290 } else {
291 this.setScrollMode (1);
292 }}, "~B");
293 Clazz.defineMethod (c$, "isBlitting", 
294  function () {
295 var view = this.getView ();
296 return (this.scrollMode == 1) && (Clazz.instanceOf (view, javax.swing.JComponent)) && (view).isOpaque ();
297 });
298 Clazz.defineMethod (c$, "getView", 
299 function () {
300 return (this.getComponentCount () > 0) ? this.getComponent (0) : null;
301 });
302 Clazz.defineMethod (c$, "setView", 
303 function (view) {
304 var n = this.getComponentCount ();
305 for (var i = n - 1; i >= 0; i--) {
306 this.remove (this.getComponent (i));
307 }
308 this.isViewSizeSet = false;
309 if (view != null) {
310 this.addImplSAEM (view, null, -1);
311 this.viewListener = this.createViewListener ();
312 view.addComponentListener (this.viewListener);
313 }if (this.hasHadValidView) {
314 this.fireStateChanged ();
315 } else if (view != null) {
316 this.hasHadValidView = true;
317 }this.revalidate ();
318 this.repaint ();
319 }, "java.awt.Component");
320 Clazz.defineMethod (c$, "getViewSize", 
321 function () {
322 var view = this.getView ();
323 if (view == null) {
324 return  new java.awt.Dimension (0, 0);
325 } else if (this.isViewSizeSet) {
326 return view.getSize ();
327 } else {
328 return view.getPreferredSize ();
329 }});
330 Clazz.defineMethod (c$, "setViewSize", 
331 function (newSize) {
332 var view = this.getView ();
333 if (view != null) {
334 var oldSize = view.getSize ();
335 if (!newSize.equals (oldSize)) {
336 this.scrollUnderway = false;
337 view.setSize (newSize);
338 this.isViewSizeSet = true;
339 this.fireStateChanged ();
340 }}}, "java.awt.Dimension");
341 Clazz.defineMethod (c$, "getViewPosition", 
342 function () {
343 var view = this.getView ();
344 if (view != null) {
345 var p = view.getLocation ();
346 p.x = -p.x;
347 p.y = -p.y;
348 return p;
349 } else {
350 return  new java.awt.Point (0, 0);
351 }});
352 Clazz.defineMethod (c$, "setViewPosition", 
353 function (p) {
354 var view = this.getView ();
355 if (view == null) {
356 return;
357 }var oldX;
358 var oldY;
359 var x = p.x;
360 var y = p.y;
361 if (Clazz.instanceOf (view, javax.swing.JComponent)) {
362 var c = view;
363 oldX = c.getX ();
364 oldY = c.getY ();
365 } else {
366 var r = view.getBounds ();
367 oldX = r.x;
368 oldY = r.y;
369 }var newX = -x;
370 var newY = -y;
371 if ((oldX != newX) || (oldY != newY)) {
372 if (!this.waitingForRepaint && this.isBlitting () && this.canUseWindowBlitter ()) {
373 var rm = javax.swing.RepaintManager.currentManager (this);
374 var jview = view;
375 var dirty = rm.getDirtyRegion (jview);
376 if (dirty == null || !dirty.contains (jview.getVisibleRect ())) {
377 rm.beginPaint ();
378 try {
379 var g = javax.swing.JComponent.safelyGetGraphics (this, javax.swing.SwingUtilities.getRoot (this));
380 this.flushViewDirtyRegion (g, dirty);
381 view.setLocation (newX, newY);
382 g.setClip (0, 0, this.getWidth (), Math.min (this.getHeight (), jview.getHeight ()));
383 this.repaintAll = (this.windowBlitPaint (g) && this.needsRepaintAfterBlit ());
384 g.dispose ();
385 rm.markCompletelyClean (this.getParent ());
386 rm.markCompletelyClean (this);
387 rm.markCompletelyClean (jview);
388 } finally {
389 rm.endPaint ();
390 }
391 } else {
392 view.setLocation (newX, newY);
393 this.repaintAll = false;
394 }} else {
395 this.scrollUnderway = true;
396 view.setLocation (newX, newY);
397 this.repaintAll = false;
398 }this.fireStateChanged ();
399 }}, "java.awt.Point");
400 Clazz.defineMethod (c$, "getViewRect", 
401 function () {
402 return  new java.awt.Rectangle (this.getViewPosition (), this.getExtentSize ());
403 });
404 Clazz.defineMethod (c$, "computeBlit", 
405 function (dx, dy, blitFrom, blitTo, blitSize, blitPaint) {
406 var dxAbs = Math.abs (dx);
407 var dyAbs = Math.abs (dy);
408 var extentSize = this.getExtentSize ();
409 if ((dx == 0) && (dy != 0) && (dyAbs < extentSize.height)) {
410 if (dy < 0) {
411 blitFrom.y = -dy;
412 blitTo.y = 0;
413 blitPaint.y = extentSize.height + dy;
414 } else {
415 blitFrom.y = 0;
416 blitTo.y = dy;
417 blitPaint.y = 0;
418 }blitPaint.x = blitFrom.x = blitTo.x = 0;
419 blitSize.width = extentSize.width;
420 blitSize.height = extentSize.height - dyAbs;
421 blitPaint.width = extentSize.width;
422 blitPaint.height = dyAbs;
423 return true;
424 } else if ((dy == 0) && (dx != 0) && (dxAbs < extentSize.width)) {
425 if (dx < 0) {
426 blitFrom.x = -dx;
427 blitTo.x = 0;
428 blitPaint.x = extentSize.width + dx;
429 } else {
430 blitFrom.x = 0;
431 blitTo.x = dx;
432 blitPaint.x = 0;
433 }blitPaint.y = blitFrom.y = blitTo.y = 0;
434 blitSize.width = extentSize.width - dxAbs;
435 blitSize.height = extentSize.height;
436 blitPaint.width = dxAbs;
437 blitPaint.height = extentSize.height;
438 return true;
439 } else {
440 return false;
441 }}, "~N,~N,java.awt.Point,java.awt.Point,java.awt.Dimension,java.awt.Rectangle");
442 Clazz.defineMethod (c$, "getExtentSize", 
443 function () {
444 return this.getSize ();
445 });
446 Clazz.defineMethod (c$, "toViewCoordinates", 
447 function (size) {
448 return  new java.awt.Dimension (size);
449 }, "java.awt.Dimension");
450 Clazz.defineMethod (c$, "toViewCoordinates", 
451 function (p) {
452 return  new java.awt.Point (p);
453 }, "java.awt.Point");
454 Clazz.defineMethod (c$, "setExtentSize", 
455 function (newExtent) {
456 var oldExtent = this.getExtentSize ();
457 if (!newExtent.equals (oldExtent)) {
458 this.setSize (newExtent);
459 this.fireStateChanged ();
460 }}, "java.awt.Dimension");
461 Clazz.defineMethod (c$, "createViewListener", 
462 function () {
463 return Clazz.innerTypeInstance (javax.swing.JViewport.ViewListener, this, null);
464 });
465 Clazz.defineMethod (c$, "createLayoutManager", 
466 function () {
467 return javax.swing.ViewportLayout.SHARED_INSTANCE;
468 });
469 Clazz.defineMethod (c$, "addChangeListener", 
470 function (l) {
471 this.listenerList.add (javax.swing.event.ChangeListener, l);
472 }, "javax.swing.event.ChangeListener");
473 Clazz.defineMethod (c$, "removeChangeListener", 
474 function (l) {
475 this.listenerList.remove (javax.swing.event.ChangeListener, l);
476 }, "javax.swing.event.ChangeListener");
477 Clazz.defineMethod (c$, "getChangeListeners", 
478 function () {
479 return this.listenerList.getListeners (javax.swing.event.ChangeListener);
480 });
481 Clazz.defineMethod (c$, "fireStateChanged", 
482 function () {
483 var listeners = this.listenerList.getListenerList ();
484 for (var i = listeners.length - 2; i >= 0; i -= 2) {
485 if (listeners[i] === javax.swing.event.ChangeListener) {
486 if (this.changeEvent == null) {
487 this.changeEvent =  new javax.swing.event.ChangeEvent (this);
488 }(listeners[i + 1]).stateChanged (this.changeEvent);
489 }}
490 });
491 Clazz.defineMethod (c$, "repaint", 
492 function (tm, x, y, w, h) {
493 var parent = this.getParent ();
494 if (parent != null) parent.repaint (tm, x + this.getX (), y + this.getY (), w, h);
495  else Clazz.superCall (this, javax.swing.JViewport, "repaint", [tm, x, y, w, h]);
496 }, "~N,~N,~N,~N,~N");
497 Clazz.defineMethod (c$, "paramString", 
498 function () {
499 var isViewSizeSetString = (this.isViewSizeSet ? "true" : "false");
500 var lastPaintPositionString = (this.lastPaintPosition != null ? this.lastPaintPosition.toString () : "");
501 var scrollUnderwayString = (this.scrollUnderway ? "true" : "false");
502 return Clazz.superCall (this, javax.swing.JViewport, "paramString", []) + ",isViewSizeSet=" + isViewSizeSetString + ",lastPaintPosition=" + lastPaintPositionString + ",scrollUnderway=" + scrollUnderwayString;
503 });
504 Clazz.defineMethod (c$, "firePropertyChangeObject", 
505 function (propertyName, oldValue, newValue) {
506 Clazz.superCall (this, javax.swing.JViewport, "firePropertyChangeObject", [propertyName, oldValue, newValue]);
507 if (propertyName.equals (javax.swing.JViewport.EnableWindowBlit)) {
508 if (newValue != null) {
509 this.setScrollMode (1);
510 } else {
511 this.setScrollMode (0);
512 }}}, "~S,~O,~O");
513 Clazz.defineMethod (c$, "needsRepaintAfterBlit", 
514  function () {
515 var heavyParent = this.getParent ();
516 while (heavyParent != null && heavyParent.isLightweight ()) {
517 heavyParent = heavyParent.getParent ();
518 }
519 if (heavyParent != null) {
520 }return true;
521 });
522 Clazz.defineMethod (c$, "flushViewDirtyRegion", 
523  function (g, dirty) {
524 var view = this.getView ();
525 if (dirty != null && dirty.width > 0 && dirty.height > 0) {
526 dirty.x += view.getX ();
527 dirty.y += view.getY ();
528 var clip = g.getClipBounds ();
529 if (clip == null) {
530 g.setClip (0, 0, this.getWidth (), this.getHeight ());
531 }g.clipRect (dirty.x, dirty.y, dirty.width, dirty.height);
532 clip = g.getClipBounds ();
533 if (clip.width > 0 && clip.height > 0) {
534 this.paintView (g);
535 }}}, "java.awt.Graphics,java.awt.Rectangle");
536 Clazz.defineMethod (c$, "windowBlitPaint", 
537  function (g) {
538 var width = this.getWidth ();
539 var height = this.getHeight ();
540 if ((width == 0) || (height == 0)) {
541 return false;
542 }var retValue;
543 var rm = javax.swing.RepaintManager.currentManager (this);
544 var view = this.getView ();
545 if (this.lastPaintPosition == null || this.lastPaintPosition.equals (this.getViewLocation ())) {
546 this.paintView (g);
547 retValue = false;
548 } else {
549 var blitFrom =  new java.awt.Point ();
550 var blitTo =  new java.awt.Point ();
551 var blitSize =  new java.awt.Dimension ();
552 var blitPaint =  new java.awt.Rectangle ();
553 var newLocation = this.getViewLocation ();
554 var dx = newLocation.x - this.lastPaintPosition.x;
555 var dy = newLocation.y - this.lastPaintPosition.y;
556 var canBlit = this.computeBlit (dx, dy, blitFrom, blitTo, blitSize, blitPaint);
557 if (!canBlit) {
558 this.paintView (g);
559 retValue = false;
560 } else {
561 var r = view.getBounds ().intersection (blitPaint);
562 r.x -= view.getX ();
563 r.y -= view.getY ();
564 this.blitDoubleBuffered (view, g, r.x, r.y, r.width, r.height, blitFrom.x, blitFrom.y, blitTo.x, blitTo.y, blitSize.width, blitSize.height);
565 retValue = true;
566 }}this.lastPaintPosition = this.getViewLocation ();
567 return retValue;
568 }, "java.awt.Graphics");
569 Clazz.defineMethod (c$, "blitDoubleBuffered", 
570  function (view, g, clipX, clipY, clipW, clipH, blitFromX, blitFromY, blitToX, blitToY, blitW, blitH) {
571 var rm = javax.swing.RepaintManager.currentManager (this);
572 var bdx = blitToX - blitFromX;
573 var bdy = blitToY - blitFromY;
574 var x = view.getX ();
575 var y = view.getY ();
576 g.translate (x, y);
577 g.setClip (clipX, clipY, clipW, clipH);
578 view.paintForceDoubleBuffered (g);
579 g.translate (-x, -y);
580 }, "javax.swing.JComponent,java.awt.Graphics,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N");
581 Clazz.defineMethod (c$, "paintView", 
582  function (g) {
583 var clip = g.getClipBounds ();
584 var view = this.getView ();
585 if (view.getWidth () >= this.getWidth ()) {
586 var x = view.getX ();
587 var y = view.getY ();
588 g.translate (x, y);
589 g.setClip (clip.x - x, clip.y - y, clip.width, clip.height);
590 view.paintForceDoubleBuffered (g);
591 g.translate (-x, -y);
592 g.setClip (clip.x, clip.y, clip.width, clip.height);
593 } else {
594 try {
595 this.inBlitPaint = true;
596 this.paintForceDoubleBuffered (g);
597 } finally {
598 this.inBlitPaint = false;
599 }
600 }}, "java.awt.Graphics");
601 Clazz.defineMethod (c$, "canUseWindowBlitter", 
602  function () {
603 if (!this.isShowing () || (!(Clazz.instanceOf (this.getParent (), javax.swing.JComponent)) && !(Clazz.instanceOf (this.getView (), javax.swing.JComponent)))) {
604 return false;
605 }if (this.isPainting ()) {
606 return false;
607 }var dirtyRegion = javax.swing.RepaintManager.currentManager (this).getDirtyRegion (this.getParent ());
608 if (dirtyRegion != null && dirtyRegion.width > 0 && dirtyRegion.height > 0) {
609 return false;
610 }var clip =  new java.awt.Rectangle (0, 0, this.getWidth (), this.getHeight ());
611 var oldClip =  new java.awt.Rectangle ();
612 var tmp2 = null;
613 var parent;
614 var lastParent = null;
615 var x;
616 var y;
617 var w;
618 var h;
619 for (parent = this; parent != null && javax.swing.JComponent.isLightweightComponent (parent); parent = parent.getParent ()) {
620 x = parent.getX ();
621 y = parent.getY ();
622 w = parent.getWidth ();
623 h = parent.getHeight ();
624 oldClip.setBounds (clip);
625 javax.swing.SwingUtilities.computeIntersection (0, 0, w, h, clip);
626 if (!clip.equals (oldClip)) return false;
627 if (lastParent != null && Clazz.instanceOf (parent, javax.swing.JComponent) && !(parent).isOptimizedDrawingEnabled ()) {
628 var comps = parent.getComponents ();
629 var index = 0;
630 for (var i = comps.length - 1; i >= 0; i--) {
631 if (comps[i] === lastParent) {
632 index = i - 1;
633 break;
634 }}
635 while (index >= 0) {
636 tmp2 = comps[index].getBounds (tmp2);
637 if (tmp2.intersects (clip)) return false;
638 index--;
639 }
640 }clip.x += x;
641 clip.y += y;
642 lastParent = parent;
643 }
644 if (parent == null) {
645 return false;
646 }return true;
647 });
648 c$.$JViewport$ViewListener$ = function () {
649 Clazz.pu$h(self.c$);
650 c$ = Clazz.decorateAsClass (function () {
651 Clazz.prepareCallback (this, arguments);
652 Clazz.instantialize (this, arguments);
653 }, javax.swing.JViewport, "ViewListener", java.awt.event.ComponentAdapter);
654 Clazz.overrideMethod (c$, "componentResized", 
655 function (a) {
656 this.b$["javax.swing.JViewport"].fireStateChanged ();
657 this.b$["javax.swing.JViewport"].revalidate ();
658 }, "java.awt.event.ComponentEvent");
659 c$ = Clazz.p0p ();
660 };
661 Clazz.defineStatics (c$,
662 "$uiClassID", "ViewportUI",
663 "EnableWindowBlit", "EnableWindowBlit",
664 "BLIT_SCROLL_MODE", 1,
665 "BACKINGSTORE_SCROLL_MODE", 2,
666 "SIMPLE_SCROLL_MODE", 0);
667 });