1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
/*
* Copyright 2000-2018 Vaadin Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.vaadin.ui;
import org.jsoup.nodes.Attributes;
import org.jsoup.nodes.Element;
import com.vaadin.shared.ui.textfield.TextFieldState;
import com.vaadin.ui.declarative.DesignAttributeHandler;
import com.vaadin.ui.declarative.DesignContext;
/**
* A component for editing textual data that fits on a single line. For a
* multi-line textarea, see the {@link TextArea} component.
*
* @author Vaadin Ltd.
*/
@SuppressWarnings("serial")
public class TextField extends AbstractTextField {
/**
* Constructs an empty <code>TextField</code> with no caption.
*/
public TextField() {
clear();
}
/**
* Constructs an empty <code>TextField</code> with given caption.
*
* @param caption
* the caption <code>String</code> for the editor.
*/
public TextField(String caption) {
this();
setCaption(caption);
}
/**
* Constructs a new <code>TextField</code> with the given caption and
* initial text contents.
*
* @param caption
* the caption <code>String</code> for the editor.
* @param value
* the initial text content of the editor, not {@code null}
*/
public TextField(String caption, String value) {
setValue(value);
setCaption(caption);
}
/**
* Constructs a new {@code TextField} with a value change listener. The
* listener is called when the value of this {@code TextField} is changed
* either by the user or programmatically.
*
* @param valueChangeListener
* the value change listener, not {@code null}
*/
public TextField(ValueChangeListener<String> valueChangeListener) {
addValueChangeListener(valueChangeListener);
}
/**
* Constructs a new {@code TextField} with the given caption and a value
* change listener.
* <p>
* The listener is called when the value of this {@code TextField} is
* changed either by the user or programmatically.
*
* @param caption
* the caption {@code String} for the editor.
* @param valueChangeListener
* the value change listener, not {@code null}
*/
public TextField(String caption,
ValueChangeListener<String> valueChangeListener) {
this(valueChangeListener);
setCaption(caption);
}
/**
* Constructs a new {@code TextField} with the given caption, initial text
* contents and a value change listener.
* <p>
* The listener is called when the value of this {@code TextField} is
* changed either by the user or programmatically.
*
* @param caption
* the caption {@code String} for the editor.
* @param value
* the initial text content of the editor, not {@code null}
* @param valueChangeListener
* the value change listener, not {@code null}
*/
public TextField(String caption, String value,
ValueChangeListener<String> valueChangeListener) {
this(caption, value);
addValueChangeListener(valueChangeListener);
}
@Override
protected TextFieldState getState() {
return (TextFieldState) super.getState();
}
@Override
protected TextFieldState getState(boolean markAsDirty) {
return (TextFieldState) super.getState(markAsDirty);
}
@Override
public void readDesign(Element design, DesignContext designContext) {
super.readDesign(design, designContext);
Attributes attr = design.attributes();
if (attr.hasKey("value")) {
String text = DesignAttributeHandler.readAttribute("value", attr,
String.class);
doSetValue(text);
}
}
@Override
public void writeDesign(Element design, DesignContext designContext) {
super.writeDesign(design, designContext);
AbstractTextField def = designContext.getDefaultInstance(this);
Attributes attr = design.attributes();
DesignAttributeHandler.writeAttribute("value", attr, getValue(),
def.getValue(), String.class, designContext);
}
}
|