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) {
- Insets var2 = var1.insets();
- int var3 = var1.countComponents();
- int var4 = this.rows;
- int var5 = this.cols;
- if (var4 > 0) {
- var5 = (var3 + var4 - 1) / var4;
- } else {
- var4 = (var3 + var5 - 1) / var5;
- }
-
- if (this.rows == 0) {
- this.stdRowFractions(var4);
- }
-
- if (this.cols == 0) {
- this.stdColFractions(var5);
- }
-
- Dimension var6 = ((Component)var1).size();
- int var7 = var6.width - (var2.left + var2.right);
- int var8 = var6.height - (var2.top + var2.bottom);
- var7 -= (var5 - 1) * this.hgap;
- var8 -= (var4 - 1) * this.vgap;
- this.allocateExtraSpace();
- int var9 = 0;
-
- for(int var10 = var2.left; var9 < var5; ++var9) {
- int var11 = (int)(this.getColFraction(var9) * (double)var7);
- int var12 = 0;
-
- for(int var13 = var2.top; var12 < var4; ++var12) {
- int var14 = var12 * var5 + var9;
- int var15 = (int)(this.getRowFraction(var12) * (double)var8);
- if (var14 < var3) {
- var1.getComponent(var14).reshape(var10, var13, var11, var15);
- }
-
- var13 += var15 + this.vgap;
- }
-
- var10 += var11 + this.hgap;
- }
-
- }
-
- 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) + "]";
- }
- }
-