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 / JCMultiColumnData.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-12-05  |  4.2 KB  |  203 lines

  1. package jclass.bwt;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Graphics;
  6. import java.awt.Rectangle;
  7. import java.util.Vector;
  8.  
  9. public class JCMultiColumnData implements JCSerializable {
  10.    protected JCMultiColumnInterface multi;
  11.    protected JCComponent comp;
  12.    public int[] column_widths = new int[0];
  13.    public int[] column_widths_ext = new int[0];
  14.    public int num_columns = 1;
  15.    public int[] alignments = new int[0];
  16.    public int[] left_margins = new int[0];
  17.    public int[] right_margins = new int[0];
  18.    Rectangle rect = new Rectangle();
  19.  
  20.    public JCMultiColumnData() {
  21.    }
  22.  
  23.    public JCMultiColumnData(JCMultiColumnInterface var1) {
  24.       this.multi = var1;
  25.       if (var1 instanceof JCComponent) {
  26.          this.comp = (JCComponent)var1;
  27.       }
  28.  
  29.    }
  30.  
  31.    protected void adjustDrawingRect(int var1, Rectangle var2, Rectangle var3) {
  32.       int var4 = this.multi.getColumnLeftMargin(var1);
  33.       var3.x = this.multi.getColumnPosition(var1) + var4;
  34.       var3.width -= var4 + this.multi.getColumnRightMargin(var1);
  35.    }
  36.  
  37.    public synchronized void draw(Graphics var1, Object var2, Rectangle var3) {
  38.       if (var3 == null) {
  39.          if (this.comp != null) {
  40.             this.rect = this.comp.getDrawingArea();
  41.          } else {
  42.             if (!(this.multi instanceof Component)) {
  43.                return;
  44.             }
  45.  
  46.             this.rect = ((Component)this.multi).bounds();
  47.          }
  48.       } else {
  49.          this.rect.reshape(var3.x, var3.y, var3.width, var3.height);
  50.       }
  51.  
  52.       Color var4 = null;
  53.       if (this.comp != null && !this.comp.isEnabled()) {
  54.          var4 = var1.getColor();
  55.          var1.setColor(Color.lightGray.darker().darker());
  56.       }
  57.  
  58.       if (var2 instanceof Vector && !BWTUtil.instanceOf(var2, "JCString")) {
  59.          Rectangle var5 = null;
  60.          if (this.comp instanceof JCComponent) {
  61.             var5 = this.comp.getPaintRect();
  62.          }
  63.  
  64.          if (var5 == null) {
  65.             var5 = var1.getClipRect();
  66.          }
  67.  
  68.          for(int var6 = 0; var6 < ((Vector)var2).size() && var6 < this.num_columns; ++var6) {
  69.             this.rect.width = this.multi.getColumnWidth(var6);
  70.             if (this.rect.width < 0) {
  71.                break;
  72.             }
  73.  
  74.             this.adjustDrawingRect(var6, var3, this.rect);
  75.             if (var5.intersects(this.rect)) {
  76.                Graphics var7 = var1.create();
  77.                var7.clipRect(this.rect.x, this.rect.y, this.rect.width, this.rect.height);
  78.                BWTUtil.draw((Component)this.multi, var7, ((Vector)var2).elementAt(var6), this.multi.getColumnAlignment(var6), this.rect);
  79.                var7.dispose();
  80.             }
  81.          }
  82.  
  83.       } else if (this.comp != null) {
  84.          BWTUtil.draw(this.comp, var1, var2, this.multi.getColumnAlignment(0), var3);
  85.          if (!this.comp.isEnabled()) {
  86.             var1.setColor(var4);
  87.          }
  88.  
  89.       }
  90.    }
  91.  
  92.    public int preferredWidth() {
  93.       int var1 = this.getColumnPosition(this.getNumColumns());
  94.       if (this.comp != null) {
  95.          var1 += 2 * this.comp.shadow + 2 * this.comp.highlight + this.comp.insets().left + this.comp.insets().right;
  96.       }
  97.  
  98.       return var1;
  99.    }
  100.  
  101.    public void calcColumnWidths() {
  102.       if (((Component)this.multi).getPeer() != null) {
  103.          this.column_widths_ext = BWTUtil.copyList(this.column_widths_ext, this.num_columns, -998);
  104.          this.column_widths = BWTUtil.copyList(this.column_widths, this.num_columns, -998);
  105.          System.arraycopy(this.column_widths_ext, 0, this.column_widths, 0, this.num_columns);
  106.  
  107.          for(int var1 = 0; var1 < this.num_columns; ++var1) {
  108.             if (this.column_widths_ext[var1] == -998) {
  109.                this.column_widths[var1] = this.multi.calcWidth(var1);
  110.             }
  111.          }
  112.  
  113.       }
  114.    }
  115.  
  116.    public int[] getColumnWidths() {
  117.       return this.column_widths_ext;
  118.    }
  119.  
  120.    public void setColumnWidths(int[] var1) {
  121.       this.column_widths_ext = var1 != null ? var1 : new int[0];
  122.       this.calcColumnWidths();
  123.    }
  124.  
  125.    public int getColumnWidth(int var1) {
  126.       return var1 >= 0 && var1 < this.column_widths.length ? this.column_widths[var1] : 0;
  127.    }
  128.  
  129.    public void setColumnWidth(int var1, int var2) {
  130.       this.column_widths = BWTUtil.copyList(this.column_widths, var1 + 1, -998);
  131.       this.column_widths_ext = BWTUtil.copyList(this.column_widths_ext, var1 + 1, -998);
  132.       this.column_widths_ext[var1] = this.column_widths[var1] = var2;
  133.       if (var2 == -998) {
  134.          this.column_widths[var1] = this.multi.calcWidth(var1);
  135.       }
  136.  
  137.    }
  138.  
  139.    void setColumnWidthInternal(int var1, int var2) {
  140.       this.column_widths = BWTUtil.copyList(this.column_widths, var1 + 1, -998);
  141.       this.column_widths_ext = BWTUtil.copyList(this.column_widths_ext, var1 + 1, -998);
  142.       this.column_widths[var1] = var2;
  143.       if (var2 == -998) {
  144.          this.column_widths[var1] = this.multi.calcWidth(var1);
  145.       }
  146.  
  147.    }
  148.  
  149.    public int getNumColumns() {
  150.       return this.num_columns;
  151.    }
  152.  
  153.    public void setNumColumns(int var1) {
  154.       this.num_columns = var1;
  155.    }
  156.  
  157.    public int getColumnAlignment(int var1) {
  158.       return var1 < this.alignments.length ? this.alignments[var1] : 3;
  159.    }
  160.  
  161.    public int[] getColumnAlignments() {
  162.       this.alignments = BWTUtil.copyList(this.alignments, this.num_columns, 3);
  163.       return this.alignments;
  164.    }
  165.  
  166.    public void setColumnAlignment(int var1, int var2) {
  167.       this.alignments = BWTUtil.copyList(this.alignments, var1 + 1, 3);
  168.       this.alignments[var1] = var2;
  169.    }
  170.  
  171.    public void setColumnAlignments(int[] var1) {
  172.       this.alignments = var1 != null ? var1 : new int[0];
  173.    }
  174.  
  175.    public int getColumnPosition(int var1) {
  176.       int var2 = 0;
  177.  
  178.       for(int var3 = 0; var3 < this.column_widths.length && var3 < var1; ++var3) {
  179.          var2 += this.column_widths[var3];
  180.       }
  181.  
  182.       return var2;
  183.    }
  184.  
  185.    public int getColumnLeftMargin(int var1) {
  186.       return var1 < this.left_margins.length ? this.left_margins[var1] : 5;
  187.    }
  188.  
  189.    public void setColumnLeftMargin(int var1, int var2) {
  190.       this.left_margins = BWTUtil.copyList(this.left_margins, var1 + 1, 5);
  191.       this.left_margins[var1] = var2;
  192.    }
  193.  
  194.    public int getColumnRightMargin(int var1) {
  195.       return var1 < this.right_margins.length ? this.right_margins[var1] : 5;
  196.    }
  197.  
  198.    public void setColumnRightMargin(int var1, int var2) {
  199.       this.right_margins = BWTUtil.copyList(this.right_margins, var1 + 1, 5);
  200.       this.right_margins[var1] = var2;
  201.    }
  202. }
  203.