home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / sun / awt / OrientableFlowLayout.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  3.4 KB  |  176 lines

  1. package sun.awt;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Container;
  5. import java.awt.Dimension;
  6. import java.awt.FlowLayout;
  7. import java.awt.Insets;
  8.  
  9. public class OrientableFlowLayout extends FlowLayout {
  10.    public static final int HORIZONTAL = 0;
  11.    public static final int VERTICAL = 1;
  12.    public static final int TOP = 0;
  13.    public static final int BOTTOM = 2;
  14.    int orientation;
  15.    int vAlign;
  16.    int vHGap;
  17.    int vVGap;
  18.  
  19.    public OrientableFlowLayout() {
  20.       this(0, 1, 1, 5, 5, 5, 5);
  21.    }
  22.  
  23.    public OrientableFlowLayout(int var1) {
  24.       this(var1, 1, 1, 5, 5, 5, 5);
  25.    }
  26.  
  27.    public OrientableFlowLayout(int var1, int var2, int var3) {
  28.       this(var1, var2, var3, 5, 5, 5, 5);
  29.    }
  30.  
  31.    public OrientableFlowLayout(int var1, int var2, int var3, int var4, int var5, int var6, int var7) {
  32.       super(var2, var4, var5);
  33.       this.orientation = var1;
  34.       this.vAlign = var3;
  35.       this.vHGap = var6;
  36.       this.vVGap = var7;
  37.    }
  38.  
  39.    public synchronized void orientHorizontally() {
  40.       this.orientation = 0;
  41.    }
  42.  
  43.    public synchronized void orientVertically() {
  44.       this.orientation = 1;
  45.    }
  46.  
  47.    public Dimension preferredLayoutSize(Container var1) {
  48.       if (this.orientation == 0) {
  49.          return super.preferredLayoutSize(var1);
  50.       } else {
  51.          Dimension var2 = new Dimension(0, 0);
  52.          int var3 = var1.countComponents();
  53.  
  54.          for(int var4 = 0; var4 < var3; ++var4) {
  55.             Component var5 = var1.getComponent(var4);
  56.             if (var5.isVisible()) {
  57.                Dimension var6 = var5.preferredSize();
  58.                var2.width = Math.max(var2.width, var6.width);
  59.                if (var4 > 0) {
  60.                   var2.height += this.vVGap;
  61.                }
  62.  
  63.                var2.height += var6.height;
  64.             }
  65.          }
  66.  
  67.          Insets var7 = var1.insets();
  68.          var2.width += var7.left + var7.right + this.vHGap * 2;
  69.          var2.height += var7.top + var7.bottom + this.vVGap * 2;
  70.          return var2;
  71.       }
  72.    }
  73.  
  74.    public Dimension minimumLayoutSize(Container var1) {
  75.       if (this.orientation == 0) {
  76.          return super.minimumLayoutSize(var1);
  77.       } else {
  78.          Dimension var2 = new Dimension(0, 0);
  79.          int var3 = var1.countComponents();
  80.  
  81.          for(int var4 = 0; var4 < var3; ++var4) {
  82.             Component var5 = var1.getComponent(var4);
  83.             if (var5.isVisible()) {
  84.                Dimension var6 = var5.minimumSize();
  85.                var2.width = Math.max(var2.width, var6.width);
  86.                if (var4 > 0) {
  87.                   var2.height += this.vVGap;
  88.                }
  89.  
  90.                var2.height += var6.height;
  91.             }
  92.          }
  93.  
  94.          Insets var7 = var1.insets();
  95.          var2.width += var7.left + var7.right + this.vHGap * 2;
  96.          var2.height += var7.top + var7.bottom + this.vVGap * 2;
  97.          return var2;
  98.       }
  99.    }
  100.  
  101.    public void layoutContainer(Container var1) {
  102.       if (this.orientation == 0) {
  103.          super.layoutContainer(var1);
  104.       } else {
  105.          Insets var2 = var1.insets();
  106.          Dimension var3 = ((Component)var1).size();
  107.          int var4 = var3.height - (var2.top + var2.bottom + this.vVGap * 2);
  108.          int var5 = var2.left + this.vHGap;
  109.          int var6 = 0;
  110.          int var7 = 0;
  111.          int var8 = 0;
  112.          int var9 = var1.countComponents();
  113.  
  114.          for(int var10 = 0; var10 < var9; ++var10) {
  115.             Component var11 = var1.getComponent(var10);
  116.             if (var11.isVisible()) {
  117.                Dimension var12 = var11.preferredSize();
  118.                var11.resize(var12.width, var12.height);
  119.                if (var6 != 0 && var6 + var12.height > var4) {
  120.                   this.moveComponents(var1, var5, var2.top + this.vVGap, var7, var4 - var6, var8, var10);
  121.                   var5 += this.vHGap + var7;
  122.                   var6 = var12.width;
  123.                   var7 = var12.width;
  124.                   var8 = var10;
  125.                } else {
  126.                   if (var6 > 0) {
  127.                      var6 += this.vVGap;
  128.                   }
  129.  
  130.                   var6 += var12.height;
  131.                   var7 = Math.max(var7, var12.width);
  132.                }
  133.             }
  134.          }
  135.  
  136.          this.moveComponents(var1, var5, var2.top + this.vVGap, var7, var4 - var6, var8, var9);
  137.       }
  138.    }
  139.  
  140.    private void moveComponents(Container var1, int var2, int var3, int var4, int var5, int var6, int var7) {
  141.       switch (this.vAlign) {
  142.          case 0:
  143.          default:
  144.             break;
  145.          case 1:
  146.             var3 += var5 / 2;
  147.             break;
  148.          case 2:
  149.             var3 += var5;
  150.       }
  151.  
  152.       for(int var8 = var6; var8 < var7; ++var8) {
  153.          Component var9 = var1.getComponent(var8);
  154.          Dimension var10 = var9.size();
  155.          if (var9.isVisible()) {
  156.             var9.move(var2 + (var4 - var10.width) / 2, var3);
  157.             var3 += this.vVGap + var10.height;
  158.          }
  159.       }
  160.  
  161.    }
  162.  
  163.    public String toString() {
  164.       String var1 = "";
  165.       switch (this.orientation) {
  166.          case 0:
  167.             var1 = "orientation=horizontal, ";
  168.             break;
  169.          case 1:
  170.             var1 = "orientation=vertical, ";
  171.       }
  172.  
  173.       return this.getClass().getName() + "[" + var1 + super.toString() + "]";
  174.    }
  175. }
  176.