Prep for 2019 release
[fanfix.git] / src / jexer / TLabel.java
1 /*
2 * Jexer - Java Text User Interface
3 *
4 * The MIT License (MIT)
5 *
6 * Copyright (C) 2019 Kevin Lamonte
7 *
8 * Permission is hereby granted, free of charge, to any person obtaining a
9 * copy of this software and associated documentation files (the "Software"),
10 * to deal in the Software without restriction, including without limitation
11 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12 * and/or sell copies of the Software, and to permit persons to whom the
13 * Software is furnished to do so, subject to the following conditions:
14 *
15 * The above copyright notice and this permission notice shall be included in
16 * all copies or substantial portions of the Software.
17 *
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
24 * DEALINGS IN THE SOFTWARE.
25 *
26 * @author Kevin Lamonte [kevin.lamonte@gmail.com]
27 * @version 1
28 */
29 package jexer;
30
31 import jexer.bits.CellAttributes;
32
33 /**
34 * TLabel implements a simple label.
35 */
36 public class TLabel extends TWidget {
37
38 // ------------------------------------------------------------------------
39 // Variables --------------------------------------------------------------
40 // ------------------------------------------------------------------------
41
42 /**
43 * Label text.
44 */
45 private String label = "";
46
47 /**
48 * Label color.
49 */
50 private String colorKey;
51
52 /**
53 * If true, use the window's background color.
54 */
55 private boolean useWindowBackground = true;
56
57 // ------------------------------------------------------------------------
58 // Constructors -----------------------------------------------------------
59 // ------------------------------------------------------------------------
60
61 /**
62 * Public constructor, using the default "tlabel" for colorKey.
63 *
64 * @param parent parent widget
65 * @param text label on the screen
66 * @param x column relative to parent
67 * @param y row relative to parent
68 */
69 public TLabel(final TWidget parent, final String text, final int x,
70 final int y) {
71
72 this(parent, text, x, y, "tlabel");
73 }
74
75 /**
76 * Public constructor.
77 *
78 * @param parent parent widget
79 * @param text label on the screen
80 * @param x column relative to parent
81 * @param y row relative to parent
82 * @param colorKey ColorTheme key color to use for foreground text
83 */
84 public TLabel(final TWidget parent, final String text, final int x,
85 final int y, final String colorKey) {
86
87 this(parent, text, x, y, colorKey, true);
88 }
89
90 /**
91 * Public constructor.
92 *
93 * @param parent parent widget
94 * @param text label on the screen
95 * @param x column relative to parent
96 * @param y row relative to parent
97 * @param colorKey ColorTheme key color to use for foreground text
98 * @param useWindowBackground if true, use the window's background color
99 */
100 public TLabel(final TWidget parent, final String text, final int x,
101 final int y, final String colorKey, final boolean useWindowBackground) {
102
103 // Set parent and window
104 super(parent, false, x, y, text.length(), 1);
105
106 this.label = text;
107 this.colorKey = colorKey;
108 this.useWindowBackground = useWindowBackground;
109 }
110
111 // ------------------------------------------------------------------------
112 // TWidget ----------------------------------------------------------------
113 // ------------------------------------------------------------------------
114
115 /**
116 * Draw a static label.
117 */
118 @Override
119 public void draw() {
120 // Setup my color
121 CellAttributes color = new CellAttributes();
122 color.setTo(getTheme().getColor(colorKey));
123 if (useWindowBackground) {
124 CellAttributes background = getWindow().getBackground();
125 color.setBackColor(background.getBackColor());
126 }
127 putStringXY(0, 0, label, color);
128 }
129
130 // ------------------------------------------------------------------------
131 // TLabel -----------------------------------------------------------------
132 // ------------------------------------------------------------------------
133
134 /**
135 * Get label text.
136 *
137 * @return label text
138 */
139 public String getLabel() {
140 return label;
141 }
142
143 /**
144 * Set label text.
145 *
146 * @param label new label text
147 */
148 public void setLabel(final String label) {
149 this.label = label;
150 }
151
152 }