View Javadoc

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