home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / swing / ScrollPaneLayout.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  7.4 KB  |  493 lines

  1. package javax.swing;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Container;
  5. import java.awt.Dimension;
  6. import java.awt.Insets;
  7. import java.awt.LayoutManager;
  8. import java.awt.Rectangle;
  9. import java.io.Serializable;
  10. import javax.swing.border.Border;
  11.  
  12. public class ScrollPaneLayout implements LayoutManager, ScrollPaneConstants, Serializable {
  13.    protected JViewport viewport;
  14.    protected JScrollBar vsb;
  15.    protected JScrollBar hsb;
  16.    protected JViewport rowHead;
  17.    protected JViewport colHead;
  18.    protected Component lowerLeft;
  19.    protected Component lowerRight;
  20.    protected Component upperLeft;
  21.    protected Component upperRight;
  22.    protected int vsbPolicy = 20;
  23.    protected int hsbPolicy = 30;
  24.  
  25.    public void syncWithScrollPane(JScrollPane var1) {
  26.       this.viewport = var1.getViewport();
  27.       this.vsb = var1.getVerticalScrollBar();
  28.       this.hsb = var1.getHorizontalScrollBar();
  29.       this.rowHead = var1.getRowHeader();
  30.       this.colHead = var1.getColumnHeader();
  31.       this.lowerLeft = var1.getCorner("LOWER_LEFT_CORNER");
  32.       this.lowerRight = var1.getCorner("LOWER_RIGHT_CORNER");
  33.       this.upperLeft = var1.getCorner("UPPER_LEFT_CORNER");
  34.       this.upperRight = var1.getCorner("UPPER_RIGHT_CORNER");
  35.       this.vsbPolicy = var1.getVerticalScrollBarPolicy();
  36.       this.hsbPolicy = var1.getHorizontalScrollBarPolicy();
  37.    }
  38.  
  39.    protected Component addSingletonComponent(Component var1, Component var2) {
  40.       if (var1 != null && var1 != var2) {
  41.          var1.getParent().remove(var1);
  42.       }
  43.  
  44.       return var2;
  45.    }
  46.  
  47.    public void addLayoutComponent(String var1, Component var2) {
  48.       if (var1.equals("VIEWPORT")) {
  49.          this.viewport = (JViewport)this.addSingletonComponent(this.viewport, var2);
  50.       } else if (var1.equals("VERTICAL_SCROLLBAR")) {
  51.          this.vsb = (JScrollBar)this.addSingletonComponent(this.vsb, var2);
  52.       } else if (var1.equals("HORIZONTAL_SCROLLBAR")) {
  53.          this.hsb = (JScrollBar)this.addSingletonComponent(this.hsb, var2);
  54.       } else if (var1.equals("ROW_HEADER")) {
  55.          this.rowHead = (JViewport)this.addSingletonComponent(this.rowHead, var2);
  56.       } else if (var1.equals("COLUMN_HEADER")) {
  57.          this.colHead = (JViewport)this.addSingletonComponent(this.colHead, var2);
  58.       } else if (var1.equals("LOWER_LEFT_CORNER")) {
  59.          this.lowerLeft = this.addSingletonComponent(this.lowerLeft, var2);
  60.       } else if (var1.equals("LOWER_RIGHT_CORNER")) {
  61.          this.lowerRight = this.addSingletonComponent(this.lowerRight, var2);
  62.       } else if (var1.equals("UPPER_LEFT_CORNER")) {
  63.          this.upperLeft = this.addSingletonComponent(this.upperLeft, var2);
  64.       } else {
  65.          if (!var1.equals("UPPER_RIGHT_CORNER")) {
  66.             throw new IllegalArgumentException("invalid layout key " + var1);
  67.          }
  68.  
  69.          this.upperRight = this.addSingletonComponent(this.upperRight, var2);
  70.       }
  71.  
  72.    }
  73.  
  74.    public void removeLayoutComponent(Component var1) {
  75.       if (var1 == this.viewport) {
  76.          this.viewport = null;
  77.       } else if (var1 == this.vsb) {
  78.          this.vsb = null;
  79.       } else if (var1 == this.hsb) {
  80.          this.hsb = null;
  81.       } else if (var1 == this.rowHead) {
  82.          this.rowHead = null;
  83.       } else if (var1 == this.colHead) {
  84.          this.colHead = null;
  85.       } else if (var1 == this.lowerLeft) {
  86.          this.lowerLeft = null;
  87.       } else if (var1 == this.lowerRight) {
  88.          this.lowerRight = null;
  89.       } else if (var1 == this.upperLeft) {
  90.          this.upperLeft = null;
  91.       } else if (var1 == this.upperRight) {
  92.          this.upperRight = null;
  93.       }
  94.  
  95.    }
  96.  
  97.    public int getVerticalScrollBarPolicy() {
  98.       return this.vsbPolicy;
  99.    }
  100.  
  101.    public void setVerticalScrollBarPolicy(int var1) {
  102.       switch (var1) {
  103.          case 20:
  104.          case 21:
  105.          case 22:
  106.             this.vsbPolicy = var1;
  107.             return;
  108.          default:
  109.             throw new IllegalArgumentException("invalid verticalScrollBarPolicy");
  110.       }
  111.    }
  112.  
  113.    public int getHorizontalScrollBarPolicy() {
  114.       return this.hsbPolicy;
  115.    }
  116.  
  117.    public void setHorizontalScrollBarPolicy(int var1) {
  118.       switch (var1) {
  119.          case 30:
  120.          case 31:
  121.          case 32:
  122.             this.hsbPolicy = var1;
  123.             return;
  124.          default:
  125.             throw new IllegalArgumentException("invalid horizontalScrollBarPolicy");
  126.       }
  127.    }
  128.  
  129.    public JViewport getViewport() {
  130.       return this.viewport;
  131.    }
  132.  
  133.    public JScrollBar getHorizontalScrollBar() {
  134.       return this.hsb;
  135.    }
  136.  
  137.    public JScrollBar getVerticalScrollBar() {
  138.       return this.vsb;
  139.    }
  140.  
  141.    public JViewport getRowHeader() {
  142.       return this.rowHead;
  143.    }
  144.  
  145.    public JViewport getColumnHeader() {
  146.       return this.colHead;
  147.    }
  148.  
  149.    public Component getCorner(String var1) {
  150.       if (var1.equals("LOWER_LEFT_CORNER")) {
  151.          return this.lowerLeft;
  152.       } else if (var1.equals("LOWER_RIGHT_CORNER")) {
  153.          return this.lowerRight;
  154.       } else if (var1.equals("UPPER_LEFT_CORNER")) {
  155.          return this.upperLeft;
  156.       } else {
  157.          return var1.equals("UPPER_RIGHT_CORNER") ? this.upperRight : null;
  158.       }
  159.    }
  160.  
  161.    public Dimension preferredLayoutSize(Container var1) {
  162.       JScrollPane var2 = (JScrollPane)var1;
  163.       this.vsbPolicy = var2.getVerticalScrollBarPolicy();
  164.       this.hsbPolicy = var2.getHorizontalScrollBarPolicy();
  165.       Insets var3 = var1.getInsets();
  166.       int var4 = var3.left + var3.right;
  167.       int var5 = var3.top + var3.bottom;
  168.       Dimension var6 = null;
  169.       Dimension var7 = null;
  170.       Component var8 = null;
  171.       if (this.viewport != null) {
  172.          var6 = this.viewport.getPreferredSize();
  173.          var7 = this.viewport.getViewSize();
  174.          var8 = this.viewport.getView();
  175.       }
  176.  
  177.       if (var6 != null) {
  178.          var4 += var6.width;
  179.          var5 += var6.height;
  180.       }
  181.  
  182.       Border var9 = var2.getViewportBorder();
  183.       if (var9 != null) {
  184.          Insets var10 = var9.getBorderInsets(var1);
  185.          var4 += var10.left + var10.right;
  186.          var5 += var10.top + var10.bottom;
  187.       }
  188.  
  189.       if (this.rowHead != null && this.rowHead.isVisible()) {
  190.          var4 += this.rowHead.getPreferredSize().width;
  191.       }
  192.  
  193.       if (this.colHead != null && this.colHead.isVisible()) {
  194.          var5 += this.colHead.getPreferredSize().height;
  195.       }
  196.  
  197.       if (this.vsb != null && this.vsbPolicy != 21) {
  198.          if (this.vsbPolicy == 22) {
  199.             var4 += this.vsb.getPreferredSize().width;
  200.          } else if (var7 != null && var6 != null) {
  201.             boolean var11 = true;
  202.             if (var8 instanceof Scrollable) {
  203.                var11 = !((Scrollable)var8).getScrollableTracksViewportHeight();
  204.             }
  205.  
  206.             if (var11 && var7.height > var6.height) {
  207.                var4 += this.vsb.getPreferredSize().width;
  208.             }
  209.          }
  210.       }
  211.  
  212.       if (this.hsb != null && this.hsbPolicy != 31) {
  213.          if (this.hsbPolicy == 32) {
  214.             var5 += this.hsb.getPreferredSize().height;
  215.          } else if (var7 != null && var6 != null) {
  216.             boolean var12 = true;
  217.             if (var8 instanceof Scrollable) {
  218.                var12 = !((Scrollable)var8).getScrollableTracksViewportWidth();
  219.             }
  220.  
  221.             if (var12 && var7.width > var6.width) {
  222.                var5 += this.hsb.getPreferredSize().height;
  223.             }
  224.          }
  225.       }
  226.  
  227.       return new Dimension(var4, var5);
  228.    }
  229.  
  230.    public Dimension minimumLayoutSize(Container var1) {
  231.       JScrollPane var2 = (JScrollPane)var1;
  232.       this.vsbPolicy = var2.getVerticalScrollBarPolicy();
  233.       this.hsbPolicy = var2.getHorizontalScrollBarPolicy();
  234.       Insets var3 = var1.getInsets();
  235.       int var4 = var3.left + var3.right;
  236.       int var5 = var3.top + var3.bottom;
  237.       if (this.viewport != null) {
  238.          Dimension var6 = this.viewport.getMinimumSize();
  239.          var4 += var6.width;
  240.          var5 += var6.height;
  241.       }
  242.  
  243.       Border var8 = var2.getViewportBorder();
  244.       if (var8 != null) {
  245.          Insets var7 = var8.getBorderInsets(var1);
  246.          var4 += var7.left + var7.right;
  247.          var5 += var7.top + var7.bottom;
  248.       }
  249.  
  250.       if (this.rowHead != null && this.rowHead.isVisible()) {
  251.          Dimension var9 = this.rowHead.getMinimumSize();
  252.          var4 += var9.width;
  253.          var5 = Math.max(var5, var9.height);
  254.       }
  255.  
  256.       if (this.colHead != null && this.colHead.isVisible()) {
  257.          Dimension var10 = this.colHead.getMinimumSize();
  258.          var4 = Math.max(var4, var10.width);
  259.          var5 += var10.height;
  260.       }
  261.  
  262.       if (this.vsb != null && this.vsbPolicy != 21) {
  263.          Dimension var11 = this.vsb.getMinimumSize();
  264.          var4 += var11.width;
  265.          var5 = Math.max(var5, var11.height);
  266.       }
  267.  
  268.       if (this.hsb != null && this.hsbPolicy != 21) {
  269.          Dimension var12 = this.hsb.getMinimumSize();
  270.          var4 = Math.max(var4, var12.width);
  271.          var5 += var12.height;
  272.       }
  273.  
  274.       return new Dimension(var4, var5);
  275.    }
  276.  
  277.    public void layoutContainer(Container var1) {
  278.       JScrollPane var2 = (JScrollPane)var1;
  279.       this.vsbPolicy = var2.getVerticalScrollBarPolicy();
  280.       this.hsbPolicy = var2.getHorizontalScrollBarPolicy();
  281.       Rectangle var3 = ((Component)var2).getBounds();
  282.       var3.x = var3.y = 0;
  283.       Insets var4 = var1.getInsets();
  284.       var3.x = var4.left;
  285.       var3.y = var4.top;
  286.       var3.width -= var4.left + var4.right;
  287.       var3.height -= var4.top + var4.bottom;
  288.       boolean var5 = SwingUtilities.isLeftToRight(var2);
  289.       Rectangle var6 = new Rectangle(0, var3.y, 0, 0);
  290.       if (this.colHead != null && this.colHead.isVisible()) {
  291.          int var7 = this.colHead.getPreferredSize().height;
  292.          var6.height = var7;
  293.          var3.y += var7;
  294.          var3.height -= var7;
  295.       }
  296.  
  297.       Rectangle var23 = new Rectangle(0, 0, 0, 0);
  298.       if (this.rowHead != null && this.rowHead.isVisible()) {
  299.          int var8 = this.rowHead.getPreferredSize().width;
  300.          var23.width = var8;
  301.          var3.width -= var8;
  302.          if (var5) {
  303.             var23.x = var3.x;
  304.             var3.x += var8;
  305.          } else {
  306.             var23.x = var3.x + var3.width;
  307.          }
  308.       }
  309.  
  310.       Border var24 = var2.getViewportBorder();
  311.       Insets var9;
  312.       if (var24 != null) {
  313.          var9 = var24.getBorderInsets(var1);
  314.          var3.x += var9.left;
  315.          var3.y += var9.top;
  316.          var3.width -= var9.left + var9.right;
  317.          var3.height -= var9.top + var9.bottom;
  318.       } else {
  319.          var9 = new Insets(0, 0, 0, 0);
  320.       }
  321.  
  322.       Component var10 = this.viewport != null ? this.viewport.getView() : null;
  323.       Dimension var11 = var10 != null ? var10.getPreferredSize() : new Dimension(0, 0);
  324.       Dimension var12 = this.viewport != null ? this.viewport.toViewCoordinates(var3.getSize()) : new Dimension(0, 0);
  325.       boolean var13 = false;
  326.       boolean var14 = false;
  327.       Scrollable var15;
  328.       if (var10 instanceof Scrollable) {
  329.          var15 = (Scrollable)var10;
  330.          var13 = var15.getScrollableTracksViewportWidth();
  331.          var14 = var15.getScrollableTracksViewportHeight();
  332.       } else {
  333.          var15 = null;
  334.       }
  335.  
  336.       Rectangle var16 = new Rectangle(0, var3.y - var9.top, 0, 0);
  337.       boolean var17;
  338.       if (this.vsbPolicy == 22) {
  339.          var17 = true;
  340.       } else if (this.vsbPolicy == 21) {
  341.          var17 = false;
  342.       } else {
  343.          var17 = !var14 && var11.height > var12.height;
  344.       }
  345.  
  346.       if (this.vsb != null && var17) {
  347.          this.adjustForVSB(true, var3, var16, var9, var5);
  348.          var12 = this.viewport.toViewCoordinates(var3.getSize());
  349.       }
  350.  
  351.       Rectangle var18 = new Rectangle(var3.x - var9.left, 0, 0, 0);
  352.       boolean var19;
  353.       if (this.hsbPolicy == 32) {
  354.          var19 = true;
  355.       } else if (this.hsbPolicy == 31) {
  356.          var19 = false;
  357.       } else {
  358.          var19 = !var13 && var11.width > var12.width;
  359.       }
  360.  
  361.       if (this.hsb != null && var19) {
  362.          this.adjustForHSB(true, var3, var18, var9);
  363.          if (this.vsb != null && !var17 && this.vsbPolicy != 21) {
  364.             var12 = this.viewport.toViewCoordinates(var3.getSize());
  365.             var17 = var11.height > var12.height;
  366.             if (var17) {
  367.                this.adjustForVSB(true, var3, var16, var9, var5);
  368.             }
  369.          }
  370.       }
  371.  
  372.       if (this.viewport != null) {
  373.          this.viewport.setBounds(var3);
  374.          if (var15 != null) {
  375.             var12 = this.viewport.toViewCoordinates(var3.getSize());
  376.             boolean var20 = var19;
  377.             boolean var21 = var17;
  378.             var13 = var15.getScrollableTracksViewportWidth();
  379.             var14 = var15.getScrollableTracksViewportHeight();
  380.             if (this.vsb != null && this.vsbPolicy == 20) {
  381.                boolean var22 = !var14 && var11.height > var12.height;
  382.                if (var22 != var17) {
  383.                   var17 = var22;
  384.                   this.adjustForVSB(var22, var3, var16, var9, var5);
  385.                   var12 = this.viewport.toViewCoordinates(var3.getSize());
  386.                }
  387.             }
  388.  
  389.             if (this.hsb != null && this.hsbPolicy == 30) {
  390.                boolean var30 = !var13 && var11.width > var12.width;
  391.                if (var30 != var19) {
  392.                   var19 = var30;
  393.                   this.adjustForHSB(var30, var3, var18, var9);
  394.                   if (this.vsb != null && !var17 && this.vsbPolicy != 21) {
  395.                      var12 = this.viewport.toViewCoordinates(var3.getSize());
  396.                      var17 = var11.height > var12.height;
  397.                      if (var17) {
  398.                         this.adjustForVSB(true, var3, var16, var9, var5);
  399.                      }
  400.                   }
  401.                }
  402.             }
  403.  
  404.             if (var20 != var19 || var21 != var17) {
  405.                this.viewport.setBounds(var3);
  406.             }
  407.          }
  408.       }
  409.  
  410.       var16.height = var3.height + var9.top + var9.bottom;
  411.       var18.width = var3.width + var9.left + var9.right;
  412.       var23.height = var3.height + var9.top + var9.bottom;
  413.       var23.y = var3.y - var9.top;
  414.       var6.width = var3.width + var9.left + var9.right;
  415.       var6.x = var3.x - var9.left;
  416.       if (this.rowHead != null) {
  417.          this.rowHead.setBounds(var23);
  418.       }
  419.  
  420.       if (this.colHead != null) {
  421.          this.colHead.setBounds(var6);
  422.       }
  423.  
  424.       if (this.vsb != null) {
  425.          if (var17) {
  426.             this.vsb.setVisible(true);
  427.             this.vsb.setBounds(var16);
  428.          } else {
  429.             this.vsb.setVisible(false);
  430.          }
  431.       }
  432.  
  433.       if (this.hsb != null) {
  434.          if (var19) {
  435.             this.hsb.setVisible(true);
  436.             this.hsb.setBounds(var18);
  437.          } else {
  438.             this.hsb.setVisible(false);
  439.          }
  440.       }
  441.  
  442.       if (this.lowerLeft != null) {
  443.          this.lowerLeft.setBounds(var5 ? var23.x : var16.x, var18.y, var5 ? var23.width : var16.width, var18.height);
  444.       }
  445.  
  446.       if (this.lowerRight != null) {
  447.          this.lowerRight.setBounds(var5 ? var16.x : var23.x, var18.y, var5 ? var16.width : var23.width, var18.height);
  448.       }
  449.  
  450.       if (this.upperLeft != null) {
  451.          this.upperLeft.setBounds(var5 ? var23.x : var16.x, var6.y, var5 ? var23.width : var16.width, var6.height);
  452.       }
  453.  
  454.       if (this.upperRight != null) {
  455.          this.upperRight.setBounds(var5 ? var16.x : var23.x, var6.y, var5 ? var16.width : var23.width, var6.height);
  456.       }
  457.  
  458.    }
  459.  
  460.    private void adjustForVSB(boolean var1, Rectangle var2, Rectangle var3, Insets var4, boolean var5) {
  461.       int var6 = this.vsb.getPreferredSize().width;
  462.       if (var1) {
  463.          var2.width -= var6;
  464.          var3.width = var6;
  465.          if (var5) {
  466.             var3.x = var2.x + var2.width + var4.right;
  467.          } else {
  468.             var3.x = var2.x - var4.left;
  469.             var2.x += var6;
  470.          }
  471.       } else {
  472.          var2.width += var6;
  473.       }
  474.  
  475.    }
  476.  
  477.    private void adjustForHSB(boolean var1, Rectangle var2, Rectangle var3, Insets var4) {
  478.       int var5 = this.hsb.getPreferredSize().height;
  479.       if (var1) {
  480.          var2.height -= var5;
  481.          var3.y = var2.y + var2.height + var4.bottom;
  482.          var3.height = var5;
  483.       } else {
  484.          var2.height += var5;
  485.       }
  486.  
  487.    }
  488.  
  489.    public Rectangle getViewportBorderBounds(JScrollPane var1) {
  490.       return var1.getViewportBorderBounds();
  491.    }
  492. }
  493.