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 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.UIXSelectOrder;
35  import org.apache.myfaces.trinidad.util.ComponentUtils;
36  
37  /**
38   *
39   * The selectOrderShuttle component provides a mechanism for selecting
40   *    multiple values from a list of values by allowing the user to move
41   *    items between two lists, and reordering that list of values.
42   *           It includes all the functionality
43   *           of selectManyShuttle, and has an equivalent API.  The only
44   *           functional difference is that selectOrderShuttle will present the
45   *           user with the ability to reorder the list of selected values,
46   *           and will deliver <html:code>ValueChangeEvents</html:code> when
47   *           the order changes. (selectMany components do not consider
48   *           changes in order relevant to the value of that component.)  See
49   *           the documentation for selectManyShuttle for further information
50   *           on using the shuttle.
51   *
52   * <h4>Events:</h4>
53   * <table border="1" width="100%" cellpadding="3" summary="">
54   * <tr bgcolor="#CCCCFF" class="TableHeadingColor">
55   * <th align="left">Type</th>
56   * <th align="left">Phases</th>
57   * <th align="left">Description</th>
58   * </tr>
59   * <tr class="TableRowColor">
60   * <td valign="top"><code>javax.faces.event.ValueChangeEvent</code></td>
61   * <td valign="top" nowrap>Process<br>Validations<br>Apply<br>Request<br>Values</td>
62   * <td valign="top">The valueChange event is delivered when the value
63                         attribute is changed.</td>
64   * </tr>
65   * <tr class="TableRowColor">
66   * <td valign="top"><code>org.apache.myfaces.trinidad.event.AttributeChangeEvent</code></td>
67   * <td valign="top" nowrap>Invoke<br>Application<br>Apply<br>Request<br>Values</td>
68   * <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>
69   * </tr>
70   * </table>
71   */
72  public class CoreSelectOrderShuttle extends UIXSelectOrder
73                                      implements ClientBehaviorHolder
74  {
75    static public final FacesBean.Type TYPE = new FacesBean.Type(
76      UIXSelectOrder.TYPE);
77    static public final PropertyKey REORDER_ONLY_KEY =
78      TYPE.registerKey("reorderOnly", Boolean.class, Boolean.FALSE);
79    static public final PropertyKey VALUE_PASS_THRU_KEY =
80      TYPE.registerKey("valuePassThru", Boolean.class, Boolean.FALSE);
81    static public final PropertyKey READ_ONLY_KEY =
82      TYPE.registerKey("readOnly", Boolean.class, Boolean.FALSE);
83    static public final PropertyKey DISABLED_KEY =
84      TYPE.registerKey("disabled", Boolean.class, Boolean.FALSE);
85    static public final PropertyKey ONCHANGE_KEY =
86      TYPE.registerKey("onchange", String.class);
87    static public final PropertyKey INLINE_STYLE_KEY =
88      TYPE.registerKey("inlineStyle", String.class);
89    static public final PropertyKey STYLE_CLASS_KEY =
90      TYPE.registerKey("styleClass", String.class);
91    static public final PropertyKey SHORT_DESC_KEY =
92      TYPE.registerKey("shortDesc", String.class);
93    static public final PropertyKey PARTIAL_TRIGGERS_KEY =
94      TYPE.registerKey("partialTriggers", String[].class, null, 0, PropertyKey.Mutable.RARELY);
95    static public final PropertyKey ONCLICK_KEY =
96      TYPE.registerKey("onclick", String.class);
97    static public final PropertyKey ONDBLCLICK_KEY =
98      TYPE.registerKey("ondblclick", String.class);
99    static public final PropertyKey ONMOUSEDOWN_KEY =
100     TYPE.registerKey("onmousedown", String.class);
101   static public final PropertyKey ONMOUSEUP_KEY =
102     TYPE.registerKey("onmouseup", String.class);
103   static public final PropertyKey ONMOUSEOVER_KEY =
104     TYPE.registerKey("onmouseover", String.class);
105   static public final PropertyKey ONMOUSEMOVE_KEY =
106     TYPE.registerKey("onmousemove", String.class);
107   static public final PropertyKey ONMOUSEOUT_KEY =
108     TYPE.registerKey("onmouseout", String.class);
109   static public final PropertyKey ONKEYPRESS_KEY =
110     TYPE.registerKey("onkeypress", String.class);
111   static public final PropertyKey ONKEYDOWN_KEY =
112     TYPE.registerKey("onkeydown", String.class);
113   static public final PropertyKey ONKEYUP_KEY =
114     TYPE.registerKey("onkeyup", String.class);
115   static public final PropertyKey ONBLUR_KEY =
116     TYPE.registerKey("onblur", String.class);
117   static public final PropertyKey ONFOCUS_KEY =
118     TYPE.registerKey("onfocus", String.class);
119   static public final PropertyKey SIZE_KEY =
120     TYPE.registerKey("size", Integer.class);
121   static public final PropertyKey LEADING_HEADER_KEY =
122     TYPE.registerKey("leadingHeader", String.class);
123   static public final PropertyKey TRAILING_HEADER_KEY =
124     TYPE.registerKey("trailingHeader", String.class);
125   static public final PropertyKey LEADING_DESC_SHOWN_KEY =
126     TYPE.registerKey("leadingDescShown", Boolean.class, Boolean.FALSE);
127   static public final PropertyKey TRAILING_DESC_SHOWN_KEY =
128     TYPE.registerKey("trailingDescShown", Boolean.class, Boolean.FALSE);
129   static public final PropertyKey LABEL_KEY =
130     TYPE.registerKey("label", String.class);
131   static public final String FILTER_FACET = "filter";
132   static public final String LEADING_FOOTER_FACET = "leadingFooter";
133   static public final String TRAILING_FOOTER_FACET = "trailingFooter";
134 
135   static public final String COMPONENT_FAMILY =
136     "org.apache.myfaces.trinidad.SelectOrder";
137   static public final String COMPONENT_TYPE =
138     "org.apache.myfaces.trinidad.CoreSelectOrderShuttle";
139   // Supported client events for client behaviors:
140   private final static Collection<String> _EVENT_NAMES = Collections.unmodifiableCollection(
141     Arrays.asList(
142       "change", "click", "dblclick", "mousedown", "mouseup", "mouseover",
143       "mousemove", "mouseout", "keypress", "keydown", "keyup", "focus",
144       "blur", "valueChange"
145     ));
146 
147   /**
148    * Construct an instance of the CoreSelectOrderShuttle.
149    */
150   public CoreSelectOrderShuttle()
151   {
152     super("org.apache.myfaces.trinidad.Shuttle");
153   }
154 
155   /**
156    * the filter above the leading list.
157    */
158   final public UIComponent getFilter()
159   {
160     return getFacet(FILTER_FACET);
161   }
162 
163   /**
164    * the filter above the leading list.
165    */
166   @SuppressWarnings("unchecked")
167   final public void setFilter(UIComponent filterFacet)
168   {
169     getFacets().put(FILTER_FACET, filterFacet);
170   }
171 
172   /**
173    * the footer of buttons/images under the leading list.
174    */
175   final public UIComponent getLeadingFooter()
176   {
177     return getFacet(LEADING_FOOTER_FACET);
178   }
179 
180   /**
181    * the footer of buttons/images under the leading list.
182    */
183   @SuppressWarnings("unchecked")
184   final public void setLeadingFooter(UIComponent leadingFooterFacet)
185   {
186     getFacets().put(LEADING_FOOTER_FACET, leadingFooterFacet);
187   }
188 
189   /**
190    * the footer of buttons/images under the trailing list.
191    */
192   final public UIComponent getTrailingFooter()
193   {
194     return getFacet(TRAILING_FOOTER_FACET);
195   }
196 
197   /**
198    * the footer of buttons/images under the trailing list.
199    */
200   @SuppressWarnings("unchecked")
201   final public void setTrailingFooter(UIComponent trailingFooterFacet)
202   {
203     getFacets().put(TRAILING_FOOTER_FACET, trailingFooterFacet);
204   }
205 
206   /**
207    * Gets whether the shuttle is in "reorder only" mode, where the user can reorder the list of values, but cannot add or remove them.
208    *
209    * @return  the new reorderOnly value
210    */
211   final public boolean isReorderOnly()
212   {
213     return ComponentUtils.resolveBoolean(getProperty(REORDER_ONLY_KEY), false);
214   }
215 
216   /**
217    * Sets whether the shuttle is in "reorder only" mode, where the user can reorder the list of values, but cannot add or remove them.
218    * 
219    * @param reorderOnly  the new reorderOnly value
220    */
221   final public void setReorderOnly(boolean reorderOnly)
222   {
223     setProperty(REORDER_ONLY_KEY, reorderOnly ? Boolean.TRUE : Boolean.FALSE);
224   }
225 
226   /**
227    * Gets whether or not the values are passed through to
228    *         the client. When valuePassThru is false
229    *         the value and the options' values
230    *         are converted to indexes before being sent to the client.
231    *         Therefore, when valuePassThru is false,
232    *         there is no need to write your own converter when you are using custom Objects
233    *         as your values and/or options.
234    *         If you need to know the actual values on the client-side, then you can set
235    *         valuePassThru to true. This will pass the values through to the client,
236    *         using your custom converter if it is available; a custom converter is
237    *         needed if you are using custom objects. The default is false.
238    *
239    * @return  the new valuePassThru value
240    */
241   final public boolean isValuePassThru()
242   {
243     return ComponentUtils.resolveBoolean(getProperty(VALUE_PASS_THRU_KEY), false);
244   }
245 
246   /**
247    * Sets whether or not the values are passed through to
248    *         the client. When valuePassThru is false
249    *         the value and the options' values
250    *         are converted to indexes before being sent to the client.
251    *         Therefore, when valuePassThru is false,
252    *         there is no need to write your own converter when you are using custom Objects
253    *         as your values and/or options.
254    *         If you need to know the actual values on the client-side, then you can set
255    *         valuePassThru to true. This will pass the values through to the client,
256    *         using your custom converter if it is available; a custom converter is
257    *         needed if you are using custom objects. The default is false.
258    * 
259    * @param valuePassThru  the new valuePassThru value
260    */
261   final public void setValuePassThru(boolean valuePassThru)
262   {
263     setProperty(VALUE_PASS_THRU_KEY, valuePassThru ? Boolean.TRUE : Boolean.FALSE);
264   }
265 
266   /**
267    * Gets whether the element is read-only.
268    *
269    * @return  the new readOnly value
270    */
271   final public boolean isReadOnly()
272   {
273     return ComponentUtils.resolveBoolean(getProperty(READ_ONLY_KEY), false);
274   }
275 
276   /**
277    * Sets whether the element is read-only.
278    * 
279    * @param readOnly  the new readOnly value
280    */
281   final public void setReadOnly(boolean readOnly)
282   {
283     setProperty(READ_ONLY_KEY, readOnly ? Boolean.TRUE : Boolean.FALSE);
284   }
285 
286   /**
287    * Gets whether the element is disabled.
288    *
289    * @return  the new disabled value
290    */
291   final public boolean isDisabled()
292   {
293     return ComponentUtils.resolveBoolean(getProperty(DISABLED_KEY), false);
294   }
295 
296   /**
297    * Sets whether the element is disabled.
298    * 
299    * @param disabled  the new disabled value
300    */
301   final public void setDisabled(boolean disabled)
302   {
303     setProperty(DISABLED_KEY, disabled ? Boolean.TRUE : Boolean.FALSE);
304   }
305 
306   /**
307    * Gets event handler for when the value is changed.
308    *
309    * @return  the new onchange value
310    */
311   final public String getOnchange()
312   {
313     return ComponentUtils.resolveString(getProperty(ONCHANGE_KEY));
314   }
315 
316   /**
317    * Sets event handler for when the value is changed.
318    * 
319    * @param onchange  the new onchange value
320    */
321   final public void setOnchange(String onchange)
322   {
323     setProperty(ONCHANGE_KEY, (onchange));
324   }
325 
326   /**
327    * Gets the CSS styles to use for this component.
328    *
329    * @return  the new inlineStyle value
330    */
331   final public String getInlineStyle()
332   {
333     return ComponentUtils.resolveString(getProperty(INLINE_STYLE_KEY));
334   }
335 
336   /**
337    * Sets the CSS styles to use for this component.
338    * 
339    * @param inlineStyle  the new inlineStyle value
340    */
341   final public void setInlineStyle(String inlineStyle)
342   {
343     setProperty(INLINE_STYLE_KEY, (inlineStyle));
344   }
345 
346   /**
347    * Gets a CSS style class to use for this component.
348    *
349    * @return  the new styleClass value
350    */
351   final public String getStyleClass()
352   {
353     return ComponentUtils.resolveString(getProperty(STYLE_CLASS_KEY));
354   }
355 
356   /**
357    * Sets a CSS style class to use for this component.
358    * 
359    * @param styleClass  the new styleClass value
360    */
361   final public void setStyleClass(String styleClass)
362   {
363     setProperty(STYLE_CLASS_KEY, (styleClass));
364   }
365 
366   /**
367    * Gets The short description of the component. This text is commonly used by user agents to display tooltip help text.
368    *
369    * @return  the new shortDesc value
370    */
371   final public String getShortDesc()
372   {
373     return ComponentUtils.resolveString(getProperty(SHORT_DESC_KEY));
374   }
375 
376   /**
377    * Sets The short description of the component. This text is commonly used by user agents to display tooltip help text.
378    * 
379    * @param shortDesc  the new shortDesc value
380    */
381   final public void setShortDesc(String shortDesc)
382   {
383     setProperty(SHORT_DESC_KEY, (shortDesc));
384   }
385 
386   /**
387    * Gets the IDs of the components that should trigger a partial update.
388    *         <p>
389    *         This component will listen on the trigger components. If one of the
390    *         trigger components receives an event that will cause it to update
391    *         in some way, this component will request to be updated too.</p>
392    *         <p>
393    *         Separate multiple triggers with a space. e.g., partialTriggers="cmp1 cmp2"
394    *         </p>
395    *         <p>
396    *         Identifiers must account for NamingContainers.  You can use a single colon to start the search from the root,
397    *         or use multiple colons to move up through the NamingContainer. For example,
398    *         "::" will pop out of this component's naming container (it pops out of itself if it is a naming container), 
399    *         ":::" will pop out of two naming containers, etc. The search for
400    *         the partialTrigger begins from there. e.g., partialTriggers=":::commandButton1" the search begins for the 
401    *         component with id = commandButton1 after popping out of two naming containers relative to this component.
402    *         To go into naming containers, you separate the naming containers with ':', e.g.,partialTriggers= "nc1:nc2:nc3:componentId".</p>
403    *
404    * @return  the new partialTriggers value
405    */
406   final public String[] getPartialTriggers()
407   {
408     return (String[])getProperty(PARTIAL_TRIGGERS_KEY);
409   }
410 
411   /**
412    * Sets the IDs of the components that should trigger a partial update.
413    *         <p>
414    *         This component will listen on the trigger components. If one of the
415    *         trigger components receives an event that will cause it to update
416    *         in some way, this component will request to be updated too.</p>
417    *         <p>
418    *         Separate multiple triggers with a space. e.g., partialTriggers="cmp1 cmp2"
419    *         </p>
420    *         <p>
421    *         Identifiers must account for NamingContainers.  You can use a single colon to start the search from the root,
422    *         or use multiple colons to move up through the NamingContainer. For example,
423    *         "::" will pop out of this component's naming container (it pops out of itself if it is a naming container), 
424    *         ":::" will pop out of two naming containers, etc. The search for
425    *         the partialTrigger begins from there. e.g., partialTriggers=":::commandButton1" the search begins for the 
426    *         component with id = commandButton1 after popping out of two naming containers relative to this component.
427    *         To go into naming containers, you separate the naming containers with ':', e.g.,partialTriggers= "nc1:nc2:nc3:componentId".</p>
428    * 
429    * @param partialTriggers  the new partialTriggers value
430    */
431   final public void setPartialTriggers(String[] partialTriggers)
432   {
433     setProperty(PARTIAL_TRIGGERS_KEY, (partialTriggers));
434   }
435 
436   /**
437    * Gets an onclick Javascript handler.
438    *
439    * @return  the new onclick value
440    */
441   final public String getOnclick()
442   {
443     return ComponentUtils.resolveString(getProperty(ONCLICK_KEY));
444   }
445 
446   /**
447    * Sets an onclick Javascript handler.
448    * 
449    * @param onclick  the new onclick value
450    */
451   final public void setOnclick(String onclick)
452   {
453     setProperty(ONCLICK_KEY, (onclick));
454   }
455 
456   /**
457    * Gets an ondblclick Javascript handler.
458    *
459    * @return  the new ondblclick value
460    */
461   final public String getOndblclick()
462   {
463     return ComponentUtils.resolveString(getProperty(ONDBLCLICK_KEY));
464   }
465 
466   /**
467    * Sets an ondblclick Javascript handler.
468    * 
469    * @param ondblclick  the new ondblclick value
470    */
471   final public void setOndblclick(String ondblclick)
472   {
473     setProperty(ONDBLCLICK_KEY, (ondblclick));
474   }
475 
476   /**
477    * Gets an onmousedown Javascript handler.
478    *
479    * @return  the new onmousedown value
480    */
481   final public String getOnmousedown()
482   {
483     return ComponentUtils.resolveString(getProperty(ONMOUSEDOWN_KEY));
484   }
485 
486   /**
487    * Sets an onmousedown Javascript handler.
488    * 
489    * @param onmousedown  the new onmousedown value
490    */
491   final public void setOnmousedown(String onmousedown)
492   {
493     setProperty(ONMOUSEDOWN_KEY, (onmousedown));
494   }
495 
496   /**
497    * Gets an onmouseup Javascript handler.
498    *
499    * @return  the new onmouseup value
500    */
501   final public String getOnmouseup()
502   {
503     return ComponentUtils.resolveString(getProperty(ONMOUSEUP_KEY));
504   }
505 
506   /**
507    * Sets an onmouseup Javascript handler.
508    * 
509    * @param onmouseup  the new onmouseup value
510    */
511   final public void setOnmouseup(String onmouseup)
512   {
513     setProperty(ONMOUSEUP_KEY, (onmouseup));
514   }
515 
516   /**
517    * Gets an onmouseover Javascript handler.
518    *
519    * @return  the new onmouseover value
520    */
521   final public String getOnmouseover()
522   {
523     return ComponentUtils.resolveString(getProperty(ONMOUSEOVER_KEY));
524   }
525 
526   /**
527    * Sets an onmouseover Javascript handler.
528    * 
529    * @param onmouseover  the new onmouseover value
530    */
531   final public void setOnmouseover(String onmouseover)
532   {
533     setProperty(ONMOUSEOVER_KEY, (onmouseover));
534   }
535 
536   /**
537    * Gets an onmousemove Javascript handler.
538    *
539    * @return  the new onmousemove value
540    */
541   final public String getOnmousemove()
542   {
543     return ComponentUtils.resolveString(getProperty(ONMOUSEMOVE_KEY));
544   }
545 
546   /**
547    * Sets an onmousemove Javascript handler.
548    * 
549    * @param onmousemove  the new onmousemove value
550    */
551   final public void setOnmousemove(String onmousemove)
552   {
553     setProperty(ONMOUSEMOVE_KEY, (onmousemove));
554   }
555 
556   /**
557    * Gets an onmouseout Javascript handler.
558    *
559    * @return  the new onmouseout value
560    */
561   final public String getOnmouseout()
562   {
563     return ComponentUtils.resolveString(getProperty(ONMOUSEOUT_KEY));
564   }
565 
566   /**
567    * Sets an onmouseout Javascript handler.
568    * 
569    * @param onmouseout  the new onmouseout value
570    */
571   final public void setOnmouseout(String onmouseout)
572   {
573     setProperty(ONMOUSEOUT_KEY, (onmouseout));
574   }
575 
576   /**
577    * Gets an onkeypress Javascript handler.
578    *
579    * @return  the new onkeypress value
580    */
581   final public String getOnkeypress()
582   {
583     return ComponentUtils.resolveString(getProperty(ONKEYPRESS_KEY));
584   }
585 
586   /**
587    * Sets an onkeypress Javascript handler.
588    * 
589    * @param onkeypress  the new onkeypress value
590    */
591   final public void setOnkeypress(String onkeypress)
592   {
593     setProperty(ONKEYPRESS_KEY, (onkeypress));
594   }
595 
596   /**
597    * Gets an onkeydown Javascript handler.
598    *
599    * @return  the new onkeydown value
600    */
601   final public String getOnkeydown()
602   {
603     return ComponentUtils.resolveString(getProperty(ONKEYDOWN_KEY));
604   }
605 
606   /**
607    * Sets an onkeydown Javascript handler.
608    * 
609    * @param onkeydown  the new onkeydown value
610    */
611   final public void setOnkeydown(String onkeydown)
612   {
613     setProperty(ONKEYDOWN_KEY, (onkeydown));
614   }
615 
616   /**
617    * Gets an onkeyup Javascript handler.
618    *
619    * @return  the new onkeyup value
620    */
621   final public String getOnkeyup()
622   {
623     return ComponentUtils.resolveString(getProperty(ONKEYUP_KEY));
624   }
625 
626   /**
627    * Sets an onkeyup Javascript handler.
628    * 
629    * @param onkeyup  the new onkeyup value
630    */
631   final public void setOnkeyup(String onkeyup)
632   {
633     setProperty(ONKEYUP_KEY, (onkeyup));
634   }
635 
636   /**
637    * Gets the event handler for the component losing the focus.
638    *
639    * @return  the new onblur value
640    */
641   final public String getOnblur()
642   {
643     return ComponentUtils.resolveString(getProperty(ONBLUR_KEY));
644   }
645 
646   /**
647    * Sets the event handler for the component losing the focus.
648    * 
649    * @param onblur  the new onblur value
650    */
651   final public void setOnblur(String onblur)
652   {
653     setProperty(ONBLUR_KEY, (onblur));
654   }
655 
656   /**
657    * Gets the event handler for the component gaining the focus.
658    *
659    * @return  the new onfocus value
660    */
661   final public String getOnfocus()
662   {
663     return ComponentUtils.resolveString(getProperty(ONFOCUS_KEY));
664   }
665 
666   /**
667    * Sets the event handler for the component gaining the focus.
668    * 
669    * @param onfocus  the new onfocus value
670    */
671   final public void setOnfocus(String onfocus)
672   {
673     setProperty(ONFOCUS_KEY, (onfocus));
674   }
675 
676   /**
677    * Gets the display size(number of items) of the lists. The size
678    *               specified must be between 10 and 20 items. If the attribute is not
679    *               set or has a value less than 10, the size would have a default or
680    *               minimum value of 10. If the attribute value specified is more than
681    *               20 items, the size would have the maximum value of 20.
682    *
683    * @return  the new size value
684    */
685   final public int getSize()
686   {
687     return ComponentUtils.resolveInteger(getProperty(SIZE_KEY));
688   }
689 
690   /**
691    * Sets the display size(number of items) of the lists. The size
692    *               specified must be between 10 and 20 items. If the attribute is not
693    *               set or has a value less than 10, the size would have a default or
694    *               minimum value of 10. If the attribute value specified is more than
695    *               20 items, the size would have the maximum value of 20.
696    * 
697    * @param size  the new size value
698    */
699   final public void setSize(int size)
700   {
701     setProperty(SIZE_KEY, Integer.valueOf(size));
702   }
703 
704   /**
705    * Gets the header of the leading list of the shuttle.
706    *
707    * @return  the new leadingHeader value
708    */
709   final public String getLeadingHeader()
710   {
711     return ComponentUtils.resolveString(getProperty(LEADING_HEADER_KEY));
712   }
713 
714   /**
715    * Sets the header of the leading list of the shuttle.
716    * 
717    * @param leadingHeader  the new leadingHeader value
718    */
719   final public void setLeadingHeader(String leadingHeader)
720   {
721     setProperty(LEADING_HEADER_KEY, (leadingHeader));
722   }
723 
724   /**
725    * Gets the header of the trailing list of the shuttle.
726    *
727    * @return  the new trailingHeader value
728    */
729   final public String getTrailingHeader()
730   {
731     return ComponentUtils.resolveString(getProperty(TRAILING_HEADER_KEY));
732   }
733 
734   /**
735    * Sets the header of the trailing list of the shuttle.
736    * 
737    * @param trailingHeader  the new trailingHeader value
738    */
739   final public void setTrailingHeader(String trailingHeader)
740   {
741     setProperty(TRAILING_HEADER_KEY, (trailingHeader));
742   }
743 
744   /**
745    * Gets whether or not the leading list has an area to display descriptions.
746    *
747    * @return  the new leadingDescShown value
748    */
749   final public boolean isLeadingDescShown()
750   {
751     return ComponentUtils.resolveBoolean(getProperty(LEADING_DESC_SHOWN_KEY), false);
752   }
753 
754   /**
755    * Sets whether or not the leading list has an area to display descriptions.
756    * 
757    * @param leadingDescShown  the new leadingDescShown value
758    */
759   final public void setLeadingDescShown(boolean leadingDescShown)
760   {
761     setProperty(LEADING_DESC_SHOWN_KEY, leadingDescShown ? Boolean.TRUE : Boolean.FALSE);
762   }
763 
764   /**
765    * Gets whether or not the trailing list has an area to display descriptions.
766    *
767    * @return  the new trailingDescShown value
768    */
769   final public boolean isTrailingDescShown()
770   {
771     return ComponentUtils.resolveBoolean(getProperty(TRAILING_DESC_SHOWN_KEY), false);
772   }
773 
774   /**
775    * Sets whether or not the trailing list has an area to display descriptions.
776    * 
777    * @param trailingDescShown  the new trailingDescShown value
778    */
779   final public void setTrailingDescShown(boolean trailingDescShown)
780   {
781     setProperty(TRAILING_DESC_SHOWN_KEY, trailingDescShown ? Boolean.TRUE : Boolean.FALSE);
782   }
783 
784   /**
785    * Gets the label for the shuttle that is used to identify the component only when displaying error messages. The label specified does not otherwise appear on the page.
786    *
787    * @return  the new label value
788    */
789   final public String getLabel()
790   {
791     return ComponentUtils.resolveString(getProperty(LABEL_KEY));
792   }
793 
794   /**
795    * Sets the label for the shuttle that is used to identify the component only when displaying error messages. The label specified does not otherwise appear on the page.
796    * 
797    * @param label  the new label value
798    */
799   final public void setLabel(String label)
800   {
801     setProperty(LABEL_KEY, (label));
802   }
803 
804   @Override
805   public String getDefaultEventName()
806   {
807     return "change";
808   }
809 
810   @Override
811   public Collection<String> getEventNames()
812   {
813     return _EVENT_NAMES;
814   }
815 
816   @Override
817   public Map<String, List<ClientBehavior>> getClientBehaviors()
818   {
819     return super.getClientBehaviors();
820   }
821 
822   @Override
823   public void addClientBehavior(
824     String         eventName,
825     ClientBehavior behavior)
826   {
827     super.addClientBehavior(eventName, behavior);
828   }
829 
830   @Override
831   public String getFamily()
832   {
833     return COMPONENT_FAMILY;
834   }
835 
836   @Override
837   protected FacesBean.Type getBeanType()
838   {
839     return TYPE;
840   }
841 
842   /**
843    * Construct an instance of the CoreSelectOrderShuttle.
844    */
845   protected CoreSelectOrderShuttle(
846     String rendererType
847     )
848   {
849     super(rendererType);
850   }
851 
852   static
853   {
854     TYPE.lockAndRegister("org.apache.myfaces.trinidad.SelectOrder","org.apache.myfaces.trinidad.Shuttle");
855   }
856 }