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 }