summaryrefslogtreecommitdiff
path: root/NET/worlds/console/MultiLineLabel.java
diff options
context:
space:
mode:
authorFuwn <[email protected]>2021-05-03 16:38:41 -0700
committerFuwn <[email protected]>2021-05-03 16:38:41 -0700
commite1e781bb2135ef78592226f1a3eaba4925702f1f (patch)
tree8a5b590463ed413e1c6eabb719130e701b95ca63 /NET/worlds/console/MultiLineLabel.java
downloadworlds.jar-e1e781bb2135ef78592226f1a3eaba4925702f1f.tar.xz
worlds.jar-e1e781bb2135ef78592226f1a3eaba4925702f1f.zip
:star:HEADmain
Diffstat (limited to 'NET/worlds/console/MultiLineLabel.java')
-rw-r--r--NET/worlds/console/MultiLineLabel.java215
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