1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package org.htmlunit.html;
16
17 import java.io.IOException;
18 import java.io.PrintWriter;
19 import java.util.Map;
20
21 import org.htmlunit.SgmlPage;
22 import org.htmlunit.javascript.host.event.KeyboardEvent;
23 import org.htmlunit.util.NameValuePair;
24 import org.htmlunit.util.StringUtils;
25
26
27
28
29
30
31
32
33
34
35
36
37
38 public class HtmlSubmitInput extends HtmlInput implements LabelableElement {
39
40
41
42
43 public static final String DEFAULT_VALUE = "Submit Query";
44
45
46
47
48
49
50
51
52 HtmlSubmitInput(final String qualifiedName, final SgmlPage page,
53 final Map<String, DomAttr> attributes) {
54 super(qualifiedName, page, attributes);
55 }
56
57
58
59
60 @Override
61 protected void doType(final int keyCode, final boolean lastType) throws IOException {
62 if (keyCode == KeyboardEvent.DOM_VK_SPACE) {
63 click();
64 return;
65 }
66
67 super.doType(keyCode, lastType);
68 }
69
70
71
72
73 @Override
74 protected boolean doClickStateUpdate(final boolean shiftKey, final boolean ctrlKey) throws IOException {
75 if (!isDisabled()) {
76 final HtmlForm form = getEnclosingForm();
77 if (form != null) {
78 form.submit(this);
79 return false;
80 }
81 }
82 super.doClickStateUpdate(shiftKey, ctrlKey);
83 return false;
84 }
85
86
87
88
89 @Override
90 public void setValue(final String newValue) {
91 unmarkValueDirty();
92 setDefaultValue(newValue);
93 }
94
95
96
97
98 @Override
99 public void setDefaultChecked(final boolean defaultChecked) {
100
101 }
102
103
104
105
106
107 @Override
108 public void reset() {
109
110 }
111
112
113
114
115 @Override
116 protected void printOpeningTagContentAsXml(final PrintWriter printWriter) {
117 printWriter.print(getTagName());
118
119 for (final DomAttr attribute : getAttributesMap().values()) {
120 final String name = attribute.getNodeName();
121 final String value = attribute.getValue();
122 if (!VALUE_ATTRIBUTE.equals(name) || !DEFAULT_VALUE.equals(value)) {
123 printWriter.print(" ");
124 printWriter.print(name);
125 printWriter.print("=\"");
126 printWriter.print(StringUtils.escapeXmlAttributeValue(value));
127 printWriter.print("\"");
128 }
129 }
130 }
131
132
133
134
135
136
137 @Override
138 public NameValuePair[] getSubmitNameValuePairs() {
139 if (!getNameAttribute().isEmpty() && !hasAttribute(VALUE_ATTRIBUTE)) {
140 return new NameValuePair[]{new NameValuePair(getNameAttribute(), DEFAULT_VALUE)};
141 }
142 return super.getSubmitNameValuePairs();
143 }
144
145
146
147
148 @Override
149 protected boolean isRequiredSupported() {
150 return false;
151 }
152 }