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;
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$ ();
19 Clazz.instantialize (this, arguments);
20 }, javax.swing, "JViewport", javax.swing.JComponent);
21 Clazz.makeConstructor (c$,
23 Clazz.superConstructor (this, javax.swing.JViewport);
24 this.setLayout (this.createLayoutManager ());
25 this.setOpaque (true);
27 this.setInheritsPopupMenu (true);
29 Clazz.overrideMethod (c$, "getUI",
33 Clazz.overrideMethod (c$, "updateUI",
35 this.setUI (javax.swing.UIManager.getUI (this));
37 Clazz.overrideMethod (c$, "getUIClassID",
41 Clazz.overrideMethod (c$, "addImpl",
42 function (child, constraints, index) {
45 }, "java.awt.Component,~O,~N");
46 Clazz.defineMethod (c$, "remove",
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 ();
57 if (!view.isValid ()) {
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 ();
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) {
78 if (extent.width > viewSize.width) {
79 viewPosition.x = viewSize.width - extent.width;
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) {
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",
92 var validateRoot = null;
93 for (var c = this; c != null; c = c.getParent ()) {
94 if ((Clazz.instanceOf (c, javax.swing.CellRendererPane)) || !c.isLightweight ()) {
96 }if ((Clazz.instanceOf (c, javax.swing.JComponent)) && ((c).isValidateRoot ())) {
100 if (validateRoot == null) {
103 for (var c = validateRoot; c != null; c = c.getParent ()) {
104 if (!c.isLightweight ()) {
106 }if ((Clazz.instanceOf (c, java.awt.Window)) || (Clazz.instanceOf (c, java.applet.Applet))) {
112 }validateRoot.validate ();
113 var rm = javax.swing.RepaintManager.currentManager (this);
115 rm.removeInvalidComponent (validateRoot);
117 Clazz.defineMethod (c$, "positionAdjustment",
118 function (parentWidth, childWidth, childAt) {
119 if (childAt >= 0 && childWidth + childAt <= parentWidth) {
121 }if (childAt <= 0 && childWidth + childAt >= parentWidth) {
123 }if (childAt > 0 && childWidth <= parentWidth) {
124 return -childAt + parentWidth - childWidth;
125 }if (childAt >= 0 && childWidth >= parentWidth) {
127 }if (childAt <= 0 && childWidth <= parentWidth) {
129 }if (childAt < 0 && childWidth >= parentWidth) {
130 return -childAt + parentWidth - childWidth;
133 Clazz.overrideMethod (c$, "setBorder",
135 if (border != null) {
136 throw new IllegalArgumentException ("JViewport.setBorder() not supported");
137 }}, "javax.swing.border.Border");
138 Clazz.defineMethod (c$, "getInsets",
140 return new java.awt.Insets (0, 0, 0, 0);
142 Clazz.defineMethod (c$, "getInsets",
144 insets.left = insets.top = insets.right = insets.bottom = 0;
146 }, "java.awt.Insets");
147 Clazz.defineMethod (c$, "getBackingStoreGraphics",
149 var bsg = this.backingStoreImage.getGraphics ();
150 bsg.setColor (g.getColor ());
151 bsg.setFont (g.getFont ());
152 bsg.setClip (g.getClipBounds ());
154 }, "java.awt.Graphics");
155 Clazz.defineMethod (c$, "paintViaBackingStore",
157 var bsg = this.getBackingStoreGraphics (g);
159 Clazz.superCall (this, javax.swing.JViewport, "paint", [bsg]);
160 g.drawImage (this.backingStoreImage, 0, 0, this);
164 }, "java.awt.Graphics");
165 Clazz.defineMethod (c$, "paintViaBackingStore",
166 function (g, oClip) {
167 var bsg = this.getBackingStoreGraphics (g);
169 Clazz.superCall (this, javax.swing.JViewport, "paint", [bsg]);
171 g.drawImage (this.backingStoreImage, 0, 0, this);
175 }, "java.awt.Graphics,java.awt.Rectangle");
176 Clazz.defineMethod (c$, "isOptimizedDrawingEnabled",
180 Clazz.overrideMethod (c$, "isPaintingOrigin",
182 if (this.scrollMode == 2) {
186 Clazz.defineMethod (c$, "getViewLocation",
188 var view = this.getView ();
190 return view.getLocation ();
192 return new java.awt.Point (0, 0);
194 Clazz.defineMethod (c$, "paint",
196 var width = this.getWidth ();
197 var height = this.getHeight ();
198 if ((width <= 0) || (height <= 0)) {
200 }if (this.inBlitPaint) {
201 Clazz.superCall (this, javax.swing.JViewport, "paint", [g]);
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 ();
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));
224 g.setClip (0, 0, width, height);
225 }this.paintViaBackingStore (g, clip);
227 this.paintViaBackingStore (g);
229 if (!this.scrollUnderway || this.lastPaintPosition.equals (this.getViewLocation ())) {
230 this.paintViaBackingStore (g);
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);
241 this.paintViaBackingStore (g);
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);
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);
253 Clazz.superCall (this, javax.swing.JViewport, "paint", [bsg]);
254 g.drawImage (this.backingStoreImage, 0, 0, this);
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);
265 this.backingStoreImage = null;
266 }Clazz.superCall (this, javax.swing.JViewport, "reshape", [x, y, w, h]);
268 this.fireStateChanged ();
270 Clazz.defineMethod (c$, "setScrollMode",
272 this.scrollMode = mode;
274 this.backingStore = true;
276 this.backingStore = false;
278 Clazz.defineMethod (c$, "getScrollMode",
280 return this.scrollMode;
282 Clazz.defineMethod (c$, "isBackingStoreEnabled",
284 return this.scrollMode == 2;
286 Clazz.defineMethod (c$, "setBackingStoreEnabled",
289 this.setScrollMode (2);
291 this.setScrollMode (1);
293 Clazz.defineMethod (c$, "isBlitting",
295 var view = this.getView ();
296 return (this.scrollMode == 1) && (Clazz.instanceOf (view, javax.swing.JComponent)) && (view).isOpaque ();
298 Clazz.defineMethod (c$, "getView",
300 return (this.getComponentCount () > 0) ? this.getComponent (0) : null;
302 Clazz.defineMethod (c$, "setView",
304 var n = this.getComponentCount ();
305 for (var i = n - 1; i >= 0; i--) {
306 this.remove (this.getComponent (i));
308 this.isViewSizeSet = false;
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;
319 }, "java.awt.Component");
320 Clazz.defineMethod (c$, "getViewSize",
322 var view = this.getView ();
324 return new java.awt.Dimension (0, 0);
325 } else if (this.isViewSizeSet) {
326 return view.getSize ();
328 return view.getPreferredSize ();
330 Clazz.defineMethod (c$, "setViewSize",
332 var view = this.getView ();
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",
343 var view = this.getView ();
345 var p = view.getLocation ();
350 return new java.awt.Point (0, 0);
352 Clazz.defineMethod (c$, "setViewPosition",
354 var view = this.getView ();
361 if (Clazz.instanceOf (view, javax.swing.JComponent)) {
366 var r = view.getBounds ();
371 if ((oldX != newX) || (oldY != newY)) {
372 if (!this.waitingForRepaint && this.isBlitting () && this.canUseWindowBlitter ()) {
373 var rm = javax.swing.RepaintManager.currentManager (this);
375 var dirty = rm.getDirtyRegion (jview);
376 if (dirty == null || !dirty.contains (jview.getVisibleRect ())) {
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 ());
385 rm.markCompletelyClean (this.getParent ());
386 rm.markCompletelyClean (this);
387 rm.markCompletelyClean (jview);
392 view.setLocation (newX, newY);
393 this.repaintAll = false;
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",
402 return new java.awt.Rectangle (this.getViewPosition (), this.getExtentSize ());
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)) {
413 blitPaint.y = extentSize.height + dy;
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;
424 } else if ((dy == 0) && (dx != 0) && (dxAbs < extentSize.width)) {
428 blitPaint.x = extentSize.width + dx;
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;
441 }}, "~N,~N,java.awt.Point,java.awt.Point,java.awt.Dimension,java.awt.Rectangle");
442 Clazz.defineMethod (c$, "getExtentSize",
444 return this.getSize ();
446 Clazz.defineMethod (c$, "toViewCoordinates",
448 return new java.awt.Dimension (size);
449 }, "java.awt.Dimension");
450 Clazz.defineMethod (c$, "toViewCoordinates",
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",
463 return Clazz.innerTypeInstance (javax.swing.JViewport.ViewListener, this, null);
465 Clazz.defineMethod (c$, "createLayoutManager",
467 return javax.swing.ViewportLayout.SHARED_INSTANCE;
469 Clazz.defineMethod (c$, "addChangeListener",
471 this.listenerList.add (javax.swing.event.ChangeListener, l);
472 }, "javax.swing.event.ChangeListener");
473 Clazz.defineMethod (c$, "removeChangeListener",
475 this.listenerList.remove (javax.swing.event.ChangeListener, l);
476 }, "javax.swing.event.ChangeListener");
477 Clazz.defineMethod (c$, "getChangeListeners",
479 return this.listenerList.getListeners (javax.swing.event.ChangeListener);
481 Clazz.defineMethod (c$, "fireStateChanged",
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);
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",
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;
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);
511 this.setScrollMode (0);
513 Clazz.defineMethod (c$, "needsRepaintAfterBlit",
515 var heavyParent = this.getParent ();
516 while (heavyParent != null && heavyParent.isLightweight ()) {
517 heavyParent = heavyParent.getParent ();
519 if (heavyParent != null) {
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 ();
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) {
535 }}}, "java.awt.Graphics,java.awt.Rectangle");
536 Clazz.defineMethod (c$, "windowBlitPaint",
538 var width = this.getWidth ();
539 var height = this.getHeight ();
540 if ((width == 0) || (height == 0)) {
543 var rm = javax.swing.RepaintManager.currentManager (this);
544 var view = this.getView ();
545 if (this.lastPaintPosition == null || this.lastPaintPosition.equals (this.getViewLocation ())) {
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);
561 var r = view.getBounds ().intersection (blitPaint);
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);
566 }}this.lastPaintPosition = this.getViewLocation ();
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 ();
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",
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 ();
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);
595 this.inBlitPaint = true;
596 this.paintForceDoubleBuffered (g);
598 this.inBlitPaint = false;
600 }}, "java.awt.Graphics");
601 Clazz.defineMethod (c$, "canUseWindowBlitter",
603 if (!this.isShowing () || (!(Clazz.instanceOf (this.getParent (), javax.swing.JComponent)) && !(Clazz.instanceOf (this.getView (), javax.swing.JComponent)))) {
605 }if (this.isPainting ()) {
607 }var dirtyRegion = javax.swing.RepaintManager.currentManager (this).getDirtyRegion (this.getParent ());
608 if (dirtyRegion != null && dirtyRegion.width > 0 && dirtyRegion.height > 0) {
610 }var clip = new java.awt.Rectangle (0, 0, this.getWidth (), this.getHeight ());
611 var oldClip = new java.awt.Rectangle ();
614 var lastParent = null;
619 for (parent = this; parent != null && javax.swing.JComponent.isLightweightComponent (parent); parent = parent.getParent ()) {
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 ();
630 for (var i = comps.length - 1; i >= 0; i--) {
631 if (comps[i] === lastParent) {
636 tmp2 = comps[index].getBounds (tmp2);
637 if (tmp2.intersects (clip)) return false;
644 if (parent == null) {
648 c$.$JViewport$ViewListener$ = function () {
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",
656 this.b$["javax.swing.JViewport"].fireStateChanged ();
657 this.b$["javax.swing.JViewport"].revalidate ();
658 }, "java.awt.event.ComponentEvent");
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);