Merge branch 'master' of https://source.jalview.org/git/jalviewjs.git
[jalviewjs.git] / site / j2s / javax / swing / ScrollPaneLayout.js
index 2d166c9..ae68080 100644 (file)
-Clazz.declarePackage ("javax.swing");\r
-Clazz.load (["java.awt.LayoutManager", "javax.swing.ScrollPaneConstants", "javax.swing.plaf.UIResource"], "javax.swing.ScrollPaneLayout", ["java.lang.IllegalArgumentException", "java.awt.Dimension", "$.Insets", "$.Rectangle", "javax.swing.Scrollable", "$.SwingUtilities", "$.UIManager"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.viewport = null;\r
-this.vsb = null;\r
-this.hsb = null;\r
-this.rowHead = null;\r
-this.colHead = null;\r
-this.lowerLeft = null;\r
-this.lowerRight = null;\r
-this.upperLeft = null;\r
-this.upperRight = null;\r
-this.vsbPolicy = 20;\r
-this.hsbPolicy = 30;\r
-Clazz.instantialize (this, arguments);\r
-}, javax.swing, "ScrollPaneLayout", null, [java.awt.LayoutManager, javax.swing.ScrollPaneConstants]);\r
-Clazz.defineMethod (c$, "syncWithScrollPane", \r
-function (sp) {\r
-this.viewport = sp.getViewport ();\r
-this.vsb = sp.getVerticalScrollBar ();\r
-this.hsb = sp.getHorizontalScrollBar ();\r
-this.rowHead = sp.getRowHeader ();\r
-this.colHead = sp.getColumnHeader ();\r
-this.lowerLeft = sp.getCorner ("LOWER_LEFT_CORNER");\r
-this.lowerRight = sp.getCorner ("LOWER_RIGHT_CORNER");\r
-this.upperLeft = sp.getCorner ("UPPER_LEFT_CORNER");\r
-this.upperRight = sp.getCorner ("UPPER_RIGHT_CORNER");\r
-this.vsbPolicy = sp.getVerticalScrollBarPolicy ();\r
-this.hsbPolicy = sp.getHorizontalScrollBarPolicy ();\r
-}, "javax.swing.JScrollPane");\r
-Clazz.defineMethod (c$, "addSingletonComponent", \r
-function (oldC, newC) {\r
-if ((oldC != null) && (oldC !== newC)) {\r
-oldC.getParent ().remove (oldC);\r
-}return newC;\r
-}, "java.awt.Component,java.awt.Component");\r
-Clazz.overrideMethod (c$, "addLayoutComponent", \r
-function (s, c) {\r
-if (s.equals ("VIEWPORT")) {\r
-this.viewport = this.addSingletonComponent (this.viewport, c);\r
-} else if (s.equals ("VERTICAL_SCROLLBAR")) {\r
-this.vsb = this.addSingletonComponent (this.vsb, c);\r
-} else if (s.equals ("HORIZONTAL_SCROLLBAR")) {\r
-this.hsb = this.addSingletonComponent (this.hsb, c);\r
-} else if (s.equals ("ROW_HEADER")) {\r
-this.rowHead = this.addSingletonComponent (this.rowHead, c);\r
-} else if (s.equals ("COLUMN_HEADER")) {\r
-this.colHead = this.addSingletonComponent (this.colHead, c);\r
-} else if (s.equals ("LOWER_LEFT_CORNER")) {\r
-this.lowerLeft = this.addSingletonComponent (this.lowerLeft, c);\r
-} else if (s.equals ("LOWER_RIGHT_CORNER")) {\r
-this.lowerRight = this.addSingletonComponent (this.lowerRight, c);\r
-} else if (s.equals ("UPPER_LEFT_CORNER")) {\r
-this.upperLeft = this.addSingletonComponent (this.upperLeft, c);\r
-} else if (s.equals ("UPPER_RIGHT_CORNER")) {\r
-this.upperRight = this.addSingletonComponent (this.upperRight, c);\r
-} else {\r
-throw  new IllegalArgumentException ("invalid layout key " + s);\r
-}}, "~S,java.awt.Component");\r
-Clazz.overrideMethod (c$, "removeLayoutComponent", \r
-function (c) {\r
-if (c === this.viewport) {\r
-this.viewport = null;\r
-} else if (c === this.vsb) {\r
-this.vsb = null;\r
-} else if (c === this.hsb) {\r
-this.hsb = null;\r
-} else if (c === this.rowHead) {\r
-this.rowHead = null;\r
-} else if (c === this.colHead) {\r
-this.colHead = null;\r
-} else if (c === this.lowerLeft) {\r
-this.lowerLeft = null;\r
-} else if (c === this.lowerRight) {\r
-this.lowerRight = null;\r
-} else if (c === this.upperLeft) {\r
-this.upperLeft = null;\r
-} else if (c === this.upperRight) {\r
-this.upperRight = null;\r
-}}, "java.awt.Component");\r
-Clazz.defineMethod (c$, "getVerticalScrollBarPolicy", \r
-function () {\r
-return this.vsbPolicy;\r
-});\r
-Clazz.defineMethod (c$, "setVerticalScrollBarPolicy", \r
-function (x) {\r
-switch (x) {\r
-case 20:\r
-case 21:\r
-case 22:\r
-this.vsbPolicy = x;\r
-break;\r
-default:\r
-throw  new IllegalArgumentException ("invalid verticalScrollBarPolicy");\r
-}\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getHorizontalScrollBarPolicy", \r
-function () {\r
-return this.hsbPolicy;\r
-});\r
-Clazz.defineMethod (c$, "setHorizontalScrollBarPolicy", \r
-function (x) {\r
-switch (x) {\r
-case 30:\r
-case 31:\r
-case 32:\r
-this.hsbPolicy = x;\r
-break;\r
-default:\r
-throw  new IllegalArgumentException ("invalid horizontalScrollBarPolicy");\r
-}\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getViewport", \r
-function () {\r
-return this.viewport;\r
-});\r
-Clazz.defineMethod (c$, "getHorizontalScrollBar", \r
-function () {\r
-return this.hsb;\r
-});\r
-Clazz.defineMethod (c$, "getVerticalScrollBar", \r
-function () {\r
-return this.vsb;\r
-});\r
-Clazz.defineMethod (c$, "getRowHeader", \r
-function () {\r
-return this.rowHead;\r
-});\r
-Clazz.defineMethod (c$, "getColumnHeader", \r
-function () {\r
-return this.colHead;\r
-});\r
-Clazz.defineMethod (c$, "getCorner", \r
-function (key) {\r
-if (key.equals ("LOWER_LEFT_CORNER")) {\r
-return this.lowerLeft;\r
-} else if (key.equals ("LOWER_RIGHT_CORNER")) {\r
-return this.lowerRight;\r
-} else if (key.equals ("UPPER_LEFT_CORNER")) {\r
-return this.upperLeft;\r
-} else if (key.equals ("UPPER_RIGHT_CORNER")) {\r
-return this.upperRight;\r
-} else {\r
-return null;\r
-}}, "~S");\r
-Clazz.overrideMethod (c$, "preferredLayoutSize", \r
-function (parent) {\r
-var scrollPane = parent;\r
-this.vsbPolicy = scrollPane.getVerticalScrollBarPolicy ();\r
-this.hsbPolicy = scrollPane.getHorizontalScrollBarPolicy ();\r
-var insets = parent.getInsets ();\r
-var prefWidth = insets.left + insets.right;\r
-var prefHeight = insets.top + insets.bottom;\r
-var extentSize = null;\r
-var viewSize = null;\r
-var view = null;\r
-if (this.viewport != null) {\r
-extentSize = this.viewport.getPreferredSize ();\r
-view = this.viewport.getView ();\r
-if (view != null) {\r
-viewSize = view.getPreferredSize ();\r
-} else {\r
-viewSize =  new java.awt.Dimension (0, 0);\r
-}}if (extentSize != null) {\r
-prefWidth += extentSize.width;\r
-prefHeight += extentSize.height;\r
-}var viewportBorder = scrollPane.getViewportBorder ();\r
-if (viewportBorder != null) {\r
-var vpbInsets = viewportBorder.getBorderInsets (parent);\r
-prefWidth += vpbInsets.left + vpbInsets.right;\r
-prefHeight += vpbInsets.top + vpbInsets.bottom;\r
-}if ((this.rowHead != null) && this.rowHead.isVisible ()) {\r
-prefWidth += this.rowHead.getPreferredSize ().width;\r
-}if ((this.colHead != null) && this.colHead.isVisible ()) {\r
-prefHeight += this.colHead.getPreferredSize ().height;\r
-}if ((this.vsb != null) && (this.vsbPolicy != 21)) {\r
-if (this.vsbPolicy == 22) {\r
-prefWidth += this.vsb.getPreferredSize ().width;\r
-} else if ((viewSize != null) && (extentSize != null)) {\r
-var canScroll = true;\r
-if (Clazz.instanceOf (view, javax.swing.Scrollable)) {\r
-canScroll = !(view).getScrollableTracksViewportHeight ();\r
-}if (canScroll && (viewSize.height > extentSize.height)) {\r
-prefWidth += this.vsb.getPreferredSize ().width;\r
-}}}if ((this.hsb != null) && (this.hsbPolicy != 31)) {\r
-if (this.hsbPolicy == 32) {\r
-prefHeight += this.hsb.getPreferredSize ().height;\r
-} else if ((viewSize != null) && (extentSize != null)) {\r
-var canScroll = true;\r
-if (Clazz.instanceOf (view, javax.swing.Scrollable)) {\r
-canScroll = !(view).getScrollableTracksViewportWidth ();\r
-}if (canScroll && (viewSize.width > extentSize.width)) {\r
-prefHeight += this.hsb.getPreferredSize ().height;\r
-}}}return  new java.awt.Dimension (prefWidth, prefHeight);\r
-}, "java.awt.Container");\r
-Clazz.overrideMethod (c$, "minimumLayoutSize", \r
-function (parent) {\r
-var scrollPane = parent;\r
-this.vsbPolicy = scrollPane.getVerticalScrollBarPolicy ();\r
-this.hsbPolicy = scrollPane.getHorizontalScrollBarPolicy ();\r
-var insets = parent.getInsets ();\r
-var minWidth = insets.left + insets.right;\r
-var minHeight = insets.top + insets.bottom;\r
-if (this.viewport != null) {\r
-var size = this.viewport.getMinimumSize ();\r
-minWidth += size.width;\r
-minHeight += size.height;\r
-}var viewportBorder = scrollPane.getViewportBorder ();\r
-if (viewportBorder != null) {\r
-var vpbInsets = viewportBorder.getBorderInsets (parent);\r
-minWidth += vpbInsets.left + vpbInsets.right;\r
-minHeight += vpbInsets.top + vpbInsets.bottom;\r
-}if ((this.rowHead != null) && this.rowHead.isVisible ()) {\r
-var size = this.rowHead.getMinimumSize ();\r
-minWidth += size.width;\r
-minHeight = Math.max (minHeight, size.height);\r
-}if ((this.colHead != null) && this.colHead.isVisible ()) {\r
-var size = this.colHead.getMinimumSize ();\r
-minWidth = Math.max (minWidth, size.width);\r
-minHeight += size.height;\r
-}if ((this.vsb != null) && (this.vsbPolicy != 21)) {\r
-var size = this.vsb.getMinimumSize ();\r
-minWidth += size.width;\r
-minHeight = Math.max (minHeight, size.height);\r
-}if ((this.hsb != null) && (this.hsbPolicy != 31)) {\r
-var size = this.hsb.getMinimumSize ();\r
-minWidth = Math.max (minWidth, size.width);\r
-minHeight += size.height;\r
-}return  new java.awt.Dimension (minWidth, minHeight);\r
-}, "java.awt.Container");\r
-Clazz.overrideMethod (c$, "layoutContainer", \r
-function (parent) {\r
-var scrollPane = parent;\r
-this.vsbPolicy = scrollPane.getVerticalScrollBarPolicy ();\r
-this.hsbPolicy = scrollPane.getHorizontalScrollBarPolicy ();\r
-var availR = scrollPane.getBounds ();\r
-availR.x = availR.y = 0;\r
-var insets = parent.getInsets ();\r
-availR.x = insets.left;\r
-availR.y = insets.top;\r
-availR.width -= insets.left + insets.right;\r
-availR.height -= insets.top + insets.bottom;\r
-var leftToRight = javax.swing.SwingUtilities.isLeftToRight (scrollPane);\r
-var colHeadR =  new java.awt.Rectangle (0, availR.y, 0, 0);\r
-if ((this.colHead != null) && (this.colHead.isVisible ())) {\r
-var colHeadHeight = Math.min (availR.height, this.colHead.getPreferredSize ().height);\r
-colHeadR.height = colHeadHeight;\r
-availR.y += colHeadHeight;\r
-availR.height -= colHeadHeight;\r
-}var rowHeadR =  new java.awt.Rectangle (0, 0, 0, 0);\r
-if ((this.rowHead != null) && (this.rowHead.isVisible ())) {\r
-var rowHeadWidth = Math.min (availR.width, this.rowHead.getPreferredSize ().width);\r
-rowHeadR.width = rowHeadWidth;\r
-availR.width -= rowHeadWidth;\r
-if (leftToRight) {\r
-rowHeadR.x = availR.x;\r
-availR.x += rowHeadWidth;\r
-} else {\r
-rowHeadR.x = availR.x + availR.width;\r
-}}var viewportBorder = scrollPane.getViewportBorder ();\r
-var vpbInsets;\r
-if (viewportBorder != null) {\r
-vpbInsets = viewportBorder.getBorderInsets (parent);\r
-availR.x += vpbInsets.left;\r
-availR.y += vpbInsets.top;\r
-availR.width -= vpbInsets.left + vpbInsets.right;\r
-availR.height -= vpbInsets.top + vpbInsets.bottom;\r
-} else {\r
-vpbInsets =  new java.awt.Insets (0, 0, 0, 0);\r
-}var view = (this.viewport != null) ? this.viewport.getView () : null;\r
-var viewPrefSize = (view != null) ? view.getPreferredSize () :  new java.awt.Dimension (0, 0);\r
-var extentSize = (this.viewport != null) ? this.viewport.toViewCoordinates (availR.getSize ()) :  new java.awt.Dimension (0, 0);\r
-var viewTracksViewportWidth = false;\r
-var viewTracksViewportHeight = false;\r
-var isEmpty = (availR.width < 0 || availR.height < 0);\r
-var sv;\r
-if (!isEmpty && Clazz.instanceOf (view, javax.swing.Scrollable)) {\r
-sv = view;\r
-viewTracksViewportWidth = sv.getScrollableTracksViewportWidth ();\r
-viewTracksViewportHeight = sv.getScrollableTracksViewportHeight ();\r
-} else {\r
-sv = null;\r
-}var vsbR =  new java.awt.Rectangle (0, availR.y - vpbInsets.top, 0, 0);\r
-var vsbNeeded;\r
-if (isEmpty) {\r
-vsbNeeded = false;\r
-} else if (this.vsbPolicy == 22) {\r
-vsbNeeded = true;\r
-} else if (this.vsbPolicy == 21) {\r
-vsbNeeded = false;\r
-} else {\r
-vsbNeeded = !viewTracksViewportHeight && (viewPrefSize.height > extentSize.height);\r
-}if ((this.vsb != null) && vsbNeeded) {\r
-this.adjustForVSB (true, availR, vsbR, vpbInsets, leftToRight);\r
-extentSize = this.viewport.toViewCoordinates (availR.getSize ());\r
-}var hsbR =  new java.awt.Rectangle (availR.x - vpbInsets.left, 0, 0, 0);\r
-var hsbNeeded;\r
-if (isEmpty) {\r
-hsbNeeded = false;\r
-} else if (this.hsbPolicy == 32) {\r
-hsbNeeded = true;\r
-} else if (this.hsbPolicy == 31) {\r
-hsbNeeded = false;\r
-} else {\r
-hsbNeeded = !viewTracksViewportWidth && (viewPrefSize.width > extentSize.width);\r
-}if ((this.hsb != null) && hsbNeeded) {\r
-this.adjustForHSB (true, availR, hsbR, vpbInsets);\r
-if ((this.vsb != null) && !vsbNeeded && (this.vsbPolicy != 21)) {\r
-extentSize = this.viewport.toViewCoordinates (availR.getSize ());\r
-vsbNeeded = viewPrefSize.height > extentSize.height;\r
-if (vsbNeeded) {\r
-this.adjustForVSB (true, availR, vsbR, vpbInsets, leftToRight);\r
-}}}if (this.viewport != null) {\r
-this.viewport.setBounds (availR);\r
-if (sv != null) {\r
-extentSize = this.viewport.toViewCoordinates (availR.getSize ());\r
-var oldHSBNeeded = hsbNeeded;\r
-var oldVSBNeeded = vsbNeeded;\r
-viewTracksViewportWidth = sv.getScrollableTracksViewportWidth ();\r
-viewTracksViewportHeight = sv.getScrollableTracksViewportHeight ();\r
-if (this.vsb != null && this.vsbPolicy == 20) {\r
-var newVSBNeeded = !viewTracksViewportHeight && (viewPrefSize.height > extentSize.height);\r
-if (newVSBNeeded != vsbNeeded) {\r
-vsbNeeded = newVSBNeeded;\r
-this.adjustForVSB (vsbNeeded, availR, vsbR, vpbInsets, leftToRight);\r
-extentSize = this.viewport.toViewCoordinates (availR.getSize ());\r
-}}if (this.hsb != null && this.hsbPolicy == 30) {\r
-var newHSBbNeeded = !viewTracksViewportWidth && (viewPrefSize.width > extentSize.width);\r
-if (newHSBbNeeded != hsbNeeded) {\r
-hsbNeeded = newHSBbNeeded;\r
-this.adjustForHSB (hsbNeeded, availR, hsbR, vpbInsets);\r
-if ((this.vsb != null) && !vsbNeeded && (this.vsbPolicy != 21)) {\r
-extentSize = this.viewport.toViewCoordinates (availR.getSize ());\r
-vsbNeeded = viewPrefSize.height > extentSize.height;\r
-if (vsbNeeded) {\r
-this.adjustForVSB (true, availR, vsbR, vpbInsets, leftToRight);\r
-}}}}if (oldHSBNeeded != hsbNeeded || oldVSBNeeded != vsbNeeded) {\r
-this.viewport.setBounds (availR);\r
-}}}vsbR.height = availR.height + vpbInsets.top + vpbInsets.bottom;\r
-hsbR.width = availR.width + vpbInsets.left + vpbInsets.right;\r
-rowHeadR.height = availR.height + vpbInsets.top + vpbInsets.bottom;\r
-rowHeadR.y = availR.y - vpbInsets.top;\r
-colHeadR.width = availR.width + vpbInsets.left + vpbInsets.right;\r
-colHeadR.x = availR.x - vpbInsets.left;\r
-if (this.rowHead != null) {\r
-this.rowHead.setBounds (rowHeadR);\r
-}if (this.colHead != null) {\r
-this.colHead.setBounds (colHeadR);\r
-}if (this.vsb != null) {\r
-if (vsbNeeded) {\r
-if (this.colHead != null && javax.swing.UIManager.getBoolean ("ScrollPane.fillUpperCorner")) {\r
-if ((leftToRight && this.upperRight == null) || (!leftToRight && this.upperLeft == null)) {\r
-vsbR.y = colHeadR.y;\r
-vsbR.height += colHeadR.height;\r
-}}this.vsb.setVisible (true);\r
-this.vsb.setBounds (vsbR);\r
-} else {\r
-this.vsb.setVisible (false);\r
-}}if (this.hsb != null) {\r
-if (hsbNeeded) {\r
-if (this.rowHead != null && javax.swing.UIManager.getBoolean ("ScrollPane.fillLowerCorner")) {\r
-if ((leftToRight && this.lowerLeft == null) || (!leftToRight && this.lowerRight == null)) {\r
-if (leftToRight) {\r
-hsbR.x = rowHeadR.x;\r
-}hsbR.width += rowHeadR.width;\r
-}}this.hsb.setVisible (true);\r
-this.hsb.setBounds (hsbR);\r
-} else {\r
-this.hsb.setVisible (false);\r
-}}if (this.lowerLeft != null) {\r
-this.lowerLeft.setBounds (leftToRight ? rowHeadR.x : vsbR.x, hsbR.y, leftToRight ? rowHeadR.width : vsbR.width, hsbR.height);\r
-}if (this.lowerRight != null) {\r
-this.lowerRight.setBounds (leftToRight ? vsbR.x : rowHeadR.x, hsbR.y, leftToRight ? vsbR.width : rowHeadR.width, hsbR.height);\r
-}if (this.upperLeft != null) {\r
-this.upperLeft.setBounds (leftToRight ? rowHeadR.x : vsbR.x, colHeadR.y, leftToRight ? rowHeadR.width : vsbR.width, colHeadR.height);\r
-}if (this.upperRight != null) {\r
-this.upperRight.setBounds (leftToRight ? vsbR.x : rowHeadR.x, colHeadR.y, leftToRight ? vsbR.width : rowHeadR.width, colHeadR.height);\r
-}}, "java.awt.Container");\r
-Clazz.defineMethod (c$, "adjustForVSB", \r
- function (wantsVSB, available, vsbR, vpbInsets, leftToRight) {\r
-var oldWidth = vsbR.width;\r
-if (wantsVSB) {\r
-var vsbWidth = Math.max (0, Math.min (this.vsb.getPreferredSize ().width, available.width));\r
-available.width -= vsbWidth;\r
-vsbR.width = vsbWidth;\r
-if (leftToRight) {\r
-vsbR.x = available.x + available.width + vpbInsets.right;\r
-} else {\r
-vsbR.x = available.x - vpbInsets.left;\r
-available.x += vsbWidth;\r
-}} else {\r
-available.width += oldWidth;\r
-}}, "~B,java.awt.Rectangle,java.awt.Rectangle,java.awt.Insets,~B");\r
-Clazz.defineMethod (c$, "adjustForHSB", \r
- function (wantsHSB, available, hsbR, vpbInsets) {\r
-var oldHeight = hsbR.height;\r
-if (wantsHSB) {\r
-var hsbHeight = Math.max (0, Math.min (available.height, this.hsb.getPreferredSize ().height));\r
-available.height -= hsbHeight;\r
-hsbR.y = available.y + available.height + vpbInsets.bottom;\r
-hsbR.height = hsbHeight;\r
-} else {\r
-available.height += oldHeight;\r
-}}, "~B,java.awt.Rectangle,java.awt.Rectangle,java.awt.Insets");\r
-Clazz.defineMethod (c$, "getViewportBorderBounds", \r
-function (scrollpane) {\r
-return scrollpane.getViewportBorderBounds ();\r
-}, "javax.swing.JScrollPane");\r
-Clazz.pu$h(self.c$);\r
-c$ = Clazz.declareType (javax.swing.ScrollPaneLayout, "UIResource", javax.swing.ScrollPaneLayout, javax.swing.plaf.UIResource);\r
-c$ = Clazz.p0p ();\r
-});\r
+Clazz.declarePackage ("javax.swing");
+Clazz.load (["java.awt.LayoutManager", "javax.swing.ScrollPaneConstants", "javax.swing.plaf.UIResource"], "javax.swing.ScrollPaneLayout", ["java.lang.IllegalArgumentException", "java.awt.Dimension", "$.Insets", "$.Rectangle", "javax.swing.Scrollable", "$.SwingUtilities", "$.UIManager"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.viewport = null;
+this.vsb = null;
+this.hsb = null;
+this.rowHead = null;
+this.colHead = null;
+this.lowerLeft = null;
+this.lowerRight = null;
+this.upperLeft = null;
+this.upperRight = null;
+this.vsbPolicy = 20;
+this.hsbPolicy = 30;
+Clazz.instantialize (this, arguments);
+}, javax.swing, "ScrollPaneLayout", null, [java.awt.LayoutManager, javax.swing.ScrollPaneConstants]);
+Clazz.defineMethod (c$, "syncWithScrollPane", 
+function (sp) {
+this.viewport = sp.getViewport ();
+this.vsb = sp.getVerticalScrollBar ();
+this.hsb = sp.getHorizontalScrollBar ();
+this.rowHead = sp.getRowHeader ();
+this.colHead = sp.getColumnHeader ();
+this.lowerLeft = sp.getCorner ("LOWER_LEFT_CORNER");
+this.lowerRight = sp.getCorner ("LOWER_RIGHT_CORNER");
+this.upperLeft = sp.getCorner ("UPPER_LEFT_CORNER");
+this.upperRight = sp.getCorner ("UPPER_RIGHT_CORNER");
+this.vsbPolicy = sp.getVerticalScrollBarPolicy ();
+this.hsbPolicy = sp.getHorizontalScrollBarPolicy ();
+}, "javax.swing.JScrollPane");
+Clazz.defineMethod (c$, "addSingletonComponent", 
+function (oldC, newC) {
+if ((oldC != null) && (oldC !== newC)) {
+oldC.getParent ().remove (oldC);
+}return newC;
+}, "java.awt.Component,java.awt.Component");
+Clazz.overrideMethod (c$, "addLayoutComponent", 
+function (s, c) {
+if (s.equals ("VIEWPORT")) {
+this.viewport = this.addSingletonComponent (this.viewport, c);
+} else if (s.equals ("VERTICAL_SCROLLBAR")) {
+this.vsb = this.addSingletonComponent (this.vsb, c);
+} else if (s.equals ("HORIZONTAL_SCROLLBAR")) {
+this.hsb = this.addSingletonComponent (this.hsb, c);
+} else if (s.equals ("ROW_HEADER")) {
+this.rowHead = this.addSingletonComponent (this.rowHead, c);
+} else if (s.equals ("COLUMN_HEADER")) {
+this.colHead = this.addSingletonComponent (this.colHead, c);
+} else if (s.equals ("LOWER_LEFT_CORNER")) {
+this.lowerLeft = this.addSingletonComponent (this.lowerLeft, c);
+} else if (s.equals ("LOWER_RIGHT_CORNER")) {
+this.lowerRight = this.addSingletonComponent (this.lowerRight, c);
+} else if (s.equals ("UPPER_LEFT_CORNER")) {
+this.upperLeft = this.addSingletonComponent (this.upperLeft, c);
+} else if (s.equals ("UPPER_RIGHT_CORNER")) {
+this.upperRight = this.addSingletonComponent (this.upperRight, c);
+} else {
+throw  new IllegalArgumentException ("invalid layout key " + s);
+}}, "~S,java.awt.Component");
+Clazz.overrideMethod (c$, "removeLayoutComponent", 
+function (c) {
+if (c === this.viewport) {
+this.viewport = null;
+} else if (c === this.vsb) {
+this.vsb = null;
+} else if (c === this.hsb) {
+this.hsb = null;
+} else if (c === this.rowHead) {
+this.rowHead = null;
+} else if (c === this.colHead) {
+this.colHead = null;
+} else if (c === this.lowerLeft) {
+this.lowerLeft = null;
+} else if (c === this.lowerRight) {
+this.lowerRight = null;
+} else if (c === this.upperLeft) {
+this.upperLeft = null;
+} else if (c === this.upperRight) {
+this.upperRight = null;
+}}, "java.awt.Component");
+Clazz.defineMethod (c$, "getVerticalScrollBarPolicy", 
+function () {
+return this.vsbPolicy;
+});
+Clazz.defineMethod (c$, "setVerticalScrollBarPolicy", 
+function (x) {
+switch (x) {
+case 20:
+case 21:
+case 22:
+this.vsbPolicy = x;
+break;
+default:
+throw  new IllegalArgumentException ("invalid verticalScrollBarPolicy");
+}
+}, "~N");
+Clazz.defineMethod (c$, "getHorizontalScrollBarPolicy", 
+function () {
+return this.hsbPolicy;
+});
+Clazz.defineMethod (c$, "setHorizontalScrollBarPolicy", 
+function (x) {
+switch (x) {
+case 30:
+case 31:
+case 32:
+this.hsbPolicy = x;
+break;
+default:
+throw  new IllegalArgumentException ("invalid horizontalScrollBarPolicy");
+}
+}, "~N");
+Clazz.defineMethod (c$, "getViewport", 
+function () {
+return this.viewport;
+});
+Clazz.defineMethod (c$, "getHorizontalScrollBar", 
+function () {
+return this.hsb;
+});
+Clazz.defineMethod (c$, "getVerticalScrollBar", 
+function () {
+return this.vsb;
+});
+Clazz.defineMethod (c$, "getRowHeader", 
+function () {
+return this.rowHead;
+});
+Clazz.defineMethod (c$, "getColumnHeader", 
+function () {
+return this.colHead;
+});
+Clazz.defineMethod (c$, "getCorner", 
+function (key) {
+if (key.equals ("LOWER_LEFT_CORNER")) {
+return this.lowerLeft;
+} else if (key.equals ("LOWER_RIGHT_CORNER")) {
+return this.lowerRight;
+} else if (key.equals ("UPPER_LEFT_CORNER")) {
+return this.upperLeft;
+} else if (key.equals ("UPPER_RIGHT_CORNER")) {
+return this.upperRight;
+} else {
+return null;
+}}, "~S");
+Clazz.overrideMethod (c$, "preferredLayoutSize", 
+function (parent) {
+var scrollPane = parent;
+this.vsbPolicy = scrollPane.getVerticalScrollBarPolicy ();
+this.hsbPolicy = scrollPane.getHorizontalScrollBarPolicy ();
+var insets = parent.getInsets ();
+var prefWidth = insets.left + insets.right;
+var prefHeight = insets.top + insets.bottom;
+var extentSize = null;
+var viewSize = null;
+var view = null;
+if (this.viewport != null) {
+extentSize = this.viewport.getPreferredSize ();
+view = this.viewport.getView ();
+if (view != null) {
+viewSize = view.getPreferredSize ();
+} else {
+viewSize =  new java.awt.Dimension (0, 0);
+}}if (extentSize != null) {
+prefWidth += extentSize.width;
+prefHeight += extentSize.height;
+}var viewportBorder = scrollPane.getViewportBorder ();
+if (viewportBorder != null) {
+var vpbInsets = viewportBorder.getBorderInsets (parent);
+prefWidth += vpbInsets.left + vpbInsets.right;
+prefHeight += vpbInsets.top + vpbInsets.bottom;
+}if ((this.rowHead != null) && this.rowHead.isVisible ()) {
+prefWidth += this.rowHead.getPreferredSize ().width;
+}if ((this.colHead != null) && this.colHead.isVisible ()) {
+prefHeight += this.colHead.getPreferredSize ().height;
+}if ((this.vsb != null) && (this.vsbPolicy != 21)) {
+if (this.vsbPolicy == 22) {
+prefWidth += this.vsb.getPreferredSize ().width;
+} else if ((viewSize != null) && (extentSize != null)) {
+var canScroll = true;
+if (Clazz.instanceOf (view, javax.swing.Scrollable)) {
+canScroll = !(view).getScrollableTracksViewportHeight ();
+}if (canScroll && (viewSize.height > extentSize.height)) {
+prefWidth += this.vsb.getPreferredSize ().width;
+}}}if ((this.hsb != null) && (this.hsbPolicy != 31)) {
+if (this.hsbPolicy == 32) {
+prefHeight += this.hsb.getPreferredSize ().height;
+} else if ((viewSize != null) && (extentSize != null)) {
+var canScroll = true;
+if (Clazz.instanceOf (view, javax.swing.Scrollable)) {
+canScroll = !(view).getScrollableTracksViewportWidth ();
+}if (canScroll && (viewSize.width > extentSize.width)) {
+prefHeight += this.hsb.getPreferredSize ().height;
+}}}return  new java.awt.Dimension (prefWidth, prefHeight);
+}, "java.awt.Container");
+Clazz.overrideMethod (c$, "minimumLayoutSize", 
+function (parent) {
+var scrollPane = parent;
+this.vsbPolicy = scrollPane.getVerticalScrollBarPolicy ();
+this.hsbPolicy = scrollPane.getHorizontalScrollBarPolicy ();
+var insets = parent.getInsets ();
+var minWidth = insets.left + insets.right;
+var minHeight = insets.top + insets.bottom;
+if (this.viewport != null) {
+var size = this.viewport.getMinimumSize ();
+minWidth += size.width;
+minHeight += size.height;
+}var viewportBorder = scrollPane.getViewportBorder ();
+if (viewportBorder != null) {
+var vpbInsets = viewportBorder.getBorderInsets (parent);
+minWidth += vpbInsets.left + vpbInsets.right;
+minHeight += vpbInsets.top + vpbInsets.bottom;
+}if ((this.rowHead != null) && this.rowHead.isVisible ()) {
+var size = this.rowHead.getMinimumSize ();
+minWidth += size.width;
+minHeight = Math.max (minHeight, size.height);
+}if ((this.colHead != null) && this.colHead.isVisible ()) {
+var size = this.colHead.getMinimumSize ();
+minWidth = Math.max (minWidth, size.width);
+minHeight += size.height;
+}if ((this.vsb != null) && (this.vsbPolicy != 21)) {
+var size = this.vsb.getMinimumSize ();
+minWidth += size.width;
+minHeight = Math.max (minHeight, size.height);
+}if ((this.hsb != null) && (this.hsbPolicy != 31)) {
+var size = this.hsb.getMinimumSize ();
+minWidth = Math.max (minWidth, size.width);
+minHeight += size.height;
+}return  new java.awt.Dimension (minWidth, minHeight);
+}, "java.awt.Container");
+Clazz.overrideMethod (c$, "layoutContainer", 
+function (parent) {
+var scrollPane = parent;
+this.vsbPolicy = scrollPane.getVerticalScrollBarPolicy ();
+this.hsbPolicy = scrollPane.getHorizontalScrollBarPolicy ();
+var availR = scrollPane.getBounds ();
+availR.x = availR.y = 0;
+var insets = parent.getInsets ();
+availR.x = insets.left;
+availR.y = insets.top;
+availR.width -= insets.left + insets.right;
+availR.height -= insets.top + insets.bottom;
+var leftToRight = javax.swing.SwingUtilities.isLeftToRight (scrollPane);
+var colHeadR =  new java.awt.Rectangle (0, availR.y, 0, 0);
+if ((this.colHead != null) && (this.colHead.isVisible ())) {
+var colHeadHeight = Math.min (availR.height, this.colHead.getPreferredSize ().height);
+colHeadR.height = colHeadHeight;
+availR.y += colHeadHeight;
+availR.height -= colHeadHeight;
+}var rowHeadR =  new java.awt.Rectangle (0, 0, 0, 0);
+if ((this.rowHead != null) && (this.rowHead.isVisible ())) {
+var rowHeadWidth = Math.min (availR.width, this.rowHead.getPreferredSize ().width);
+rowHeadR.width = rowHeadWidth;
+availR.width -= rowHeadWidth;
+if (leftToRight) {
+rowHeadR.x = availR.x;
+availR.x += rowHeadWidth;
+} else {
+rowHeadR.x = availR.x + availR.width;
+}}var viewportBorder = scrollPane.getViewportBorder ();
+var vpbInsets;
+if (viewportBorder != null) {
+vpbInsets = viewportBorder.getBorderInsets (parent);
+availR.x += vpbInsets.left;
+availR.y += vpbInsets.top;
+availR.width -= vpbInsets.left + vpbInsets.right;
+availR.height -= vpbInsets.top + vpbInsets.bottom;
+} else {
+vpbInsets =  new java.awt.Insets (0, 0, 0, 0);
+}var view = (this.viewport != null) ? this.viewport.getView () : null;
+var viewPrefSize = (view != null) ? view.getPreferredSize () :  new java.awt.Dimension (0, 0);
+var extentSize = (this.viewport != null) ? this.viewport.toViewCoordinates (availR.getSize ()) :  new java.awt.Dimension (0, 0);
+var viewTracksViewportWidth = false;
+var viewTracksViewportHeight = false;
+var isEmpty = (availR.width < 0 || availR.height < 0);
+var sv;
+if (!isEmpty && Clazz.instanceOf (view, javax.swing.Scrollable)) {
+sv = view;
+viewTracksViewportWidth = sv.getScrollableTracksViewportWidth ();
+viewTracksViewportHeight = sv.getScrollableTracksViewportHeight ();
+} else {
+sv = null;
+}var vsbR =  new java.awt.Rectangle (0, availR.y - vpbInsets.top, 0, 0);
+var vsbNeeded;
+if (isEmpty) {
+vsbNeeded = false;
+} else if (this.vsbPolicy == 22) {
+vsbNeeded = true;
+} else if (this.vsbPolicy == 21) {
+vsbNeeded = false;
+} else {
+vsbNeeded = !viewTracksViewportHeight && (viewPrefSize.height > extentSize.height);
+}if ((this.vsb != null) && vsbNeeded) {
+this.adjustForVSB (true, availR, vsbR, vpbInsets, leftToRight);
+extentSize = this.viewport.toViewCoordinates (availR.getSize ());
+}var hsbR =  new java.awt.Rectangle (availR.x - vpbInsets.left, 0, 0, 0);
+var hsbNeeded;
+if (isEmpty) {
+hsbNeeded = false;
+} else if (this.hsbPolicy == 32) {
+hsbNeeded = true;
+} else if (this.hsbPolicy == 31) {
+hsbNeeded = false;
+} else {
+hsbNeeded = !viewTracksViewportWidth && (viewPrefSize.width > extentSize.width);
+}if ((this.hsb != null) && hsbNeeded) {
+this.adjustForHSB (true, availR, hsbR, vpbInsets);
+if ((this.vsb != null) && !vsbNeeded && (this.vsbPolicy != 21)) {
+extentSize = this.viewport.toViewCoordinates (availR.getSize ());
+vsbNeeded = viewPrefSize.height > extentSize.height;
+if (vsbNeeded) {
+this.adjustForVSB (true, availR, vsbR, vpbInsets, leftToRight);
+}}}if (this.viewport != null) {
+this.viewport.setBounds (availR);
+if (sv != null) {
+extentSize = this.viewport.toViewCoordinates (availR.getSize ());
+var oldHSBNeeded = hsbNeeded;
+var oldVSBNeeded = vsbNeeded;
+viewTracksViewportWidth = sv.getScrollableTracksViewportWidth ();
+viewTracksViewportHeight = sv.getScrollableTracksViewportHeight ();
+if (this.vsb != null && this.vsbPolicy == 20) {
+var newVSBNeeded = !viewTracksViewportHeight && (viewPrefSize.height > extentSize.height);
+if (newVSBNeeded != vsbNeeded) {
+vsbNeeded = newVSBNeeded;
+this.adjustForVSB (vsbNeeded, availR, vsbR, vpbInsets, leftToRight);
+extentSize = this.viewport.toViewCoordinates (availR.getSize ());
+}}if (this.hsb != null && this.hsbPolicy == 30) {
+var newHSBbNeeded = !viewTracksViewportWidth && (viewPrefSize.width > extentSize.width);
+if (newHSBbNeeded != hsbNeeded) {
+hsbNeeded = newHSBbNeeded;
+this.adjustForHSB (hsbNeeded, availR, hsbR, vpbInsets);
+if ((this.vsb != null) && !vsbNeeded && (this.vsbPolicy != 21)) {
+extentSize = this.viewport.toViewCoordinates (availR.getSize ());
+vsbNeeded = viewPrefSize.height > extentSize.height;
+if (vsbNeeded) {
+this.adjustForVSB (true, availR, vsbR, vpbInsets, leftToRight);
+}}}}if (oldHSBNeeded != hsbNeeded || oldVSBNeeded != vsbNeeded) {
+this.viewport.setBounds (availR);
+}}}vsbR.height = availR.height + vpbInsets.top + vpbInsets.bottom;
+hsbR.width = availR.width + vpbInsets.left + vpbInsets.right;
+rowHeadR.height = availR.height + vpbInsets.top + vpbInsets.bottom;
+rowHeadR.y = availR.y - vpbInsets.top;
+colHeadR.width = availR.width + vpbInsets.left + vpbInsets.right;
+colHeadR.x = availR.x - vpbInsets.left;
+if (this.rowHead != null) {
+this.rowHead.setBounds (rowHeadR);
+}if (this.colHead != null) {
+this.colHead.setBounds (colHeadR);
+}if (this.vsb != null) {
+if (vsbNeeded) {
+if (this.colHead != null && javax.swing.UIManager.getBoolean ("ScrollPane.fillUpperCorner")) {
+if ((leftToRight && this.upperRight == null) || (!leftToRight && this.upperLeft == null)) {
+vsbR.y = colHeadR.y;
+vsbR.height += colHeadR.height;
+}}this.vsb.setVisible (true);
+this.vsb.setBounds (vsbR);
+} else {
+this.vsb.setVisible (false);
+}}if (this.hsb != null) {
+if (hsbNeeded) {
+if (this.rowHead != null && javax.swing.UIManager.getBoolean ("ScrollPane.fillLowerCorner")) {
+if ((leftToRight && this.lowerLeft == null) || (!leftToRight && this.lowerRight == null)) {
+if (leftToRight) {
+hsbR.x = rowHeadR.x;
+}hsbR.width += rowHeadR.width;
+}}this.hsb.setVisible (true);
+this.hsb.setBounds (hsbR);
+} else {
+this.hsb.setVisible (false);
+}}if (this.lowerLeft != null) {
+this.lowerLeft.setBounds (leftToRight ? rowHeadR.x : vsbR.x, hsbR.y, leftToRight ? rowHeadR.width : vsbR.width, hsbR.height);
+}if (this.lowerRight != null) {
+this.lowerRight.setBounds (leftToRight ? vsbR.x : rowHeadR.x, hsbR.y, leftToRight ? vsbR.width : rowHeadR.width, hsbR.height);
+}if (this.upperLeft != null) {
+this.upperLeft.setBounds (leftToRight ? rowHeadR.x : vsbR.x, colHeadR.y, leftToRight ? rowHeadR.width : vsbR.width, colHeadR.height);
+}if (this.upperRight != null) {
+this.upperRight.setBounds (leftToRight ? vsbR.x : rowHeadR.x, colHeadR.y, leftToRight ? vsbR.width : rowHeadR.width, colHeadR.height);
+}}, "java.awt.Container");
+Clazz.defineMethod (c$, "adjustForVSB", 
+ function (wantsVSB, available, vsbR, vpbInsets, leftToRight) {
+var oldWidth = vsbR.width;
+if (wantsVSB) {
+var vsbWidth = Math.max (0, Math.min (this.vsb.getPreferredSize ().width, available.width));
+available.width -= vsbWidth;
+vsbR.width = vsbWidth;
+if (leftToRight) {
+vsbR.x = available.x + available.width + vpbInsets.right;
+} else {
+vsbR.x = available.x - vpbInsets.left;
+available.x += vsbWidth;
+}} else {
+available.width += oldWidth;
+}}, "~B,java.awt.Rectangle,java.awt.Rectangle,java.awt.Insets,~B");
+Clazz.defineMethod (c$, "adjustForHSB", 
+ function (wantsHSB, available, hsbR, vpbInsets) {
+var oldHeight = hsbR.height;
+if (wantsHSB) {
+var hsbHeight = Math.max (0, Math.min (available.height, this.hsb.getPreferredSize ().height));
+available.height -= hsbHeight;
+hsbR.y = available.y + available.height + vpbInsets.bottom;
+hsbR.height = hsbHeight;
+} else {
+available.height += oldHeight;
+}}, "~B,java.awt.Rectangle,java.awt.Rectangle,java.awt.Insets");
+Clazz.defineMethod (c$, "getViewportBorderBounds", 
+function (scrollpane) {
+return scrollpane.getViewportBorderBounds ();
+}, "javax.swing.JScrollPane");
+Clazz.pu$h(self.c$);
+c$ = Clazz.declareType (javax.swing.ScrollPaneLayout, "UIResource", javax.swing.ScrollPaneLayout, javax.swing.plaf.UIResource);
+c$ = Clazz.p0p ();
+});