EOS 2  1.1.0
Einfache Objektbasierte Sprache
TextField.java
gehe zur Dokumentation dieser Datei
1 package de.lathanda.eos.geo;
2 
3 import de.lathanda.eos.base.Alignment;
4 import de.lathanda.eos.base.MutableColor;
5 import de.lathanda.eos.base.layout.Dimension;
6 import de.lathanda.eos.base.Picture;
7 import java.util.Arrays;
8 import java.util.LinkedList;
9 
15 public class TextField extends Rectangle {
16 
17  private Alignment vertical;
18  private Alignment horizontal;
19  private boolean autoadjust;
20  private boolean dirty = false;
21  private int size;
22  private MutableColor color;
23  private boolean hideBorder;
24  private LinkedList<String> text;
25  private String fontname;
26 
27  public TextField() {
28  autoadjust = true;
29  vertical = Alignment.CENTER;
30  horizontal = Alignment.CENTER;
31  size = 16;
32  color = MutableColor.BLACK;
33  text = new LinkedList<>();
34  hideBorder = false;
35  }
36 
37  @Override
38  protected void beforeDrawing(Picture p) {
39  super.beforeDrawing(p);
40  if (dirty && autoadjust) {
41  p.setFont(fontname, size);
42  p.setTextSpacing(1, 1);
43  p.setTextAlignment(vertical, horizontal);
44  Dimension dim = p.getTextDimension(text);
45  width = dim.getWidth();
46  height = dim.getHeight();
47  dirty = false;
48  }
49  }
50 
51  @Override
52  protected void drawObject(Picture p) {
53  if (!hideBorder) {
54  super.drawObject(p);
55  }
56  p.setFont(fontname, size);
57  p.setTextSpacing(1, 1);
58  p.setTextAlignment(vertical, horizontal);
59  p.setLineColor(color);
60  p.drawText(text, -width/2, -height/2, width, height);
61  }
62 
63  public void setTextColor(MutableColor color) {
64  this.color = color;
66  }
67 
69  return color;
70  }
71  public void setHideBorder(boolean hideBorder) {
72  this.hideBorder = hideBorder;
74  }
75  public boolean getHideBorder() {
76  return hideBorder;
77  }
78  public void setTextSize(int size) {
79  this.size = size;
80  dirty = true;
82  }
83 
84  public int getTextSize() {
85  return size;
86  }
87 
88  public void setFont(String fontname) {
89  this.fontname = fontname;
90  dirty = true;
92  }
93 
94  public String getFont() {
95  return fontname;
96  }
97 
98  public void setAlignmentVertical(Alignment alignment) {
99  vertical = alignment;
100  dirty = true;
101  fireDataChanged();
102  }
103 
105  return vertical;
106  }
107 
109  return horizontal;
110  }
111 
112  public void setAlignmentHorizontal(Alignment alignment) {
113  this.horizontal = alignment;
114  dirty = true;
115  fireDataChanged();
116  }
117 
118  public void setAutoAdjust(boolean auto) {
119  autoadjust = auto;
120  dirty = true;
121  fireDataChanged();
122  }
123 
124  public boolean getAutoAdjust() {
125  return autoadjust;
126  }
127 
128  public void appendLine(String text) {
129  String[] lines = text.split("\n");
130  this.text.addAll(Arrays.asList(lines));
131  dirty = true;
132  fireDataChanged();
133  }
134  public void setLine(int linenr, String text) {
135  int linenumber;
136  if (linenr > 0) {
137  linenumber = linenr - 1;
138  } else {
139  linenumber = 0;
140  }
141  String[] lines = text.split("\n");
142  for(int i = this.text.size(); i < linenumber + lines.length; i++) {
143  this.text.add("");
144  }
145  for(int i = 0; i < lines.length; i++) {
146  this.text.set(i + linenumber, lines[i]);
147  }
148  dirty = true;
149  fireDataChanged();
150  }
151  public void deleteLine() {
152  if (!text.isEmpty()) {
153  text.removeLast();
154  dirty = true;
155  fireDataChanged();
156  }
157  }
158  public void deleteText() {
159  text.clear();
160  dirty = true;
161  fireDataChanged();
162  }
163  @Override
164  public Figure copy() {
165  TextField tf = (TextField)super.copy();
166  tf.text = new LinkedList<>();
167  for(String line : text) {
168  tf.text.add(line);
169  }
170  return tf;
171  }
172  public String getText() {
173  StringBuilder t = new StringBuilder();
174  for(String s:text) {
175  if (!t.isEmpty()) {
176  t.append("\n");
177  }
178  t.append(s);
179  }
180  return t.toString();
181  }
182 }
static final MutableColor BLACK
final void setTextSpacing(double hspace, double vspace)
Definition: Picture.java:237
void drawText(List< String > text, double left, double bottom, double width, double height)
Definition: Picture.java:282
Dimension getTextDimension(List< String > text)
Definition: Picture.java:378
final void setTextAlignment(Alignment vertical, Alignment horizontal)
Definition: Picture.java:228
final void setFont(Font font)
Definition: Picture.java:245
void setLineColor(MutableColor c)
Definition: Picture.java:428
void appendLine(String text)
Definition: TextField.java:128
void setFont(String fontname)
Definition: TextField.java:88
void beforeDrawing(Picture p)
Definition: TextField.java:38
void setLine(int linenr, String text)
Definition: TextField.java:134
void setAlignmentHorizontal(Alignment alignment)
Definition: TextField.java:112
void setAutoAdjust(boolean auto)
Definition: TextField.java:118
void drawObject(Picture p)
Definition: TextField.java:52
void setHideBorder(boolean hideBorder)
Definition: TextField.java:71
void setAlignmentVertical(Alignment alignment)
Definition: TextField.java:98
void setTextColor(MutableColor color)
Definition: TextField.java:63
Impressum