home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / sun / awt / VariableGridLayout.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  3.5 KB  |  187 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.       Object var2 = ((Component)var1).getTreeLock();
  122.       synchronized(var2){}
  123.  
  124.       try {
  125.          Insets var4 = var1.insets();
  126.          int var5 = var1.countComponents();
  127.          int var6 = this.rows;
  128.          int var7 = this.cols;
  129.          if (var6 > 0) {
  130.             var7 = (var5 + var6 - 1) / var6;
  131.          } else {
  132.             var6 = (var5 + var7 - 1) / var7;
  133.          }
  134.  
  135.          if (this.rows == 0) {
  136.             this.stdRowFractions(var6);
  137.          }
  138.  
  139.          if (this.cols == 0) {
  140.             this.stdColFractions(var7);
  141.          }
  142.  
  143.          Dimension var8 = ((Component)var1).size();
  144.          int var9 = var8.width - (var4.left + var4.right);
  145.          int var10 = var8.height - (var4.top + var4.bottom);
  146.          var9 -= (var7 - 1) * this.hgap;
  147.          var10 -= (var6 - 1) * this.vgap;
  148.          this.allocateExtraSpace();
  149.          int var11 = 0;
  150.  
  151.          for(int var12 = var4.left; var11 < var7; ++var11) {
  152.             int var13 = (int)(this.getColFraction(var11) * (double)var9);
  153.             int var14 = 0;
  154.  
  155.             for(int var15 = var4.top; var14 < var6; ++var14) {
  156.                int var16 = var14 * var7 + var11;
  157.                int var17 = (int)(this.getRowFraction(var14) * (double)var10);
  158.                if (var16 < var5) {
  159.                   var1.getComponent(var16).reshape(var12, var15, var13, var17);
  160.                }
  161.  
  162.                var15 += var17 + this.vgap;
  163.             }
  164.  
  165.             var12 += var13 + this.hgap;
  166.          }
  167.       } catch (Throwable var19) {
  168.          throw var19;
  169.       }
  170.  
  171.    }
  172.  
  173.    static String fracsToString(double[] var0) {
  174.       String var1 = "[" + var0.length + "]";
  175.  
  176.       for(int var2 = 0; var2 < var0.length; ++var2) {
  177.          var1 = var1 + "<" + var0[var2] + ">";
  178.       }
  179.  
  180.       return var1;
  181.    }
  182.  
  183.    public String toString() {
  184.       return this.getClass().getName() + "[hgap=" + this.hgap + ",vgap=" + this.vgap + ",rows=" + this.rows + ",cols=" + this.cols + ",rowFracs=" + fracsToString(this.rowFractions) + ",colFracs=" + fracsToString(this.colFractions) + "]";
  185.    }
  186. }
  187.