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