home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / sun / awt / VariableGridLayout.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  2.7 KB  |  182 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.GridLayout;
  7. import java.awt.Insets;
  8. import java.util.BitSet;
  9.  
  10. public class VariableGridLayout extends GridLayout {
  11.    BitSet rowsSet;
  12.    double[] rowFractions;
  13.    BitSet colsSet;
  14.    double[] colFractions;
  15.    int rows;
  16.    int cols;
  17.    int hgap;
  18.    int vgap;
  19.  
  20.    public VariableGridLayout(int var1, int var2) {
  21.       this(var1, var2, 0, 0);
  22.       if (var1 != 0) {
  23.          this.rowsSet = new BitSet(var1);
  24.          this.stdRowFractions(var1);
  25.       }
  26.  
  27.       if (var2 != 0) {
  28.          this.colsSet = new BitSet(var2);
  29.          this.stdColFractions(var2);
  30.       }
  31.  
  32.    }
  33.  
  34.    public VariableGridLayout(int var1, int var2, int var3, int var4) {
  35.       super(var1, var2, var3, var4);
  36.       this.rowsSet = new BitSet();
  37.       this.rowFractions = null;
  38.       this.colsSet = new BitSet();
  39.       this.colFractions = null;
  40.       this.rows = var1;
  41.       this.cols = var2;
  42.       this.hgap = var3;
  43.       this.vgap = var4;
  44.       if (var1 != 0) {
  45.          this.rowsSet = new BitSet(var1);
  46.          this.stdRowFractions(var1);
  47.       }
  48.  
  49.       if (var2 != 0) {
  50.          this.colsSet = new BitSet(var2);
  51.          this.stdColFractions(var2);
  52.       }
  53.  
  54.    }
  55.  
  56.    void stdRowFractions(int var1) {
  57.       this.rowFractions = new double[var1];
  58.  
  59.       for(int var2 = 0; var2 < var1; ++var2) {
  60.          this.rowFractions[var2] = (double)1.0F / (double)var1;
  61.       }
  62.  
  63.    }
  64.  
  65.    void stdColFractions(int var1) {
  66.       this.colFractions = new double[var1];
  67.  
  68.       for(int var2 = 0; var2 < var1; ++var2) {
  69.          this.colFractions[var2] = (double)1.0F / (double)var1;
  70.       }
  71.  
  72.    }
  73.  
  74.    public void setRowFraction(int var1, double var2) {
  75.       this.rowsSet.set(var1);
  76.       this.rowFractions[var1] = var2;
  77.    }
  78.  
  79.    public void setColFraction(int var1, double var2) {
  80.       this.colsSet.set(var1);
  81.       this.colFractions[var1] = var2;
  82.    }
  83.  
  84.    public double getRowFraction(int var1) {
  85.       return this.rowFractions[var1];
  86.    }
  87.  
  88.    public double getColFraction(int var1) {
  89.       return this.colFractions[var1];
  90.    }
  91.  
  92.    void allocateExtraSpace(double[] var1, BitSet var2) {
  93.       double var3 = (double)0.0F;
  94.       int var5 = 0;
  95.  
  96.       for(int var6 = 0; var6 < var1.length; ++var6) {
  97.          if (var2.get(var6)) {
  98.             var3 += var1[var6];
  99.          } else {
  100.             ++var5;
  101.          }
  102.       }
  103.  
  104.       if (var5 != 0) {
  105.          double var7 = ((double)1.0F - var3) / (double)var5;
  106.  
  107.          for(int var9 = 0; var9 < var1.length; ++var9) {
  108.             if (!var2.get(var9)) {
  109.                var1[var9] = var7;
  110.                var2.set(var9);
  111.             }
  112.          }
  113.       }
  114.  
  115.    }
  116.  
  117.    void allocateExtraSpace() {
  118.       this.allocateExtraSpace(this.rowFractions, this.rowsSet);
  119.       this.allocateExtraSpace(this.colFractions, this.colsSet);
  120.    }
  121.  
  122.    public void layoutContainer(Container var1) {
  123.       Insets var2 = var1.insets();
  124.       int var3 = var1.countComponents();
  125.       int var4 = this.rows;
  126.       int var5 = this.cols;
  127.       if (var4 > 0) {
  128.          var5 = (var3 + var4 - 1) / var4;
  129.       } else {
  130.          var4 = (var3 + var5 - 1) / var5;
  131.       }
  132.  
  133.       if (this.rows == 0) {
  134.          this.stdRowFractions(var4);
  135.       }
  136.  
  137.       if (this.cols == 0) {
  138.          this.stdColFractions(var5);
  139.       }
  140.  
  141.       Dimension var6 = ((Component)var1).size();
  142.       int var7 = var6.width - (var2.left + var2.right);
  143.       int var8 = var6.height - (var2.top + var2.bottom);
  144.       var7 -= (var5 - 1) * this.hgap;
  145.       var8 -= (var4 - 1) * this.vgap;
  146.       this.allocateExtraSpace();
  147.       int var9 = 0;
  148.  
  149.       for(int var10 = var2.left; var9 < var5; ++var9) {
  150.          int var11 = (int)(this.getColFraction(var9) * (double)var7);
  151.          int var12 = 0;
  152.  
  153.          for(int var13 = var2.top; var12 < var4; ++var12) {
  154.             int var14 = var12 * var5 + var9;
  155.             int var15 = (int)(this.getRowFraction(var12) * (double)var8);
  156.             if (var14 < var3) {
  157.                var1.getComponent(var14).reshape(var10, var13, var11, var15);
  158.             }
  159.  
  160.             var13 += var15 + this.vgap;
  161.          }
  162.  
  163.          var10 += var11 + this.hgap;
  164.       }
  165.  
  166.    }
  167.  
  168.    static String fracsToString(double[] var0) {
  169.       String var1 = "[" + var0.length + "]";
  170.  
  171.       for(int var2 = 0; var2 < var0.length; ++var2) {
  172.          var1 = var1 + "<" + var0[var2] + ">";
  173.       }
  174.  
  175.       return var1;
  176.    }
  177.  
  178.    public String toString() {
  179.       return this.getClass().getName() + "[hgap=" + this.hgap + ",vgap=" + this.vgap + ",rows=" + this.rows + ",cols=" + this.cols + ",rowFracs=" + fracsToString(this.rowFractions) + ",colFracs=" + fracsToString(this.colFractions) + "]";
  180.    }
  181. }
  182.