/* */ package NET.worlds.console; /* */ /* */ import java.awt.Canvas; /* */ import java.awt.Color; /* */ import java.awt.Dimension; /* */ import java.awt.Font; /* */ import java.awt.FontMetrics; /* */ import java.awt.Graphics; /* */ import java.util.StringTokenizer; /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ public class MultiLineLabel /* */ extends Canvas /* */ { /* */ private static final long serialVersionUID = -3840151921412552795L; /* */ public static final int LEFT = 0; /* */ public static final int CENTER = 1; /* */ public static final int RIGHT = 2; /* */ protected String[] lines; /* */ protected int num_lines; /* */ protected int margin_width; /* */ protected int margin_height; /* */ protected int line_height; /* */ protected int line_ascent; /* */ protected int[] line_widths; /* */ protected int max_width; /* 39 */ protected int alignment = 0; /* */ /* */ /* */ protected void newLabel(String label) /* */ { /* 44 */ StringTokenizer t = new StringTokenizer(label, "\n"); /* 45 */ this.num_lines = t.countTokens(); /* 46 */ this.lines = new String[this.num_lines]; /* 47 */ this.line_widths = new int[this.num_lines]; /* 48 */ for (int i = 0; i < this.num_lines; i++) { /* 49 */ this.lines[i] = t.nextToken(); /* */ } /* */ } /* */ /* */ protected void measure() /* */ { /* 55 */ FontMetrics fm = getFontMetrics(getFont()); /* */ /* 57 */ if (fm == null) { /* 58 */ return; /* */ } /* 60 */ this.line_height = fm.getHeight(); /* 61 */ this.line_ascent = fm.getAscent(); /* 62 */ this.max_width = 0; /* 63 */ for (int i = 0; i < this.num_lines; i++) { /* 64 */ this.line_widths[i] = fm.stringWidth(this.lines[i]); /* 65 */ if (this.line_widths[i] > this.max_width) { /* 66 */ this.max_width = this.line_widths[i]; /* */ } /* */ } /* */ } /* */ /* */ /* */ public MultiLineLabel(String label, int margin_width, int margin_height, int alignment) /* */ { /* 74 */ newLabel(label); /* 75 */ this.margin_width = margin_width; /* 76 */ this.margin_height = margin_height; /* 77 */ this.alignment = alignment; /* */ } /* */ /* */ public MultiLineLabel(String label, int margin_width, int margin_height) { /* 81 */ this(label, margin_width, margin_height, 0); /* */ } /* */ /* */ public MultiLineLabel(String label, int alignment) { /* 85 */ this(label, 10, 10, alignment); /* */ } /* */ /* */ public MultiLineLabel(String label) { /* 89 */ this(label, 10, 10, 0); /* */ } /* */ /* */ public MultiLineLabel() { /* 93 */ this("", 10, 10, 0); /* */ } /* */ /* */ public void setLabel(String label) /* */ { /* 98 */ newLabel(label); /* 99 */ measure(); /* 100 */ repaint(); /* */ } /* */ /* */ public String getLabel() { /* 104 */ if (this.lines.length == 0) { /* 105 */ return ""; /* */ } /* 107 */ String s = this.lines[0]; /* 108 */ for (int i = 1; i < this.lines.length; i++) { /* 109 */ s = s + "\n" + this.lines[i]; /* */ } /* 111 */ return s; /* */ } /* */ /* */ public void setFont(Font f) /* */ { /* 116 */ super.setFont(f); /* 117 */ measure(); /* 118 */ repaint(); /* */ } /* */ /* */ public void setForeground(Color c) /* */ { /* 123 */ super.setForeground(c); /* 124 */ repaint(); /* */ } /* */ /* */ public void setAlignment(int a) { /* 128 */ this.alignment = a; /* 129 */ repaint(); /* */ } /* */ /* */ public void setMarginWidth(int mw) { /* 133 */ this.margin_width = mw; /* 134 */ repaint(); /* */ } /* */ /* */ public void setMarginHeight(int mh) { /* 138 */ this.margin_height = mh; /* 139 */ repaint(); /* */ } /* */ /* */ public int getAlignment() { /* 143 */ return this.alignment; /* */ } /* */ /* */ public int getMarginWidth() { /* 147 */ return this.margin_width; /* */ } /* */ /* */ public int getMarginHeight() { /* 151 */ return this.margin_height; /* */ } /* */ /* */ public int getLines() { /* 155 */ return this.num_lines; /* */ } /* */ /* */ /* */ /* */ /* */ /* */ /* */ public void addNotify() /* */ { /* 165 */ super.addNotify(); /* 166 */ measure(); /* */ } /* */ /* */ /* */ /* */ public Dimension getPreferredSize() /* */ { /* 173 */ return new Dimension(this.max_width + 2 * this.margin_width, this.num_lines * /* 174 */ this.line_height + 2 * this.margin_height); /* */ } /* */ /* */ /* */ /* */ public Dimension getMinimumSize() /* */ { /* 181 */ return getPreferredSize(); /* */ } /* */ /* */ /* */ /* */ /* */ /* */ /* */ public void paint(Graphics g) /* */ { /* 191 */ Dimension d = getSize(); /* 192 */ int y = this.line_ascent + (d.height - this.num_lines * this.line_height) / 2; /* 193 */ for (int i = 0; i < this.num_lines; y += this.line_height) { int x; /* 194 */ int x; int x; switch (this.alignment) { /* */ case 0: /* 196 */ x = this.margin_width; /* 197 */ break; /* */ case 1: /* */ default: /* 200 */ x = (d.width - this.line_widths[i]) / 2; /* 201 */ break; /* */ case 2: /* 203 */ x = d.width - this.margin_width - this.line_widths[i]; /* */ } /* */ /* 206 */ g.drawString(this.lines[i], x, y);i++; /* */ } /* */ } /* */ } /* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\console\MultiLineLabel.class * Java compiler version: 6 (50.0) * JD-Core Version: 0.7.1 */