home *** CD-ROM | disk | FTP | other *** search
- package jclass.bwt;
-
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.GridLayout;
- import java.awt.Insets;
-
- public class JCGridLayout extends GridLayout {
- protected int hgap;
- protected int vgap;
- protected int rows;
- protected int cols;
- protected int[] row_heights;
- protected int[] col_widths;
- public static final int VARIABLE = 0;
-
- public JCGridLayout(int var1, int var2) {
- this(var1, var2, 0, 0);
- }
-
- public JCGridLayout(int var1, int var2, int var3, int var4) {
- super(var1, var2, var3, var4);
- this.row_heights = new int[0];
- this.col_widths = new int[0];
- this.rows = var1;
- this.cols = var2;
- this.hgap = var3;
- this.vgap = var4;
- }
-
- protected void getGridSizes(Container var1, boolean var2) {
- int var3 = var1.countComponents();
- if (var3 != 0) {
- int var4 = this.rows;
- int var5 = this.cols;
- if (var4 > 0) {
- var5 = (var3 + var4 - 1) / var4;
- } else {
- var4 = (var3 + var5 - 1) / var5;
- }
-
- this.row_heights = new int[var4];
- this.col_widths = new int[var5];
-
- for(int var6 = 0; var6 < var3; ++var6) {
- Component var7 = var1.getComponent(var6);
- Dimension var8 = var2 ? var7.minimumSize() : var7.preferredSize();
- int var9 = var6 / var5;
- if (var8.height > this.row_heights[var9]) {
- this.row_heights[var9] = var8.height;
- }
-
- int var10 = var6 % var5;
- if (var8.width > this.col_widths[var10]) {
- this.col_widths[var10] = var8.width;
- }
- }
-
- }
- }
-
- final int sum(int[] var1) {
- if (var1 == null) {
- return 0;
- } else {
- int var2 = 0;
-
- for(int var3 = 0; var3 < var1.length; ++var3) {
- var2 += var1[var3];
- }
-
- return var2;
- }
- }
-
- public Dimension preferredLayoutSize(Container var1) {
- Insets var2 = var1.insets();
- this.getGridSizes(var1, false);
- return new Dimension(var2.left + var2.right + this.sum(this.col_widths) + (this.col_widths.length + 1) * this.hgap, var2.top + var2.bottom + this.sum(this.row_heights) + (this.row_heights.length + 1) * this.vgap);
- }
-
- public Dimension minimumLayoutSize(Container var1) {
- Insets var2 = var1.insets();
- this.getGridSizes(var1, true);
- return new Dimension(var2.left + var2.right + this.sum(this.col_widths) + (this.col_widths.length + 1) * this.hgap, var2.top + var2.bottom + this.sum(this.row_heights) + (this.row_heights.length + 1) * this.vgap);
- }
-
- protected void reshape(int var1, int var2, int var3, Component var4, int var5, int var6, int var7, int var8) {
- var4.reshape(var5, var6, var7, var8);
- }
-
- public void layoutContainer(Container var1) {
- int var2 = var1.countComponents();
- if (var2 != 0) {
- Insets var3 = var1.insets();
- this.getGridSizes(var1, false);
- int var4 = this.rows;
- int var5 = this.cols;
- if (var4 > 0) {
- var5 = (var2 + var4 - 1) / var4;
- } else {
- var4 = (var2 + var5 - 1) / var5;
- }
-
- Dimension var6 = ((Component)var1).size();
- int var7 = 0;
-
- for(int var8 = var3.left + this.hgap; var7 < var5; ++var7) {
- int var9 = 0;
-
- for(int var10 = var3.top + this.vgap; var9 < var4; ++var9) {
- int var11 = var9 * var5 + var7;
- if (var11 < var2) {
- int var12 = Math.max(0, Math.min(this.col_widths[var7], var6.width - var3.right - var8));
- int var13 = Math.max(0, Math.min(this.row_heights[var9], var6.height - var3.bottom - var10));
- this.reshape(var11, var9, var7, var1.getComponent(var11), var8, var10, var12, var13);
- }
-
- var10 += this.row_heights[var9] + this.vgap;
- }
-
- var8 += this.col_widths[var7] + this.hgap;
- }
-
- }
- }
- }
-