diff options
| author | Fuwn <[email protected]> | 2021-05-03 16:38:41 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2021-05-03 16:38:41 -0700 |
| commit | e1e781bb2135ef78592226f1a3eaba4925702f1f (patch) | |
| tree | 8a5b590463ed413e1c6eabb719130e701b95ca63 /NET/worlds/console/MultiLineLabel.java | |
| download | worlds.jar-main.tar.xz worlds.jar-main.zip | |
Diffstat (limited to 'NET/worlds/console/MultiLineLabel.java')
| -rw-r--r-- | NET/worlds/console/MultiLineLabel.java | 215 |
1 files changed, 215 insertions, 0 deletions
diff --git a/NET/worlds/console/MultiLineLabel.java b/NET/worlds/console/MultiLineLabel.java new file mode 100644 index 0000000..7260afd --- /dev/null +++ b/NET/worlds/console/MultiLineLabel.java @@ -0,0 +1,215 @@ +/* */ 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 + */
\ No newline at end of file |