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