home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 June / CHIPHEFT062001.ISO / browser / nc32lyc / comm.z / java40.jar / sun / awt / VariableGridLayout.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-08-15  |  3.4 KB  |  180 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.colsSet = new BitSet();
  38.       this.rows = var1;
  39.       this.cols = var2;
  40.       this.hgap = var3;
  41.       this.vgap = var4;
  42.       if (var1 != 0) {
  43.          this.rowsSet = new BitSet(var1);
  44.          this.stdRowFractions(var1);
  45.       }
  46.  
  47.       if (var2 != 0) {
  48.          this.colsSet = new BitSet(var2);
  49.          this.stdColFractions(var2);
  50.       }
  51.  
  52.    }
  53.  
  54.    void stdRowFractions(int var1) {
  55.       this.rowFractions = new double[var1];
  56.  
  57.       for(int var2 = 0; var2 < var1; ++var2) {
  58.          this.rowFractions[var2] = (double)1.0F / (double)var1;
  59.       }
  60.  
  61.    }
  62.  
  63.    void stdColFractions(int var1) {
  64.       this.colFractions = new double[var1];
  65.  
  66.       for(int var2 = 0; var2 < var1; ++var2) {
  67.          this.colFractions[var2] = (double)1.0F / (double)var1;
  68.       }
  69.  
  70.    }
  71.  
  72.    public void setRowFraction(int var1, double var2) {
  73.       this.rowsSet.set(var1);
  74.       this.rowFractions[var1] = var2;
  75.    }
  76.  
  77.    public void setColFraction(int var1, double var2) {
  78.       this.colsSet.set(var1);
  79.       this.colFractions[var1] = var2;
  80.    }
  81.  
  82.    public double getRowFraction(int var1) {
  83.       return this.rowFractions[var1];
  84.    }
  85.  
  86.    public double getColFraction(int var1) {
  87.       return this.colFractions[var1];
  88.    }
  89.  
  90.    void allocateExtraSpace(double[] var1, BitSet var2) {
  91.       double var3 = (double)0.0F;
  92.       int var5 = 0;
  93.  
  94.       for(int var6 = 0; var6 < var1.length; ++var6) {
  95.          if (var2.get(var6)) {
  96.             var3 += var1[var6];
  97.          } else {
  98.             ++var5;
  99.          }
  100.       }
  101.  
  102.       if (var5 != 0) {
  103.          double var7 = ((double)1.0F - var3) / (double)var5;
  104.  
  105.          for(int var9 = 0; var9 < var1.length; ++var9) {
  106.             if (!var2.get(var9)) {
  107.                var1[var9] = var7;
  108.                var2.set(var9);
  109.             }
  110.          }
  111.       }
  112.  
  113.    }
  114.  
  115.    void allocateExtraSpace() {
  116.       this.allocateExtraSpace(this.rowFractions, this.rowsSet);
  117.       this.allocateExtraSpace(this.colFractions, this.colsSet);
  118.    }
  119.  
  120.    public void layoutContainer(Container var1) {
  121.       Insets var2 = var1.insets();
  122.       int var3 = var1.countComponents();
  123.       int var4 = this.rows;
  124.       int var5 = this.cols;
  125.       if (var4 > 0) {
  126.          var5 = (var3 + var4 - 1) / var4;
  127.       } else {
  128.          var4 = (var3 + var5 - 1) / var5;
  129.       }
  130.  
  131.       if (this.rows == 0) {
  132.          this.stdRowFractions(var4);
  133.       }
  134.  
  135.       if (this.cols == 0) {
  136.          this.stdColFractions(var5);
  137.       }
  138.  
  139.       Dimension var6 = ((Component)var1).size();
  140.       int var7 = var6.width - (var2.left + var2.right);
  141.       int var8 = var6.height - (var2.top + var2.bottom);
  142.       var7 -= (var5 - 1) * this.hgap;
  143.       var8 -= (var4 - 1) * this.vgap;
  144.       this.allocateExtraSpace();
  145.       int var9 = 0;
  146.  
  147.       for(int var10 = var2.left; var9 < var5; ++var9) {
  148.          int var11 = (int)(this.getColFraction(var9) * (double)var7);
  149.          int var12 = 0;
  150.  
  151.          for(int var13 = var2.top; var12 < var4; ++var12) {
  152.             int var14 = var12 * var5 + var9;
  153.             int var15 = (int)(this.getRowFraction(var12) * (double)var8);
  154.             if (var14 < var3) {
  155.                var1.getComponent(var14).reshape(var10, var13, var11, var15);
  156.             }
  157.  
  158.             var13 += var15 + this.vgap;
  159.          }
  160.  
  161.          var10 += var11 + this.hgap;
  162.       }
  163.  
  164.    }
  165.  
  166.    static String fracsToString(double[] var0) {
  167.       String var1 = "[" + var0.length + "]";
  168.  
  169.       for(int var2 = 0; var2 < var0.length; ++var2) {
  170.          var1 = var1 + "<" + var0[var2] + ">";
  171.       }
  172.  
  173.       return var1;
  174.    }
  175.  
  176.    public String toString() {
  177.       return this.getClass().getName() + "[hgap=" + this.hgap + ",vgap=" + this.vgap + ",rows=" + this.rows + ",cols=" + this.cols + ",rowFracs=" + fracsToString(this.rowFractions) + ",colFracs=" + fracsToString(this.colFractions) + "]";
  178.    }
  179. }
  180.