home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / esc.jar / com / extensibility / rock / FitFlowLayout.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-06-30  |  2.0 KB  |  103 lines

  1. package com.extensibility.rock;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Container;
  5. import java.awt.Dimension;
  6. import java.awt.FlowLayout;
  7. import java.awt.Insets;
  8.  
  9. public class FitFlowLayout extends FlowLayout {
  10.    int fixCount = -1;
  11.    int minWidth = 0;
  12.  
  13.    public FitFlowLayout() {
  14.    }
  15.  
  16.    public FitFlowLayout(int var1) {
  17.       super(var1);
  18.    }
  19.  
  20.    public FitFlowLayout(int var1, int var2, int var3) {
  21.       super(var1, var2, var3);
  22.    }
  23.  
  24.    public void setFixCount(int var1) {
  25.       this.fixCount = var1;
  26.    }
  27.  
  28.    public void setMinWidth(int var1) {
  29.       this.minWidth = var1;
  30.    }
  31.  
  32.    public void layoutContainer(Container var1) {
  33.       Object var2 = ((Component)var1).getTreeLock();
  34.       synchronized(var2){}
  35.  
  36.       try {
  37.          Insets var3 = var1.getInsets();
  38.          int var4 = ((Component)var1).getSize().width - (var3.left + var3.right + ((FlowLayout)this).getHgap() * 2);
  39.          int var5 = var1.getComponentCount();
  40.          int var6 = 0;
  41.          int var7 = var3.top + ((FlowLayout)this).getVgap();
  42.          int var8 = 0;
  43.          byte var9 = 0;
  44.  
  45.          for(int var10 = 0; var10 < var5; ++var10) {
  46.             Component var11 = var1.getComponent(var10);
  47.             if (var11.isVisible()) {
  48.                Dimension var12 = var11.getPreferredSize();
  49.                Dimension var13 = var11.getMinimumSize();
  50.                var12.width = Math.min((var4 - var6) / (var5 - var10), var12.width);
  51.                if (var10 <= this.fixCount) {
  52.                   var12.width = Math.max(var12.width, var13.width);
  53.                } else if (this.minWidth > 0) {
  54.                   var12.width = Math.max(var12.width, this.minWidth);
  55.                }
  56.  
  57.                var11.setSize(var12.width, var12.height);
  58.                if (var6 > 0) {
  59.                   var6 += ((FlowLayout)this).getHgap();
  60.                }
  61.  
  62.                var6 += var12.width;
  63.                var8 = Math.max(var8, var12.height);
  64.             }
  65.          }
  66.  
  67.          this.moveComponents(var1, var3.left + ((FlowLayout)this).getHgap(), var7, var4 - var6, var8, var9, var5);
  68.       } finally {
  69.          ;
  70.       }
  71.  
  72.    }
  73.  
  74.    private void moveComponents(Container var1, int var2, int var3, int var4, int var5, int var6, int var7) {
  75.       Object var8 = ((Component)var1).getTreeLock();
  76.       synchronized(var8){}
  77.  
  78.       try {
  79.          switch (((FlowLayout)this).getAlignment()) {
  80.             case 0:
  81.             default:
  82.                break;
  83.             case 1:
  84.                var2 += var4 / 2;
  85.                break;
  86.             case 2:
  87.                var2 += var4;
  88.          }
  89.  
  90.          for(int var9 = var6; var9 < var7; ++var9) {
  91.             Component var10 = var1.getComponent(var9);
  92.             if (var10.isVisible()) {
  93.                var10.setLocation(var2, var3 + (var5 - var10.getSize().height) / 2);
  94.                var2 += ((FlowLayout)this).getHgap() + var10.getSize().width;
  95.             }
  96.          }
  97.       } finally {
  98.          ;
  99.       }
  100.  
  101.    }
  102. }
  103.