home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1998 October / DPPCPRO1098.ISO / Hotdog / files / Toolz.EXE / %MAINDIR%stools / Java Animator / classes / WrappingLabel.class (.txt) < prev   
Encoding:
Java Class File  |  1998-07-23  |  2.6 KB  |  127 lines

  1. import java.awt.Canvas;
  2. import java.awt.Component;
  3. import java.awt.Dimension;
  4. import java.awt.FontMetrics;
  5. import java.awt.Graphics;
  6. import java.util.Enumeration;
  7. import java.util.StringTokenizer;
  8. import java.util.Vector;
  9.  
  10. public class WrappingLabel extends Canvas {
  11.    public static final int NORTH = 1;
  12.    public static final int EAST = 2;
  13.    public static final int SOUTH = 4;
  14.    public static final int WEST = 8;
  15.    public static final int CENTER = 16;
  16.    public static final int NORTHEAST = 3;
  17.    public static final int NORTHWEST = 9;
  18.    public static final int SOUTHEAST = 6;
  19.    public static final int SOUTHWEST = 12;
  20.    private int anchor;
  21.    private String label;
  22.    private Dimension prefSize;
  23.  
  24.    public WrappingLabel() {
  25.       this("");
  26.    }
  27.  
  28.    public WrappingLabel(String var1) {
  29.       this(var1, 9);
  30.    }
  31.  
  32.    public WrappingLabel(String var1, int var2) {
  33.       this.label = var1;
  34.       this.anchor = var2;
  35.    }
  36.  
  37.    public void paint(Graphics var1) {
  38.       if (((Component)this).size().width > 0 && ((Component)this).size().height > 0) {
  39.          Vector var3 = this.wrapLines(var1);
  40.          FontMetrics var4 = var1.getFontMetrics();
  41.          int var5 = var3.size() * var4.getHeight();
  42.          int var8;
  43.          if ((this.anchor & 1) > 0) {
  44.             var8 = var4.getAscent();
  45.          } else if ((this.anchor & 4) > 0) {
  46.             var8 = ((Component)this).size().height - var5 + var4.getAscent();
  47.          } else {
  48.             var8 = (((Component)this).size().height - var5) / 2 + var4.getAscent();
  49.          }
  50.  
  51.          for(Enumeration var9 = var3.elements(); var9.hasMoreElements(); var8 += var4.getHeight()) {
  52.             String var2 = (String)var9.nextElement();
  53.             int var7 = var4.stringWidth(var2);
  54.             int var6;
  55.             if ((this.anchor & 8) > 0) {
  56.                var6 = 0;
  57.             } else if ((this.anchor & 2) > 0) {
  58.                var6 = ((Component)this).size().width - var7;
  59.             } else {
  60.                var6 = (((Component)this).size().width - var7) / 2;
  61.             }
  62.  
  63.             var1.drawString(var2, var6, var8);
  64.          }
  65.       } else {
  66.          super.paint(var1);
  67.       }
  68.  
  69.    }
  70.  
  71.    public String toString() {
  72.       return "label=[" + this.label + "]";
  73.    }
  74.  
  75.    public void setPreferredSize(Dimension var1) {
  76.       this.prefSize = new Dimension(var1.width, var1.height);
  77.    }
  78.  
  79.    public Dimension preferredSize() {
  80.       return this.prefSize == null ? super.preferredSize() : this.prefSize;
  81.    }
  82.  
  83.    private Vector wrapLines(Graphics var1) {
  84.       Vector var2 = new Vector();
  85.       int var4 = 0;
  86.       int var6 = 0;
  87.       int var7 = ((Component)this).size().width;
  88.       FontMetrics var8 = var1.getFontMetrics();
  89.       StringBuffer var9 = new StringBuffer();
  90.       int var3 = var8.getAscent();
  91.       StringTokenizer var10 = new StringTokenizer(this.label, " \t\n", true);
  92.  
  93.       while(var10.hasMoreTokens()) {
  94.          String var5 = var10.nextToken();
  95.          if (var5.equals("\n")) {
  96.             var3 += var8.getHeight();
  97.             var4 = 0;
  98.             var2.addElement(var9.toString());
  99.             var9.setLength(0);
  100.          } else {
  101.             var6 = var8.stringWidth(var5);
  102.             if (var4 + var6 > var7) {
  103.                var3 += var8.getHeight();
  104.                var4 = 0;
  105.                var2.addElement(var9.toString());
  106.                var9.setLength(0);
  107.             }
  108.  
  109.             if (var4 != 0 || !var5.equals(" ") && !var5.equals("\t")) {
  110.                var4 += var6;
  111.                var9.append(var5);
  112.             }
  113.          }
  114.       }
  115.  
  116.       if (var9.length() > 0) {
  117.          var2.addElement(var9.toString());
  118.       }
  119.  
  120.       return var2;
  121.    }
  122.  
  123.    public void setText(String var1) {
  124.       this.label = var1;
  125.    }
  126. }
  127.