home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 May / PCO_5_97.ISO / FilesBBS / OS2 / CSIME.ARJ / CSIME.ZIP / csime / mug / ui / MultiLineLabel.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-02-09  |  2.1 KB  |  90 lines

  1. package mug.ui;
  2.  
  3. import java.awt.Canvas;
  4. import java.awt.Component;
  5. import java.awt.Dimension;
  6. import java.awt.FontMetrics;
  7. import java.awt.Graphics;
  8. import java.util.StringTokenizer;
  9.  
  10. public class MultiLineLabel extends Canvas {
  11.    public static final int LEFT = 0;
  12.    public static final int CENTER = 1;
  13.    public static final int RIGHT = 2;
  14.    private static final String DELIM = "\n\r";
  15.    private static final int GAP = 2;
  16.    private String _text;
  17.    private int _alignment;
  18.  
  19.    public MultiLineLabel() {
  20.    }
  21.  
  22.    public MultiLineLabel(String var1) {
  23.       this._text = var1;
  24.    }
  25.  
  26.    public MultiLineLabel(String var1, int var2) {
  27.       this._text = var1;
  28.       this._alignment = var2;
  29.    }
  30.  
  31.    public String getText() {
  32.       return this._text;
  33.    }
  34.  
  35.    public void setText(String var1) {
  36.       this._text = var1;
  37.       ((Component)this).repaint();
  38.    }
  39.  
  40.    public int getAlignment() {
  41.       return this._alignment;
  42.    }
  43.  
  44.    public void setAlignment(int var1) {
  45.       this._alignment = var1;
  46.       ((Component)this).repaint();
  47.    }
  48.  
  49.    public Dimension preferredSize() {
  50.       int var1 = 0;
  51.       int var2 = 0;
  52.       if (this._text != null) {
  53.          FontMetrics var3 = ((Component)this).getFontMetrics(((Component)this).getFont());
  54.          StringTokenizer var4 = new StringTokenizer(this._text, "\n\r");
  55.  
  56.          String var5;
  57.          for(var1 = var4.countTokens() * var3.getHeight(); var4.hasMoreTokens(); var2 = Math.max(var2, var3.stringWidth(var5))) {
  58.             var5 = var4.nextToken();
  59.          }
  60.       }
  61.  
  62.       return new Dimension(var2 + 4, var1 + 4);
  63.    }
  64.  
  65.    public Dimension minimumSize() {
  66.       return this.preferredSize();
  67.    }
  68.  
  69.    public void paint(Graphics var1) {
  70.       if (this._text != null) {
  71.          Dimension var2 = ((Component)this).size();
  72.          FontMetrics var3 = ((Component)this).getFontMetrics(((Component)this).getFont());
  73.          StringTokenizer var4 = new StringTokenizer(this._text, "\n\r");
  74.          int var5 = 2;
  75.  
  76.          for(int var6 = (var2.height - var4.countTokens() * var3.getHeight()) / 2 + var3.getAscent() + 2; var4.hasMoreTokens(); var6 += var3.getHeight()) {
  77.             String var7 = var4.nextToken();
  78.             if (this._alignment == 1) {
  79.                var5 = (var2.width - var3.stringWidth(var7)) / 2;
  80.             } else if (this._alignment == 2) {
  81.                var5 = var2.width - var3.stringWidth(var7) - 2;
  82.             }
  83.  
  84.             var1.drawString(var7, var5, var6);
  85.          }
  86.       }
  87.  
  88.    }
  89. }
  90.