View Javadoc

1   package org.rcfaces.core.component;
2   
3   import java.util.TimeZone;
4   import org.rcfaces.core.internal.component.Properties;
5   import java.util.Map;
6   import org.rcfaces.core.lang.IAdaptable;
7   import org.rcfaces.core.component.capability.IComponentLocaleCapability;
8   import java.util.Collections;
9   import org.apache.commons.logging.LogFactory;
10  import org.rcfaces.core.component.capability.ILiteralLocaleCapability;
11  import org.rcfaces.core.component.capability.IComponentTimeZoneCapability;
12  import org.rcfaces.core.component.capability.IRequiredCapability;
13  import java.util.HashMap;
14  import javax.faces.context.FacesContext;
15  import org.rcfaces.core.internal.Constants;
16  import org.rcfaces.core.component.capability.IFocusStyleClassCapability;
17  import org.rcfaces.core.internal.converter.TimeZoneConverter;
18  import org.rcfaces.core.component.capability.IReadOnlyCapability;
19  import javax.faces.FacesException;
20  import org.rcfaces.core.internal.converter.LocaleConverter;
21  import org.apache.commons.logging.Log;
22  import java.util.Locale;
23  import java.util.Set;
24  import org.rcfaces.core.component.capability.IValueChangeEventCapability;
25  import org.rcfaces.core.component.capability.ISeverityStyleClassCapability;
26  import org.rcfaces.core.component.capability.ISelectionEventCapability;
27  import java.lang.Object;
28  import java.lang.String;
29  import org.rcfaces.core.lang.Time;
30  import org.rcfaces.core.component.capability.IAlternateTextCapability;
31  import org.rcfaces.core.internal.component.IDataMapAccessor;
32  import javax.el.ValueExpression;
33  import java.util.HashSet;
34  import org.rcfaces.core.component.capability.ILiteralTimeZoneCapability;
35  import org.rcfaces.core.internal.converter.LiteralTimeConverter;
36  import org.rcfaces.core.component.capability.IAutoTabCapability;
37  import java.util.Arrays;
38  import org.rcfaces.core.internal.manager.IValidationParameters;
39  import org.rcfaces.core.component.AbstractInputComponent;
40  
41  /**
42   * <p>The timeEntry Component is a specialized <a href="/comps/textEntryComponent.html">textEntry Component</a>. it sports auto-completion related to the validity of the numbers entered as a time.</p>
43   * <p>The timeEntry Component has the following capabilities :
44   * <ul>
45   * <li>Position &amp; Size</li>
46   * <li>Foreground &amp; Background Color</li>
47   * <li>Text, font &amp; separators</li>
48   * <li>Margin &amp; border</li>
49   * <li>Help</li>
50   * <li>Visibility, Read-Only, Disabled</li>
51   * <li>Events Handling</li>
52   * <li>Calendar functions</li>
53   * </ul>
54   * </p>
55   */
56  public class TimeEntryComponent extends AbstractInputComponent implements 
57  	IRequiredCapability,
58  	IAutoTabCapability,
59  	IValueChangeEventCapability,
60  	IFocusStyleClassCapability,
61  	ISelectionEventCapability,
62  	IReadOnlyCapability,
63  	ILiteralLocaleCapability,
64  	ILiteralTimeZoneCapability,
65  	IComponentLocaleCapability,
66  	IComponentTimeZoneCapability,
67  	ISeverityStyleClassCapability,
68  	IAlternateTextCapability,
69  	IValidationParameters {
70  
71  	private static final Log LOG = LogFactory.getLog(TimeEntryComponent.class);
72  
73  	public static final String COMPONENT_TYPE="org.rcfaces.core.timeEntry";
74  
75  	protected static final Set CAMELIA_ATTRIBUTES=new HashSet(AbstractInputComponent.CAMELIA_ATTRIBUTES);
76  	static {
77  		CAMELIA_ATTRIBUTES.addAll(Arrays.asList(new String[] {"focusStyleClass","minTime","fatalStyleClass","timeFormat","maxTime","selectionListener","literalLocale","valueChangeListener","time","errorStyleClass","autoCompletion","alternateText","literalTimeZone","hourStep","required","autoTab","millisStep","styleClass","defaultTime","minuteStep","secondStep","readOnly","warnStyleClass","infoStyleClass","componentTimeZone","componentLocale"}));
78  	}
79  	protected static final String CAMELIA_VALUE_ALIAS="time";
80  
81  	public TimeEntryComponent() {
82  		setRendererType(COMPONENT_TYPE);
83  	}
84  
85  	public TimeEntryComponent(String componentId) {
86  		this();
87  		setId(componentId);
88  	}
89  
90  	public int getValidationParametersCount() {
91  
92  		 
93  		 return getValidationParametersCount(null);
94  		
95  	}
96  
97  	public boolean isClientSideValidationParameter(String name) {
98  
99  
100 		return isClientSideValidationParameter(name, null);
101 		
102 	}
103 
104 	public Map getValidationParametersMap() {
105 
106 
107 		return getValidationParametersMap(null);
108 		
109 	}
110 
111 	public void setValidationParameter(String name, ValueExpression value, boolean client) {
112 
113 
114 		setValidationParameterData(name, value, client);
115 		
116 	}
117 
118 	public String getValidationParameter(String name) {
119 
120 
121 		 return getValidationParameter(name, null);
122 		
123 	}
124 
125 	public Map getClientValidationParametersMap() {
126 
127 
128 		return getClientValidationParametersMap(null);
129 		
130 	}
131 
132 	public String removeValidationParameter(String name) {
133 
134 
135 		FacesContext facesContext=getFacesContext();
136 
137 		IDataMapAccessor dataMapAccessor=engine.getDataMapAccessor(facesContext, "ValidationParameter", false);
138 		if (dataMapAccessor==null) {
139 			return null;
140 		}
141  
142  		IDataMapAccessor clientMapAccessor=engine.getDataMapAccessor(facesContext, "ClientValidationParameter", false);
143 		if (clientMapAccessor!=null) {
144 			clientMapAccessor.removeData(name, facesContext);
145 		}
146             
147 		return (String)dataMapAccessor.removeData(name, facesContext);
148 		
149 	}
150 
151 	public String setValidationParameter(String name, String value, boolean client) {
152 
153 
154 		return (String)setValidationParameterData(name, value, client);
155 		
156 	}
157 
158 	public Time getTime() {
159 
160 
161 				Object submittedValue=getSubmittedExternalValue();
162 				if (submittedValue!=null) {
163 					return (Time)submittedValue;
164 				}
165 
166 				Object value=getValue();
167 				
168 				if (value==null) {
169 					return null;
170 				}
171 				
172 				if (value instanceof Time) {
173 					return (Time)value;
174 				}
175 				
176 				if (value instanceof String) {
177 					return (Time)LiteralTimeConverter.SINGLETON.getAsObject(null, this, (String)value);
178 				}
179 
180 				if (value instanceof IAdaptable) {
181 					Time adapted=(Time)((IAdaptable)value).getAdapter(Time.class, this);
182 					if (adapted!=null) {
183 						return adapted;
184 					}
185 				}
186 
187 				throw new FacesException("Value of timeEntry is not a time ! ("+value+")");
188 			
189 	}
190 
191 	public void setTime(Time time) {
192 
193 
194 				setValue(time);
195 			
196 	}
197 
198 	public void setTime(String time) {
199 
200 
201 			Time timeValue=(Time)LiteralTimeConverter.SINGLETON.getAsObject(null, this, time);
202 			setTime(timeValue);
203 		
204 	}
205 
206 	public void setMinTime(String time) {
207 
208 
209 			Time timeValue=(Time)LiteralTimeConverter.SINGLETON.getAsObject(null, this, time);
210 			setMinTime(timeValue);
211 		
212 	}
213 
214 	public void setDefaultTime(String time) {
215 
216 
217 			Time timeValue=(Time)LiteralTimeConverter.SINGLETON.getAsObject(null, this, time);
218 			setDefaultTime(timeValue);
219 		
220 	}
221 
222 	public void setMaxTime(String time) {
223 
224 
225 			Time timeValue=(Time)LiteralTimeConverter.SINGLETON.getAsObject(null, this, time);
226 			setMaxTime(timeValue);
227 		
228 	}
229 
230 	public void setLiteralLocale(String locale) {
231 
232 
233 		setLiteralLocale((Locale)LocaleConverter.SINGLETON.getAsObject(null, this, locale));
234 		
235 	}
236 
237 	public void setComponentLocale(String locale) {
238 
239 
240 		setComponentLocale((Locale)LocaleConverter.SINGLETON.getAsObject(null, this, locale));
241 		
242 	}
243 
244 	public void setLiteralTimeZone(String timeZone) {
245 
246 
247 		setLiteralTimeZone((TimeZone)TimeZoneConverter.SINGLETON.getAsObject(null, this, timeZone));
248 		
249 	}
250 
251 	public void setComponentTimeZone(String timeZone) {
252 
253 
254 		setComponentTimeZone((TimeZone)TimeZoneConverter.SINGLETON.getAsObject(null, this, timeZone));
255 		
256 	}
257 
258 	public String getValidationParameter(String name, FacesContext facesContext) {
259 
260 
261 		if (facesContext==null) {
262 			facesContext=getFacesContext();
263 		}
264 
265 		IDataMapAccessor dataMapAccessor=engine.getDataMapAccessor(facesContext, "ValidationParameter", false);
266 		if (dataMapAccessor==null) {
267 			return null;
268 		}
269             
270 		return (String)dataMapAccessor.getData(name, facesContext);
271 		
272 	}
273 
274 	public int getValidationParametersCount(FacesContext facesContext) {
275 
276 
277 		if (facesContext==null) {
278 			facesContext=getFacesContext();
279 		}
280 		IDataMapAccessor dataMapAccessor=engine.getDataMapAccessor(facesContext, "ValidationParameter", false);
281 		if (dataMapAccessor==null) {
282 			return 0;
283 		}
284 		 
285 		return dataMapAccessor.getDataCount();
286 		
287 	}
288 
289 	public Map getValidationParametersMap(FacesContext facesContext) {
290 
291 
292 		if (facesContext==null) {
293 			facesContext=getFacesContext();
294 		}
295 		
296 		IDataMapAccessor dataMapAccessor=engine.getDataMapAccessor(facesContext, "ValidationParameter", false);
297 		if (dataMapAccessor==null) {
298 			return Collections.EMPTY_MAP;
299 		}
300             
301 		return dataMapAccessor.getDataMap(facesContext);
302 		
303 	}
304 
305 	public Map getClientValidationParametersMap(FacesContext facesContext) {
306 
307 
308 		if (facesContext==null) {
309 			facesContext=getFacesContext();
310 		}
311 		
312 		IDataMapAccessor dataMapAccessor=engine.getDataMapAccessor(facesContext, "ValidationParameter", false);
313 		if (dataMapAccessor==null) {
314 			return Collections.EMPTY_MAP;
315 		}
316             
317 		Map map=dataMapAccessor.getDataMap(facesContext);
318 		if (map.isEmpty()) {
319 			return Collections.EMPTY_MAP;
320 		}
321 		
322 		IDataMapAccessor clientMapAccessor=engine.getDataMapAccessor(facesContext, "ClientValidationParameter", false);
323 		if (clientMapAccessor==null) {
324 			if (Constants.READ_ONLY_COLLECTION_LOCK_ENABLED) {
325 				map=Collections.unmodifiableMap(map);
326 			}
327 			return map;
328 		}
329 		
330 		Map client=clientMapAccessor.getDataMap(facesContext);
331 		if (client==null || client.isEmpty()) {
332 		
333 			if (Constants.READ_ONLY_COLLECTION_LOCK_ENABLED) {
334 				map=Collections.unmodifiableMap(map);
335 			}
336 			return map;
337 		}
338 		
339 		Map fmap=new HashMap(map);
340 		if (map.keySet().removeAll(client.keySet())==false) {
341 			if (Constants.READ_ONLY_COLLECTION_LOCK_ENABLED) {
342 				map=Collections.unmodifiableMap(map);
343 			}
344 			return map;
345 		}
346 		
347 		if (fmap.isEmpty()) {
348 			return Collections.EMPTY_MAP;
349 		}
350 		
351 		if (Constants.READ_ONLY_COLLECTION_LOCK_ENABLED) {
352 			fmap=Collections.unmodifiableMap(fmap);
353 		}
354 		
355 		return fmap;
356 		
357 	}
358 
359 	private Object setValidationParameterData(String name, Object value, boolean client) {
360 
361 
362 		FacesContext facesContext=getFacesContext();
363 		IDataMapAccessor dataMapAccessor=engine.getDataMapAccessor(facesContext, "ValidationParameter", true);
364 		if (client) {
365 			// On retire la limitation au niveau client si besoin !
366 			IDataMapAccessor clientMapAccessor=engine.getDataMapAccessor(facesContext, "ClientValidationParameter", false);
367 			if (clientMapAccessor!=null) {
368 				clientMapAccessor.removeData(name, facesContext);
369 			}
370 		} else {
371 			IDataMapAccessor clientMapAccessor=engine.getDataMapAccessor(facesContext, "ClientValidationParameter", true);
372 			clientMapAccessor.setData(name, Boolean.FALSE, facesContext);
373 		}
374             
375 		return dataMapAccessor.setData(name, value, facesContext);
376 		
377 	}
378 
379 	public boolean isClientSideValidationParameter(String name, FacesContext facesContext) {
380 
381 
382 		if (facesContext==null) {
383 			facesContext=getFacesContext();
384 		}
385 		
386 		IDataMapAccessor clientMapAccessor=engine.getDataMapAccessor(facesContext, "ClientValidationParameter", false);
387 		if (clientMapAccessor==null) {
388 			return false;
389 		}
390 		return (clientMapAccessor.getData(name, facesContext)==null);
391 		
392 	}
393 
394 	public boolean isAutoTab() {
395 		return isAutoTab(null);
396 	}
397 
398 	/**
399 	 * See {@link #isAutoTab() isAutoTab()} for more details
400 	 */
401 	public boolean isAutoTab(javax.faces.context.FacesContext facesContext) {
402 		return engine.getBoolProperty(Properties.AUTO_TAB, false, facesContext);
403 	}
404 
405 	/**
406 	 * Returns <code>true</code> if the attribute "autoTab" is set.
407 	 * @return <code>true</code> if the attribute is set.
408 	 */
409 	public final boolean isAutoTabSetted() {
410 		return engine.isPropertySetted(Properties.AUTO_TAB);
411 	}
412 
413 	public void setAutoTab(boolean autoTab) {
414 		engine.setProperty(Properties.AUTO_TAB, autoTab);
415 	}
416 
417 	public final void addValueChangeListener(javax.faces.event.ValueChangeListener listener) {
418 		addFacesListener(listener);
419 	}
420 
421 	public final void removeValueChangeListener(javax.faces.event.ValueChangeListener listener) {
422 		removeFacesListener(listener);
423 	}
424 
425 	public final javax.faces.event.FacesListener [] listValueChangeListeners() {
426 		return getFacesListeners(javax.faces.event.ValueChangeListener.class);
427 	}
428 
429 	public java.lang.String getFocusStyleClass() {
430 		return getFocusStyleClass(null);
431 	}
432 
433 	/**
434 	 * See {@link #getFocusStyleClass() getFocusStyleClass()} for more details
435 	 */
436 	public java.lang.String getFocusStyleClass(javax.faces.context.FacesContext facesContext) {
437 		return engine.getStringProperty(Properties.FOCUS_STYLE_CLASS, facesContext);
438 	}
439 
440 	/**
441 	 * Returns <code>true</code> if the attribute "focusStyleClass" is set.
442 	 * @return <code>true</code> if the attribute is set.
443 	 */
444 	public final boolean isFocusStyleClassSetted() {
445 		return engine.isPropertySetted(Properties.FOCUS_STYLE_CLASS);
446 	}
447 
448 	public void setFocusStyleClass(java.lang.String focusStyleClass) {
449 		engine.setProperty(Properties.FOCUS_STYLE_CLASS, focusStyleClass);
450 	}
451 
452 	public final void addSelectionListener(org.rcfaces.core.event.ISelectionListener listener) {
453 		addFacesListener(listener);
454 	}
455 
456 	public final void removeSelectionListener(org.rcfaces.core.event.ISelectionListener listener) {
457 		removeFacesListener(listener);
458 	}
459 
460 	public final javax.faces.event.FacesListener [] listSelectionListeners() {
461 		return getFacesListeners(org.rcfaces.core.event.ISelectionListener.class);
462 	}
463 
464 	public boolean isReadOnly() {
465 		return isReadOnly(null);
466 	}
467 
468 	/**
469 	 * See {@link #isReadOnly() isReadOnly()} for more details
470 	 */
471 	public boolean isReadOnly(javax.faces.context.FacesContext facesContext) {
472 		return engine.getBoolProperty(Properties.READ_ONLY, false, facesContext);
473 	}
474 
475 	/**
476 	 * Returns <code>true</code> if the attribute "readOnly" is set.
477 	 * @return <code>true</code> if the attribute is set.
478 	 */
479 	public final boolean isReadOnlySetted() {
480 		return engine.isPropertySetted(Properties.READ_ONLY);
481 	}
482 
483 	public void setReadOnly(boolean readOnly) {
484 		engine.setProperty(Properties.READ_ONLY, readOnly);
485 	}
486 
487 	public java.util.Locale getLiteralLocale() {
488 		return getLiteralLocale(null);
489 	}
490 
491 	/**
492 	 * See {@link #getLiteralLocale() getLiteralLocale()} for more details
493 	 */
494 	public java.util.Locale getLiteralLocale(javax.faces.context.FacesContext facesContext) {
495 		return (java.util.Locale)engine.getProperty(Properties.LITERAL_LOCALE, facesContext);
496 	}
497 
498 	/**
499 	 * Returns <code>true</code> if the attribute "literalLocale" is set.
500 	 * @return <code>true</code> if the attribute is set.
501 	 */
502 	public final boolean isLiteralLocaleSetted() {
503 		return engine.isPropertySetted(Properties.LITERAL_LOCALE);
504 	}
505 
506 	public void setLiteralLocale(java.util.Locale literalLocale) {
507 		engine.setProperty(Properties.LITERAL_LOCALE, literalLocale);
508 	}
509 
510 	public java.util.TimeZone getLiteralTimeZone() {
511 		return getLiteralTimeZone(null);
512 	}
513 
514 	/**
515 	 * See {@link #getLiteralTimeZone() getLiteralTimeZone()} for more details
516 	 */
517 	public java.util.TimeZone getLiteralTimeZone(javax.faces.context.FacesContext facesContext) {
518 		return (java.util.TimeZone)engine.getProperty(Properties.LITERAL_TIME_ZONE, facesContext);
519 	}
520 
521 	/**
522 	 * Returns <code>true</code> if the attribute "literalTimeZone" is set.
523 	 * @return <code>true</code> if the attribute is set.
524 	 */
525 	public final boolean isLiteralTimeZoneSetted() {
526 		return engine.isPropertySetted(Properties.LITERAL_TIME_ZONE);
527 	}
528 
529 	public void setLiteralTimeZone(java.util.TimeZone literalTimeZone) {
530 		engine.setProperty(Properties.LITERAL_TIME_ZONE, literalTimeZone);
531 	}
532 
533 	public java.util.Locale getComponentLocale() {
534 		return getComponentLocale(null);
535 	}
536 
537 	/**
538 	 * See {@link #getComponentLocale() getComponentLocale()} for more details
539 	 */
540 	public java.util.Locale getComponentLocale(javax.faces.context.FacesContext facesContext) {
541 		return (java.util.Locale)engine.getProperty(Properties.COMPONENT_LOCALE, facesContext);
542 	}
543 
544 	/**
545 	 * Returns <code>true</code> if the attribute "componentLocale" is set.
546 	 * @return <code>true</code> if the attribute is set.
547 	 */
548 	public final boolean isComponentLocaleSetted() {
549 		return engine.isPropertySetted(Properties.COMPONENT_LOCALE);
550 	}
551 
552 	public void setComponentLocale(java.util.Locale componentLocale) {
553 		engine.setProperty(Properties.COMPONENT_LOCALE, componentLocale);
554 	}
555 
556 	public java.util.TimeZone getComponentTimeZone() {
557 		return getComponentTimeZone(null);
558 	}
559 
560 	/**
561 	 * See {@link #getComponentTimeZone() getComponentTimeZone()} for more details
562 	 */
563 	public java.util.TimeZone getComponentTimeZone(javax.faces.context.FacesContext facesContext) {
564 		return (java.util.TimeZone)engine.getProperty(Properties.COMPONENT_TIME_ZONE, facesContext);
565 	}
566 
567 	/**
568 	 * Returns <code>true</code> if the attribute "componentTimeZone" is set.
569 	 * @return <code>true</code> if the attribute is set.
570 	 */
571 	public final boolean isComponentTimeZoneSetted() {
572 		return engine.isPropertySetted(Properties.COMPONENT_TIME_ZONE);
573 	}
574 
575 	public void setComponentTimeZone(java.util.TimeZone componentTimeZone) {
576 		engine.setProperty(Properties.COMPONENT_TIME_ZONE, componentTimeZone);
577 	}
578 
579 	public java.lang.String getErrorStyleClass() {
580 		return getErrorStyleClass(null);
581 	}
582 
583 	/**
584 	 * See {@link #getErrorStyleClass() getErrorStyleClass()} for more details
585 	 */
586 	public java.lang.String getErrorStyleClass(javax.faces.context.FacesContext facesContext) {
587 		return engine.getStringProperty(Properties.ERROR_STYLE_CLASS, facesContext);
588 	}
589 
590 	/**
591 	 * Returns <code>true</code> if the attribute "errorStyleClass" is set.
592 	 * @return <code>true</code> if the attribute is set.
593 	 */
594 	public final boolean isErrorStyleClassSetted() {
595 		return engine.isPropertySetted(Properties.ERROR_STYLE_CLASS);
596 	}
597 
598 	public void setErrorStyleClass(java.lang.String errorStyleClass) {
599 		engine.setProperty(Properties.ERROR_STYLE_CLASS, errorStyleClass);
600 	}
601 
602 	public java.lang.String getFatalStyleClass() {
603 		return getFatalStyleClass(null);
604 	}
605 
606 	/**
607 	 * See {@link #getFatalStyleClass() getFatalStyleClass()} for more details
608 	 */
609 	public java.lang.String getFatalStyleClass(javax.faces.context.FacesContext facesContext) {
610 		return engine.getStringProperty(Properties.FATAL_STYLE_CLASS, facesContext);
611 	}
612 
613 	/**
614 	 * Returns <code>true</code> if the attribute "fatalStyleClass" is set.
615 	 * @return <code>true</code> if the attribute is set.
616 	 */
617 	public final boolean isFatalStyleClassSetted() {
618 		return engine.isPropertySetted(Properties.FATAL_STYLE_CLASS);
619 	}
620 
621 	public void setFatalStyleClass(java.lang.String fatalStyleClass) {
622 		engine.setProperty(Properties.FATAL_STYLE_CLASS, fatalStyleClass);
623 	}
624 
625 	public java.lang.String getInfoStyleClass() {
626 		return getInfoStyleClass(null);
627 	}
628 
629 	/**
630 	 * See {@link #getInfoStyleClass() getInfoStyleClass()} for more details
631 	 */
632 	public java.lang.String getInfoStyleClass(javax.faces.context.FacesContext facesContext) {
633 		return engine.getStringProperty(Properties.INFO_STYLE_CLASS, facesContext);
634 	}
635 
636 	/**
637 	 * Returns <code>true</code> if the attribute "infoStyleClass" is set.
638 	 * @return <code>true</code> if the attribute is set.
639 	 */
640 	public final boolean isInfoStyleClassSetted() {
641 		return engine.isPropertySetted(Properties.INFO_STYLE_CLASS);
642 	}
643 
644 	public void setInfoStyleClass(java.lang.String infoStyleClass) {
645 		engine.setProperty(Properties.INFO_STYLE_CLASS, infoStyleClass);
646 	}
647 
648 	public java.lang.String getWarnStyleClass() {
649 		return getWarnStyleClass(null);
650 	}
651 
652 	/**
653 	 * See {@link #getWarnStyleClass() getWarnStyleClass()} for more details
654 	 */
655 	public java.lang.String getWarnStyleClass(javax.faces.context.FacesContext facesContext) {
656 		return engine.getStringProperty(Properties.WARN_STYLE_CLASS, facesContext);
657 	}
658 
659 	/**
660 	 * Returns <code>true</code> if the attribute "warnStyleClass" is set.
661 	 * @return <code>true</code> if the attribute is set.
662 	 */
663 	public final boolean isWarnStyleClassSetted() {
664 		return engine.isPropertySetted(Properties.WARN_STYLE_CLASS);
665 	}
666 
667 	public void setWarnStyleClass(java.lang.String warnStyleClass) {
668 		engine.setProperty(Properties.WARN_STYLE_CLASS, warnStyleClass);
669 	}
670 
671 	public java.lang.String getAlternateText() {
672 		return getAlternateText(null);
673 	}
674 
675 	/**
676 	 * See {@link #getAlternateText() getAlternateText()} for more details
677 	 */
678 	public java.lang.String getAlternateText(javax.faces.context.FacesContext facesContext) {
679 		return engine.getStringProperty(Properties.ALTERNATE_TEXT, facesContext);
680 	}
681 
682 	/**
683 	 * Returns <code>true</code> if the attribute "alternateText" is set.
684 	 * @return <code>true</code> if the attribute is set.
685 	 */
686 	public final boolean isAlternateTextSetted() {
687 		return engine.isPropertySetted(Properties.ALTERNATE_TEXT);
688 	}
689 
690 	public void setAlternateText(java.lang.String alternateText) {
691 		engine.setProperty(Properties.ALTERNATE_TEXT, alternateText);
692 	}
693 
694 	/**
695 	 * Returns a boolean value indicating if the component should complete automaticaly the user entry.
696 	 * @return true if the user entry must completed
697 	 */
698 	public boolean isAutoCompletion() {
699 		return isAutoCompletion(null);
700 	}
701 
702 	/**
703 	 * Returns a boolean value indicating if the component should complete automaticaly the user entry.
704 	 * @return true if the user entry must completed
705 	 */
706 	public boolean isAutoCompletion(javax.faces.context.FacesContext facesContext) {
707 		return engine.getBoolProperty(Properties.AUTO_COMPLETION, true, facesContext);
708 	}
709 
710 	/**
711 	 * Sets a boolean value indicating if the component should complete automaticaly the user entry.
712 	 * @param autoCompletion true if the user entry must completed
713 	 */
714 	public void setAutoCompletion(boolean autoCompletion) {
715 		engine.setProperty(Properties.AUTO_COMPLETION, autoCompletion);
716 	}
717 
718 	/**
719 	 * Sets a boolean value indicating if the component should complete automaticaly the user entry.
720 	 * @param autoCompletion true if the user entry must completed
721 	 */
722 	/**
723 	 * Returns <code>true</code> if the attribute "autoCompletion" is set.
724 	 * @return <code>true</code> if the attribute is set.
725 	 */
726 	public boolean isAutoCompletionSetted() {
727 		return engine.isPropertySetted(Properties.AUTO_COMPLETION);
728 	}
729 
730 	/**
731 	 * Returns a time value indicating the minimum acceptable time for the component. The first accepted value is greater than minTime.
732 	 * @return min Time
733 	 */
734 	public Time getMinTime() {
735 		return getMinTime(null);
736 	}
737 
738 	/**
739 	 * Returns a time value indicating the minimum acceptable time for the component. The first accepted value is greater than minTime.
740 	 * @return min Time
741 	 */
742 	public Time getMinTime(javax.faces.context.FacesContext facesContext) {
743 		return (Time)engine.getValue(Properties.MIN_TIME, facesContext);
744 	}
745 
746 	/**
747 	 * Sets a time value indicating the minimum acceptable time for the component. The first accepted value is greater than minTime.
748 	 * @param minTime min Time
749 	 */
750 	public void setMinTime(Time minTime) {
751 		engine.setProperty(Properties.MIN_TIME, minTime);
752 	}
753 
754 	/**
755 	 * Sets a time value indicating the minimum acceptable time for the component. The first accepted value is greater than minTime.
756 	 * @param minTime min Time
757 	 */
758 	/**
759 	 * Returns <code>true</code> if the attribute "minTime" is set.
760 	 * @return <code>true</code> if the attribute is set.
761 	 */
762 	public boolean isMinTimeSetted() {
763 		return engine.isPropertySetted(Properties.MIN_TIME);
764 	}
765 
766 	/**
767 	 * Returns the default value.
768 	 * @return default value
769 	 */
770 	public Time getDefaultTime() {
771 		return getDefaultTime(null);
772 	}
773 
774 	/**
775 	 * Returns the default value.
776 	 * @return default value
777 	 */
778 	public Time getDefaultTime(javax.faces.context.FacesContext facesContext) {
779 		return (Time)engine.getValue(Properties.DEFAULT_TIME, facesContext);
780 	}
781 
782 	/**
783 	 * Sets the default value.
784 	 * @param defaultTime default value
785 	 */
786 	public void setDefaultTime(Time defaultTime) {
787 		engine.setProperty(Properties.DEFAULT_TIME, defaultTime);
788 	}
789 
790 	/**
791 	 * Sets the default value.
792 	 * @param defaultTime default value
793 	 */
794 	/**
795 	 * Returns <code>true</code> if the attribute "defaultTime" is set.
796 	 * @return <code>true</code> if the attribute is set.
797 	 */
798 	public boolean isDefaultTimeSetted() {
799 		return engine.isPropertySetted(Properties.DEFAULT_TIME);
800 	}
801 
802 	/**
803 	 * Returns a time value indicating the maximum acceptable time for the component. The last accepted value is lesser than maxTime.
804 	 * @return max time
805 	 */
806 	public Time getMaxTime() {
807 		return getMaxTime(null);
808 	}
809 
810 	/**
811 	 * Returns a time value indicating the maximum acceptable time for the component. The last accepted value is lesser than maxTime.
812 	 * @return max time
813 	 */
814 	public Time getMaxTime(javax.faces.context.FacesContext facesContext) {
815 		return (Time)engine.getValue(Properties.MAX_TIME, facesContext);
816 	}
817 
818 	/**
819 	 * Sets a time value indicating the maximum acceptable time for the component. The last accepted value is lesser than maxTime.
820 	 * @param maxTime max time
821 	 */
822 	public void setMaxTime(Time maxTime) {
823 		engine.setProperty(Properties.MAX_TIME, maxTime);
824 	}
825 
826 	/**
827 	 * Sets a time value indicating the maximum acceptable time for the component. The last accepted value is lesser than maxTime.
828 	 * @param maxTime max time
829 	 */
830 	/**
831 	 * Returns <code>true</code> if the attribute "maxTime" is set.
832 	 * @return <code>true</code> if the attribute is set.
833 	 */
834 	public boolean isMaxTimeSetted() {
835 		return engine.isPropertySetted(Properties.MAX_TIME);
836 	}
837 
838 	public String getTimeFormat() {
839 		return getTimeFormat(null);
840 	}
841 
842 	public String getTimeFormat(javax.faces.context.FacesContext facesContext) {
843 		return engine.getStringProperty(Properties.TIME_FORMAT, facesContext);
844 	}
845 
846 	public void setTimeFormat(String timeFormat) {
847 		engine.setProperty(Properties.TIME_FORMAT, timeFormat);
848 	}
849 
850 	/**
851 	 * Returns <code>true</code> if the attribute "timeFormat" is set.
852 	 * @return <code>true</code> if the attribute is set.
853 	 */
854 	public boolean isTimeFormatSetted() {
855 		return engine.isPropertySetted(Properties.TIME_FORMAT);
856 	}
857 
858 	/**
859 	 * Returns an int value specifying the step used for the hour field when increasing/decreasing the value with the up/down arrows.
860 	 * @return step used
861 	 */
862 	public String getHourStep() {
863 		return getHourStep(null);
864 	}
865 
866 	/**
867 	 * Returns an int value specifying the step used for the hour field when increasing/decreasing the value with the up/down arrows.
868 	 * @return step used
869 	 */
870 	public String getHourStep(javax.faces.context.FacesContext facesContext) {
871 		return engine.getStringProperty(Properties.HOUR_STEP, facesContext);
872 	}
873 
874 	/**
875 	 * Sets an int value specifying the step used for the hour field when increasing/decreasing the value with the up/down arrows.
876 	 * @param hourStep stop to use
877 	 */
878 	public void setHourStep(String hourStep) {
879 		engine.setProperty(Properties.HOUR_STEP, hourStep);
880 	}
881 
882 	/**
883 	 * Sets an int value specifying the step used for the hour field when increasing/decreasing the value with the up/down arrows.
884 	 * @param hourStep stop to use
885 	 */
886 	/**
887 	 * Returns <code>true</code> if the attribute "hourStep" is set.
888 	 * @return <code>true</code> if the attribute is set.
889 	 */
890 	public boolean isHourStepSetted() {
891 		return engine.isPropertySetted(Properties.HOUR_STEP);
892 	}
893 
894 	/**
895 	 * Returns an int value specifying the step used for the minute field when increasing/decreasing the value with the up/down arrows.
896 	 * @return step
897 	 */
898 	public String getMinuteStep() {
899 		return getMinuteStep(null);
900 	}
901 
902 	/**
903 	 * Returns an int value specifying the step used for the minute field when increasing/decreasing the value with the up/down arrows.
904 	 * @return step
905 	 */
906 	public String getMinuteStep(javax.faces.context.FacesContext facesContext) {
907 		return engine.getStringProperty(Properties.MINUTE_STEP, facesContext);
908 	}
909 
910 	/**
911 	 * Steps an int value specifying the step used for the minute field when increasing/decreasing the value with the up/down arrows.
912 	 * @param minuteStep step
913 	 */
914 	public void setMinuteStep(String minuteStep) {
915 		engine.setProperty(Properties.MINUTE_STEP, minuteStep);
916 	}
917 
918 	/**
919 	 * Steps an int value specifying the step used for the minute field when increasing/decreasing the value with the up/down arrows.
920 	 * @param minuteStep step
921 	 */
922 	/**
923 	 * Returns <code>true</code> if the attribute "minuteStep" is set.
924 	 * @return <code>true</code> if the attribute is set.
925 	 */
926 	public boolean isMinuteStepSetted() {
927 		return engine.isPropertySetted(Properties.MINUTE_STEP);
928 	}
929 
930 	/**
931 	 * Returns an int value specifying the step used for the second field when increasing/decreasing the value with the up/down arrows.
932 	 * @return step
933 	 */
934 	public String getSecondStep() {
935 		return getSecondStep(null);
936 	}
937 
938 	/**
939 	 * Returns an int value specifying the step used for the second field when increasing/decreasing the value with the up/down arrows.
940 	 * @return step
941 	 */
942 	public String getSecondStep(javax.faces.context.FacesContext facesContext) {
943 		return engine.getStringProperty(Properties.SECOND_STEP, facesContext);
944 	}
945 
946 	/**
947 	 * Sets an int value specifying the step used for the second field when increasing/decreasing the value with the up/down arrows.
948 	 * @param secondStep step
949 	 */
950 	public void setSecondStep(String secondStep) {
951 		engine.setProperty(Properties.SECOND_STEP, secondStep);
952 	}
953 
954 	/**
955 	 * Sets an int value specifying the step used for the second field when increasing/decreasing the value with the up/down arrows.
956 	 * @param secondStep step
957 	 */
958 	/**
959 	 * Returns <code>true</code> if the attribute "secondStep" is set.
960 	 * @return <code>true</code> if the attribute is set.
961 	 */
962 	public boolean isSecondStepSetted() {
963 		return engine.isPropertySetted(Properties.SECOND_STEP);
964 	}
965 
966 	/**
967 	 * Returns an int value specifying the step used for the millisecond field when increasing/decreasing the value with the up/down arrows.
968 	 * @return step
969 	 */
970 	public String getMillisStep() {
971 		return getMillisStep(null);
972 	}
973 
974 	/**
975 	 * Returns an int value specifying the step used for the millisecond field when increasing/decreasing the value with the up/down arrows.
976 	 * @return step
977 	 */
978 	public String getMillisStep(javax.faces.context.FacesContext facesContext) {
979 		return engine.getStringProperty(Properties.MILLIS_STEP, facesContext);
980 	}
981 
982 	/**
983 	 * Sets an int value specifying the step used for the millisecond field when increasing/decreasing the value with the up/down arrows.
984 	 * @param millisStep step
985 	 */
986 	public void setMillisStep(String millisStep) {
987 		engine.setProperty(Properties.MILLIS_STEP, millisStep);
988 	}
989 
990 	/**
991 	 * Sets an int value specifying the step used for the millisecond field when increasing/decreasing the value with the up/down arrows.
992 	 * @param millisStep step
993 	 */
994 	/**
995 	 * Returns <code>true</code> if the attribute "millisStep" is set.
996 	 * @return <code>true</code> if the attribute is set.
997 	 */
998 	public boolean isMillisStepSetted() {
999 		return engine.isPropertySetted(Properties.MILLIS_STEP);
1000 	}
1001 
1002 	protected Set getCameliaFields() {
1003 		return CAMELIA_ATTRIBUTES;
1004 	}
1005 
1006 	protected String getCameliaValueAlias() {
1007 		return CAMELIA_VALUE_ALIAS;
1008 	}
1009 }