View Javadoc

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 javax.faces.component.UIComponent;
25  import org.apache.myfaces.trinidad.bean.FacesBean;
26  import org.apache.myfaces.trinidad.bean.PropertyKey;
27  import org.apache.myfaces.trinidad.component.UIXSelectOne;
28  import org.apache.myfaces.trinidad.util.ComponentUtils;
29  
30  /**
31   *
32   * <html><p>The selectOneRadio component creates a component
33   *           which allows the user to select a single value from a set of items
34   *           displayed as a series of radio buttons.
35   *           It can contain any number of
36   *           &lt;f:selectItem&gt;, &lt;f:selectItems&gt;, or
37   *    &lt;tr:selectItem&gt; components,  each of which
38   *           represents an available option that the user may select.</p></html>
39   *
40   * <h4>Events:</h4>
41   * <table border="1" width="100%" cellpadding="3" summary="">
42   * <tr bgcolor="#CCCCFF" class="TableHeadingColor">
43   * <th align="left">Type</th>
44   * <th align="left">Phases</th>
45   * <th align="left">Description</th>
46   * </tr>
47   * <tr class="TableRowColor">
48   * <td valign="top"><code>javax.faces.event.ValueChangeEvent</code></td>
49   * <td valign="top" nowrap>Process Validations<br>Apply Request Values</td>
50   * <td valign="top">The valueChange event is delivered when the value
51                         attribute is changed.</td>
52   * </tr>
53   * <tr class="TableRowColor">
54   * <td valign="top"><code>org.apache.myfaces.trinidad.event.AttributeChangeEvent</code></td>
55   * <td valign="top" nowrap>Invoke Application<br>Apply Request Values</td>
56   * <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 events might include the width of a column that supported client-side resizing.</td>
57   * </tr>
58   * </table>
59   */
60  public class CoreSelectOneRadio extends UIXSelectOne
61  {
62    static public final String LAYOUT_HORIZONTAL = "horizontal";
63    static public final String LAYOUT_VERTICAL = "vertical";
64    static public final FacesBean.Type TYPE = new FacesBean.Type(
65      UIXSelectOne.TYPE);
66    static public final PropertyKey CONTENT_STYLE_KEY =
67      TYPE.registerKey("contentStyle", String.class);
68    static public final PropertyKey UNSELECTED_LABEL_KEY =
69      TYPE.registerKey("unselectedLabel", String.class);
70    static public final PropertyKey LAYOUT_KEY =
71      TYPE.registerKey("layout", String.class, "vertical");
72    static public final PropertyKey VALUE_PASS_THRU_KEY =
73      TYPE.registerKey("valuePassThru", Boolean.class, Boolean.FALSE);
74    static public final PropertyKey READ_ONLY_KEY =
75      TYPE.registerKey("readOnly", Boolean.class, Boolean.FALSE);
76    static public final PropertyKey DISABLED_KEY =
77      TYPE.registerKey("disabled", Boolean.class, Boolean.FALSE);
78    static public final PropertyKey LABEL_KEY =
79      TYPE.registerKey("label", String.class);
80    static public final PropertyKey SIMPLE_KEY =
81      TYPE.registerKey("simple", Boolean.class, Boolean.FALSE);
82    static public final PropertyKey ONCHANGE_KEY =
83      TYPE.registerKey("onchange", String.class);
84    static public final PropertyKey INLINE_STYLE_KEY =
85      TYPE.registerKey("inlineStyle", String.class);
86    static public final PropertyKey STYLE_CLASS_KEY =
87      TYPE.registerKey("styleClass", String.class);
88    static public final PropertyKey SHORT_DESC_KEY =
89      TYPE.registerKey("shortDesc", String.class);
90    static public final PropertyKey PARTIAL_TRIGGERS_KEY =
91      TYPE.registerKey("partialTriggers", String[].class);
92    static public final PropertyKey ONCLICK_KEY =
93      TYPE.registerKey("onclick", String.class);
94    static public final PropertyKey ONDBLCLICK_KEY =
95      TYPE.registerKey("ondblclick", String.class);
96    static public final PropertyKey ONMOUSEDOWN_KEY =
97      TYPE.registerKey("onmousedown", String.class);
98    static public final PropertyKey ONMOUSEUP_KEY =
99      TYPE.registerKey("onmouseup", String.class);
100   static public final PropertyKey ONMOUSEOVER_KEY =
101     TYPE.registerKey("onmouseover", String.class);
102   static public final PropertyKey ONMOUSEMOVE_KEY =
103     TYPE.registerKey("onmousemove", String.class);
104   static public final PropertyKey ONMOUSEOUT_KEY =
105     TYPE.registerKey("onmouseout", String.class);
106   static public final PropertyKey ONKEYPRESS_KEY =
107     TYPE.registerKey("onkeypress", String.class);
108   static public final PropertyKey ONKEYDOWN_KEY =
109     TYPE.registerKey("onkeydown", String.class);
110   static public final PropertyKey ONKEYUP_KEY =
111     TYPE.registerKey("onkeyup", String.class);
112   static public final PropertyKey ONBLUR_KEY =
113     TYPE.registerKey("onblur", String.class);
114   static public final PropertyKey ONFOCUS_KEY =
115     TYPE.registerKey("onfocus", String.class);
116   static public final PropertyKey SHOW_REQUIRED_KEY =
117     TYPE.registerKey("showRequired", Boolean.class, Boolean.FALSE);
118   static public final PropertyKey ACCESS_KEY_KEY =
119     TYPE.registerKey("accessKey", Character.class);
120   static public final PropertyKey AUTO_SUBMIT_KEY =
121     TYPE.registerKey("autoSubmit", Boolean.class, Boolean.FALSE);
122   static public final String HELP_FACET = "help";
123 
124   static public final String COMPONENT_FAMILY =
125     "org.apache.myfaces.trinidad.SelectOne";
126   static public final String COMPONENT_TYPE =
127     "org.apache.myfaces.trinidad.CoreSelectOneRadio";
128 
129   /**
130    * Construct an instance of the CoreSelectOneRadio.
131    */
132   public CoreSelectOneRadio()
133   {
134     super("org.apache.myfaces.trinidad.Radio");
135   }
136 
137   /**
138    * This facet should contain field level help.
139    */
140   final public UIComponent getHelp()
141   {
142     return getFacet(HELP_FACET);
143   }
144 
145   /**
146    * This facet should contain field level help.
147    */
148   @SuppressWarnings("unchecked")
149   final public void setHelp(UIComponent helpFacet)
150   {
151     getFacets().put(HELP_FACET, helpFacet);
152   }
153 
154   /**
155    * 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".
156    *
157    * @return  the new contentStyle value
158    */
159   final public String getContentStyle()
160   {
161     return ComponentUtils.resolveString(getProperty(CONTENT_STYLE_KEY));
162   }
163 
164   /**
165    * 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".
166    * 
167    * @param contentStyle  the new contentStyle value
168    */
169   final public void setContentStyle(String contentStyle)
170   {
171     setProperty(CONTENT_STYLE_KEY, (contentStyle));
172   }
173 
174   /**
175    * Gets the label for an additional item that indicates no selection has
176    * been made.  When the user selects this item, "required" validation will
177    * not pass, or a null value will be set if the component is not "required".
178    *
179    * @return  the new unselectedLabel value
180    */
181   final public String getUnselectedLabel()
182   {
183     return ComponentUtils.resolveString(getProperty(UNSELECTED_LABEL_KEY));
184   }
185 
186   /**
187    * Sets the label for an additional item that indicates no selection has
188    * been made.  When the user selects this item, "required" validation will
189    * not pass, or a null value will be set if the component is not "required".
190    * 
191    * @param unselectedLabel  the new unselectedLabel value
192    */
193   final public void setUnselectedLabel(String unselectedLabel)
194   {
195     setProperty(UNSELECTED_LABEL_KEY, (unselectedLabel));
196   }
197 
198   /**
199    * Gets whether the control displays the buttons
200    *               horizontally or vertically.The valid values are "horizontal" and
201    *               "vertical", the default being "vertical".
202    *
203    * @return  the new layout value
204    */
205   final public String getLayout()
206   {
207     return ComponentUtils.resolveString(getProperty(LAYOUT_KEY), "vertical");
208   }
209 
210   /**
211    * Sets whether the control displays the buttons
212    *               horizontally or vertically.The valid values are "horizontal" and
213    *               "vertical", the default being "vertical".
214    * 
215    * @param layout  the new layout value
216    */
217   final public void setLayout(String layout)
218   {
219     setProperty(LAYOUT_KEY, (layout));
220   }
221 
222   /**
223    * Gets whether or not the values are passed through to
224    *         the client. When valuePassThru is false
225    *         the value and the options' values
226    *         are converted to indexes before being sent to the client.
227    *         Therefore, when valuePassThru is false,
228    *         there is no need to write your own converter when you are using custom Objects
229    *         as your values and/or options.
230    *         If you need to know the actual values on the client-side, then you can set
231    *         valuePassThru to true. This will pass the values through to the client,
232    *         using your custom converter if it is available; a custom converter is
233    *         needed if you are using custom objects. The default is false.
234    *
235    * @return  the new valuePassThru value
236    */
237   final public boolean isValuePassThru()
238   {
239     return ComponentUtils.resolveBoolean(getProperty(VALUE_PASS_THRU_KEY), false);
240   }
241 
242   /**
243    * Sets whether or not the values are passed through to
244    *         the client. When valuePassThru is false
245    *         the value and the options' values
246    *         are converted to indexes before being sent to the client.
247    *         Therefore, when valuePassThru is false,
248    *         there is no need to write your own converter when you are using custom Objects
249    *         as your values and/or options.
250    *         If you need to know the actual values on the client-side, then you can set
251    *         valuePassThru to true. This will pass the values through to the client,
252    *         using your custom converter if it is available; a custom converter is
253    *         needed if you are using custom objects. The default is false.
254    * 
255    * @param valuePassThru  the new valuePassThru value
256    */
257   final public void setValuePassThru(boolean valuePassThru)
258   {
259     setProperty(VALUE_PASS_THRU_KEY, valuePassThru ? Boolean.TRUE : Boolean.FALSE);
260   }
261 
262   /**
263    * Gets whether the element is read-only.
264    *
265    * @return  the new readOnly value
266    */
267   final public boolean isReadOnly()
268   {
269     return ComponentUtils.resolveBoolean(getProperty(READ_ONLY_KEY), false);
270   }
271 
272   /**
273    * Sets whether the element is read-only.
274    * 
275    * @param readOnly  the new readOnly value
276    */
277   final public void setReadOnly(boolean readOnly)
278   {
279     setProperty(READ_ONLY_KEY, readOnly ? Boolean.TRUE : Boolean.FALSE);
280   }
281 
282   /**
283    * Gets whether the element is disabled.
284    *
285    * @return  the new disabled value
286    */
287   final public boolean isDisabled()
288   {
289     return ComponentUtils.resolveBoolean(getProperty(DISABLED_KEY), false);
290   }
291 
292   /**
293    * Sets whether the element is disabled.
294    * 
295    * @param disabled  the new disabled value
296    */
297   final public void setDisabled(boolean disabled)
298   {
299     setProperty(DISABLED_KEY, disabled ? Boolean.TRUE : Boolean.FALSE);
300   }
301 
302   /**
303    * Gets the label of the bean.
304    *
305    * @return  the new label value
306    */
307   final public String getLabel()
308   {
309     return ComponentUtils.resolveString(getProperty(LABEL_KEY));
310   }
311 
312   /**
313    * Sets the label of the bean.
314    * 
315    * @param label  the new label value
316    */
317   final public void setLabel(String label)
318   {
319     setProperty(LABEL_KEY, (label));
320   }
321 
322   /**
323    * Gets a boolean value that controls whether the component
324    * provides label and message support;  when set to "true", the component will
325    * not display messaging support or the label (these attributes may be ignored: label,
326    * labelAndAccessKey, accessKey,  showRequired,
327    * tip), and may use simpler layout primitives
328    *
329    * @return  the new simple value
330    */
331   final public boolean isSimple()
332   {
333     return ComponentUtils.resolveBoolean(getProperty(SIMPLE_KEY), false);
334   }
335 
336   /**
337    * Sets a boolean value that controls whether the component
338    * provides label and message support;  when set to "true", the component will
339    * not display messaging support or the label (these attributes may be ignored: label,
340    * labelAndAccessKey, accessKey,  showRequired,
341    * tip), and may use simpler layout primitives
342    * 
343    * @param simple  the new simple value
344    */
345   final public void setSimple(boolean simple)
346   {
347     setProperty(SIMPLE_KEY, simple ? Boolean.TRUE : Boolean.FALSE);
348   }
349 
350   /**
351    * Gets event handler for when the value is changed.
352    *
353    * @return  the new onchange value
354    */
355   final public String getOnchange()
356   {
357     return ComponentUtils.resolveString(getProperty(ONCHANGE_KEY));
358   }
359 
360   /**
361    * Sets event handler for when the value is changed.
362    * 
363    * @param onchange  the new onchange value
364    */
365   final public void setOnchange(String onchange)
366   {
367     setProperty(ONCHANGE_KEY, (onchange));
368   }
369 
370   /**
371    * Gets the CSS styles to use for this component.
372    *
373    * @return  the new inlineStyle value
374    */
375   final public String getInlineStyle()
376   {
377     return ComponentUtils.resolveString(getProperty(INLINE_STYLE_KEY));
378   }
379 
380   /**
381    * Sets the CSS styles to use for this component.
382    * 
383    * @param inlineStyle  the new inlineStyle value
384    */
385   final public void setInlineStyle(String inlineStyle)
386   {
387     setProperty(INLINE_STYLE_KEY, (inlineStyle));
388   }
389 
390   /**
391    * Gets a CSS style class to use for this component.
392    *
393    * @return  the new styleClass value
394    */
395   final public String getStyleClass()
396   {
397     return ComponentUtils.resolveString(getProperty(STYLE_CLASS_KEY));
398   }
399 
400   /**
401    * Sets a CSS style class to use for this component.
402    * 
403    * @param styleClass  the new styleClass value
404    */
405   final public void setStyleClass(String styleClass)
406   {
407     setProperty(STYLE_CLASS_KEY, (styleClass));
408   }
409 
410   /**
411    * Gets The short description of the component. This text is commonly used by user agents to display tooltip help text.
412    *
413    * @return  the new shortDesc value
414    */
415   final public String getShortDesc()
416   {
417     return ComponentUtils.resolveString(getProperty(SHORT_DESC_KEY));
418   }
419 
420   /**
421    * Sets The short description of the component. This text is commonly used by user agents to display tooltip help text.
422    * 
423    * @param shortDesc  the new shortDesc value
424    */
425   final public void setShortDesc(String shortDesc)
426   {
427     setProperty(SHORT_DESC_KEY, (shortDesc));
428   }
429 
430   /**
431    * Gets the IDs of the components that should trigger a partial update.
432    *         <p>
433    *         This component will listen on the trigger components. If one of the
434    *         trigger components receives an event that will cause it to update
435    *         in some way, this component will request to be updated too.</p>
436    *         <p>
437    *         Separate multiple triggers with a space. e.g., partialTriggers="cmp1 cmp2"
438    *         </p>
439    *         <p>
440    *         Identifiers must account for NamingContainers.  You can use a single colon to start the search from the root,
441    *         or use multiple colons to move up through the NamingContainer. For example,
442    *         "::" will pop out of this component's naming container (it pops out of itself if it is a naming container), 
443    *         ":::" will pop out of two naming containers, etc. The search for
444    *         the partialTrigger begins from there. e.g., partialTriggers=":::commandButton1" the search begins for the 
445    *         component with id = commandButton1 after popping out of two naming containers relative to this component.
446    *         To go into naming containers, you separate the naming containers with ':', e.g.,partialTriggers= "nc1:nc2:nc3:componentId".</p>
447    *
448    * @return  the new partialTriggers value
449    */
450   final public String[] getPartialTriggers()
451   {
452     return (String[])getProperty(PARTIAL_TRIGGERS_KEY);
453   }
454 
455   /**
456    * Sets the IDs of the components that should trigger a partial update.
457    *         <p>
458    *         This component will listen on the trigger components. If one of the
459    *         trigger components receives an event that will cause it to update
460    *         in some way, this component will request to be updated too.</p>
461    *         <p>
462    *         Separate multiple triggers with a space. e.g., partialTriggers="cmp1 cmp2"
463    *         </p>
464    *         <p>
465    *         Identifiers must account for NamingContainers.  You can use a single colon to start the search from the root,
466    *         or use multiple colons to move up through the NamingContainer. For example,
467    *         "::" will pop out of this component's naming container (it pops out of itself if it is a naming container), 
468    *         ":::" will pop out of two naming containers, etc. The search for
469    *         the partialTrigger begins from there. e.g., partialTriggers=":::commandButton1" the search begins for the 
470    *         component with id = commandButton1 after popping out of two naming containers relative to this component.
471    *         To go into naming containers, you separate the naming containers with ':', e.g.,partialTriggers= "nc1:nc2:nc3:componentId".</p>
472    * 
473    * @param partialTriggers  the new partialTriggers value
474    */
475   final public void setPartialTriggers(String[] partialTriggers)
476   {
477     setProperty(PARTIAL_TRIGGERS_KEY, (partialTriggers));
478   }
479 
480   /**
481    * Gets an onclick Javascript handler.
482    *
483    * @return  the new onclick value
484    */
485   final public String getOnclick()
486   {
487     return ComponentUtils.resolveString(getProperty(ONCLICK_KEY));
488   }
489 
490   /**
491    * Sets an onclick Javascript handler.
492    * 
493    * @param onclick  the new onclick value
494    */
495   final public void setOnclick(String onclick)
496   {
497     setProperty(ONCLICK_KEY, (onclick));
498   }
499 
500   /**
501    * Gets an ondblclick Javascript handler.
502    *
503    * @return  the new ondblclick value
504    */
505   final public String getOndblclick()
506   {
507     return ComponentUtils.resolveString(getProperty(ONDBLCLICK_KEY));
508   }
509 
510   /**
511    * Sets an ondblclick Javascript handler.
512    * 
513    * @param ondblclick  the new ondblclick value
514    */
515   final public void setOndblclick(String ondblclick)
516   {
517     setProperty(ONDBLCLICK_KEY, (ondblclick));
518   }
519 
520   /**
521    * Gets an onmousedown Javascript handler.
522    *
523    * @return  the new onmousedown value
524    */
525   final public String getOnmousedown()
526   {
527     return ComponentUtils.resolveString(getProperty(ONMOUSEDOWN_KEY));
528   }
529 
530   /**
531    * Sets an onmousedown Javascript handler.
532    * 
533    * @param onmousedown  the new onmousedown value
534    */
535   final public void setOnmousedown(String onmousedown)
536   {
537     setProperty(ONMOUSEDOWN_KEY, (onmousedown));
538   }
539 
540   /**
541    * Gets an onmouseup Javascript handler.
542    *
543    * @return  the new onmouseup value
544    */
545   final public String getOnmouseup()
546   {
547     return ComponentUtils.resolveString(getProperty(ONMOUSEUP_KEY));
548   }
549 
550   /**
551    * Sets an onmouseup Javascript handler.
552    * 
553    * @param onmouseup  the new onmouseup value
554    */
555   final public void setOnmouseup(String onmouseup)
556   {
557     setProperty(ONMOUSEUP_KEY, (onmouseup));
558   }
559 
560   /**
561    * Gets an onmouseover Javascript handler.
562    *
563    * @return  the new onmouseover value
564    */
565   final public String getOnmouseover()
566   {
567     return ComponentUtils.resolveString(getProperty(ONMOUSEOVER_KEY));
568   }
569 
570   /**
571    * Sets an onmouseover Javascript handler.
572    * 
573    * @param onmouseover  the new onmouseover value
574    */
575   final public void setOnmouseover(String onmouseover)
576   {
577     setProperty(ONMOUSEOVER_KEY, (onmouseover));
578   }
579 
580   /**
581    * Gets an onmousemove Javascript handler.
582    *
583    * @return  the new onmousemove value
584    */
585   final public String getOnmousemove()
586   {
587     return ComponentUtils.resolveString(getProperty(ONMOUSEMOVE_KEY));
588   }
589 
590   /**
591    * Sets an onmousemove Javascript handler.
592    * 
593    * @param onmousemove  the new onmousemove value
594    */
595   final public void setOnmousemove(String onmousemove)
596   {
597     setProperty(ONMOUSEMOVE_KEY, (onmousemove));
598   }
599 
600   /**
601    * Gets an onmouseout Javascript handler.
602    *
603    * @return  the new onmouseout value
604    */
605   final public String getOnmouseout()
606   {
607     return ComponentUtils.resolveString(getProperty(ONMOUSEOUT_KEY));
608   }
609 
610   /**
611    * Sets an onmouseout Javascript handler.
612    * 
613    * @param onmouseout  the new onmouseout value
614    */
615   final public void setOnmouseout(String onmouseout)
616   {
617     setProperty(ONMOUSEOUT_KEY, (onmouseout));
618   }
619 
620   /**
621    * Gets an onkeypress Javascript handler.
622    *
623    * @return  the new onkeypress value
624    */
625   final public String getOnkeypress()
626   {
627     return ComponentUtils.resolveString(getProperty(ONKEYPRESS_KEY));
628   }
629 
630   /**
631    * Sets an onkeypress Javascript handler.
632    * 
633    * @param onkeypress  the new onkeypress value
634    */
635   final public void setOnkeypress(String onkeypress)
636   {
637     setProperty(ONKEYPRESS_KEY, (onkeypress));
638   }
639 
640   /**
641    * Gets an onkeydown Javascript handler.
642    *
643    * @return  the new onkeydown value
644    */
645   final public String getOnkeydown()
646   {
647     return ComponentUtils.resolveString(getProperty(ONKEYDOWN_KEY));
648   }
649 
650   /**
651    * Sets an onkeydown Javascript handler.
652    * 
653    * @param onkeydown  the new onkeydown value
654    */
655   final public void setOnkeydown(String onkeydown)
656   {
657     setProperty(ONKEYDOWN_KEY, (onkeydown));
658   }
659 
660   /**
661    * Gets an onkeyup Javascript handler.
662    *
663    * @return  the new onkeyup value
664    */
665   final public String getOnkeyup()
666   {
667     return ComponentUtils.resolveString(getProperty(ONKEYUP_KEY));
668   }
669 
670   /**
671    * Sets an onkeyup Javascript handler.
672    * 
673    * @param onkeyup  the new onkeyup value
674    */
675   final public void setOnkeyup(String onkeyup)
676   {
677     setProperty(ONKEYUP_KEY, (onkeyup));
678   }
679 
680   /**
681    * Gets the event handler for the component losing the focus.
682    *
683    * @return  the new onblur value
684    */
685   final public String getOnblur()
686   {
687     return ComponentUtils.resolveString(getProperty(ONBLUR_KEY));
688   }
689 
690   /**
691    * Sets the event handler for the component losing the focus.
692    * 
693    * @param onblur  the new onblur value
694    */
695   final public void setOnblur(String onblur)
696   {
697     setProperty(ONBLUR_KEY, (onblur));
698   }
699 
700   /**
701    * Gets the event handler for the component gaining the focus.
702    *
703    * @return  the new onfocus value
704    */
705   final public String getOnfocus()
706   {
707     return ComponentUtils.resolveString(getProperty(ONFOCUS_KEY));
708   }
709 
710   /**
711    * Sets the event handler for the component gaining the focus.
712    * 
713    * @param onfocus  the new onfocus value
714    */
715   final public void setOnfocus(String onfocus)
716   {
717     setProperty(ONFOCUS_KEY, (onfocus));
718   }
719 
720   /**
721    * 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
722    *           "showRequired" attribute must be false for the visual indication not to be displayed.
723    *
724    * @return  the new showRequired value
725    */
726   final public boolean isShowRequired()
727   {
728     return ComponentUtils.resolveBoolean(getProperty(SHOW_REQUIRED_KEY), false);
729   }
730 
731   /**
732    * 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
733    *           "showRequired" attribute must be false for the visual indication not to be displayed.
734    * 
735    * @param showRequired  the new showRequired value
736    */
737   final public void setShowRequired(boolean showRequired)
738   {
739     setProperty(SHOW_REQUIRED_KEY, showRequired ? Boolean.TRUE : Boolean.FALSE);
740   }
741 
742   /**
743    * Gets <html>
744    *  Character used to gain quick access to
745    *                the form element specified by the
746    *          <code>for</code>, if set (or this component itself,
747    *               if it is a "non-simple" form element).
748    *               For accessibility reasons, this functionality is not supported
749    *               in screen reader mode.
750    *               If the same access key appears in multiple locations in the
751    *               same page of output, the rendering user agent will cycle
752    *               among the elements accessed by the similar keys.
753    *               <p>
754    *                 This attribute is sometimes referred to as the "mnemonic".
755    *                 </p></html>
756    *
757    * @return  the new accessKey value
758    */
759   final public char getAccessKey()
760   {
761     return ComponentUtils.resolveCharacter((Character)getProperty(ACCESS_KEY_KEY));
762   }
763 
764   /**
765    * Sets <html>
766    *  Character used to gain quick access to
767    *                the form element specified by the
768    *          <code>for</code>, if set (or this component itself,
769    *               if it is a "non-simple" form element).
770    *               For accessibility reasons, this functionality is not supported
771    *               in screen reader mode.
772    *               If the same access key appears in multiple locations in the
773    *               same page of output, the rendering user agent will cycle
774    *               among the elements accessed by the similar keys.
775    *               <p>
776    *                 This attribute is sometimes referred to as the "mnemonic".
777    *                 </p></html>
778    * 
779    * @param accessKey  the new accessKey value
780    */
781   final public void setAccessKey(char accessKey)
782   {
783     setProperty(ACCESS_KEY_KEY, Character.valueOf(accessKey));
784   }
785 
786   /**
787    * Gets If set to TRUE on a form element, the component will automatically submit
788    *      the enclosing form when an appropriate action takes place (a click, text
789    *      change, etc.).
790    *
791    * @return  the new autoSubmit value
792    */
793   final public boolean isAutoSubmit()
794   {
795     return ComponentUtils.resolveBoolean(getProperty(AUTO_SUBMIT_KEY), false);
796   }
797 
798   /**
799    * Sets If set to TRUE on a form element, the component will automatically submit
800    *      the enclosing form when an appropriate action takes place (a click, text
801    *      change, etc.).
802    * 
803    * @param autoSubmit  the new autoSubmit value
804    */
805   final public void setAutoSubmit(boolean autoSubmit)
806   {
807     setProperty(AUTO_SUBMIT_KEY, autoSubmit ? Boolean.TRUE : Boolean.FALSE);
808   }
809 
810   @Override
811   public String getFamily()
812   {
813     return COMPONENT_FAMILY;
814   }
815 
816   @Override
817   protected FacesBean.Type getBeanType()
818   {
819     return TYPE;
820   }
821 
822   /**
823    * Construct an instance of the CoreSelectOneRadio.
824    */
825   protected CoreSelectOneRadio(
826     String rendererType
827     )
828   {
829     super(rendererType);
830   }
831 
832   static
833   {
834     TYPE.lockAndRegister("org.apache.myfaces.trinidad.SelectOne","org.apache.myfaces.trinidad.Radio");
835   }
836 }