home *** CD-ROM | disk | FTP | other *** search
- package sun.awt;
-
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.GridLayout;
- import java.awt.Insets;
- import java.util.BitSet;
-
- public class VariableGridLayout extends GridLayout {
- BitSet rowsSet;
- double[] rowFractions;
- BitSet colsSet;
- double[] colFractions;
- int rows;
- int cols;
- int hgap;
- int vgap;
-
- public VariableGridLayout(int var1, int var2) {
- this(var1, var2, 0, 0);
- if (var1 != 0) {
- this.rowsSet = new BitSet(var1);
- this.stdRowFractions(var1);
- }
-
- if (var2 != 0) {
- this.colsSet = new BitSet(var2);
- this.stdColFractions(var2);
- }
-
- }
-
- public VariableGridLayout(int var1, int var2, int var3, int var4) {
- super(var1, var2, var3, var4);
- this.rowsSet = new BitSet();
- this.colsSet = new BitSet();
- this.rows = var1;
- this.cols = var2;
- this.hgap = var3;
- this.vgap = var4;
- if (var1 != 0) {
- this.rowsSet = new BitSet(var1);
- this.stdRowFractions(var1);
- }
-
- if (var2 != 0) {
- this.colsSet = new BitSet(var2);
- this.stdColFractions(var2);
- }
-
- }
-
- void stdRowFractions(int var1) {
- this.rowFractions = new double[var1];
-
- for(int var2 = 0; var2 < var1; ++var2) {
- this.rowFractions[var2] = (double)1.0F / (double)var1;
- }
-
- }
-
- void stdColFractions(int var1) {
- this.colFractions = new double[var1];
-
- for(int var2 = 0; var2 < var1; ++var2) {
- this.colFractions[var2] = (double)1.0F / (double)var1;
- }
-
- }
-
- public void setRowFraction(int var1, double var2) {
- this.rowsSet.set(var1);
- this.rowFractions[var1] = var2;
- }
-
- public void setColFraction(int var1, double var2) {
- this.colsSet.set(var1);
- this.colFractions[var1] = var2;
- }
-
- public double getRowFraction(int var1) {
- return this.rowFractions[var1];
- }
-
- public double getColFraction(int var1) {
- return this.colFractions[var1];
- }
-
- void allocateExtraSpace(double[] var1, BitSet var2) {
- double var3 = (double)0.0F;
- int var5 = 0;
-
- for(int var6 = 0; var6 < var1.length; ++var6) {
- if (var2.get(var6)) {
- var3 += var1[var6];
- } else {
- ++var5;
- }
- }
-
- if (var5 != 0) {
- double var7 = ((double)1.0F - var3) / (double)var5;
-
- for(int var9 = 0; var9 < var1.length; ++var9) {
- if (!var2.get(var9)) {
- var1[var9] = var7;
- var2.set(var9);
- }
- }
- }
-
- }
-
- void allocateExtraSpace() {
- this.allocateExtraSpace(this.rowFractions, this.rowsSet);
- this.allocateExtraSpace(this.colFractions, this.colsSet);
- }
-
- public void layoutContainer(Container var1) {
- Object var2 = ((Component)var1).getTreeLock();
- synchronized(var2){}
-
- try {
- Insets var4 = var1.insets();
- int var5 = var1.countComponents();
- int var6 = this.rows;
- int var7 = this.cols;
- if (var6 > 0) {
- var7 = (var5 + var6 - 1) / var6;
- } else {
- var6 = (var5 + var7 - 1) / var7;
- }
-
- if (this.rows == 0) {
- this.stdRowFractions(var6);
- }
-
- if (this.cols == 0) {
- this.stdColFractions(var7);
- }
-
- Dimension var8 = ((Component)var1).size();
- int var9 = var8.width - (var4.left + var4.right);
- int var10 = var8.height - (var4.top + var4.bottom);
- var9 -= (var7 - 1) * this.hgap;
- var10 -= (var6 - 1) * this.vgap;
- this.allocateExtraSpace();
- int var11 = 0;
-
- for(int var12 = var4.left; var11 < var7; ++var11) {
- int var13 = (int)(this.getColFraction(var11) * (double)var9);
- int var14 = 0;
-
- for(int var15 = var4.top; var14 < var6; ++var14) {
- int var16 = var14 * var7 + var11;
- int var17 = (int)(this.getRowFraction(var14) * (double)var10);
- if (var16 < var5) {
- var1.getComponent(var16).reshape(var12, var15, var13, var17);
- }
-
- var15 += var17 + this.vgap;
- }
-
- var12 += var13 + this.hgap;
- }
- } catch (Throwable var19) {
- throw var19;
- }
-
- }
-
- static String fracsToString(double[] var0) {
- String var1 = "[" + var0.length + "]";
-
- for(int var2 = 0; var2 < var0.length; ++var2) {
- var1 = var1 + "<" + var0[var2] + ">";
- }
-
- return var1;
- }
-
- public String toString() {
- return this.getClass().getName() + "[hgap=" + this.hgap + ",vgap=" + this.vgap + ",rows=" + this.rows + ",cols=" + this.cols + ",rowFracs=" + fracsToString(this.rowFractions) + ",colFracs=" + fracsToString(this.colFractions) + "]";
- }
- }
-