Merge branch 'master' of https://source.jalview.org/git/jalviewjs.git
[jalviewjs.git] / site / j2s / javax / swing / JViewport.js
index 5e4f725..3525ef0 100644 (file)
-Clazz.declarePackage ("javax.swing");\r
-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
-c$ = Clazz.decorateAsClass (function () {\r
-this.isViewSizeSet = false;\r
-this.lastPaintPosition = null;\r
-this.backingStore = false;\r
-this.backingStoreImage = null;\r
-this.scrollUnderway = false;\r
-this.viewListener = null;\r
-this.changeEvent = null;\r
-this.scrollMode = 1;\r
-this.repaintAll = false;\r
-this.waitingForRepaint = false;\r
-this.inBlitPaint = false;\r
-this.hasHadValidView = false;\r
-if (!Clazz.isClassDefined ("javax.swing.JViewport.ViewListener")) {\r
-javax.swing.JViewport.$JViewport$ViewListener$ ();\r
-}\r
-Clazz.instantialize (this, arguments);\r
-}, javax.swing, "JViewport", javax.swing.JComponent);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, javax.swing.JViewport);\r
-this.setLayout (this.createLayoutManager ());\r
-this.setOpaque (true);\r
-this.updateUI ();\r
-this.setInheritsPopupMenu (true);\r
-});\r
-Clazz.overrideMethod (c$, "getUI", \r
-function () {\r
-return this.ui;\r
-});\r
-Clazz.overrideMethod (c$, "updateUI", \r
-function () {\r
-this.setUI (javax.swing.UIManager.getUI (this));\r
-});\r
-Clazz.overrideMethod (c$, "getUIClassID", \r
-function () {\r
-return "ViewportUI";\r
-});\r
-Clazz.overrideMethod (c$, "addImpl", \r
-function (child, constraints, index) {\r
-this.setView (child);\r
-return child;\r
-}, "java.awt.Component,~O,~N");\r
-Clazz.defineMethod (c$, "remove", \r
-function (child) {\r
-child.removeComponentListener (this.viewListener);\r
-this.removeChild (child);\r
-}, "java.awt.Component");\r
-Clazz.overrideMethod (c$, "scrollRectToVisible", \r
-function (contentRect) {\r
-var view = this.getView ();\r
-if (view == null) {\r
-return;\r
-} else {\r
-if (!view.isValid ()) {\r
-this.validateView ();\r
-}var dx = 0;\r
-var dy = 0;\r
-dx = this.positionAdjustment (this.getWidth (), contentRect.width, contentRect.x);\r
-dy = this.positionAdjustment (this.getHeight (), contentRect.height, contentRect.y);\r
-if (dx != 0 || dy != 0) {\r
-var viewPosition = this.getViewPosition ();\r
-var viewSize = view.getSize ();\r
-var startX = viewPosition.x;\r
-var startY = viewPosition.y;\r
-var extent = this.getExtentSize ();\r
-viewPosition.x -= dx;\r
-viewPosition.y -= dy;\r
-if (view.isValid ()) {\r
-if (this.getParent ().getComponentOrientation ().isLeftToRight ()) {\r
-if (viewPosition.x + extent.width > viewSize.width) {\r
-viewPosition.x = Math.max (0, viewSize.width - extent.width);\r
-} else if (viewPosition.x < 0) {\r
-viewPosition.x = 0;\r
-}} else {\r
-if (extent.width > viewSize.width) {\r
-viewPosition.x = viewSize.width - extent.width;\r
-} else {\r
-viewPosition.x = Math.max (0, Math.min (viewSize.width - extent.width, viewPosition.x));\r
-}}if (viewPosition.y + extent.height > viewSize.height) {\r
-viewPosition.y = Math.max (0, viewSize.height - extent.height);\r
-} else if (viewPosition.y < 0) {\r
-viewPosition.y = 0;\r
-}}if (viewPosition.x != startX || viewPosition.y != startY) {\r
-this.setViewPosition (viewPosition);\r
-this.scrollUnderway = false;\r
-}}}}, "java.awt.Rectangle");\r
-Clazz.defineMethod (c$, "validateView", \r
- function () {\r
-var validateRoot = null;\r
-for (var c = this; c != null; c = c.getParent ()) {\r
-if ((Clazz.instanceOf (c, javax.swing.CellRendererPane)) || !c.isLightweight ()) {\r
-return;\r
-}if ((Clazz.instanceOf (c, javax.swing.JComponent)) && ((c).isValidateRoot ())) {\r
-validateRoot = c;\r
-break;\r
-}}\r
-if (validateRoot == null) {\r
-return;\r
-}var root = null;\r
-for (var c = validateRoot; c != null; c = c.getParent ()) {\r
-if (!c.isLightweight ()) {\r
-return;\r
-}if ((Clazz.instanceOf (c, java.awt.Window)) || (Clazz.instanceOf (c, java.applet.Applet))) {\r
-root = c;\r
-break;\r
-}}\r
-if (root == null) {\r
-return;\r
-}validateRoot.validate ();\r
-var rm = javax.swing.RepaintManager.currentManager (this);\r
-if (rm != null) {\r
-rm.removeInvalidComponent (validateRoot);\r
-}});\r
-Clazz.defineMethod (c$, "positionAdjustment", \r
- function (parentWidth, childWidth, childAt) {\r
-if (childAt >= 0 && childWidth + childAt <= parentWidth) {\r
-return 0;\r
-}if (childAt <= 0 && childWidth + childAt >= parentWidth) {\r
-return 0;\r
-}if (childAt > 0 && childWidth <= parentWidth) {\r
-return -childAt + parentWidth - childWidth;\r
-}if (childAt >= 0 && childWidth >= parentWidth) {\r
-return -childAt;\r
-}if (childAt <= 0 && childWidth <= parentWidth) {\r
-return -childAt;\r
-}if (childAt < 0 && childWidth >= parentWidth) {\r
-return -childAt + parentWidth - childWidth;\r
-}return 0;\r
-}, "~N,~N,~N");\r
-Clazz.overrideMethod (c$, "setBorder", \r
-function (border) {\r
-if (border != null) {\r
-throw  new IllegalArgumentException ("JViewport.setBorder() not supported");\r
-}}, "javax.swing.border.Border");\r
-Clazz.defineMethod (c$, "getInsets", \r
-function () {\r
-return  new java.awt.Insets (0, 0, 0, 0);\r
-});\r
-Clazz.defineMethod (c$, "getInsets", \r
-function (insets) {\r
-insets.left = insets.top = insets.right = insets.bottom = 0;\r
-return insets;\r
-}, "java.awt.Insets");\r
-Clazz.defineMethod (c$, "getBackingStoreGraphics", \r
- function (g) {\r
-var bsg = this.backingStoreImage.getGraphics ();\r
-bsg.setColor (g.getColor ());\r
-bsg.setFont (g.getFont ());\r
-bsg.setClip (g.getClipBounds ());\r
-return bsg;\r
-}, "java.awt.Graphics");\r
-Clazz.defineMethod (c$, "paintViaBackingStore", \r
- function (g) {\r
-var bsg = this.getBackingStoreGraphics (g);\r
-try {\r
-Clazz.superCall (this, javax.swing.JViewport, "paint", [bsg]);\r
-g.drawImage (this.backingStoreImage, 0, 0, this);\r
-} finally {\r
-bsg.dispose ();\r
-}\r
-}, "java.awt.Graphics");\r
-Clazz.defineMethod (c$, "paintViaBackingStore", \r
- function (g, oClip) {\r
-var bsg = this.getBackingStoreGraphics (g);\r
-try {\r
-Clazz.superCall (this, javax.swing.JViewport, "paint", [bsg]);\r
-g.setClip (oClip);\r
-g.drawImage (this.backingStoreImage, 0, 0, this);\r
-} finally {\r
-bsg.dispose ();\r
-}\r
-}, "java.awt.Graphics,java.awt.Rectangle");\r
-Clazz.defineMethod (c$, "isOptimizedDrawingEnabled", \r
-function () {\r
-return false;\r
-});\r
-Clazz.overrideMethod (c$, "isPaintingOrigin", \r
-function () {\r
-if (this.scrollMode == 2) {\r
-return true;\r
-}return false;\r
-});\r
-Clazz.defineMethod (c$, "getViewLocation", \r
- function () {\r
-var view = this.getView ();\r
-if (view != null) {\r
-return view.getLocation ();\r
-} else {\r
-return  new java.awt.Point (0, 0);\r
-}});\r
-Clazz.defineMethod (c$, "paint", \r
-function (g) {\r
-var width = this.getWidth ();\r
-var height = this.getHeight ();\r
-if ((width <= 0) || (height <= 0)) {\r
-return;\r
-}if (this.inBlitPaint) {\r
-Clazz.superCall (this, javax.swing.JViewport, "paint", [g]);\r
-return;\r
-}if (this.repaintAll) {\r
-this.repaintAll = false;\r
-var clipB = g.getClipBounds ();\r
-} else if (this.waitingForRepaint) {\r
-var clipB = g.getClipBounds ();\r
-if (clipB.width >= this.getWidth () && clipB.height >= this.getHeight ()) {\r
-this.waitingForRepaint = false;\r
-}}if (!this.backingStore || this.isBlitting () || this.getView () == null) {\r
-Clazz.superCall (this, javax.swing.JViewport, "paint", [g]);\r
-this.lastPaintPosition = this.getViewLocation ();\r
-return;\r
-}var viewBounds = this.getView ().getBounds ();\r
-if (!this.isOpaque ()) {\r
-g.clipRect (0, 0, viewBounds.width, viewBounds.height);\r
-}if (this.backingStoreImage == null) {\r
-this.backingStoreImage = this.createImage (width, height);\r
-var clip = g.getClipBounds ();\r
-if (clip.width != width || clip.height != height) {\r
-if (!this.isOpaque ()) {\r
-g.setClip (0, 0, Math.min (viewBounds.width, width), Math.min (viewBounds.height, height));\r
-} else {\r
-g.setClip (0, 0, width, height);\r
-}this.paintViaBackingStore (g, clip);\r
-} else {\r
-this.paintViaBackingStore (g);\r
-}} else {\r
-if (!this.scrollUnderway || this.lastPaintPosition.equals (this.getViewLocation ())) {\r
-this.paintViaBackingStore (g);\r
-} else {\r
-var blitFrom =  new java.awt.Point ();\r
-var blitTo =  new java.awt.Point ();\r
-var blitSize =  new java.awt.Dimension ();\r
-var blitPaint =  new java.awt.Rectangle ();\r
-var newLocation = this.getViewLocation ();\r
-var dx = newLocation.x - this.lastPaintPosition.x;\r
-var dy = newLocation.y - this.lastPaintPosition.y;\r
-var canBlit = this.computeBlit (dx, dy, blitFrom, blitTo, blitSize, blitPaint);\r
-if (!canBlit) {\r
-this.paintViaBackingStore (g);\r
-} else {\r
-var bdx = blitTo.x - blitFrom.x;\r
-var bdy = blitTo.y - blitFrom.y;\r
-var clip = g.getClipBounds ();\r
-g.setClip (0, 0, width, height);\r
-var bsg = this.getBackingStoreGraphics (g);\r
-try {\r
-bsg.copyArea (blitFrom.x, blitFrom.y, blitSize.width, blitSize.height, bdx, bdy);\r
-g.setClip (clip.x, clip.y, clip.width, clip.height);\r
-var r = viewBounds.intersection (blitPaint);\r
-bsg.setClip (r);\r
-Clazz.superCall (this, javax.swing.JViewport, "paint", [bsg]);\r
-g.drawImage (this.backingStoreImage, 0, 0, this);\r
-} finally {\r
-bsg.dispose ();\r
-}\r
-}}}this.lastPaintPosition = this.getViewLocation ();\r
-this.scrollUnderway = false;\r
-}, "java.awt.Graphics");\r
-Clazz.defineMethod (c$, "reshape", \r
-function (x, y, w, h) {\r
-var sizeChanged = (this.getWidth () != w) || (this.getHeight () != h);\r
-if (sizeChanged) {\r
-this.backingStoreImage = null;\r
-}Clazz.superCall (this, javax.swing.JViewport, "reshape", [x, y, w, h]);\r
-if (sizeChanged) {\r
-this.fireStateChanged ();\r
-}}, "~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "setScrollMode", \r
-function (mode) {\r
-this.scrollMode = mode;\r
-if (mode == 2) {\r
-this.backingStore = true;\r
-} else {\r
-this.backingStore = false;\r
-}}, "~N");\r
-Clazz.defineMethod (c$, "getScrollMode", \r
-function () {\r
-return this.scrollMode;\r
-});\r
-Clazz.defineMethod (c$, "isBackingStoreEnabled", \r
-function () {\r
-return this.scrollMode == 2;\r
-});\r
-Clazz.defineMethod (c$, "setBackingStoreEnabled", \r
-function (enabled) {\r
-if (enabled) {\r
-this.setScrollMode (2);\r
-} else {\r
-this.setScrollMode (1);\r
-}}, "~B");\r
-Clazz.defineMethod (c$, "isBlitting", \r
- function () {\r
-var view = this.getView ();\r
-return (this.scrollMode == 1) && (Clazz.instanceOf (view, javax.swing.JComponent)) && (view).isOpaque ();\r
-});\r
-Clazz.defineMethod (c$, "getView", \r
-function () {\r
-return (this.getComponentCount () > 0) ? this.getComponent (0) : null;\r
-});\r
-Clazz.defineMethod (c$, "setView", \r
-function (view) {\r
-var n = this.getComponentCount ();\r
-for (var i = n - 1; i >= 0; i--) {\r
-this.remove (this.getComponent (i));\r
-}\r
-this.isViewSizeSet = false;\r
-if (view != null) {\r
-this.addImplSAEM (view, null, -1);\r
-this.viewListener = this.createViewListener ();\r
-view.addComponentListener (this.viewListener);\r
-}if (this.hasHadValidView) {\r
-this.fireStateChanged ();\r
-} else if (view != null) {\r
-this.hasHadValidView = true;\r
-}this.revalidate ();\r
-this.repaint ();\r
-}, "java.awt.Component");\r
-Clazz.defineMethod (c$, "getViewSize", \r
-function () {\r
-var view = this.getView ();\r
-if (view == null) {\r
-return  new java.awt.Dimension (0, 0);\r
-} else if (this.isViewSizeSet) {\r
-return view.getSize ();\r
-} else {\r
-return view.getPreferredSize ();\r
-}});\r
-Clazz.defineMethod (c$, "setViewSize", \r
-function (newSize) {\r
-var view = this.getView ();\r
-if (view != null) {\r
-var oldSize = view.getSize ();\r
-if (!newSize.equals (oldSize)) {\r
-this.scrollUnderway = false;\r
-view.setSize (newSize);\r
-this.isViewSizeSet = true;\r
-this.fireStateChanged ();\r
-}}}, "java.awt.Dimension");\r
-Clazz.defineMethod (c$, "getViewPosition", \r
-function () {\r
-var view = this.getView ();\r
-if (view != null) {\r
-var p = view.getLocation ();\r
-p.x = -p.x;\r
-p.y = -p.y;\r
-return p;\r
-} else {\r
-return  new java.awt.Point (0, 0);\r
-}});\r
-Clazz.defineMethod (c$, "setViewPosition", \r
-function (p) {\r
-var view = this.getView ();\r
-if (view == null) {\r
-return;\r
-}var oldX;\r
-var oldY;\r
-var x = p.x;\r
-var y = p.y;\r
-if (Clazz.instanceOf (view, javax.swing.JComponent)) {\r
-var c = view;\r
-oldX = c.getX ();\r
-oldY = c.getY ();\r
-} else {\r
-var r = view.getBounds ();\r
-oldX = r.x;\r
-oldY = r.y;\r
-}var newX = -x;\r
-var newY = -y;\r
-if ((oldX != newX) || (oldY != newY)) {\r
-if (!this.waitingForRepaint && this.isBlitting () && this.canUseWindowBlitter ()) {\r
-var rm = javax.swing.RepaintManager.currentManager (this);\r
-var jview = view;\r
-var dirty = rm.getDirtyRegion (jview);\r
-if (dirty == null || !dirty.contains (jview.getVisibleRect ())) {\r
-rm.beginPaint ();\r
-try {\r
-var g = javax.swing.JComponent.safelyGetGraphics (this, javax.swing.SwingUtilities.getRoot (this));\r
-this.flushViewDirtyRegion (g, dirty);\r
-view.setLocation (newX, newY);\r
-g.setClip (0, 0, this.getWidth (), Math.min (this.getHeight (), jview.getHeight ()));\r
-this.repaintAll = (this.windowBlitPaint (g) && this.needsRepaintAfterBlit ());\r
-g.dispose ();\r
-rm.markCompletelyClean (this.getParent ());\r
-rm.markCompletelyClean (this);\r
-rm.markCompletelyClean (jview);\r
-} finally {\r
-rm.endPaint ();\r
-}\r
-} else {\r
-view.setLocation (newX, newY);\r
-this.repaintAll = false;\r
-}} else {\r
-this.scrollUnderway = true;\r
-view.setLocation (newX, newY);\r
-this.repaintAll = false;\r
-}this.fireStateChanged ();\r
-}}, "java.awt.Point");\r
-Clazz.defineMethod (c$, "getViewRect", \r
-function () {\r
-return  new java.awt.Rectangle (this.getViewPosition (), this.getExtentSize ());\r
-});\r
-Clazz.defineMethod (c$, "computeBlit", \r
-function (dx, dy, blitFrom, blitTo, blitSize, blitPaint) {\r
-var dxAbs = Math.abs (dx);\r
-var dyAbs = Math.abs (dy);\r
-var extentSize = this.getExtentSize ();\r
-if ((dx == 0) && (dy != 0) && (dyAbs < extentSize.height)) {\r
-if (dy < 0) {\r
-blitFrom.y = -dy;\r
-blitTo.y = 0;\r
-blitPaint.y = extentSize.height + dy;\r
-} else {\r
-blitFrom.y = 0;\r
-blitTo.y = dy;\r
-blitPaint.y = 0;\r
-}blitPaint.x = blitFrom.x = blitTo.x = 0;\r
-blitSize.width = extentSize.width;\r
-blitSize.height = extentSize.height - dyAbs;\r
-blitPaint.width = extentSize.width;\r
-blitPaint.height = dyAbs;\r
-return true;\r
-} else if ((dy == 0) && (dx != 0) && (dxAbs < extentSize.width)) {\r
-if (dx < 0) {\r
-blitFrom.x = -dx;\r
-blitTo.x = 0;\r
-blitPaint.x = extentSize.width + dx;\r
-} else {\r
-blitFrom.x = 0;\r
-blitTo.x = dx;\r
-blitPaint.x = 0;\r
-}blitPaint.y = blitFrom.y = blitTo.y = 0;\r
-blitSize.width = extentSize.width - dxAbs;\r
-blitSize.height = extentSize.height;\r
-blitPaint.width = dxAbs;\r
-blitPaint.height = extentSize.height;\r
-return true;\r
-} else {\r
-return false;\r
-}}, "~N,~N,java.awt.Point,java.awt.Point,java.awt.Dimension,java.awt.Rectangle");\r
-Clazz.defineMethod (c$, "getExtentSize", \r
-function () {\r
-return this.getSize ();\r
-});\r
-Clazz.defineMethod (c$, "toViewCoordinates", \r
-function (size) {\r
-return  new java.awt.Dimension (size);\r
-}, "java.awt.Dimension");\r
-Clazz.defineMethod (c$, "toViewCoordinates", \r
-function (p) {\r
-return  new java.awt.Point (p);\r
-}, "java.awt.Point");\r
-Clazz.defineMethod (c$, "setExtentSize", \r
-function (newExtent) {\r
-var oldExtent = this.getExtentSize ();\r
-if (!newExtent.equals (oldExtent)) {\r
-this.setSize (newExtent);\r
-this.fireStateChanged ();\r
-}}, "java.awt.Dimension");\r
-Clazz.defineMethod (c$, "createViewListener", \r
-function () {\r
-return Clazz.innerTypeInstance (javax.swing.JViewport.ViewListener, this, null);\r
-});\r
-Clazz.defineMethod (c$, "createLayoutManager", \r
-function () {\r
-return javax.swing.ViewportLayout.SHARED_INSTANCE;\r
-});\r
-Clazz.defineMethod (c$, "addChangeListener", \r
-function (l) {\r
-this.listenerList.add (javax.swing.event.ChangeListener, l);\r
-}, "javax.swing.event.ChangeListener");\r
-Clazz.defineMethod (c$, "removeChangeListener", \r
-function (l) {\r
-this.listenerList.remove (javax.swing.event.ChangeListener, l);\r
-}, "javax.swing.event.ChangeListener");\r
-Clazz.defineMethod (c$, "getChangeListeners", \r
-function () {\r
-return this.listenerList.getListeners (javax.swing.event.ChangeListener);\r
-});\r
-Clazz.defineMethod (c$, "fireStateChanged", \r
-function () {\r
-var listeners = this.listenerList.getListenerList ();\r
-for (var i = listeners.length - 2; i >= 0; i -= 2) {\r
-if (listeners[i] === javax.swing.event.ChangeListener) {\r
-if (this.changeEvent == null) {\r
-this.changeEvent =  new javax.swing.event.ChangeEvent (this);\r
-}(listeners[i + 1]).stateChanged (this.changeEvent);\r
-}}\r
-});\r
-Clazz.defineMethod (c$, "repaint", \r
-function (tm, x, y, w, h) {\r
-var parent = this.getParent ();\r
-if (parent != null) parent.repaint (tm, x + this.getX (), y + this.getY (), w, h);\r
- else Clazz.superCall (this, javax.swing.JViewport, "repaint", [tm, x, y, w, h]);\r
-}, "~N,~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "paramString", \r
-function () {\r
-var isViewSizeSetString = (this.isViewSizeSet ? "true" : "false");\r
-var lastPaintPositionString = (this.lastPaintPosition != null ? this.lastPaintPosition.toString () : "");\r
-var scrollUnderwayString = (this.scrollUnderway ? "true" : "false");\r
-return Clazz.superCall (this, javax.swing.JViewport, "paramString", []) + ",isViewSizeSet=" + isViewSizeSetString + ",lastPaintPosition=" + lastPaintPositionString + ",scrollUnderway=" + scrollUnderwayString;\r
-});\r
-Clazz.defineMethod (c$, "firePropertyChangeObject", \r
-function (propertyName, oldValue, newValue) {\r
-Clazz.superCall (this, javax.swing.JViewport, "firePropertyChangeObject", [propertyName, oldValue, newValue]);\r
-if (propertyName.equals (javax.swing.JViewport.EnableWindowBlit)) {\r
-if (newValue != null) {\r
-this.setScrollMode (1);\r
-} else {\r
-this.setScrollMode (0);\r
-}}}, "~S,~O,~O");\r
-Clazz.defineMethod (c$, "needsRepaintAfterBlit", \r
- function () {\r
-var heavyParent = this.getParent ();\r
-while (heavyParent != null && heavyParent.isLightweight ()) {\r
-heavyParent = heavyParent.getParent ();\r
-}\r
-if (heavyParent != null) {\r
-}return true;\r
-});\r
-Clazz.defineMethod (c$, "flushViewDirtyRegion", \r
- function (g, dirty) {\r
-var view = this.getView ();\r
-if (dirty != null && dirty.width > 0 && dirty.height > 0) {\r
-dirty.x += view.getX ();\r
-dirty.y += view.getY ();\r
-var clip = g.getClipBounds ();\r
-if (clip == null) {\r
-g.setClip (0, 0, this.getWidth (), this.getHeight ());\r
-}g.clipRect (dirty.x, dirty.y, dirty.width, dirty.height);\r
-clip = g.getClipBounds ();\r
-if (clip.width > 0 && clip.height > 0) {\r
-this.paintView (g);\r
-}}}, "java.awt.Graphics,java.awt.Rectangle");\r
-Clazz.defineMethod (c$, "windowBlitPaint", \r
- function (g) {\r
-var width = this.getWidth ();\r
-var height = this.getHeight ();\r
-if ((width == 0) || (height == 0)) {\r
-return false;\r
-}var retValue;\r
-var rm = javax.swing.RepaintManager.currentManager (this);\r
-var view = this.getView ();\r
-if (this.lastPaintPosition == null || this.lastPaintPosition.equals (this.getViewLocation ())) {\r
-this.paintView (g);\r
-retValue = false;\r
-} else {\r
-var blitFrom =  new java.awt.Point ();\r
-var blitTo =  new java.awt.Point ();\r
-var blitSize =  new java.awt.Dimension ();\r
-var blitPaint =  new java.awt.Rectangle ();\r
-var newLocation = this.getViewLocation ();\r
-var dx = newLocation.x - this.lastPaintPosition.x;\r
-var dy = newLocation.y - this.lastPaintPosition.y;\r
-var canBlit = this.computeBlit (dx, dy, blitFrom, blitTo, blitSize, blitPaint);\r
-if (!canBlit) {\r
-this.paintView (g);\r
-retValue = false;\r
-} else {\r
-var r = view.getBounds ().intersection (blitPaint);\r
-r.x -= view.getX ();\r
-r.y -= view.getY ();\r
-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
-retValue = true;\r
-}}this.lastPaintPosition = this.getViewLocation ();\r
-return retValue;\r
-}, "java.awt.Graphics");\r
-Clazz.defineMethod (c$, "blitDoubleBuffered", \r
- function (view, g, clipX, clipY, clipW, clipH, blitFromX, blitFromY, blitToX, blitToY, blitW, blitH) {\r
-var rm = javax.swing.RepaintManager.currentManager (this);\r
-var bdx = blitToX - blitFromX;\r
-var bdy = blitToY - blitFromY;\r
-var x = view.getX ();\r
-var y = view.getY ();\r
-g.translate (x, y);\r
-g.setClip (clipX, clipY, clipW, clipH);\r
-view.paintForceDoubleBuffered (g);\r
-g.translate (-x, -y);\r
-}, "javax.swing.JComponent,java.awt.Graphics,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "paintView", \r
- function (g) {\r
-var clip = g.getClipBounds ();\r
-var view = this.getView ();\r
-if (view.getWidth () >= this.getWidth ()) {\r
-var x = view.getX ();\r
-var y = view.getY ();\r
-g.translate (x, y);\r
-g.setClip (clip.x - x, clip.y - y, clip.width, clip.height);\r
-view.paintForceDoubleBuffered (g);\r
-g.translate (-x, -y);\r
-g.setClip (clip.x, clip.y, clip.width, clip.height);\r
-} else {\r
-try {\r
-this.inBlitPaint = true;\r
-this.paintForceDoubleBuffered (g);\r
-} finally {\r
-this.inBlitPaint = false;\r
-}\r
-}}, "java.awt.Graphics");\r
-Clazz.defineMethod (c$, "canUseWindowBlitter", \r
- function () {\r
-if (!this.isShowing () || (!(Clazz.instanceOf (this.getParent (), javax.swing.JComponent)) && !(Clazz.instanceOf (this.getView (), javax.swing.JComponent)))) {\r
-return false;\r
-}if (this.isPainting ()) {\r
-return false;\r
-}var dirtyRegion = javax.swing.RepaintManager.currentManager (this).getDirtyRegion (this.getParent ());\r
-if (dirtyRegion != null && dirtyRegion.width > 0 && dirtyRegion.height > 0) {\r
-return false;\r
-}var clip =  new java.awt.Rectangle (0, 0, this.getWidth (), this.getHeight ());\r
-var oldClip =  new java.awt.Rectangle ();\r
-var tmp2 = null;\r
-var parent;\r
-var lastParent = null;\r
-var x;\r
-var y;\r
-var w;\r
-var h;\r
-for (parent = this; parent != null && javax.swing.JComponent.isLightweightComponent (parent); parent = parent.getParent ()) {\r
-x = parent.getX ();\r
-y = parent.getY ();\r
-w = parent.getWidth ();\r
-h = parent.getHeight ();\r
-oldClip.setBounds (clip);\r
-javax.swing.SwingUtilities.computeIntersection (0, 0, w, h, clip);\r
-if (!clip.equals (oldClip)) return false;\r
-if (lastParent != null && Clazz.instanceOf (parent, javax.swing.JComponent) && !(parent).isOptimizedDrawingEnabled ()) {\r
-var comps = parent.getComponents ();\r
-var index = 0;\r
-for (var i = comps.length - 1; i >= 0; i--) {\r
-if (comps[i] === lastParent) {\r
-index = i - 1;\r
-break;\r
-}}\r
-while (index >= 0) {\r
-tmp2 = comps[index].getBounds (tmp2);\r
-if (tmp2.intersects (clip)) return false;\r
-index--;\r
-}\r
-}clip.x += x;\r
-clip.y += y;\r
-lastParent = parent;\r
-}\r
-if (parent == null) {\r
-return false;\r
-}return true;\r
-});\r
-c$.$JViewport$ViewListener$ = function () {\r
-Clazz.pu$h(self.c$);\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-Clazz.instantialize (this, arguments);\r
-}, javax.swing.JViewport, "ViewListener", java.awt.event.ComponentAdapter);\r
-Clazz.overrideMethod (c$, "componentResized", \r
-function (a) {\r
-this.b$["javax.swing.JViewport"].fireStateChanged ();\r
-this.b$["javax.swing.JViewport"].revalidate ();\r
-}, "java.awt.event.ComponentEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-Clazz.defineStatics (c$,\r
-"$uiClassID", "ViewportUI",\r
-"EnableWindowBlit", "EnableWindowBlit",\r
-"BLIT_SCROLL_MODE", 1,\r
-"BACKINGSTORE_SCROLL_MODE", 2,\r
-"SIMPLE_SCROLL_MODE", 0);\r
-});\r
+Clazz.declarePackage ("javax.swing");
+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 () {
+c$ = Clazz.decorateAsClass (function () {
+this.isViewSizeSet = false;
+this.lastPaintPosition = null;
+this.backingStore = false;
+this.backingStoreImage = null;
+this.scrollUnderway = false;
+this.viewListener = null;
+this.changeEvent = null;
+this.scrollMode = 1;
+this.repaintAll = false;
+this.waitingForRepaint = false;
+this.inBlitPaint = false;
+this.hasHadValidView = false;
+if (!Clazz.isClassDefined ("javax.swing.JViewport.ViewListener")) {
+javax.swing.JViewport.$JViewport$ViewListener$ ();
+}
+Clazz.instantialize (this, arguments);
+}, javax.swing, "JViewport", javax.swing.JComponent);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, javax.swing.JViewport);
+this.setLayout (this.createLayoutManager ());
+this.setOpaque (true);
+this.updateUI ();
+this.setInheritsPopupMenu (true);
+});
+Clazz.overrideMethod (c$, "getUI", 
+function () {
+return this.ui;
+});
+Clazz.overrideMethod (c$, "updateUI", 
+function () {
+this.setUI (javax.swing.UIManager.getUI (this));
+});
+Clazz.overrideMethod (c$, "getUIClassID", 
+function () {
+return "ViewportUI";
+});
+Clazz.overrideMethod (c$, "addImpl", 
+function (child, constraints, index) {
+this.setView (child);
+return child;
+}, "java.awt.Component,~O,~N");
+Clazz.defineMethod (c$, "remove", 
+function (child) {
+child.removeComponentListener (this.viewListener);
+this.removeChild (child);
+}, "java.awt.Component");
+Clazz.overrideMethod (c$, "scrollRectToVisible", 
+function (contentRect) {
+var view = this.getView ();
+if (view == null) {
+return;
+} else {
+if (!view.isValid ()) {
+this.validateView ();
+}var dx = 0;
+var dy = 0;
+dx = this.positionAdjustment (this.getWidth (), contentRect.width, contentRect.x);
+dy = this.positionAdjustment (this.getHeight (), contentRect.height, contentRect.y);
+if (dx != 0 || dy != 0) {
+var viewPosition = this.getViewPosition ();
+var viewSize = view.getSize ();
+var startX = viewPosition.x;
+var startY = viewPosition.y;
+var extent = this.getExtentSize ();
+viewPosition.x -= dx;
+viewPosition.y -= dy;
+if (view.isValid ()) {
+if (this.getParent ().getComponentOrientation ().isLeftToRight ()) {
+if (viewPosition.x + extent.width > viewSize.width) {
+viewPosition.x = Math.max (0, viewSize.width - extent.width);
+} else if (viewPosition.x < 0) {
+viewPosition.x = 0;
+}} else {
+if (extent.width > viewSize.width) {
+viewPosition.x = viewSize.width - extent.width;
+} else {
+viewPosition.x = Math.max (0, Math.min (viewSize.width - extent.width, viewPosition.x));
+}}if (viewPosition.y + extent.height > viewSize.height) {
+viewPosition.y = Math.max (0, viewSize.height - extent.height);
+} else if (viewPosition.y < 0) {
+viewPosition.y = 0;
+}}if (viewPosition.x != startX || viewPosition.y != startY) {
+this.setViewPosition (viewPosition);
+this.scrollUnderway = false;
+}}}}, "java.awt.Rectangle");
+Clazz.defineMethod (c$, "validateView", 
+ function () {
+var validateRoot = null;
+for (var c = this; c != null; c = c.getParent ()) {
+if ((Clazz.instanceOf (c, javax.swing.CellRendererPane)) || !c.isLightweight ()) {
+return;
+}if ((Clazz.instanceOf (c, javax.swing.JComponent)) && ((c).isValidateRoot ())) {
+validateRoot = c;
+break;
+}}
+if (validateRoot == null) {
+return;
+}var root = null;
+for (var c = validateRoot; c != null; c = c.getParent ()) {
+if (!c.isLightweight ()) {
+return;
+}if ((Clazz.instanceOf (c, java.awt.Window)) || (Clazz.instanceOf (c, java.applet.Applet))) {
+root = c;
+break;
+}}
+if (root == null) {
+return;
+}validateRoot.validate ();
+var rm = javax.swing.RepaintManager.currentManager (this);
+if (rm != null) {
+rm.removeInvalidComponent (validateRoot);
+}});
+Clazz.defineMethod (c$, "positionAdjustment", 
+ function (parentWidth, childWidth, childAt) {
+if (childAt >= 0 && childWidth + childAt <= parentWidth) {
+return 0;
+}if (childAt <= 0 && childWidth + childAt >= parentWidth) {
+return 0;
+}if (childAt > 0 && childWidth <= parentWidth) {
+return -childAt + parentWidth - childWidth;
+}if (childAt >= 0 && childWidth >= parentWidth) {
+return -childAt;
+}if (childAt <= 0 && childWidth <= parentWidth) {
+return -childAt;
+}if (childAt < 0 && childWidth >= parentWidth) {
+return -childAt + parentWidth - childWidth;
+}return 0;
+}, "~N,~N,~N");
+Clazz.overrideMethod (c$, "setBorder", 
+function (border) {
+if (border != null) {
+throw  new IllegalArgumentException ("JViewport.setBorder() not supported");
+}}, "javax.swing.border.Border");
+Clazz.defineMethod (c$, "getInsets", 
+function () {
+return  new java.awt.Insets (0, 0, 0, 0);
+});
+Clazz.defineMethod (c$, "getInsets", 
+function (insets) {
+insets.left = insets.top = insets.right = insets.bottom = 0;
+return insets;
+}, "java.awt.Insets");
+Clazz.defineMethod (c$, "getBackingStoreGraphics", 
+ function (g) {
+var bsg = this.backingStoreImage.getGraphics ();
+bsg.setColor (g.getColor ());
+bsg.setFont (g.getFont ());
+bsg.setClip (g.getClipBounds ());
+return bsg;
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "paintViaBackingStore", 
+ function (g) {
+var bsg = this.getBackingStoreGraphics (g);
+try {
+Clazz.superCall (this, javax.swing.JViewport, "paint", [bsg]);
+g.drawImage (this.backingStoreImage, 0, 0, this);
+} finally {
+bsg.dispose ();
+}
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "paintViaBackingStore", 
+ function (g, oClip) {
+var bsg = this.getBackingStoreGraphics (g);
+try {
+Clazz.superCall (this, javax.swing.JViewport, "paint", [bsg]);
+g.setClip (oClip);
+g.drawImage (this.backingStoreImage, 0, 0, this);
+} finally {
+bsg.dispose ();
+}
+}, "java.awt.Graphics,java.awt.Rectangle");
+Clazz.defineMethod (c$, "isOptimizedDrawingEnabled", 
+function () {
+return false;
+});
+Clazz.overrideMethod (c$, "isPaintingOrigin", 
+function () {
+if (this.scrollMode == 2) {
+return true;
+}return false;
+});
+Clazz.defineMethod (c$, "getViewLocation", 
+ function () {
+var view = this.getView ();
+if (view != null) {
+return view.getLocation ();
+} else {
+return  new java.awt.Point (0, 0);
+}});
+Clazz.defineMethod (c$, "paint", 
+function (g) {
+var width = this.getWidth ();
+var height = this.getHeight ();
+if ((width <= 0) || (height <= 0)) {
+return;
+}if (this.inBlitPaint) {
+Clazz.superCall (this, javax.swing.JViewport, "paint", [g]);
+return;
+}if (this.repaintAll) {
+this.repaintAll = false;
+var clipB = g.getClipBounds ();
+} else if (this.waitingForRepaint) {
+var clipB = g.getClipBounds ();
+if (clipB.width >= this.getWidth () && clipB.height >= this.getHeight ()) {
+this.waitingForRepaint = false;
+}}if (!this.backingStore || this.isBlitting () || this.getView () == null) {
+Clazz.superCall (this, javax.swing.JViewport, "paint", [g]);
+this.lastPaintPosition = this.getViewLocation ();
+return;
+}var viewBounds = this.getView ().getBounds ();
+if (!this.isOpaque ()) {
+g.clipRect (0, 0, viewBounds.width, viewBounds.height);
+}if (this.backingStoreImage == null) {
+this.backingStoreImage = this.createImage (width, height);
+var clip = g.getClipBounds ();
+if (clip.width != width || clip.height != height) {
+if (!this.isOpaque ()) {
+g.setClip (0, 0, Math.min (viewBounds.width, width), Math.min (viewBounds.height, height));
+} else {
+g.setClip (0, 0, width, height);
+}this.paintViaBackingStore (g, clip);
+} else {
+this.paintViaBackingStore (g);
+}} else {
+if (!this.scrollUnderway || this.lastPaintPosition.equals (this.getViewLocation ())) {
+this.paintViaBackingStore (g);
+} else {
+var blitFrom =  new java.awt.Point ();
+var blitTo =  new java.awt.Point ();
+var blitSize =  new java.awt.Dimension ();
+var blitPaint =  new java.awt.Rectangle ();
+var newLocation = this.getViewLocation ();
+var dx = newLocation.x - this.lastPaintPosition.x;
+var dy = newLocation.y - this.lastPaintPosition.y;
+var canBlit = this.computeBlit (dx, dy, blitFrom, blitTo, blitSize, blitPaint);
+if (!canBlit) {
+this.paintViaBackingStore (g);
+} else {
+var bdx = blitTo.x - blitFrom.x;
+var bdy = blitTo.y - blitFrom.y;
+var clip = g.getClipBounds ();
+g.setClip (0, 0, width, height);
+var bsg = this.getBackingStoreGraphics (g);
+try {
+bsg.copyArea (blitFrom.x, blitFrom.y, blitSize.width, blitSize.height, bdx, bdy);
+g.setClip (clip.x, clip.y, clip.width, clip.height);
+var r = viewBounds.intersection (blitPaint);
+bsg.setClip (r);
+Clazz.superCall (this, javax.swing.JViewport, "paint", [bsg]);
+g.drawImage (this.backingStoreImage, 0, 0, this);
+} finally {
+bsg.dispose ();
+}
+}}}this.lastPaintPosition = this.getViewLocation ();
+this.scrollUnderway = false;
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "reshape", 
+function (x, y, w, h) {
+var sizeChanged = (this.getWidth () != w) || (this.getHeight () != h);
+if (sizeChanged) {
+this.backingStoreImage = null;
+}Clazz.superCall (this, javax.swing.JViewport, "reshape", [x, y, w, h]);
+if (sizeChanged) {
+this.fireStateChanged ();
+}}, "~N,~N,~N,~N");
+Clazz.defineMethod (c$, "setScrollMode", 
+function (mode) {
+this.scrollMode = mode;
+if (mode == 2) {
+this.backingStore = true;
+} else {
+this.backingStore = false;
+}}, "~N");
+Clazz.defineMethod (c$, "getScrollMode", 
+function () {
+return this.scrollMode;
+});
+Clazz.defineMethod (c$, "isBackingStoreEnabled", 
+function () {
+return this.scrollMode == 2;
+});
+Clazz.defineMethod (c$, "setBackingStoreEnabled", 
+function (enabled) {
+if (enabled) {
+this.setScrollMode (2);
+} else {
+this.setScrollMode (1);
+}}, "~B");
+Clazz.defineMethod (c$, "isBlitting", 
+ function () {
+var view = this.getView ();
+return (this.scrollMode == 1) && (Clazz.instanceOf (view, javax.swing.JComponent)) && (view).isOpaque ();
+});
+Clazz.defineMethod (c$, "getView", 
+function () {
+return (this.getComponentCount () > 0) ? this.getComponent (0) : null;
+});
+Clazz.defineMethod (c$, "setView", 
+function (view) {
+var n = this.getComponentCount ();
+for (var i = n - 1; i >= 0; i--) {
+this.remove (this.getComponent (i));
+}
+this.isViewSizeSet = false;
+if (view != null) {
+this.addImplSAEM (view, null, -1);
+this.viewListener = this.createViewListener ();
+view.addComponentListener (this.viewListener);
+}if (this.hasHadValidView) {
+this.fireStateChanged ();
+} else if (view != null) {
+this.hasHadValidView = true;
+}this.revalidate ();
+this.repaint ();
+}, "java.awt.Component");
+Clazz.defineMethod (c$, "getViewSize", 
+function () {
+var view = this.getView ();
+if (view == null) {
+return  new java.awt.Dimension (0, 0);
+} else if (this.isViewSizeSet) {
+return view.getSize ();
+} else {
+return view.getPreferredSize ();
+}});
+Clazz.defineMethod (c$, "setViewSize", 
+function (newSize) {
+var view = this.getView ();
+if (view != null) {
+var oldSize = view.getSize ();
+if (!newSize.equals (oldSize)) {
+this.scrollUnderway = false;
+view.setSize (newSize);
+this.isViewSizeSet = true;
+this.fireStateChanged ();
+}}}, "java.awt.Dimension");
+Clazz.defineMethod (c$, "getViewPosition", 
+function () {
+var view = this.getView ();
+if (view != null) {
+var p = view.getLocation ();
+p.x = -p.x;
+p.y = -p.y;
+return p;
+} else {
+return  new java.awt.Point (0, 0);
+}});
+Clazz.defineMethod (c$, "setViewPosition", 
+function (p) {
+var view = this.getView ();
+if (view == null) {
+return;
+}var oldX;
+var oldY;
+var x = p.x;
+var y = p.y;
+if (Clazz.instanceOf (view, javax.swing.JComponent)) {
+var c = view;
+oldX = c.getX ();
+oldY = c.getY ();
+} else {
+var r = view.getBounds ();
+oldX = r.x;
+oldY = r.y;
+}var newX = -x;
+var newY = -y;
+if ((oldX != newX) || (oldY != newY)) {
+if (!this.waitingForRepaint && this.isBlitting () && this.canUseWindowBlitter ()) {
+var rm = javax.swing.RepaintManager.currentManager (this);
+var jview = view;
+var dirty = rm.getDirtyRegion (jview);
+if (dirty == null || !dirty.contains (jview.getVisibleRect ())) {
+rm.beginPaint ();
+try {
+var g = javax.swing.JComponent.safelyGetGraphics (this, javax.swing.SwingUtilities.getRoot (this));
+this.flushViewDirtyRegion (g, dirty);
+view.setLocation (newX, newY);
+g.setClip (0, 0, this.getWidth (), Math.min (this.getHeight (), jview.getHeight ()));
+this.repaintAll = (this.windowBlitPaint (g) && this.needsRepaintAfterBlit ());
+g.dispose ();
+rm.markCompletelyClean (this.getParent ());
+rm.markCompletelyClean (this);
+rm.markCompletelyClean (jview);
+} finally {
+rm.endPaint ();
+}
+} else {
+view.setLocation (newX, newY);
+this.repaintAll = false;
+}} else {
+this.scrollUnderway = true;
+view.setLocation (newX, newY);
+this.repaintAll = false;
+}this.fireStateChanged ();
+}}, "java.awt.Point");
+Clazz.defineMethod (c$, "getViewRect", 
+function () {
+return  new java.awt.Rectangle (this.getViewPosition (), this.getExtentSize ());
+});
+Clazz.defineMethod (c$, "computeBlit", 
+function (dx, dy, blitFrom, blitTo, blitSize, blitPaint) {
+var dxAbs = Math.abs (dx);
+var dyAbs = Math.abs (dy);
+var extentSize = this.getExtentSize ();
+if ((dx == 0) && (dy != 0) && (dyAbs < extentSize.height)) {
+if (dy < 0) {
+blitFrom.y = -dy;
+blitTo.y = 0;
+blitPaint.y = extentSize.height + dy;
+} else {
+blitFrom.y = 0;
+blitTo.y = dy;
+blitPaint.y = 0;
+}blitPaint.x = blitFrom.x = blitTo.x = 0;
+blitSize.width = extentSize.width;
+blitSize.height = extentSize.height - dyAbs;
+blitPaint.width = extentSize.width;
+blitPaint.height = dyAbs;
+return true;
+} else if ((dy == 0) && (dx != 0) && (dxAbs < extentSize.width)) {
+if (dx < 0) {
+blitFrom.x = -dx;
+blitTo.x = 0;
+blitPaint.x = extentSize.width + dx;
+} else {
+blitFrom.x = 0;
+blitTo.x = dx;
+blitPaint.x = 0;
+}blitPaint.y = blitFrom.y = blitTo.y = 0;
+blitSize.width = extentSize.width - dxAbs;
+blitSize.height = extentSize.height;
+blitPaint.width = dxAbs;
+blitPaint.height = extentSize.height;
+return true;
+} else {
+return false;
+}}, "~N,~N,java.awt.Point,java.awt.Point,java.awt.Dimension,java.awt.Rectangle");
+Clazz.defineMethod (c$, "getExtentSize", 
+function () {
+return this.getSize ();
+});
+Clazz.defineMethod (c$, "toViewCoordinates", 
+function (size) {
+return  new java.awt.Dimension (size);
+}, "java.awt.Dimension");
+Clazz.defineMethod (c$, "toViewCoordinates", 
+function (p) {
+return  new java.awt.Point (p);
+}, "java.awt.Point");
+Clazz.defineMethod (c$, "setExtentSize", 
+function (newExtent) {
+var oldExtent = this.getExtentSize ();
+if (!newExtent.equals (oldExtent)) {
+this.setSize (newExtent);
+this.fireStateChanged ();
+}}, "java.awt.Dimension");
+Clazz.defineMethod (c$, "createViewListener", 
+function () {
+return Clazz.innerTypeInstance (javax.swing.JViewport.ViewListener, this, null);
+});
+Clazz.defineMethod (c$, "createLayoutManager", 
+function () {
+return javax.swing.ViewportLayout.SHARED_INSTANCE;
+});
+Clazz.defineMethod (c$, "addChangeListener", 
+function (l) {
+this.listenerList.add (javax.swing.event.ChangeListener, l);
+}, "javax.swing.event.ChangeListener");
+Clazz.defineMethod (c$, "removeChangeListener", 
+function (l) {
+this.listenerList.remove (javax.swing.event.ChangeListener, l);
+}, "javax.swing.event.ChangeListener");
+Clazz.defineMethod (c$, "getChangeListeners", 
+function () {
+return this.listenerList.getListeners (javax.swing.event.ChangeListener);
+});
+Clazz.defineMethod (c$, "fireStateChanged", 
+function () {
+var listeners = this.listenerList.getListenerList ();
+for (var i = listeners.length - 2; i >= 0; i -= 2) {
+if (listeners[i] === javax.swing.event.ChangeListener) {
+if (this.changeEvent == null) {
+this.changeEvent =  new javax.swing.event.ChangeEvent (this);
+}(listeners[i + 1]).stateChanged (this.changeEvent);
+}}
+});
+Clazz.defineMethod (c$, "repaint", 
+function (tm, x, y, w, h) {
+var parent = this.getParent ();
+if (parent != null) parent.repaint (tm, x + this.getX (), y + this.getY (), w, h);
+ else Clazz.superCall (this, javax.swing.JViewport, "repaint", [tm, x, y, w, h]);
+}, "~N,~N,~N,~N,~N");
+Clazz.defineMethod (c$, "paramString", 
+function () {
+var isViewSizeSetString = (this.isViewSizeSet ? "true" : "false");
+var lastPaintPositionString = (this.lastPaintPosition != null ? this.lastPaintPosition.toString () : "");
+var scrollUnderwayString = (this.scrollUnderway ? "true" : "false");
+return Clazz.superCall (this, javax.swing.JViewport, "paramString", []) + ",isViewSizeSet=" + isViewSizeSetString + ",lastPaintPosition=" + lastPaintPositionString + ",scrollUnderway=" + scrollUnderwayString;
+});
+Clazz.defineMethod (c$, "firePropertyChangeObject", 
+function (propertyName, oldValue, newValue) {
+Clazz.superCall (this, javax.swing.JViewport, "firePropertyChangeObject", [propertyName, oldValue, newValue]);
+if (propertyName.equals (javax.swing.JViewport.EnableWindowBlit)) {
+if (newValue != null) {
+this.setScrollMode (1);
+} else {
+this.setScrollMode (0);
+}}}, "~S,~O,~O");
+Clazz.defineMethod (c$, "needsRepaintAfterBlit", 
+ function () {
+var heavyParent = this.getParent ();
+while (heavyParent != null && heavyParent.isLightweight ()) {
+heavyParent = heavyParent.getParent ();
+}
+if (heavyParent != null) {
+}return true;
+});
+Clazz.defineMethod (c$, "flushViewDirtyRegion", 
+ function (g, dirty) {
+var view = this.getView ();
+if (dirty != null && dirty.width > 0 && dirty.height > 0) {
+dirty.x += view.getX ();
+dirty.y += view.getY ();
+var clip = g.getClipBounds ();
+if (clip == null) {
+g.setClip (0, 0, this.getWidth (), this.getHeight ());
+}g.clipRect (dirty.x, dirty.y, dirty.width, dirty.height);
+clip = g.getClipBounds ();
+if (clip.width > 0 && clip.height > 0) {
+this.paintView (g);
+}}}, "java.awt.Graphics,java.awt.Rectangle");
+Clazz.defineMethod (c$, "windowBlitPaint", 
+ function (g) {
+var width = this.getWidth ();
+var height = this.getHeight ();
+if ((width == 0) || (height == 0)) {
+return false;
+}var retValue;
+var rm = javax.swing.RepaintManager.currentManager (this);
+var view = this.getView ();
+if (this.lastPaintPosition == null || this.lastPaintPosition.equals (this.getViewLocation ())) {
+this.paintView (g);
+retValue = false;
+} else {
+var blitFrom =  new java.awt.Point ();
+var blitTo =  new java.awt.Point ();
+var blitSize =  new java.awt.Dimension ();
+var blitPaint =  new java.awt.Rectangle ();
+var newLocation = this.getViewLocation ();
+var dx = newLocation.x - this.lastPaintPosition.x;
+var dy = newLocation.y - this.lastPaintPosition.y;
+var canBlit = this.computeBlit (dx, dy, blitFrom, blitTo, blitSize, blitPaint);
+if (!canBlit) {
+this.paintView (g);
+retValue = false;
+} else {
+var r = view.getBounds ().intersection (blitPaint);
+r.x -= view.getX ();
+r.y -= view.getY ();
+this.blitDoubleBuffered (view, g, r.x, r.y, r.width, r.height, blitFrom.x, blitFrom.y, blitTo.x, blitTo.y, blitSize.width, blitSize.height);
+retValue = true;
+}}this.lastPaintPosition = this.getViewLocation ();
+return retValue;
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "blitDoubleBuffered", 
+ function (view, g, clipX, clipY, clipW, clipH, blitFromX, blitFromY, blitToX, blitToY, blitW, blitH) {
+var rm = javax.swing.RepaintManager.currentManager (this);
+var bdx = blitToX - blitFromX;
+var bdy = blitToY - blitFromY;
+var x = view.getX ();
+var y = view.getY ();
+g.translate (x, y);
+g.setClip (clipX, clipY, clipW, clipH);
+view.paintForceDoubleBuffered (g);
+g.translate (-x, -y);
+}, "javax.swing.JComponent,java.awt.Graphics,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N");
+Clazz.defineMethod (c$, "paintView", 
+ function (g) {
+var clip = g.getClipBounds ();
+var view = this.getView ();
+if (view.getWidth () >= this.getWidth ()) {
+var x = view.getX ();
+var y = view.getY ();
+g.translate (x, y);
+g.setClip (clip.x - x, clip.y - y, clip.width, clip.height);
+view.paintForceDoubleBuffered (g);
+g.translate (-x, -y);
+g.setClip (clip.x, clip.y, clip.width, clip.height);
+} else {
+try {
+this.inBlitPaint = true;
+this.paintForceDoubleBuffered (g);
+} finally {
+this.inBlitPaint = false;
+}
+}}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "canUseWindowBlitter", 
+ function () {
+if (!this.isShowing () || (!(Clazz.instanceOf (this.getParent (), javax.swing.JComponent)) && !(Clazz.instanceOf (this.getView (), javax.swing.JComponent)))) {
+return false;
+}if (this.isPainting ()) {
+return false;
+}var dirtyRegion = javax.swing.RepaintManager.currentManager (this).getDirtyRegion (this.getParent ());
+if (dirtyRegion != null && dirtyRegion.width > 0 && dirtyRegion.height > 0) {
+return false;
+}var clip =  new java.awt.Rectangle (0, 0, this.getWidth (), this.getHeight ());
+var oldClip =  new java.awt.Rectangle ();
+var tmp2 = null;
+var parent;
+var lastParent = null;
+var x;
+var y;
+var w;
+var h;
+for (parent = this; parent != null && javax.swing.JComponent.isLightweightComponent (parent); parent = parent.getParent ()) {
+x = parent.getX ();
+y = parent.getY ();
+w = parent.getWidth ();
+h = parent.getHeight ();
+oldClip.setBounds (clip);
+javax.swing.SwingUtilities.computeIntersection (0, 0, w, h, clip);
+if (!clip.equals (oldClip)) return false;
+if (lastParent != null && Clazz.instanceOf (parent, javax.swing.JComponent) && !(parent).isOptimizedDrawingEnabled ()) {
+var comps = parent.getComponents ();
+var index = 0;
+for (var i = comps.length - 1; i >= 0; i--) {
+if (comps[i] === lastParent) {
+index = i - 1;
+break;
+}}
+while (index >= 0) {
+tmp2 = comps[index].getBounds (tmp2);
+if (tmp2.intersects (clip)) return false;
+index--;
+}
+}clip.x += x;
+clip.y += y;
+lastParent = parent;
+}
+if (parent == null) {
+return false;
+}return true;
+});
+c$.$JViewport$ViewListener$ = function () {
+Clazz.pu$h(self.c$);
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+Clazz.instantialize (this, arguments);
+}, javax.swing.JViewport, "ViewListener", java.awt.event.ComponentAdapter);
+Clazz.overrideMethod (c$, "componentResized", 
+function (a) {
+this.b$["javax.swing.JViewport"].fireStateChanged ();
+this.b$["javax.swing.JViewport"].revalidate ();
+}, "java.awt.event.ComponentEvent");
+c$ = Clazz.p0p ();
+};
+Clazz.defineStatics (c$,
+"$uiClassID", "ViewportUI",
+"EnableWindowBlit", "EnableWindowBlit",
+"BLIT_SCROLL_MODE", 1,
+"BACKINGSTORE_SCROLL_MODE", 2,
+"SIMPLE_SCROLL_MODE", 0);
+});