1 // WARNING: This file was automatically generated. Do not edit it directly,
2 // or you will lose your changes.
3
4 /*
5 * Licensed to the Apache Software Foundation (ASF) under one
6 * or more contributor license agreements. See the NOTICE file
7 * distributed with this work for additional information
8 * regarding copyright ownership. The ASF licenses this file
9 * to you under the Apache License, Version 2.0 (the
10 * "License"); you may not use this file except in compliance
11 * with the License. You may obtain a copy of the License at
12 *
13 * http://www.apache.org/licenses/LICENSE-2.0
14 *
15 * Unless required by applicable law or agreed to in writing,
16 * software distributed under the License is distributed on an
17 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
18 * KIND, either express or implied. See the License for the
19 * specific language governing permissions and limitations
20 * under the License.
21 */
22 package org.apache.myfaces.trinidad.component.core.input;
23
24 import java.util.Arrays;
25 import java.util.Collection;
26 import java.util.Collections;
27 import java.util.List;
28 import java.util.Map;
29 import javax.faces.component.UIComponent;
30 import javax.faces.component.behavior.ClientBehavior;
31 import javax.faces.component.behavior.ClientBehaviorHolder;
32 import org.apache.myfaces.trinidad.bean.FacesBean;
33 import org.apache.myfaces.trinidad.bean.PropertyKey;
34 import org.apache.myfaces.trinidad.component.UIXSelectInput;
35 import org.apache.myfaces.trinidad.util.ComponentUtils;
36
37 /**
38 *
39 * The inputDate component creates a text field for entering dates and
40 * a button for picking dates from a calendar.
41 * <html:p>
42 * The inputDate will default its format to the "short" date format
43 * appropriate for the current locale; for example, in English,
44 * this is "mm/dd/yy". However, the format can be overridden
45 * by using a DateTimeConverter.
46 * </html:p>
47 *
48 * <h4>Events:</h4>
49 * <table border="1" width="100%" cellpadding="3" summary="">
50 * <tr bgcolor="#CCCCFF" class="TableHeadingColor">
51 * <th align="left">Type</th>
52 * <th align="left">Phases</th>
53 * <th align="left">Description</th>
54 * </tr>
55 * <tr class="TableRowColor">
56 * <td valign="top"><code>javax.faces.event.ActionEvent</code></td>
57 * <td valign="top" nowrap>Apply<br>Request<br>Values</td>
58 * <td valign="top">Event delivered when the "action" of the component has been
59 invoked; for example, by clicking on a button. The action may result
60 in page navigation.</td>
61 * </tr>
62 * <tr class="TableRowColor">
63 * <td valign="top"><code>org.apache.myfaces.trinidad.event.ReturnEvent</code></td>
64 * <td valign="top" nowrap>Apply<br>Request<br>Values</td>
65 * <td valign="top">Event delivered when the dialog has completed successfully.</td>
66 * </tr>
67 * <tr class="TableRowColor">
68 * <td valign="top"><code>javax.faces.event.ValueChangeEvent</code></td>
69 * <td valign="top" nowrap>Process<br>Validations<br>Apply<br>Request<br>Values</td>
70 * <td valign="top">The valueChange event is delivered when the value
71 attribute is changed.</td>
72 * </tr>
73 * <tr class="TableRowColor">
74 * <td valign="top"><code>org.apache.myfaces.trinidad.event.AttributeChangeEvent</code></td>
75 * <td valign="top" nowrap>Invoke<br>Application<br>Apply<br>Request<br>Values</td>
76 * <td valign="top">Event delivered to describe an attribute change. Attribute change events are not delivered for any programmatic change to a property. They are only delivered when a renderer changes a property without the application's specific request. An example of an attribute change event might include the width of a column that supported client-side resizing.</td>
77 * </tr>
78 * </table>
79 */
80 public class CoreInputDate extends UIXSelectInput
81 implements ClientBehaviorHolder
82 {
83 static public final String AUTO_COMPLETE_ON = "on";
84 static public final String AUTO_COMPLETE_OFF = "off";
85 static public final FacesBean.Type TYPE = new FacesBean.Type(
86 UIXSelectInput.TYPE);
87 static public final PropertyKey CONTENT_STYLE_KEY =
88 TYPE.registerKey("contentStyle", String.class);
89 static public final PropertyKey CHOOSE_ID_KEY =
90 TYPE.registerKey("chooseId", String.class);
91 static public final PropertyKey READ_ONLY_KEY =
92 TYPE.registerKey("readOnly", Boolean.class, Boolean.FALSE);
93 static public final PropertyKey DISABLED_KEY =
94 TYPE.registerKey("disabled", Boolean.class, Boolean.FALSE);
95 static public final PropertyKey AUTO_COMPLETE_KEY =
96 TYPE.registerKey("autoComplete", String.class, "on");
97 static public final PropertyKey LABEL_KEY =
98 TYPE.registerKey("label", String.class);
99 static public final PropertyKey SIMPLE_KEY =
100 TYPE.registerKey("simple", Boolean.class, Boolean.FALSE);
101 static public final PropertyKey COLUMNS_KEY =
102 TYPE.registerKey("columns", Integer.class);
103 static public final PropertyKey MAXIMUM_LENGTH_KEY =
104 TYPE.registerKey("maximumLength", Integer.class);
105 static public final PropertyKey ONCHANGE_KEY =
106 TYPE.registerKey("onchange", String.class);
107 static public final PropertyKey INLINE_STYLE_KEY =
108 TYPE.registerKey("inlineStyle", String.class);
109 static public final PropertyKey STYLE_CLASS_KEY =
110 TYPE.registerKey("styleClass", String.class);
111 static public final PropertyKey SHORT_DESC_KEY =
112 TYPE.registerKey("shortDesc", String.class);
113 static public final PropertyKey PARTIAL_TRIGGERS_KEY =
114 TYPE.registerKey("partialTriggers", String[].class, null, 0, PropertyKey.Mutable.RARELY);
115 static public final PropertyKey ONCLICK_KEY =
116 TYPE.registerKey("onclick", String.class);
117 static public final PropertyKey ONDBLCLICK_KEY =
118 TYPE.registerKey("ondblclick", String.class);
119 static public final PropertyKey ONMOUSEDOWN_KEY =
120 TYPE.registerKey("onmousedown", String.class);
121 static public final PropertyKey ONMOUSEUP_KEY =
122 TYPE.registerKey("onmouseup", String.class);
123 static public final PropertyKey ONMOUSEOVER_KEY =
124 TYPE.registerKey("onmouseover", String.class);
125 static public final PropertyKey ONMOUSEMOVE_KEY =
126 TYPE.registerKey("onmousemove", String.class);
127 static public final PropertyKey ONMOUSEOUT_KEY =
128 TYPE.registerKey("onmouseout", String.class);
129 static public final PropertyKey ONKEYPRESS_KEY =
130 TYPE.registerKey("onkeypress", String.class);
131 static public final PropertyKey ONKEYDOWN_KEY =
132 TYPE.registerKey("onkeydown", String.class);
133 static public final PropertyKey ONKEYUP_KEY =
134 TYPE.registerKey("onkeyup", String.class);
135 static public final PropertyKey ONBLUR_KEY =
136 TYPE.registerKey("onblur", String.class);
137 static public final PropertyKey ONFOCUS_KEY =
138 TYPE.registerKey("onfocus", String.class);
139 static public final PropertyKey SHOW_REQUIRED_KEY =
140 TYPE.registerKey("showRequired", Boolean.class, Boolean.FALSE);
141 static public final PropertyKey ACCESS_KEY_KEY =
142 TYPE.registerKey("accessKey", Character.class);
143 static public final PropertyKey AUTO_SUBMIT_KEY =
144 TYPE.registerKey("autoSubmit", Boolean.class, Boolean.FALSE);
145 static public final String HELP_FACET = "help";
146
147 static public final String COMPONENT_FAMILY =
148 "org.apache.myfaces.trinidad.SelectInput";
149 static public final String COMPONENT_TYPE =
150 "org.apache.myfaces.trinidad.CoreInputDate";
151 // Supported client events for client behaviors:
152 private final static Collection<String> _EVENT_NAMES = Collections.unmodifiableCollection(
153 Arrays.asList(
154 "change", "click", "dblclick", "mousedown", "mouseup", "mouseover",
155 "mousemove", "mouseout", "keypress", "keydown", "keyup", "focus",
156 "blur", "valueChange"
157 ));
158
159 /**
160 * Construct an instance of the CoreInputDate.
161 */
162 public CoreInputDate()
163 {
164 super("org.apache.myfaces.trinidad.Date");
165 }
166
167 /**
168 * This facet should contain field level help.
169 */
170 final public UIComponent getHelp()
171 {
172 return getFacet(HELP_FACET);
173 }
174
175 /**
176 * This facet should contain field level help.
177 */
178 @SuppressWarnings("unchecked")
179 final public void setHelp(UIComponent helpFacet)
180 {
181 getFacets().put(HELP_FACET, helpFacet);
182 }
183
184 /**
185 * Gets the CSS styles to attach to the content of the component. For example, you can set the width of that portion to 100 pixels by setting this attribute to "width: 100px".
186 *
187 * @return the new contentStyle value
188 */
189 final public String getContentStyle()
190 {
191 return ComponentUtils.resolveString(getProperty(CONTENT_STYLE_KEY));
192 }
193
194 /**
195 * Sets the CSS styles to attach to the content of the component. For example, you can set the width of that portion to 100 pixels by setting this attribute to "width: 100px".
196 *
197 * @param contentStyle the new contentStyle value
198 */
199 final public void setContentStyle(String contentStyle)
200 {
201 setProperty(CONTENT_STYLE_KEY, (contentStyle));
202 }
203
204 /**
205 * Gets The id of the chooseDate component which can be used to
206 * pick the Date value for this inputDate. Use the same syntax as partialTriggers
207 * if the components are separated by Naming Containers.
208 *
209 * @return the new chooseId value
210 */
211 final public String getChooseId()
212 {
213 return ComponentUtils.resolveString(getProperty(CHOOSE_ID_KEY));
214 }
215
216 /**
217 * Sets The id of the chooseDate component which can be used to
218 * pick the Date value for this inputDate. Use the same syntax as partialTriggers
219 * if the components are separated by Naming Containers.
220 *
221 * @param chooseId the new chooseId value
222 */
223 final public void setChooseId(String chooseId)
224 {
225 setProperty(CHOOSE_ID_KEY, (chooseId));
226 }
227
228 /**
229 * Gets whether the element is read-only.
230 *
231 * @return the new readOnly value
232 */
233 final public boolean isReadOnly()
234 {
235 return ComponentUtils.resolveBoolean(getProperty(READ_ONLY_KEY), false);
236 }
237
238 /**
239 * Sets whether the element is read-only.
240 *
241 * @param readOnly the new readOnly value
242 */
243 final public void setReadOnly(boolean readOnly)
244 {
245 setProperty(READ_ONLY_KEY, readOnly ? Boolean.TRUE : Boolean.FALSE);
246 }
247
248 /**
249 * Gets whether the element is disabled.
250 *
251 * @return the new disabled value
252 */
253 final public boolean isDisabled()
254 {
255 return ComponentUtils.resolveBoolean(getProperty(DISABLED_KEY), false);
256 }
257
258 /**
259 * Sets whether the element is disabled.
260 *
261 * @param disabled the new disabled value
262 */
263 final public void setDisabled(boolean disabled)
264 {
265 setProperty(DISABLED_KEY, disabled ? Boolean.TRUE : Boolean.FALSE);
266 }
267
268 /**
269 * Gets whether previous values of text fields in the form
270 * should be remembered and offered for auto completion.
271 *
272 * @return the new autoComplete value
273 */
274 final public String getAutoComplete()
275 {
276 return ComponentUtils.resolveString(getProperty(AUTO_COMPLETE_KEY), "on");
277 }
278
279 /**
280 * Sets whether previous values of text fields in the form
281 * should be remembered and offered for auto completion.
282 *
283 * @param autoComplete the new autoComplete value
284 */
285 final public void setAutoComplete(String autoComplete)
286 {
287 setProperty(AUTO_COMPLETE_KEY, (autoComplete));
288 }
289
290 /**
291 * Gets the label of the bean.
292 *
293 * @return the new label value
294 */
295 final public String getLabel()
296 {
297 return ComponentUtils.resolveString(getProperty(LABEL_KEY));
298 }
299
300 /**
301 * Sets the label of the bean.
302 *
303 * @param label the new label value
304 */
305 final public void setLabel(String label)
306 {
307 setProperty(LABEL_KEY, (label));
308 }
309
310 /**
311 * Gets a boolean value that controls whether the component
312 * provides label and message support; when set to "true", the component will
313 * not display messaging support or the label (these attributes may be ignored: label,
314 * labelAndAccessKey, accessKey, showRequired,
315 * tip), and may use simpler layout primitives
316 *
317 * @return the new simple value
318 */
319 final public boolean isSimple()
320 {
321 return ComponentUtils.resolveBoolean(getProperty(SIMPLE_KEY), false);
322 }
323
324 /**
325 * Sets a boolean value that controls whether the component
326 * provides label and message support; when set to "true", the component will
327 * not display messaging support or the label (these attributes may be ignored: label,
328 * labelAndAccessKey, accessKey, showRequired,
329 * tip), and may use simpler layout primitives
330 *
331 * @param simple the new simple value
332 */
333 final public void setSimple(boolean simple)
334 {
335 setProperty(SIMPLE_KEY, simple ? Boolean.TRUE : Boolean.FALSE);
336 }
337
338 /**
339 * Gets the number of columns to display in the text
340 * control. If no value is specified, a default
341 * value will be derived from the current converter, if one
342 * is attached.
343 *
344 * @return the new columns value
345 */
346 final public int getColumns()
347 {
348 return ComponentUtils.resolveInteger(getProperty(COLUMNS_KEY));
349 }
350
351 /**
352 * Sets the number of columns to display in the text
353 * control. If no value is specified, a default
354 * value will be derived from the current converter, if one
355 * is attached.
356 *
357 * @param columns the new columns value
358 */
359 final public void setColumns(int columns)
360 {
361 setProperty(COLUMNS_KEY, Integer.valueOf(columns));
362 }
363
364 /**
365 * Gets the maximum number of characters that
366 * can be entered into the text control. Note that
367 * this value is independent of the "columns" displayed.
368 *
369 * @return the new maximumLength value
370 */
371 final public int getMaximumLength()
372 {
373 return ComponentUtils.resolveInteger(getProperty(MAXIMUM_LENGTH_KEY));
374 }
375
376 /**
377 * Sets the maximum number of characters that
378 * can be entered into the text control. Note that
379 * this value is independent of the "columns" displayed.
380 *
381 * @param maximumLength the new maximumLength value
382 */
383 final public void setMaximumLength(int maximumLength)
384 {
385 setProperty(MAXIMUM_LENGTH_KEY, Integer.valueOf(maximumLength));
386 }
387
388 /**
389 * Gets event handler for when the value is changed.
390 *
391 * @return the new onchange value
392 */
393 final public String getOnchange()
394 {
395 return ComponentUtils.resolveString(getProperty(ONCHANGE_KEY));
396 }
397
398 /**
399 * Sets event handler for when the value is changed.
400 *
401 * @param onchange the new onchange value
402 */
403 final public void setOnchange(String onchange)
404 {
405 setProperty(ONCHANGE_KEY, (onchange));
406 }
407
408 /**
409 * Gets the CSS styles to use for this component.
410 *
411 * @return the new inlineStyle value
412 */
413 final public String getInlineStyle()
414 {
415 return ComponentUtils.resolveString(getProperty(INLINE_STYLE_KEY));
416 }
417
418 /**
419 * Sets the CSS styles to use for this component.
420 *
421 * @param inlineStyle the new inlineStyle value
422 */
423 final public void setInlineStyle(String inlineStyle)
424 {
425 setProperty(INLINE_STYLE_KEY, (inlineStyle));
426 }
427
428 /**
429 * Gets a CSS style class to use for this component.
430 *
431 * @return the new styleClass value
432 */
433 final public String getStyleClass()
434 {
435 return ComponentUtils.resolveString(getProperty(STYLE_CLASS_KEY));
436 }
437
438 /**
439 * Sets a CSS style class to use for this component.
440 *
441 * @param styleClass the new styleClass value
442 */
443 final public void setStyleClass(String styleClass)
444 {
445 setProperty(STYLE_CLASS_KEY, (styleClass));
446 }
447
448 /**
449 * Gets The short description of the component. This text is commonly used by user agents to display tooltip help text.
450 *
451 * @return the new shortDesc value
452 */
453 final public String getShortDesc()
454 {
455 return ComponentUtils.resolveString(getProperty(SHORT_DESC_KEY));
456 }
457
458 /**
459 * Sets The short description of the component. This text is commonly used by user agents to display tooltip help text.
460 *
461 * @param shortDesc the new shortDesc value
462 */
463 final public void setShortDesc(String shortDesc)
464 {
465 setProperty(SHORT_DESC_KEY, (shortDesc));
466 }
467
468 /**
469 * Gets the IDs of the components that should trigger a partial update.
470 * <p>
471 * This component will listen on the trigger components. If one of the
472 * trigger components receives an event that will cause it to update
473 * in some way, this component will request to be updated too.</p>
474 * <p>
475 * Separate multiple triggers with a space. e.g., partialTriggers="cmp1 cmp2"
476 * </p>
477 * <p>
478 * Identifiers must account for NamingContainers. You can use a single colon to start the search from the root,
479 * or use multiple colons to move up through the NamingContainer. For example,
480 * "::" will pop out of this component's naming container (it pops out of itself if it is a naming container),
481 * ":::" will pop out of two naming containers, etc. The search for
482 * the partialTrigger begins from there. e.g., partialTriggers=":::commandButton1" the search begins for the
483 * component with id = commandButton1 after popping out of two naming containers relative to this component.
484 * To go into naming containers, you separate the naming containers with ':', e.g.,partialTriggers= "nc1:nc2:nc3:componentId".</p>
485 *
486 * @return the new partialTriggers value
487 */
488 final public String[] getPartialTriggers()
489 {
490 return (String[])getProperty(PARTIAL_TRIGGERS_KEY);
491 }
492
493 /**
494 * Sets the IDs of the components that should trigger a partial update.
495 * <p>
496 * This component will listen on the trigger components. If one of the
497 * trigger components receives an event that will cause it to update
498 * in some way, this component will request to be updated too.</p>
499 * <p>
500 * Separate multiple triggers with a space. e.g., partialTriggers="cmp1 cmp2"
501 * </p>
502 * <p>
503 * Identifiers must account for NamingContainers. You can use a single colon to start the search from the root,
504 * or use multiple colons to move up through the NamingContainer. For example,
505 * "::" will pop out of this component's naming container (it pops out of itself if it is a naming container),
506 * ":::" will pop out of two naming containers, etc. The search for
507 * the partialTrigger begins from there. e.g., partialTriggers=":::commandButton1" the search begins for the
508 * component with id = commandButton1 after popping out of two naming containers relative to this component.
509 * To go into naming containers, you separate the naming containers with ':', e.g.,partialTriggers= "nc1:nc2:nc3:componentId".</p>
510 *
511 * @param partialTriggers the new partialTriggers value
512 */
513 final public void setPartialTriggers(String[] partialTriggers)
514 {
515 setProperty(PARTIAL_TRIGGERS_KEY, (partialTriggers));
516 }
517
518 /**
519 * Gets an onclick Javascript handler.
520 *
521 * @return the new onclick value
522 */
523 final public String getOnclick()
524 {
525 return ComponentUtils.resolveString(getProperty(ONCLICK_KEY));
526 }
527
528 /**
529 * Sets an onclick Javascript handler.
530 *
531 * @param onclick the new onclick value
532 */
533 final public void setOnclick(String onclick)
534 {
535 setProperty(ONCLICK_KEY, (onclick));
536 }
537
538 /**
539 * Gets an ondblclick Javascript handler.
540 *
541 * @return the new ondblclick value
542 */
543 final public String getOndblclick()
544 {
545 return ComponentUtils.resolveString(getProperty(ONDBLCLICK_KEY));
546 }
547
548 /**
549 * Sets an ondblclick Javascript handler.
550 *
551 * @param ondblclick the new ondblclick value
552 */
553 final public void setOndblclick(String ondblclick)
554 {
555 setProperty(ONDBLCLICK_KEY, (ondblclick));
556 }
557
558 /**
559 * Gets an onmousedown Javascript handler.
560 *
561 * @return the new onmousedown value
562 */
563 final public String getOnmousedown()
564 {
565 return ComponentUtils.resolveString(getProperty(ONMOUSEDOWN_KEY));
566 }
567
568 /**
569 * Sets an onmousedown Javascript handler.
570 *
571 * @param onmousedown the new onmousedown value
572 */
573 final public void setOnmousedown(String onmousedown)
574 {
575 setProperty(ONMOUSEDOWN_KEY, (onmousedown));
576 }
577
578 /**
579 * Gets an onmouseup Javascript handler.
580 *
581 * @return the new onmouseup value
582 */
583 final public String getOnmouseup()
584 {
585 return ComponentUtils.resolveString(getProperty(ONMOUSEUP_KEY));
586 }
587
588 /**
589 * Sets an onmouseup Javascript handler.
590 *
591 * @param onmouseup the new onmouseup value
592 */
593 final public void setOnmouseup(String onmouseup)
594 {
595 setProperty(ONMOUSEUP_KEY, (onmouseup));
596 }
597
598 /**
599 * Gets an onmouseover Javascript handler.
600 *
601 * @return the new onmouseover value
602 */
603 final public String getOnmouseover()
604 {
605 return ComponentUtils.resolveString(getProperty(ONMOUSEOVER_KEY));
606 }
607
608 /**
609 * Sets an onmouseover Javascript handler.
610 *
611 * @param onmouseover the new onmouseover value
612 */
613 final public void setOnmouseover(String onmouseover)
614 {
615 setProperty(ONMOUSEOVER_KEY, (onmouseover));
616 }
617
618 /**
619 * Gets an onmousemove Javascript handler.
620 *
621 * @return the new onmousemove value
622 */
623 final public String getOnmousemove()
624 {
625 return ComponentUtils.resolveString(getProperty(ONMOUSEMOVE_KEY));
626 }
627
628 /**
629 * Sets an onmousemove Javascript handler.
630 *
631 * @param onmousemove the new onmousemove value
632 */
633 final public void setOnmousemove(String onmousemove)
634 {
635 setProperty(ONMOUSEMOVE_KEY, (onmousemove));
636 }
637
638 /**
639 * Gets an onmouseout Javascript handler.
640 *
641 * @return the new onmouseout value
642 */
643 final public String getOnmouseout()
644 {
645 return ComponentUtils.resolveString(getProperty(ONMOUSEOUT_KEY));
646 }
647
648 /**
649 * Sets an onmouseout Javascript handler.
650 *
651 * @param onmouseout the new onmouseout value
652 */
653 final public void setOnmouseout(String onmouseout)
654 {
655 setProperty(ONMOUSEOUT_KEY, (onmouseout));
656 }
657
658 /**
659 * Gets an onkeypress Javascript handler.
660 *
661 * @return the new onkeypress value
662 */
663 final public String getOnkeypress()
664 {
665 return ComponentUtils.resolveString(getProperty(ONKEYPRESS_KEY));
666 }
667
668 /**
669 * Sets an onkeypress Javascript handler.
670 *
671 * @param onkeypress the new onkeypress value
672 */
673 final public void setOnkeypress(String onkeypress)
674 {
675 setProperty(ONKEYPRESS_KEY, (onkeypress));
676 }
677
678 /**
679 * Gets an onkeydown Javascript handler.
680 *
681 * @return the new onkeydown value
682 */
683 final public String getOnkeydown()
684 {
685 return ComponentUtils.resolveString(getProperty(ONKEYDOWN_KEY));
686 }
687
688 /**
689 * Sets an onkeydown Javascript handler.
690 *
691 * @param onkeydown the new onkeydown value
692 */
693 final public void setOnkeydown(String onkeydown)
694 {
695 setProperty(ONKEYDOWN_KEY, (onkeydown));
696 }
697
698 /**
699 * Gets an onkeyup Javascript handler.
700 *
701 * @return the new onkeyup value
702 */
703 final public String getOnkeyup()
704 {
705 return ComponentUtils.resolveString(getProperty(ONKEYUP_KEY));
706 }
707
708 /**
709 * Sets an onkeyup Javascript handler.
710 *
711 * @param onkeyup the new onkeyup value
712 */
713 final public void setOnkeyup(String onkeyup)
714 {
715 setProperty(ONKEYUP_KEY, (onkeyup));
716 }
717
718 /**
719 * Gets the event handler for the component losing the focus.
720 *
721 * @return the new onblur value
722 */
723 final public String getOnblur()
724 {
725 return ComponentUtils.resolveString(getProperty(ONBLUR_KEY));
726 }
727
728 /**
729 * Sets the event handler for the component losing the focus.
730 *
731 * @param onblur the new onblur value
732 */
733 final public void setOnblur(String onblur)
734 {
735 setProperty(ONBLUR_KEY, (onblur));
736 }
737
738 /**
739 * Gets the event handler for the component gaining the focus.
740 *
741 * @return the new onfocus value
742 */
743 final public String getOnfocus()
744 {
745 return ComponentUtils.resolveString(getProperty(ONFOCUS_KEY));
746 }
747
748 /**
749 * Sets the event handler for the component gaining the focus.
750 *
751 * @param onfocus the new onfocus value
752 */
753 final public void setOnfocus(String onfocus)
754 {
755 setProperty(ONFOCUS_KEY, (onfocus));
756 }
757
758 /**
759 * Gets whether the associated control displays a visual indication of required user input. If a "required" attribute is also present, both the "required" attribute and the
760 * "showRequired" attribute must be false for the visual indication not to be displayed.
761 *
762 * @return the new showRequired value
763 */
764 final public boolean isShowRequired()
765 {
766 return ComponentUtils.resolveBoolean(getProperty(SHOW_REQUIRED_KEY), false);
767 }
768
769 /**
770 * Sets whether the associated control displays a visual indication of required user input. If a "required" attribute is also present, both the "required" attribute and the
771 * "showRequired" attribute must be false for the visual indication not to be displayed.
772 *
773 * @param showRequired the new showRequired value
774 */
775 final public void setShowRequired(boolean showRequired)
776 {
777 setProperty(SHOW_REQUIRED_KEY, showRequired ? Boolean.TRUE : Boolean.FALSE);
778 }
779
780 /**
781 * Gets <html>
782 * Character used to gain quick access to
783 * the form element specified by the
784 * <code>for</code>, if set (or this component itself,
785 * if it is a "non-simple" form element).
786 * For accessibility reasons, this functionality is not supported
787 * in screen reader mode.
788 * If the same access key appears in multiple locations in the
789 * same page of output, the rendering user agent will cycle
790 * among the elements accessed by the similar keys.
791 * <p>
792 * This attribute is sometimes referred to as the "mnemonic".
793 * </p></html>
794 *
795 * @return the new accessKey value
796 */
797 final public char getAccessKey()
798 {
799 return ComponentUtils.resolveCharacter((Character)getProperty(ACCESS_KEY_KEY));
800 }
801
802 /**
803 * Sets <html>
804 * Character used to gain quick access to
805 * the form element specified by the
806 * <code>for</code>, if set (or this component itself,
807 * if it is a "non-simple" form element).
808 * For accessibility reasons, this functionality is not supported
809 * in screen reader mode.
810 * If the same access key appears in multiple locations in the
811 * same page of output, the rendering user agent will cycle
812 * among the elements accessed by the similar keys.
813 * <p>
814 * This attribute is sometimes referred to as the "mnemonic".
815 * </p></html>
816 *
817 * @param accessKey the new accessKey value
818 */
819 final public void setAccessKey(char accessKey)
820 {
821 setProperty(ACCESS_KEY_KEY, Character.valueOf(accessKey));
822 }
823
824 /**
825 * Gets If set to TRUE on a form element, the component will automatically submit
826 * the enclosing form when an appropriate action takes place (a click, text
827 * change, etc.).
828 *
829 * @return the new autoSubmit value
830 */
831 final public boolean isAutoSubmit()
832 {
833 return ComponentUtils.resolveBoolean(getProperty(AUTO_SUBMIT_KEY), false);
834 }
835
836 /**
837 * Sets If set to TRUE on a form element, the component will automatically submit
838 * the enclosing form when an appropriate action takes place (a click, text
839 * change, etc.).
840 *
841 * @param autoSubmit the new autoSubmit value
842 */
843 final public void setAutoSubmit(boolean autoSubmit)
844 {
845 setProperty(AUTO_SUBMIT_KEY, autoSubmit ? Boolean.TRUE : Boolean.FALSE);
846 }
847
848 @Override
849 public String getDefaultEventName()
850 {
851 return "change";
852 }
853
854 @Override
855 public Collection<String> getEventNames()
856 {
857 return _EVENT_NAMES;
858 }
859
860 @Override
861 public Map<String, List<ClientBehavior>> getClientBehaviors()
862 {
863 return super.getClientBehaviors();
864 }
865
866 @Override
867 public void addClientBehavior(
868 String eventName,
869 ClientBehavior behavior)
870 {
871 super.addClientBehavior(eventName, behavior);
872 }
873
874 @Override
875 public String getFamily()
876 {
877 return COMPONENT_FAMILY;
878 }
879
880 @Override
881 protected FacesBean.Type getBeanType()
882 {
883 return TYPE;
884 }
885
886 /**
887 * Construct an instance of the CoreInputDate.
888 */
889 protected CoreInputDate(
890 String rendererType
891 )
892 {
893 super(rendererType);
894 }
895
896 static
897 {
898 TYPE.lockAndRegister("org.apache.myfaces.trinidad.SelectInput","org.apache.myfaces.trinidad.Date");
899 }
900 }