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.component.TimeEntryComponent;
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 TimeEntryTag extends AbstractInputTag implements Tag {
17  
18  
19  	private static final Log LOG=LogFactory.getLog(TimeEntryTag.class);
20  
21  	private ValueExpression required;
22  	private ValueExpression autoTab;
23  	private ValueExpression valueChangeListeners;
24  	private ValueExpression focusStyleClass;
25  	private ValueExpression selectionListeners;
26  	private ValueExpression readOnly;
27  	private ValueExpression literalLocale;
28  	private ValueExpression literalTimeZone;
29  	private ValueExpression componentLocale;
30  	private ValueExpression componentTimeZone;
31  	private ValueExpression errorStyleClass;
32  	private ValueExpression fatalStyleClass;
33  	private ValueExpression infoStyleClass;
34  	private ValueExpression warnStyleClass;
35  	private ValueExpression alternateText;
36  	private ValueExpression autoCompletion;
37  	private ValueExpression time;
38  	private ValueExpression minTime;
39  	private ValueExpression defaultTime;
40  	private ValueExpression maxTime;
41  	private ValueExpression timeFormat;
42  	private ValueExpression hourStep;
43  	private ValueExpression minuteStep;
44  	private ValueExpression secondStep;
45  	private ValueExpression millisStep;
46  	public String getComponentType() {
47  		return TimeEntryComponent.COMPONENT_TYPE;
48  	}
49  
50  	public final void setRequired(ValueExpression required) {
51  		this.required = required;
52  	}
53  
54  	public final void setAutoTab(ValueExpression autoTab) {
55  		this.autoTab = autoTab;
56  	}
57  
58  	public final void setValueChangeListener(ValueExpression valueChangeListeners) {
59  		this.valueChangeListeners = valueChangeListeners;
60  	}
61  
62  	public final void setFocusStyleClass(ValueExpression focusStyleClass) {
63  		this.focusStyleClass = focusStyleClass;
64  	}
65  
66  	public final void setSelectionListener(ValueExpression selectionListeners) {
67  		this.selectionListeners = selectionListeners;
68  	}
69  
70  	public final void setReadOnly(ValueExpression readOnly) {
71  		this.readOnly = readOnly;
72  	}
73  
74  	public final void setLiteralLocale(ValueExpression literalLocale) {
75  		this.literalLocale = literalLocale;
76  	}
77  
78  	public final void setLiteralTimeZone(ValueExpression literalTimeZone) {
79  		this.literalTimeZone = literalTimeZone;
80  	}
81  
82  	public final void setComponentLocale(ValueExpression componentLocale) {
83  		this.componentLocale = componentLocale;
84  	}
85  
86  	public final void setComponentTimeZone(ValueExpression componentTimeZone) {
87  		this.componentTimeZone = componentTimeZone;
88  	}
89  
90  	public final void setErrorStyleClass(ValueExpression errorStyleClass) {
91  		this.errorStyleClass = errorStyleClass;
92  	}
93  
94  	public final void setFatalStyleClass(ValueExpression fatalStyleClass) {
95  		this.fatalStyleClass = fatalStyleClass;
96  	}
97  
98  	public final void setInfoStyleClass(ValueExpression infoStyleClass) {
99  		this.infoStyleClass = infoStyleClass;
100 	}
101 
102 	public final void setWarnStyleClass(ValueExpression warnStyleClass) {
103 		this.warnStyleClass = warnStyleClass;
104 	}
105 
106 	public final void setAlternateText(ValueExpression alternateText) {
107 		this.alternateText = alternateText;
108 	}
109 
110 	public final void setAutoCompletion(ValueExpression autoCompletion) {
111 		this.autoCompletion = autoCompletion;
112 	}
113 
114 	public final void setTime(ValueExpression time) {
115 		this.time = time;
116 	}
117 
118 	public final void setMinTime(ValueExpression minTime) {
119 		this.minTime = minTime;
120 	}
121 
122 	public final void setDefaultTime(ValueExpression defaultTime) {
123 		this.defaultTime = defaultTime;
124 	}
125 
126 	public final void setMaxTime(ValueExpression maxTime) {
127 		this.maxTime = maxTime;
128 	}
129 
130 	public final void setTimeFormat(ValueExpression timeFormat) {
131 		this.timeFormat = timeFormat;
132 	}
133 
134 	public final void setHourStep(ValueExpression hourStep) {
135 		this.hourStep = hourStep;
136 	}
137 
138 	public final void setMinuteStep(ValueExpression minuteStep) {
139 		this.minuteStep = minuteStep;
140 	}
141 
142 	public final void setSecondStep(ValueExpression secondStep) {
143 		this.secondStep = secondStep;
144 	}
145 
146 	public final void setMillisStep(ValueExpression millisStep) {
147 		this.millisStep = millisStep;
148 	}
149 
150 	protected void setProperties(UIComponent uiComponent) {
151 		if (LOG.isDebugEnabled()) {
152 			if (TimeEntryComponent.COMPONENT_TYPE==getComponentType()) {
153 				LOG.debug("Component id='"+getId()+"' type='"+getComponentType()+"'.");
154 			}
155 			LOG.debug("  required='"+required+"'");
156 			LOG.debug("  autoTab='"+autoTab+"'");
157 			LOG.debug("  focusStyleClass='"+focusStyleClass+"'");
158 			LOG.debug("  readOnly='"+readOnly+"'");
159 			LOG.debug("  literalLocale='"+literalLocale+"'");
160 			LOG.debug("  literalTimeZone='"+literalTimeZone+"'");
161 			LOG.debug("  componentLocale='"+componentLocale+"'");
162 			LOG.debug("  componentTimeZone='"+componentTimeZone+"'");
163 			LOG.debug("  errorStyleClass='"+errorStyleClass+"'");
164 			LOG.debug("  fatalStyleClass='"+fatalStyleClass+"'");
165 			LOG.debug("  infoStyleClass='"+infoStyleClass+"'");
166 			LOG.debug("  warnStyleClass='"+warnStyleClass+"'");
167 			LOG.debug("  alternateText='"+alternateText+"'");
168 			LOG.debug("  autoCompletion='"+autoCompletion+"'");
169 			LOG.debug("  time='"+time+"'");
170 			LOG.debug("  minTime='"+minTime+"'");
171 			LOG.debug("  defaultTime='"+defaultTime+"'");
172 			LOG.debug("  maxTime='"+maxTime+"'");
173 			LOG.debug("  timeFormat='"+timeFormat+"'");
174 			LOG.debug("  hourStep='"+hourStep+"'");
175 			LOG.debug("  minuteStep='"+minuteStep+"'");
176 			LOG.debug("  secondStep='"+secondStep+"'");
177 			LOG.debug("  millisStep='"+millisStep+"'");
178 		}
179 		if ((uiComponent instanceof TimeEntryComponent)==false) {
180 			if (uiComponent instanceof UIViewRoot) {
181 				throw new IllegalStateException("The first component of the page must be a UIViewRoot component !");
182 			}
183 			throw new IllegalStateException("Component specified by tag is not instanceof of 'TimeEntryComponent'.");
184 		}
185 
186 		super.setProperties(uiComponent);
187 
188 		TimeEntryComponent component = (TimeEntryComponent) uiComponent;
189 		FacesContext facesContext = getFacesContext();
190 
191 		if (required != null) {
192 			if (required.isLiteralText()==false) {
193 				component.setValueExpression(Properties.REQUIRED, required);
194 
195 			} else {
196 				component.setRequired(getBool(required.getExpressionString()));
197 			}
198 		}
199 
200 		if (autoTab != null) {
201 			if (autoTab.isLiteralText()==false) {
202 				component.setValueExpression(Properties.AUTO_TAB, autoTab);
203 
204 			} else {
205 				component.setAutoTab(getBool(autoTab.getExpressionString()));
206 			}
207 		}
208 
209 		if (valueChangeListeners != null) {
210 			ListenersTools1_2.parseListener(facesContext, component, ListenersTools.VALUE_CHANGE_LISTENER_TYPE, valueChangeListeners);
211 		}
212 
213 		if (focusStyleClass != null) {
214 			if (focusStyleClass.isLiteralText()==false) {
215 				component.setValueExpression(Properties.FOCUS_STYLE_CLASS, focusStyleClass);
216 
217 			} else {
218 				component.setFocusStyleClass(focusStyleClass.getExpressionString());
219 			}
220 		}
221 
222 		if (selectionListeners != null) {
223 			ListenersTools1_2.parseListener(facesContext, component, ListenersTools.SELECTION_LISTENER_TYPE, selectionListeners);
224 		}
225 
226 		if (readOnly != null) {
227 			if (readOnly.isLiteralText()==false) {
228 				component.setValueExpression(Properties.READ_ONLY, readOnly);
229 
230 			} else {
231 				component.setReadOnly(getBool(readOnly.getExpressionString()));
232 			}
233 		}
234 
235 		if (literalLocale != null) {
236 			if (literalLocale.isLiteralText()==false) {
237 				component.setValueExpression(Properties.LITERAL_LOCALE, literalLocale);
238 
239 			} else {
240 				component.setLiteralLocale(literalLocale.getExpressionString());
241 			}
242 		}
243 
244 		if (literalTimeZone != null) {
245 			if (literalTimeZone.isLiteralText()==false) {
246 				component.setValueExpression(Properties.LITERAL_TIME_ZONE, literalTimeZone);
247 
248 			} else {
249 				component.setLiteralTimeZone(literalTimeZone.getExpressionString());
250 			}
251 		}
252 
253 		if (componentLocale != null) {
254 			if (componentLocale.isLiteralText()==false) {
255 				component.setValueExpression(Properties.COMPONENT_LOCALE, componentLocale);
256 
257 			} else {
258 				component.setComponentLocale(componentLocale.getExpressionString());
259 			}
260 		}
261 
262 		if (componentTimeZone != null) {
263 			if (componentTimeZone.isLiteralText()==false) {
264 				component.setValueExpression(Properties.COMPONENT_TIME_ZONE, componentTimeZone);
265 
266 			} else {
267 				component.setComponentTimeZone(componentTimeZone.getExpressionString());
268 			}
269 		}
270 
271 		if (errorStyleClass != null) {
272 			if (errorStyleClass.isLiteralText()==false) {
273 				component.setValueExpression(Properties.ERROR_STYLE_CLASS, errorStyleClass);
274 
275 			} else {
276 				component.setErrorStyleClass(errorStyleClass.getExpressionString());
277 			}
278 		}
279 
280 		if (fatalStyleClass != null) {
281 			if (fatalStyleClass.isLiteralText()==false) {
282 				component.setValueExpression(Properties.FATAL_STYLE_CLASS, fatalStyleClass);
283 
284 			} else {
285 				component.setFatalStyleClass(fatalStyleClass.getExpressionString());
286 			}
287 		}
288 
289 		if (infoStyleClass != null) {
290 			if (infoStyleClass.isLiteralText()==false) {
291 				component.setValueExpression(Properties.INFO_STYLE_CLASS, infoStyleClass);
292 
293 			} else {
294 				component.setInfoStyleClass(infoStyleClass.getExpressionString());
295 			}
296 		}
297 
298 		if (warnStyleClass != null) {
299 			if (warnStyleClass.isLiteralText()==false) {
300 				component.setValueExpression(Properties.WARN_STYLE_CLASS, warnStyleClass);
301 
302 			} else {
303 				component.setWarnStyleClass(warnStyleClass.getExpressionString());
304 			}
305 		}
306 
307 		if (alternateText != null) {
308 			if (alternateText.isLiteralText()==false) {
309 				component.setValueExpression(Properties.ALTERNATE_TEXT, alternateText);
310 
311 			} else {
312 				component.setAlternateText(alternateText.getExpressionString());
313 			}
314 		}
315 
316 		if (autoCompletion != null) {
317 			if (autoCompletion.isLiteralText()==false) {
318 				component.setValueExpression(Properties.AUTO_COMPLETION, autoCompletion);
319 
320 			} else {
321 				component.setAutoCompletion(getBool(autoCompletion.getExpressionString()));
322 			}
323 		}
324 
325 		if (time != null) {
326 			if (time.isLiteralText()==false) {
327 				component.setValueExpression(Properties.VALUE, time);
328 
329 			} else {
330 				component.setTime(time.getExpressionString());
331 			}
332 		}
333 
334 		if (minTime != null) {
335 			if (minTime.isLiteralText()==false) {
336 				component.setValueExpression(Properties.MIN_TIME, minTime);
337 
338 			} else {
339 				component.setMinTime(minTime.getExpressionString());
340 			}
341 		}
342 
343 		if (defaultTime != null) {
344 			if (defaultTime.isLiteralText()==false) {
345 				component.setValueExpression(Properties.DEFAULT_TIME, defaultTime);
346 
347 			} else {
348 				component.setDefaultTime(defaultTime.getExpressionString());
349 			}
350 		}
351 
352 		if (maxTime != null) {
353 			if (maxTime.isLiteralText()==false) {
354 				component.setValueExpression(Properties.MAX_TIME, maxTime);
355 
356 			} else {
357 				component.setMaxTime(maxTime.getExpressionString());
358 			}
359 		}
360 
361 		if (timeFormat != null) {
362 			if (timeFormat.isLiteralText()==false) {
363 				component.setValueExpression(Properties.TIME_FORMAT, timeFormat);
364 
365 			} else {
366 				component.setTimeFormat(timeFormat.getExpressionString());
367 			}
368 		}
369 
370 		if (hourStep != null) {
371 			if (hourStep.isLiteralText()==false) {
372 				component.setValueExpression(Properties.HOUR_STEP, hourStep);
373 
374 			} else {
375 				component.setHourStep(hourStep.getExpressionString());
376 			}
377 		}
378 
379 		if (minuteStep != null) {
380 			if (minuteStep.isLiteralText()==false) {
381 				component.setValueExpression(Properties.MINUTE_STEP, minuteStep);
382 
383 			} else {
384 				component.setMinuteStep(minuteStep.getExpressionString());
385 			}
386 		}
387 
388 		if (secondStep != null) {
389 			if (secondStep.isLiteralText()==false) {
390 				component.setValueExpression(Properties.SECOND_STEP, secondStep);
391 
392 			} else {
393 				component.setSecondStep(secondStep.getExpressionString());
394 			}
395 		}
396 
397 		if (millisStep != null) {
398 			if (millisStep.isLiteralText()==false) {
399 				component.setValueExpression(Properties.MILLIS_STEP, millisStep);
400 
401 			} else {
402 				component.setMillisStep(millisStep.getExpressionString());
403 			}
404 		}
405 	}
406 
407 	public void release() {
408 		required = null;
409 		autoTab = null;
410 		valueChangeListeners = null;
411 		focusStyleClass = null;
412 		selectionListeners = null;
413 		readOnly = null;
414 		literalLocale = null;
415 		literalTimeZone = null;
416 		componentLocale = null;
417 		componentTimeZone = null;
418 		errorStyleClass = null;
419 		fatalStyleClass = null;
420 		infoStyleClass = null;
421 		warnStyleClass = null;
422 		alternateText = null;
423 		autoCompletion = null;
424 		time = null;
425 		minTime = null;
426 		defaultTime = null;
427 		maxTime = null;
428 		timeFormat = null;
429 		hourStep = null;
430 		minuteStep = null;
431 		secondStep = null;
432 		millisStep = null;
433 
434 		super.release();
435 	}
436 
437 }