home *** CD-ROM | disk | FTP | other *** search
- package com.sun.java.swing;
-
- import com.sun.java.swing.border.Border;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.Insets;
- import java.awt.LayoutManager;
- import java.awt.Rectangle;
- import java.io.Serializable;
-
- public class ScrollPaneLayout implements LayoutManager, ScrollPaneConstants, Serializable {
- protected JViewport viewport;
- protected JScrollBar vsb;
- protected JScrollBar hsb;
- protected JViewport rowHead;
- protected JViewport colHead;
- protected Component lowerLeft;
- protected Component lowerRight;
- protected Component upperLeft;
- protected Component upperRight;
- protected int vsbPolicy = 20;
- protected int hsbPolicy = 30;
-
- protected Component addSingletonComponent(Component var1, Component var2) {
- if (var1 != null && var1 != var2) {
- var1.getParent().remove(var1);
- }
-
- return var2;
- }
-
- public void addLayoutComponent(String var1, Component var2) {
- if (var1.equals("VIEWPORT")) {
- this.viewport = (JViewport)this.addSingletonComponent(this.viewport, var2);
- } else if (var1.equals("VERTICAL_SCROLLBAR")) {
- this.vsb = (JScrollBar)this.addSingletonComponent(this.vsb, var2);
- } else if (var1.equals("HORIZONTAL_SCROLLBAR")) {
- this.hsb = (JScrollBar)this.addSingletonComponent(this.hsb, var2);
- } else if (var1.equals("ROW_HEADER")) {
- this.rowHead = (JViewport)this.addSingletonComponent(this.rowHead, var2);
- } else if (var1.equals("COLUMN_HEADER")) {
- this.colHead = (JViewport)this.addSingletonComponent(this.colHead, var2);
- } else if (var1.equals("LOWER_LEFT_CORNER")) {
- this.lowerLeft = this.addSingletonComponent(this.lowerLeft, var2);
- } else if (var1.equals("LOWER_RIGHT_CORNER")) {
- this.lowerRight = this.addSingletonComponent(this.lowerRight, var2);
- } else if (var1.equals("UPPER_LEFT_CORNER")) {
- this.upperLeft = this.addSingletonComponent(this.upperLeft, var2);
- } else if (var1.equals("UPPER_RIGHT_CORNER")) {
- this.upperRight = this.addSingletonComponent(this.upperRight, var2);
- } else {
- throw new IllegalArgumentException("invalid layout key " + var1);
- }
- }
-
- public void removeLayoutComponent(Component var1) {
- if (var1 == this.viewport) {
- this.viewport = null;
- } else if (var1 == this.vsb) {
- this.vsb = null;
- } else if (var1 == this.hsb) {
- this.hsb = null;
- } else if (var1 == this.rowHead) {
- this.rowHead = null;
- } else if (var1 == this.colHead) {
- this.colHead = null;
- } else if (var1 == this.lowerLeft) {
- this.lowerLeft = null;
- } else if (var1 == this.upperLeft) {
- this.upperLeft = null;
- } else {
- if (var1 == this.upperRight) {
- this.upperRight = null;
- }
-
- }
- }
-
- public int getVerticalScrollBarPolicy() {
- return this.vsbPolicy;
- }
-
- public void setVerticalScrollBarPolicy(int var1) {
- switch (var1) {
- case 20:
- case 21:
- case 22:
- this.vsbPolicy = var1;
- return;
- default:
- throw new IllegalArgumentException("invalid verticalScrollBarPolicy");
- }
- }
-
- public int getHorizontalScrollBarPolicy() {
- return this.hsbPolicy;
- }
-
- public void setHorizontalScrollBarPolicy(int var1) {
- switch (var1) {
- case 30:
- case 31:
- case 32:
- this.hsbPolicy = var1;
- return;
- default:
- throw new IllegalArgumentException("invalid horizontalScrollBarPolicy");
- }
- }
-
- public JViewport getViewport() {
- return this.viewport;
- }
-
- public JScrollBar getHorizontalScrollBar() {
- return this.hsb;
- }
-
- public JScrollBar getVerticalScrollBar() {
- return this.vsb;
- }
-
- public JViewport getRowHeader() {
- return this.rowHead;
- }
-
- public JViewport getColumnHeader() {
- return this.colHead;
- }
-
- public Component getCorner(String var1) {
- if (var1.equals("LOWER_LEFT_CORNER")) {
- return this.lowerLeft;
- } else if (var1.equals("LOWER_RIGHT_CORNER")) {
- return this.lowerRight;
- } else if (var1.equals("UPPER_LEFT_CORNER")) {
- return this.upperLeft;
- } else {
- return var1.equals("UPPER_RIGHT_CORNER") ? this.upperRight : null;
- }
- }
-
- public Dimension preferredLayoutSize(Container var1) {
- Insets var2 = var1.getInsets();
- int var3 = var2.left + var2.right;
- int var4 = var2.top + var2.bottom;
- Dimension var5 = null;
- Dimension var6 = null;
- Component var7 = null;
- if (this.viewport != null) {
- var5 = this.viewport.getPreferredSize();
- var6 = this.viewport.getViewSize();
- var7 = this.viewport.getView();
- }
-
- if (var5 != null) {
- var3 += var5.width;
- var4 += var5.height;
- }
-
- Border var8 = ((JScrollPane)var1).getViewportBorder();
- if (var8 != null) {
- Insets var9 = var8.getBorderInsets(var1);
- var3 += var9.left + var9.right;
- var4 += var9.top + var9.bottom;
- }
-
- if (this.rowHead != null && this.rowHead.isVisible()) {
- var3 += this.rowHead.getPreferredSize().width;
- }
-
- if (this.colHead != null && this.colHead.isVisible()) {
- var4 += this.colHead.getPreferredSize().height;
- }
-
- if (this.vsb != null && this.vsbPolicy != 21) {
- if (this.vsbPolicy == 22) {
- var3 += this.vsb.getPreferredSize().width;
- } else if (var6 != null && var5 != null) {
- boolean var10 = true;
- if (var7 instanceof Scrollable) {
- var10 = !((Scrollable)var7).getScrollableTracksViewportHeight();
- }
-
- if (var10 && var6.height > var5.height) {
- var3 += this.vsb.getPreferredSize().width;
- }
- }
- }
-
- if (this.hsb != null && this.hsbPolicy != 31) {
- if (this.hsbPolicy == 32) {
- var4 += this.hsb.getPreferredSize().height;
- } else if (var6 != null && var5 != null) {
- boolean var11 = true;
- if (var7 instanceof Scrollable) {
- var11 = !((Scrollable)var7).getScrollableTracksViewportWidth();
- }
-
- if (var11 && var6.width > var5.width) {
- var4 += this.hsb.getPreferredSize().height;
- }
- }
- }
-
- return new Dimension(var3, var4);
- }
-
- public Dimension minimumLayoutSize(Container var1) {
- Insets var2 = var1.getInsets();
- int var3 = var2.left + var2.right;
- int var4 = var2.top + var2.bottom;
- if (this.viewport != null) {
- Dimension var5 = this.viewport.getMinimumSize();
- var3 += var5.width;
- var4 += var5.height;
- }
-
- Border var7 = ((JScrollPane)var1).getViewportBorder();
- if (var7 != null) {
- Insets var6 = var7.getBorderInsets(var1);
- var3 += var6.left + var6.right;
- var4 += var6.top + var6.bottom;
- }
-
- if (this.rowHead != null && this.rowHead.isVisible()) {
- Dimension var8 = this.rowHead.getMinimumSize();
- var3 += var8.width;
- var4 = Math.max(var4, var8.height);
- }
-
- if (this.colHead != null && this.colHead.isVisible()) {
- Dimension var9 = this.colHead.getMinimumSize();
- var3 = Math.max(var3, var9.width);
- var4 += var9.height;
- }
-
- if (this.vsb != null && this.vsbPolicy != 21) {
- Dimension var10 = this.vsb.getMinimumSize();
- var3 += var10.width;
- var4 = Math.max(var4, var10.height);
- }
-
- if (this.hsb != null && this.hsbPolicy != 21) {
- Dimension var11 = this.hsb.getMinimumSize();
- var3 = Math.max(var3, var11.width);
- var4 += var11.height;
- }
-
- return new Dimension(var3, var4);
- }
-
- public void layoutContainer(Container var1) {
- Rectangle var2 = new Rectangle(((Component)var1).getSize());
- Insets var3 = var1.getInsets();
- var2.x = var3.left;
- var2.y = var3.top;
- var2.width -= var3.left + var3.right;
- var2.height -= var3.top + var3.bottom;
- Rectangle var4 = new Rectangle(0, var2.y, 0, 0);
- if (this.colHead != null && this.colHead.isVisible()) {
- int var5 = this.colHead.getPreferredSize().height;
- var4.height = var5;
- var2.y += var5;
- var2.height -= var5;
- }
-
- Rectangle var17 = new Rectangle(var2.x, 0, 0, 0);
- if (this.rowHead != null && this.rowHead.isVisible()) {
- int var6 = this.rowHead.getPreferredSize().width;
- var17.width = var6;
- var2.x += var6;
- var2.width -= var6;
- }
-
- Border var18 = ((JScrollPane)var1).getViewportBorder();
- Insets var7;
- if (var18 != null) {
- var7 = var18.getBorderInsets(var1);
- var2.x += var7.left;
- var2.y += var7.top;
- var2.width -= var7.left + var7.right;
- var2.height -= var7.top + var7.bottom;
- } else {
- var7 = new Insets(0, 0, 0, 0);
- }
-
- var4.x = var2.x;
- var17.y = var2.y;
- Component var8 = this.viewport != null ? this.viewport.getView() : null;
- Dimension var9 = var8 != null ? var8.getPreferredSize() : new Dimension(0, 0);
- Dimension var10 = this.viewport != null ? this.viewport.toViewCoordinates(var2.getSize()) : new Dimension(0, 0);
- Rectangle var11 = new Rectangle(0, var2.y - var7.top, 0, 0);
- boolean var12 = this.vsbPolicy == 22 || var9.height > var10.height && this.vsbPolicy == 20;
- if (this.vsb != null && var12) {
- int var13 = this.vsb.getPreferredSize().width;
- var2.width -= var13;
- var11.x = var2.x + var2.width + var7.right;
- var11.width = var13;
- }
-
- Rectangle var20 = new Rectangle(var2.x - var7.left, 0, 0, 0);
- boolean var14 = this.hsbPolicy == 32 || var9.width > var10.width && this.hsbPolicy == 30;
- if (this.hsb != null && var14) {
- int var15 = this.hsb.getPreferredSize().height;
- var2.height -= var15;
- var20.y = var2.y + var2.height + var7.bottom;
- var20.height = var15;
- if (this.vsb != null && !var12 && this.vsbPolicy != 21) {
- var10 = this.viewport.toViewCoordinates(var2.getSize());
- var12 = var9.height > var10.height;
- if (var12) {
- int var16 = this.vsb.getPreferredSize().width;
- var2.width -= var16;
- var11.x = var2.x + var2.width + var7.right;
- var11.width = var16;
- }
- }
- }
-
- var11.height = var2.height + var7.top + var7.bottom;
- var20.width = var2.width + var7.left + var7.right;
- var17.height = var2.height;
- var4.width = var2.width;
- if (this.viewport != null) {
- this.viewport.setBounds(var2);
- }
-
- if (this.rowHead != null) {
- this.rowHead.setBounds(var17);
- }
-
- if (this.colHead != null) {
- this.colHead.setBounds(var4);
- }
-
- if (this.vsb != null) {
- if (var12) {
- this.vsb.setVisible(true);
- this.vsb.setBounds(var11);
- } else {
- this.vsb.setVisible(false);
- }
- }
-
- if (this.hsb != null) {
- if (var14) {
- this.hsb.setVisible(true);
- this.hsb.setBounds(var20);
- } else {
- this.hsb.setVisible(false);
- }
- }
-
- if (this.lowerLeft != null) {
- this.lowerLeft.setBounds(var17.x, var20.y, var17.width, var20.height);
- }
-
- if (this.lowerRight != null) {
- this.lowerRight.setBounds(var11.x, var20.y, var11.width, var20.height);
- }
-
- if (this.upperLeft != null) {
- this.upperLeft.setBounds(var17.x, var4.y, var17.width, var4.height);
- }
-
- if (this.upperRight != null) {
- this.upperRight.setBounds(var11.x, var4.y, var11.width, var4.height);
- }
-
- }
-
- public Rectangle getViewportBorderBounds(JScrollPane var1) {
- Rectangle var2 = new Rectangle(((Component)var1).getSize());
- Insets var3 = ((JComponent)var1).getInsets();
- var2.x = var3.left;
- var2.y = var3.top;
- var2.width -= var3.left + var3.right;
- var2.height -= var3.top + var3.bottom;
- if (this.colHead != null && this.colHead.isVisible()) {
- int var4 = this.colHead.getHeight();
- var2.y += var4;
- var2.height -= var4;
- }
-
- if (this.rowHead != null && this.rowHead.isVisible()) {
- int var5 = this.rowHead.getWidth();
- var2.x += var5;
- var2.width -= var5;
- }
-
- if (this.vsb != null && this.vsb.isVisible()) {
- var2.width -= this.vsb.getWidth();
- }
-
- if (this.hsb != null && this.hsb.isVisible()) {
- var2.height -= this.hsb.getHeight();
- }
-
- return var2;
- }
- }
-