home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VCafe / JCLASS.BIN / KLG.JAR / jclass / bwt / JCGridLayout.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-12-05  |  2.1 KB  |  129 lines

  1. package jclass.bwt;
  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.  
  9. public class JCGridLayout extends GridLayout {
  10.    protected int hgap;
  11.    protected int vgap;
  12.    protected int rows;
  13.    protected int cols;
  14.    protected int[] row_heights;
  15.    protected int[] col_widths;
  16.    public static final int VARIABLE = 0;
  17.  
  18.    public JCGridLayout(int var1, int var2) {
  19.       this(var1, var2, 0, 0);
  20.    }
  21.  
  22.    public JCGridLayout(int var1, int var2, int var3, int var4) {
  23.       super(var1, var2, var3, var4);
  24.       this.row_heights = new int[0];
  25.       this.col_widths = new int[0];
  26.       this.rows = var1;
  27.       this.cols = var2;
  28.       this.hgap = var3;
  29.       this.vgap = var4;
  30.    }
  31.  
  32.    protected void getGridSizes(Container var1, boolean var2) {
  33.       int var3 = var1.countComponents();
  34.       if (var3 != 0) {
  35.          int var4 = this.rows;
  36.          int var5 = this.cols;
  37.          if (var4 > 0) {
  38.             var5 = (var3 + var4 - 1) / var4;
  39.          } else {
  40.             var4 = (var3 + var5 - 1) / var5;
  41.          }
  42.  
  43.          this.row_heights = new int[var4];
  44.          this.col_widths = new int[var5];
  45.  
  46.          for(int var6 = 0; var6 < var3; ++var6) {
  47.             Component var7 = var1.getComponent(var6);
  48.             Dimension var8 = var2 ? var7.minimumSize() : var7.preferredSize();
  49.             int var9 = var6 / var5;
  50.             if (var8.height > this.row_heights[var9]) {
  51.                this.row_heights[var9] = var8.height;
  52.             }
  53.  
  54.             int var10 = var6 % var5;
  55.             if (var8.width > this.col_widths[var10]) {
  56.                this.col_widths[var10] = var8.width;
  57.             }
  58.          }
  59.  
  60.       }
  61.    }
  62.  
  63.    final int sum(int[] var1) {
  64.       if (var1 == null) {
  65.          return 0;
  66.       } else {
  67.          int var2 = 0;
  68.  
  69.          for(int var3 = 0; var3 < var1.length; ++var3) {
  70.             var2 += var1[var3];
  71.          }
  72.  
  73.          return var2;
  74.       }
  75.    }
  76.  
  77.    public Dimension preferredLayoutSize(Container var1) {
  78.       Insets var2 = var1.insets();
  79.       this.getGridSizes(var1, false);
  80.       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);
  81.    }
  82.  
  83.    public Dimension minimumLayoutSize(Container var1) {
  84.       Insets var2 = var1.insets();
  85.       this.getGridSizes(var1, true);
  86.       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);
  87.    }
  88.  
  89.    protected void reshape(int var1, int var2, int var3, Component var4, int var5, int var6, int var7, int var8) {
  90.       var4.reshape(var5, var6, var7, var8);
  91.    }
  92.  
  93.    public void layoutContainer(Container var1) {
  94.       int var2 = var1.countComponents();
  95.       if (var2 != 0) {
  96.          Insets var3 = var1.insets();
  97.          this.getGridSizes(var1, false);
  98.          int var4 = this.rows;
  99.          int var5 = this.cols;
  100.          if (var4 > 0) {
  101.             var5 = (var2 + var4 - 1) / var4;
  102.          } else {
  103.             var4 = (var2 + var5 - 1) / var5;
  104.          }
  105.  
  106.          Dimension var6 = ((Component)var1).size();
  107.          int var7 = 0;
  108.  
  109.          for(int var8 = var3.left + this.hgap; var7 < var5; ++var7) {
  110.             int var9 = 0;
  111.  
  112.             for(int var10 = var3.top + this.vgap; var9 < var4; ++var9) {
  113.                int var11 = var9 * var5 + var7;
  114.                if (var11 < var2) {
  115.                   int var12 = Math.max(0, Math.min(this.col_widths[var7], var6.width - var3.right - var8));
  116.                   int var13 = Math.max(0, Math.min(this.row_heights[var9], var6.height - var3.bottom - var10));
  117.                   this.reshape(var11, var9, var7, var1.getComponent(var11), var8, var10, var12, var13);
  118.                }
  119.  
  120.                var10 += this.row_heights[var9] + this.vgap;
  121.             }
  122.  
  123.             var8 += this.col_widths[var7] + this.hgap;
  124.          }
  125.  
  126.       }
  127.    }
  128. }
  129.