1 package org.rcfaces.core.internal.taglib;
2
3 import javax.faces.application.Application;
4 import org.rcfaces.core.component.TextEntryComponent;
5 import javax.faces.component.UIComponent;
6 import org.rcfaces.core.internal.component.Properties;
7 import javax.el.ValueExpression;
8 import javax.faces.component.UIViewRoot;
9 import org.apache.commons.logging.Log;
10 import javax.servlet.jsp.tagext.Tag;
11 import org.apache.commons.logging.LogFactory;
12 import org.rcfaces.core.internal.tools.ListenersTools1_2;
13 import org.rcfaces.core.internal.tools.ListenersTools;
14 import javax.faces.context.FacesContext;
15
16 public class TextEntryTag extends AbstractInputTag implements Tag {
17
18
19 private static final Log LOG=LogFactory.getLog(TextEntryTag.class);
20
21 private ValueExpression required;
22 private ValueExpression autoTab;
23 private ValueExpression text;
24 private ValueExpression textDirection;
25 private ValueExpression emptyMessage;
26 private ValueExpression readOnly;
27 private ValueExpression valueChangeListeners;
28 private ValueExpression focusStyleClass;
29 private ValueExpression errorStyleClass;
30 private ValueExpression fatalStyleClass;
31 private ValueExpression infoStyleClass;
32 private ValueExpression warnStyleClass;
33 private ValueExpression alternateText;
34 private ValueExpression maxTextLength;
35 private ValueExpression clientValidator;
36 private ValueExpression selectionListeners;
37 private ValueExpression columnNumber;
38 private ValueExpression autoCompletion;
39 private ValueExpression actionListeners;
40 private ValueExpression action;
41 public String getComponentType() {
42 return TextEntryComponent.COMPONENT_TYPE;
43 }
44
45 public final void setRequired(ValueExpression required) {
46 this.required = required;
47 }
48
49 public final void setAutoTab(ValueExpression autoTab) {
50 this.autoTab = autoTab;
51 }
52
53 public final void setText(ValueExpression text) {
54 this.text = text;
55 }
56
57 public final void setTextDirection(ValueExpression textDirection) {
58 this.textDirection = textDirection;
59 }
60
61 public final void setEmptyMessage(ValueExpression emptyMessage) {
62 this.emptyMessage = emptyMessage;
63 }
64
65 public final void setReadOnly(ValueExpression readOnly) {
66 this.readOnly = readOnly;
67 }
68
69 public final void setValueChangeListener(ValueExpression valueChangeListeners) {
70 this.valueChangeListeners = valueChangeListeners;
71 }
72
73 public final void setFocusStyleClass(ValueExpression focusStyleClass) {
74 this.focusStyleClass = focusStyleClass;
75 }
76
77 public final void setErrorStyleClass(ValueExpression errorStyleClass) {
78 this.errorStyleClass = errorStyleClass;
79 }
80
81 public final void setFatalStyleClass(ValueExpression fatalStyleClass) {
82 this.fatalStyleClass = fatalStyleClass;
83 }
84
85 public final void setInfoStyleClass(ValueExpression infoStyleClass) {
86 this.infoStyleClass = infoStyleClass;
87 }
88
89 public final void setWarnStyleClass(ValueExpression warnStyleClass) {
90 this.warnStyleClass = warnStyleClass;
91 }
92
93 public final void setAlternateText(ValueExpression alternateText) {
94 this.alternateText = alternateText;
95 }
96
97 public final void setMaxTextLength(ValueExpression maxTextLength) {
98 this.maxTextLength = maxTextLength;
99 }
100
101 public final void setClientValidator(ValueExpression clientValidator) {
102 this.clientValidator = clientValidator;
103 }
104
105 public final void setSelectionListener(ValueExpression selectionListeners) {
106 this.selectionListeners = selectionListeners;
107 }
108
109 public final void setColumnNumber(ValueExpression columnNumber) {
110 this.columnNumber = columnNumber;
111 }
112
113 public final void setAutoCompletion(ValueExpression autoCompletion) {
114 this.autoCompletion = autoCompletion;
115 }
116
117 public final void setAction(ValueExpression action) {
118 this.action=action;
119 }
120
121 public final void setActionListener(ValueExpression listeners) {
122 this.actionListeners = listeners;
123 }
124
125 protected void setProperties(UIComponent uiComponent) {
126 if (LOG.isDebugEnabled()) {
127 if (TextEntryComponent.COMPONENT_TYPE==getComponentType()) {
128 LOG.debug("Component id='"+getId()+"' type='"+getComponentType()+"'.");
129 }
130 LOG.debug(" required='"+required+"'");
131 LOG.debug(" autoTab='"+autoTab+"'");
132 LOG.debug(" text='"+text+"'");
133 LOG.debug(" textDirection='"+textDirection+"'");
134 LOG.debug(" emptyMessage='"+emptyMessage+"'");
135 LOG.debug(" readOnly='"+readOnly+"'");
136 LOG.debug(" focusStyleClass='"+focusStyleClass+"'");
137 LOG.debug(" errorStyleClass='"+errorStyleClass+"'");
138 LOG.debug(" fatalStyleClass='"+fatalStyleClass+"'");
139 LOG.debug(" infoStyleClass='"+infoStyleClass+"'");
140 LOG.debug(" warnStyleClass='"+warnStyleClass+"'");
141 LOG.debug(" alternateText='"+alternateText+"'");
142 LOG.debug(" maxTextLength='"+maxTextLength+"'");
143 LOG.debug(" clientValidator='"+clientValidator+"'");
144 LOG.debug(" columnNumber='"+columnNumber+"'");
145 LOG.debug(" autoCompletion='"+autoCompletion+"'");
146 LOG.debug(" action='"+action+"'");
147 LOG.debug(" actionListeners='"+actionListeners+"'");
148 }
149 if ((uiComponent instanceof TextEntryComponent)==false) {
150 if (uiComponent instanceof UIViewRoot) {
151 throw new IllegalStateException("The first component of the page must be a UIViewRoot component !");
152 }
153 throw new IllegalStateException("Component specified by tag is not instanceof of 'TextEntryComponent'.");
154 }
155
156 super.setProperties(uiComponent);
157
158 TextEntryComponent component = (TextEntryComponent) uiComponent;
159 FacesContext facesContext = getFacesContext();
160
161 if (required != null) {
162 if (required.isLiteralText()==false) {
163 component.setValueExpression(Properties.REQUIRED, required);
164
165 } else {
166 component.setRequired(getBool(required.getExpressionString()));
167 }
168 }
169
170 if (autoTab != null) {
171 if (autoTab.isLiteralText()==false) {
172 component.setValueExpression(Properties.AUTO_TAB, autoTab);
173
174 } else {
175 component.setAutoTab(getBool(autoTab.getExpressionString()));
176 }
177 }
178
179 if (text != null) {
180 if (text.isLiteralText()==false) {
181 component.setValueExpression(Properties.TEXT, text);
182
183 } else {
184 component.setText(text.getExpressionString());
185 }
186 }
187
188 if (textDirection != null) {
189 if (textDirection.isLiteralText()==false) {
190 component.setValueExpression(Properties.TEXT_DIRECTION, textDirection);
191
192 } else {
193 component.setTextDirection(getInt(textDirection.getExpressionString()));
194 }
195 }
196
197 if (emptyMessage != null) {
198 if (emptyMessage.isLiteralText()==false) {
199 component.setValueExpression(Properties.EMPTY_MESSAGE, emptyMessage);
200
201 } else {
202 component.setEmptyMessage(emptyMessage.getExpressionString());
203 }
204 }
205
206 if (readOnly != null) {
207 if (readOnly.isLiteralText()==false) {
208 component.setValueExpression(Properties.READ_ONLY, readOnly);
209
210 } else {
211 component.setReadOnly(getBool(readOnly.getExpressionString()));
212 }
213 }
214
215 if (valueChangeListeners != null) {
216 ListenersTools1_2.parseListener(facesContext, component, ListenersTools.VALUE_CHANGE_LISTENER_TYPE, valueChangeListeners);
217 }
218
219 if (focusStyleClass != null) {
220 if (focusStyleClass.isLiteralText()==false) {
221 component.setValueExpression(Properties.FOCUS_STYLE_CLASS, focusStyleClass);
222
223 } else {
224 component.setFocusStyleClass(focusStyleClass.getExpressionString());
225 }
226 }
227
228 if (errorStyleClass != null) {
229 if (errorStyleClass.isLiteralText()==false) {
230 component.setValueExpression(Properties.ERROR_STYLE_CLASS, errorStyleClass);
231
232 } else {
233 component.setErrorStyleClass(errorStyleClass.getExpressionString());
234 }
235 }
236
237 if (fatalStyleClass != null) {
238 if (fatalStyleClass.isLiteralText()==false) {
239 component.setValueExpression(Properties.FATAL_STYLE_CLASS, fatalStyleClass);
240
241 } else {
242 component.setFatalStyleClass(fatalStyleClass.getExpressionString());
243 }
244 }
245
246 if (infoStyleClass != null) {
247 if (infoStyleClass.isLiteralText()==false) {
248 component.setValueExpression(Properties.INFO_STYLE_CLASS, infoStyleClass);
249
250 } else {
251 component.setInfoStyleClass(infoStyleClass.getExpressionString());
252 }
253 }
254
255 if (warnStyleClass != null) {
256 if (warnStyleClass.isLiteralText()==false) {
257 component.setValueExpression(Properties.WARN_STYLE_CLASS, warnStyleClass);
258
259 } else {
260 component.setWarnStyleClass(warnStyleClass.getExpressionString());
261 }
262 }
263
264 if (alternateText != null) {
265 if (alternateText.isLiteralText()==false) {
266 component.setValueExpression(Properties.ALTERNATE_TEXT, alternateText);
267
268 } else {
269 component.setAlternateText(alternateText.getExpressionString());
270 }
271 }
272
273 if (maxTextLength != null) {
274 if (maxTextLength.isLiteralText()==false) {
275 component.setValueExpression(Properties.MAX_TEXT_LENGTH, maxTextLength);
276
277 } else {
278 component.setMaxTextLength(getInt(maxTextLength.getExpressionString()));
279 }
280 }
281
282 if (clientValidator != null) {
283 if (clientValidator.isLiteralText()==false) {
284 component.setValueExpression(Properties.CLIENT_VALIDATOR, clientValidator);
285
286 } else {
287 component.setClientValidator(clientValidator.getExpressionString());
288 }
289 }
290
291 if (selectionListeners != null) {
292 ListenersTools1_2.parseListener(facesContext, component, ListenersTools.SELECTION_LISTENER_TYPE, selectionListeners);
293 }
294
295 if (columnNumber != null) {
296 if (columnNumber.isLiteralText()==false) {
297 component.setValueExpression(Properties.COLUMN_NUMBER, columnNumber);
298
299 } else {
300 component.setColumnNumber(getInt(columnNumber.getExpressionString()));
301 }
302 }
303
304 if (autoCompletion != null) {
305 if (autoCompletion.isLiteralText()==false) {
306 component.setValueExpression(Properties.AUTO_COMPLETION, autoCompletion);
307
308 } else {
309 component.setAutoCompletion(getBool(autoCompletion.getExpressionString()));
310 }
311 }
312
313 if (action != null) {
314 ListenersTools1_2.parseAction(facesContext, component, ListenersTools.SELECTION_LISTENER_TYPE, action);
315 }
316
317 if (actionListeners != null) {
318 ListenersTools1_2.parseListener(facesContext, component, ListenersTools.SELECTION_LISTENER_TYPE, actionListeners, true);
319 }
320 }
321
322 public void release() {
323 required = null;
324 autoTab = null;
325 text = null;
326 textDirection = null;
327 emptyMessage = null;
328 readOnly = null;
329 valueChangeListeners = null;
330 focusStyleClass = null;
331 errorStyleClass = null;
332 fatalStyleClass = null;
333 infoStyleClass = null;
334 warnStyleClass = null;
335 alternateText = null;
336 maxTextLength = null;
337 clientValidator = null;
338 selectionListeners = null;
339 columnNumber = null;
340 autoCompletion = null;
341 action = null;
342 actionListeners = null;
343
344 super.release();
345 }
346
347 }