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.data;
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.UIXTreeTable;
35  import org.apache.myfaces.trinidad.util.ComponentUtils;
36  
37  /**
38   *
39   * <html:p>
40   *           The Trinidad TreeTable is used to display data that is structured in a hierarchical format.
41   *           This component displays a hierarchy
42   *           in a UI similar to an Trinidad Table, and is more elaborate than the Tree component.
43   *           TreeTable supports displaying columns of data per element in the hierarchy.
44   *           Unlike the Tree component, TreeTable
45   *           only supports single rooted hierarchies. The features of the TreeTable
46   *           component include mechanisms for focusing in on subtrees (within the main
47   *           tree), as well as expanding and collapsing elements in the hierarchy.
48   *         </html:p>
49   * 
50   *         <html:p>
51   *           Like the Table, the TreeTable's children must be Trinidad
52   *           Column components. Like the Tree, the TreeTable has a &quot;nodeStamp&quot;
53   *           facet which renders the &quot;Object Name&quot; Column.
54   * 
55   *           The &quot;Object Name&quot; Column contains the primary identifier of an element
56   *           in the hierarchy. For example, in an organization chart of employees, the &quot;Object Name&quot;
57   *           Column might be the employee name.
58   *         </html:p>
59   *
60   * <h4>Events:</h4>
61   * <table border="1" width="100%" cellpadding="3" summary="">
62   * <tr bgcolor="#CCCCFF" class="TableHeadingColor">
63   * <th align="left">Type</th>
64   * <th align="left">Phases</th>
65   * <th align="left">Description</th>
66   * </tr>
67   * <tr class="TableRowColor">
68   * <td valign="top"><code>org.apache.myfaces.trinidad.event.RowDisclosureEvent</code></td>
69   * <td valign="top" nowrap>Apply<br>Request<br>Values<br>Invoke<br>Application</td>
70   * <td valign="top">The expansion event is generated for a table when the detail facet of a row is expanded or collapsed. For tree or a treeTable, the expansion
71                         event is generated when tree nodes are expanded or collapsed.</td>
72   * </tr>
73   * <tr class="TableRowColor">
74   * <td valign="top"><code>org.apache.myfaces.trinidad.event.SelectionEvent</code></td>
75   * <td valign="top" nowrap>Apply<br>Request<br>Values<br>Invoke<br>Application</td>
76   * <td valign="top">The selection event is delivered when the table selection
77                         changes.</td>
78   * </tr>
79   * <tr class="TableRowColor">
80   * <td valign="top"><code>org.apache.myfaces.trinidad.event.FocusEvent</code></td>
81   * <td valign="top" nowrap>Apply<br>Request<br>Values<br>Invoke<br>Application</td>
82   * <td valign="top">Event delivered when user clicks to focus on (or zoom into) a particular element's subtree of children.
83        	        The TreeTable responds to this event by modifying the "focusPath" property appropriately.
84        	        Subsequently, any registered FocusListener instances are called.</td>
85   * </tr>
86   * <tr class="TableRowColor">
87   * <td valign="top"><code>org.apache.myfaces.trinidad.event.AttributeChangeEvent</code></td>
88   * <td valign="top" nowrap>Invoke<br>Application<br>Apply<br>Request<br>Values</td>
89   * <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>
90   * </tr>
91   * </table>
92   */
93  public class CoreTreeTable extends UIXTreeTable
94                             implements ClientBehaviorHolder
95  {
96    static public final String ROW_SELECTION_NONE = "none";
97    static public final String ROW_SELECTION_SINGLE = "single";
98    static public final String ROW_SELECTION_MULTIPLE = "multiple";
99    static public final FacesBean.Type TYPE = new FacesBean.Type(
100     UIXTreeTable.TYPE);
101   static public final PropertyKey HORIZONTAL_GRID_VISIBLE_KEY =
102     TYPE.registerKey("horizontalGridVisible", Boolean.class, Boolean.TRUE);
103   static public final PropertyKey VERTICAL_GRID_VISIBLE_KEY =
104     TYPE.registerKey("verticalGridVisible", Boolean.class, Boolean.TRUE);
105   static public final PropertyKey EMPTY_TEXT_KEY =
106     TYPE.registerKey("emptyText", String.class);
107   static public final PropertyKey COLUMN_BANDING_INTERVAL_KEY =
108     TYPE.registerKey("columnBandingInterval", Integer.class, Integer.valueOf(0));
109   static public final PropertyKey ROW_BANDING_INTERVAL_KEY =
110     TYPE.registerKey("rowBandingInterval", Integer.class, Integer.valueOf(0));
111   static public final PropertyKey ROW_SELECTION_KEY =
112     TYPE.registerKey("rowSelection", String.class, "none");
113   static public final PropertyKey AUTO_SUBMIT_KEY =
114     TYPE.registerKey("autoSubmit", Boolean.class, Boolean.FALSE);
115   static public final PropertyKey WIDTH_KEY =
116     TYPE.registerKey("width", String.class);
117   static public final PropertyKey SUMMARY_KEY =
118     TYPE.registerKey("summary", String.class);
119   static public final PropertyKey INLINE_STYLE_KEY =
120     TYPE.registerKey("inlineStyle", String.class);
121   static public final PropertyKey STYLE_CLASS_KEY =
122     TYPE.registerKey("styleClass", String.class);
123   static public final PropertyKey SHORT_DESC_KEY =
124     TYPE.registerKey("shortDesc", String.class);
125   static public final PropertyKey PARTIAL_TRIGGERS_KEY =
126     TYPE.registerKey("partialTriggers", String[].class, null, 0, PropertyKey.Mutable.RARELY);
127   static public final PropertyKey ONCLICK_KEY =
128     TYPE.registerKey("onclick", String.class);
129   static public final PropertyKey ONDBLCLICK_KEY =
130     TYPE.registerKey("ondblclick", String.class);
131   static public final PropertyKey ONMOUSEDOWN_KEY =
132     TYPE.registerKey("onmousedown", String.class);
133   static public final PropertyKey ONMOUSEUP_KEY =
134     TYPE.registerKey("onmouseup", String.class);
135   static public final PropertyKey ONMOUSEOVER_KEY =
136     TYPE.registerKey("onmouseover", String.class);
137   static public final PropertyKey ONMOUSEMOVE_KEY =
138     TYPE.registerKey("onmousemove", String.class);
139   static public final PropertyKey ONMOUSEOUT_KEY =
140     TYPE.registerKey("onmouseout", String.class);
141   static public final PropertyKey ONKEYPRESS_KEY =
142     TYPE.registerKey("onkeypress", String.class);
143   static public final PropertyKey ONKEYDOWN_KEY =
144     TYPE.registerKey("onkeydown", String.class);
145   static public final PropertyKey ONKEYUP_KEY =
146     TYPE.registerKey("onkeyup", String.class);
147   static public final PropertyKey EXPAND_ALL_ENABLED_KEY =
148     TYPE.registerKey("expandAllEnabled", Boolean.class, Boolean.TRUE);
149   static public final String FOOTER_FACET = "footer";
150   static public final String HEADER_FACET = "header";
151   static public final String ACTIONS_FACET = "actions";
152   static public final String PATH_STAMP_FACET = "pathStamp";
153 
154   static public final String COMPONENT_FAMILY =
155     "org.apache.myfaces.trinidad.TreeTable";
156   static public final String COMPONENT_TYPE =
157     "org.apache.myfaces.trinidad.CoreTreeTable";
158   // Supported client events for client behaviors:
159   private final static Collection<String> _EVENT_NAMES = Collections.unmodifiableCollection(
160     Arrays.asList(
161       "click", "dblclick", "mousedown", "mouseup", "mouseover", "mousemove",
162       "mouseout", "keypress", "keydown", "keyup"
163     ));
164 
165   /**
166    * Construct an instance of the CoreTreeTable.
167    */
168   public CoreTreeTable()
169   {
170     super("org.apache.myfaces.trinidad.TreeTable");
171   }
172 
173   /**
174    * the component used to render the table footer.
175    */
176   final public UIComponent getFooter()
177   {
178     return getFacet(FOOTER_FACET);
179   }
180 
181   /**
182    * the component used to render the table footer.
183    */
184   @SuppressWarnings("unchecked")
185   final public void setFooter(UIComponent footerFacet)
186   {
187     getFacets().put(FOOTER_FACET, footerFacet);
188   }
189 
190   /**
191    * the component used to render the table header.
192    */
193   final public UIComponent getHeader()
194   {
195     return getFacet(HEADER_FACET);
196   }
197 
198   /**
199    * the component used to render the table header.
200    */
201   @SuppressWarnings("unchecked")
202   final public void setHeader(UIComponent headerFacet)
203   {
204     getFacets().put(HEADER_FACET, headerFacet);
205   }
206 
207   /**
208    * content to be rendered inline with the navigation bar.
209    */
210   final public UIComponent getActions()
211   {
212     return getFacet(ACTIONS_FACET);
213   }
214 
215   /**
216    * content to be rendered inline with the navigation bar.
217    */
218   @SuppressWarnings("unchecked")
219   final public void setActions(UIComponent actionsFacet)
220   {
221     getFacets().put(ACTIONS_FACET, actionsFacet);
222   }
223 
224   /**
225    * the component used to stamp each step of the focus path of this
226    *                   treeTable.
227    */
228   final public UIComponent getPathStamp()
229   {
230     return getFacet(PATH_STAMP_FACET);
231   }
232 
233   /**
234    * the component used to stamp each step of the focus path of this
235    *                   treeTable.
236    */
237   @SuppressWarnings("unchecked")
238   final public void setPathStamp(UIComponent pathStampFacet)
239   {
240     getFacets().put(PATH_STAMP_FACET, pathStampFacet);
241   }
242 
243   /**
244    * Gets if the horizontal grid lines will be drawn.
245    *
246    * @return  the new horizontalGridVisible value
247    */
248   final public boolean isHorizontalGridVisible()
249   {
250     return ComponentUtils.resolveBoolean(getProperty(HORIZONTAL_GRID_VISIBLE_KEY), true);
251   }
252 
253   /**
254    * Sets if the horizontal grid lines will be drawn.
255    * 
256    * @param horizontalGridVisible  the new horizontalGridVisible value
257    */
258   final public void setHorizontalGridVisible(boolean horizontalGridVisible)
259   {
260     setProperty(HORIZONTAL_GRID_VISIBLE_KEY, horizontalGridVisible ? Boolean.TRUE : Boolean.FALSE);
261   }
262 
263   /**
264    * Gets if the vertical grid lines will be drawn.
265    *
266    * @return  the new verticalGridVisible value
267    */
268   final public boolean isVerticalGridVisible()
269   {
270     return ComponentUtils.resolveBoolean(getProperty(VERTICAL_GRID_VISIBLE_KEY), true);
271   }
272 
273   /**
274    * Sets if the vertical grid lines will be drawn.
275    * 
276    * @param verticalGridVisible  the new verticalGridVisible value
277    */
278   final public void setVerticalGridVisible(boolean verticalGridVisible)
279   {
280     setProperty(VERTICAL_GRID_VISIBLE_KEY, verticalGridVisible ? Boolean.TRUE : Boolean.FALSE);
281   }
282 
283   /**
284    * Gets text displayed when a table is empty.
285    *
286    * @return  the new emptyText value
287    */
288   final public String getEmptyText()
289   {
290     return ComponentUtils.resolveString(getProperty(EMPTY_TEXT_KEY));
291   }
292 
293   /**
294    * Sets text displayed when a table is empty.
295    * 
296    * @param emptyText  the new emptyText value
297    */
298   final public void setEmptyText(String emptyText)
299   {
300     setProperty(EMPTY_TEXT_KEY, (emptyText));
301   }
302 
303   /**
304    * Gets the interval between which the column banding alternates.  For example, a columnBandingInterval of 1 would display alternately banded columns.
305    *
306    * @return  the new columnBandingInterval value
307    */
308   final public int getColumnBandingInterval()
309   {
310     return ComponentUtils.resolveInteger(getProperty(COLUMN_BANDING_INTERVAL_KEY), 0);
311   }
312 
313   /**
314    * Sets the interval between which the column banding alternates.  For example, a columnBandingInterval of 1 would display alternately banded columns.
315    * 
316    * @param columnBandingInterval  the new columnBandingInterval value
317    */
318   final public void setColumnBandingInterval(int columnBandingInterval)
319   {
320     setProperty(COLUMN_BANDING_INTERVAL_KEY, Integer.valueOf(columnBandingInterval));
321   }
322 
323   /**
324    * Gets the interval between which the row banding alternates.  For example, rowBandingInterval=1 would displayalternately banded rows in the Grid.
325    *
326    * @return  the new rowBandingInterval value
327    */
328   final public int getRowBandingInterval()
329   {
330     return ComponentUtils.resolveInteger(getProperty(ROW_BANDING_INTERVAL_KEY), 0);
331   }
332 
333   /**
334    * Sets the interval between which the row banding alternates.  For example, rowBandingInterval=1 would displayalternately banded rows in the Grid.
335    * 
336    * @param rowBandingInterval  the new rowBandingInterval value
337    */
338   final public void setRowBandingInterval(int rowBandingInterval)
339   {
340     setProperty(ROW_BANDING_INTERVAL_KEY, Integer.valueOf(rowBandingInterval));
341   }
342 
343   /**
344    * Gets whether rows in this table selectable. Valid values are "none", "single", "multiple"
345    *
346    * @return  the new rowSelection value
347    */
348   final public String getRowSelection()
349   {
350     return ComponentUtils.resolveString(getProperty(ROW_SELECTION_KEY), "none");
351   }
352 
353   /**
354    * Sets whether rows in this table selectable. Valid values are "none", "single", "multiple"
355    * 
356    * @param rowSelection  the new rowSelection value
357    */
358   final public void setRowSelection(String rowSelection)
359   {
360     setProperty(ROW_SELECTION_KEY, (rowSelection));
361   }
362 
363   /**
364    * Gets If set to TRUE on a form element, the component will automatically submit
365    *      the enclosing form when an appropriate action takes place (a click, text
366    *      change, etc.).  This only takes effect if rowSelection attribute enabled.
367    *
368    * @return  the new autoSubmit value
369    */
370   final public boolean isAutoSubmit()
371   {
372     return ComponentUtils.resolveBoolean(getProperty(AUTO_SUBMIT_KEY), false);
373   }
374 
375   /**
376    * Sets If set to TRUE on a form element, the component will automatically submit
377    *      the enclosing form when an appropriate action takes place (a click, text
378    *      change, etc.).  This only takes effect if rowSelection attribute enabled.
379    * 
380    * @param autoSubmit  the new autoSubmit value
381    */
382   final public void setAutoSubmit(boolean autoSubmit)
383   {
384     setProperty(AUTO_SUBMIT_KEY, autoSubmit ? Boolean.TRUE : Boolean.FALSE);
385   }
386 
387   /**
388    * Gets the width of the table.  The value must either be a number of pixels or a percentage - it is not a CSS width.
389    *
390    * @return  the new width value
391    */
392   final public String getWidth()
393   {
394     return ComponentUtils.resolveString(getProperty(WIDTH_KEY));
395   }
396 
397   /**
398    * Sets the width of the table.  The value must either be a number of pixels or a percentage - it is not a CSS width.
399    * 
400    * @param width  the new width value
401    */
402   final public void setWidth(String width)
403   {
404     setProperty(WIDTH_KEY, (width));
405   }
406 
407   /**
408    * Gets the summary of this table's purpose and structure
409    *          for user agents rendering to non-visual media.
410    *
411    * @return  the new summary value
412    */
413   final public String getSummary()
414   {
415     return ComponentUtils.resolveString(getProperty(SUMMARY_KEY));
416   }
417 
418   /**
419    * Sets the summary of this table's purpose and structure
420    *          for user agents rendering to non-visual media.
421    * 
422    * @param summary  the new summary value
423    */
424   final public void setSummary(String summary)
425   {
426     setProperty(SUMMARY_KEY, (summary));
427   }
428 
429   /**
430    * Gets the CSS styles to use for this component.
431    *
432    * @return  the new inlineStyle value
433    */
434   final public String getInlineStyle()
435   {
436     return ComponentUtils.resolveString(getProperty(INLINE_STYLE_KEY));
437   }
438 
439   /**
440    * Sets the CSS styles to use for this component.
441    * 
442    * @param inlineStyle  the new inlineStyle value
443    */
444   final public void setInlineStyle(String inlineStyle)
445   {
446     setProperty(INLINE_STYLE_KEY, (inlineStyle));
447   }
448 
449   /**
450    * Gets a CSS style class to use for this component.
451    *
452    * @return  the new styleClass value
453    */
454   final public String getStyleClass()
455   {
456     return ComponentUtils.resolveString(getProperty(STYLE_CLASS_KEY));
457   }
458 
459   /**
460    * Sets a CSS style class to use for this component.
461    * 
462    * @param styleClass  the new styleClass value
463    */
464   final public void setStyleClass(String styleClass)
465   {
466     setProperty(STYLE_CLASS_KEY, (styleClass));
467   }
468 
469   /**
470    * Gets The short description of the component. This text is commonly used by user agents to display tooltip help text.
471    *
472    * @return  the new shortDesc value
473    */
474   final public String getShortDesc()
475   {
476     return ComponentUtils.resolveString(getProperty(SHORT_DESC_KEY));
477   }
478 
479   /**
480    * Sets The short description of the component. This text is commonly used by user agents to display tooltip help text.
481    * 
482    * @param shortDesc  the new shortDesc value
483    */
484   final public void setShortDesc(String shortDesc)
485   {
486     setProperty(SHORT_DESC_KEY, (shortDesc));
487   }
488 
489   /**
490    * Gets the IDs of the components that should trigger a partial update.
491    *         <p>
492    *         This component will listen on the trigger components. If one of the
493    *         trigger components receives an event that will cause it to update
494    *         in some way, this component will request to be updated too.</p>
495    *         <p>
496    *         Separate multiple triggers with a space. e.g., partialTriggers="cmp1 cmp2"
497    *         </p>
498    *         <p>
499    *         Identifiers must account for NamingContainers.  You can use a single colon to start the search from the root,
500    *         or use multiple colons to move up through the NamingContainer. For example,
501    *         "::" will pop out of this component's naming container (it pops out of itself if it is a naming container), 
502    *         ":::" will pop out of two naming containers, etc. The search for
503    *         the partialTrigger begins from there. e.g., partialTriggers=":::commandButton1" the search begins for the 
504    *         component with id = commandButton1 after popping out of two naming containers relative to this component.
505    *         To go into naming containers, you separate the naming containers with ':', e.g.,partialTriggers= "nc1:nc2:nc3:componentId".</p>
506    *
507    * @return  the new partialTriggers value
508    */
509   final public String[] getPartialTriggers()
510   {
511     return (String[])getProperty(PARTIAL_TRIGGERS_KEY);
512   }
513 
514   /**
515    * Sets the IDs of the components that should trigger a partial update.
516    *         <p>
517    *         This component will listen on the trigger components. If one of the
518    *         trigger components receives an event that will cause it to update
519    *         in some way, this component will request to be updated too.</p>
520    *         <p>
521    *         Separate multiple triggers with a space. e.g., partialTriggers="cmp1 cmp2"
522    *         </p>
523    *         <p>
524    *         Identifiers must account for NamingContainers.  You can use a single colon to start the search from the root,
525    *         or use multiple colons to move up through the NamingContainer. For example,
526    *         "::" will pop out of this component's naming container (it pops out of itself if it is a naming container), 
527    *         ":::" will pop out of two naming containers, etc. The search for
528    *         the partialTrigger begins from there. e.g., partialTriggers=":::commandButton1" the search begins for the 
529    *         component with id = commandButton1 after popping out of two naming containers relative to this component.
530    *         To go into naming containers, you separate the naming containers with ':', e.g.,partialTriggers= "nc1:nc2:nc3:componentId".</p>
531    * 
532    * @param partialTriggers  the new partialTriggers value
533    */
534   final public void setPartialTriggers(String[] partialTriggers)
535   {
536     setProperty(PARTIAL_TRIGGERS_KEY, (partialTriggers));
537   }
538 
539   /**
540    * Gets an onclick Javascript handler.
541    *
542    * @return  the new onclick value
543    */
544   final public String getOnclick()
545   {
546     return ComponentUtils.resolveString(getProperty(ONCLICK_KEY));
547   }
548 
549   /**
550    * Sets an onclick Javascript handler.
551    * 
552    * @param onclick  the new onclick value
553    */
554   final public void setOnclick(String onclick)
555   {
556     setProperty(ONCLICK_KEY, (onclick));
557   }
558 
559   /**
560    * Gets an ondblclick Javascript handler.
561    *
562    * @return  the new ondblclick value
563    */
564   final public String getOndblclick()
565   {
566     return ComponentUtils.resolveString(getProperty(ONDBLCLICK_KEY));
567   }
568 
569   /**
570    * Sets an ondblclick Javascript handler.
571    * 
572    * @param ondblclick  the new ondblclick value
573    */
574   final public void setOndblclick(String ondblclick)
575   {
576     setProperty(ONDBLCLICK_KEY, (ondblclick));
577   }
578 
579   /**
580    * Gets an onmousedown Javascript handler.
581    *
582    * @return  the new onmousedown value
583    */
584   final public String getOnmousedown()
585   {
586     return ComponentUtils.resolveString(getProperty(ONMOUSEDOWN_KEY));
587   }
588 
589   /**
590    * Sets an onmousedown Javascript handler.
591    * 
592    * @param onmousedown  the new onmousedown value
593    */
594   final public void setOnmousedown(String onmousedown)
595   {
596     setProperty(ONMOUSEDOWN_KEY, (onmousedown));
597   }
598 
599   /**
600    * Gets an onmouseup Javascript handler.
601    *
602    * @return  the new onmouseup value
603    */
604   final public String getOnmouseup()
605   {
606     return ComponentUtils.resolveString(getProperty(ONMOUSEUP_KEY));
607   }
608 
609   /**
610    * Sets an onmouseup Javascript handler.
611    * 
612    * @param onmouseup  the new onmouseup value
613    */
614   final public void setOnmouseup(String onmouseup)
615   {
616     setProperty(ONMOUSEUP_KEY, (onmouseup));
617   }
618 
619   /**
620    * Gets an onmouseover Javascript handler.
621    *
622    * @return  the new onmouseover value
623    */
624   final public String getOnmouseover()
625   {
626     return ComponentUtils.resolveString(getProperty(ONMOUSEOVER_KEY));
627   }
628 
629   /**
630    * Sets an onmouseover Javascript handler.
631    * 
632    * @param onmouseover  the new onmouseover value
633    */
634   final public void setOnmouseover(String onmouseover)
635   {
636     setProperty(ONMOUSEOVER_KEY, (onmouseover));
637   }
638 
639   /**
640    * Gets an onmousemove Javascript handler.
641    *
642    * @return  the new onmousemove value
643    */
644   final public String getOnmousemove()
645   {
646     return ComponentUtils.resolveString(getProperty(ONMOUSEMOVE_KEY));
647   }
648 
649   /**
650    * Sets an onmousemove Javascript handler.
651    * 
652    * @param onmousemove  the new onmousemove value
653    */
654   final public void setOnmousemove(String onmousemove)
655   {
656     setProperty(ONMOUSEMOVE_KEY, (onmousemove));
657   }
658 
659   /**
660    * Gets an onmouseout Javascript handler.
661    *
662    * @return  the new onmouseout value
663    */
664   final public String getOnmouseout()
665   {
666     return ComponentUtils.resolveString(getProperty(ONMOUSEOUT_KEY));
667   }
668 
669   /**
670    * Sets an onmouseout Javascript handler.
671    * 
672    * @param onmouseout  the new onmouseout value
673    */
674   final public void setOnmouseout(String onmouseout)
675   {
676     setProperty(ONMOUSEOUT_KEY, (onmouseout));
677   }
678 
679   /**
680    * Gets an onkeypress Javascript handler.
681    *
682    * @return  the new onkeypress value
683    */
684   final public String getOnkeypress()
685   {
686     return ComponentUtils.resolveString(getProperty(ONKEYPRESS_KEY));
687   }
688 
689   /**
690    * Sets an onkeypress Javascript handler.
691    * 
692    * @param onkeypress  the new onkeypress value
693    */
694   final public void setOnkeypress(String onkeypress)
695   {
696     setProperty(ONKEYPRESS_KEY, (onkeypress));
697   }
698 
699   /**
700    * Gets an onkeydown Javascript handler.
701    *
702    * @return  the new onkeydown value
703    */
704   final public String getOnkeydown()
705   {
706     return ComponentUtils.resolveString(getProperty(ONKEYDOWN_KEY));
707   }
708 
709   /**
710    * Sets an onkeydown Javascript handler.
711    * 
712    * @param onkeydown  the new onkeydown value
713    */
714   final public void setOnkeydown(String onkeydown)
715   {
716     setProperty(ONKEYDOWN_KEY, (onkeydown));
717   }
718 
719   /**
720    * Gets an onkeyup Javascript handler.
721    *
722    * @return  the new onkeyup value
723    */
724   final public String getOnkeyup()
725   {
726     return ComponentUtils.resolveString(getProperty(ONKEYUP_KEY));
727   }
728 
729   /**
730    * Sets an onkeyup Javascript handler.
731    * 
732    * @param onkeyup  the new onkeyup value
733    */
734   final public void setOnkeyup(String onkeyup)
735   {
736     setProperty(ONKEYUP_KEY, (onkeyup));
737   }
738 
739   /**
740    * Gets Whether the Expand All, Collapse All links should be rendered.
741    *
742    * @return  the new expandAllEnabled value
743    */
744   final public boolean isExpandAllEnabled()
745   {
746     return ComponentUtils.resolveBoolean(getProperty(EXPAND_ALL_ENABLED_KEY), true);
747   }
748 
749   /**
750    * Sets Whether the Expand All, Collapse All links should be rendered.
751    * 
752    * @param expandAllEnabled  the new expandAllEnabled value
753    */
754   final public void setExpandAllEnabled(boolean expandAllEnabled)
755   {
756     setProperty(EXPAND_ALL_ENABLED_KEY, expandAllEnabled ? Boolean.TRUE : Boolean.FALSE);
757   }
758 
759   @Override
760   public String getDefaultEventName()
761   {
762     return "click";
763   }
764 
765   @Override
766   public Collection<String> getEventNames()
767   {
768     return _EVENT_NAMES;
769   }
770 
771   @Override
772   public Map<String, List<ClientBehavior>> getClientBehaviors()
773   {
774     return super.getClientBehaviors();
775   }
776 
777   @Override
778   public void addClientBehavior(
779     String         eventName,
780     ClientBehavior behavior)
781   {
782     super.addClientBehavior(eventName, behavior);
783   }
784 
785   @Override
786   public String getFamily()
787   {
788     return COMPONENT_FAMILY;
789   }
790 
791   @Override
792   protected FacesBean.Type getBeanType()
793   {
794     return TYPE;
795   }
796 
797   /**
798    * Construct an instance of the CoreTreeTable.
799    */
800   protected CoreTreeTable(
801     String rendererType
802     )
803   {
804     super(rendererType);
805   }
806 
807   static
808   {
809     TYPE.lockAndRegister("org.apache.myfaces.trinidad.TreeTable","org.apache.myfaces.trinidad.TreeTable");
810   }
811 }