View Javadoc

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 }