001    // ---------- Attention: Generated code, please do not modify! -----------  
002    
003    /*
004     * Licensed to the Apache Software Foundation (ASF) under one or more
005     * contributor license agreements.  See the NOTICE file distributed with
006     * this work for additional information regarding copyright ownership.
007     * The ASF licenses this file to You under the Apache License, Version 2.0
008     * (the "License"); you may not use this file except in compliance with
009     * the License.  You may obtain a copy of the License at
010     *
011     *      http://www.apache.org/licenses/LICENSE-2.0
012     *
013     * Unless required by applicable law or agreed to in writing, software
014     * distributed under the License is distributed on an "AS IS" BASIS,
015     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
016     * See the License for the specific language governing permissions and
017     * limitations under the License.
018     */
019    
020    package org.apache.myfaces.tobago.component;
021    
022    import javax.faces.context.FacesContext;
023    import org.apache.myfaces.tobago.context.Markup;
024    import org.apache.myfaces.tobago.internal.component.AbstractUITree;
025    import org.apache.myfaces.tobago.layout.Display;
026    import org.apache.myfaces.tobago.layout.Measure;
027    import org.apache.commons.lang.ArrayUtils;
028    import org.apache.commons.lang.StringUtils;
029    import org.apache.myfaces.tobago.component.MethodBindingToMethodExpression;
030    import org.apache.myfaces.tobago.component.MethodExpressionToMethodBinding;
031    import org.apache.myfaces.tobago.internal.util.Deprecation;
032    import org.apache.myfaces.tobago.renderkit.MarginValues;
033    import org.apache.myfaces.tobago.renderkit.SpacingValues;
034    import org.apache.myfaces.tobago.renderkit.LayoutComponentRenderer;
035    import javax.el.ELException;
036    import javax.faces.FacesException;
037    import java.util.ArrayList;
038    import java.util.List;
039    import javax.el.MethodExpression;
040    import javax.el.ValueExpression;
041    
042    /** 
043     A tree with classical look. 
044      Usually used with icons and junction lines to open folder, etc.
045      * UIComponent class, generated from template {@code component1.2.stg} with class
046      * {@link org.apache.myfaces.tobago.internal.taglib.component.TreeTagDeclaration}.
047     */
048    public class UITree
049        extends AbstractUITree implements SupportsMarkup {
050    
051      public static final String COMPONENT_TYPE = "org.apache.myfaces.tobago.Tree";
052    
053      private org.apache.myfaces.tobago.context.Markup markup;
054      private org.apache.myfaces.tobago.layout.Measure marginLeft;
055      private java.lang.Object state;
056      private org.apache.myfaces.tobago.layout.Measure minimumHeight;
057      private org.apache.myfaces.tobago.layout.Measure height;
058      private java.lang.Boolean showRoot;
059      private org.apache.myfaces.tobago.layout.Measure minimumWidth;
060      private java.lang.Integer rowSpan;
061      private org.apache.myfaces.tobago.layout.Measure left;
062      private java.lang.Integer columnSpan;
063      private java.lang.Boolean required;
064      private org.apache.myfaces.tobago.layout.Measure maximumHeight;
065      private org.apache.myfaces.tobago.layout.Measure top;
066      private org.apache.myfaces.tobago.layout.Measure currentWidth;
067      private org.apache.myfaces.tobago.layout.Measure marginTop;
068      private org.apache.myfaces.tobago.layout.Measure marginRight;
069      private org.apache.myfaces.tobago.layout.Measure width;
070      private org.apache.myfaces.tobago.layout.Measure currentHeight;
071      private org.apache.myfaces.tobago.layout.Measure preferredHeight;
072      private java.lang.Boolean showRootJunction;
073      private org.apache.myfaces.tobago.layout.Display display;
074      private org.apache.myfaces.tobago.layout.Measure maximumWidth;
075      private org.apache.myfaces.tobago.layout.Measure preferredWidth;
076      private org.apache.myfaces.tobago.layout.Measure marginBottom;
077      private java.lang.Integer verticalIndex;
078      private java.lang.String selectable;
079      private org.apache.myfaces.tobago.context.Markup currentMarkup;
080      private java.lang.Integer horizontalIndex;
081    
082    
083      public org.apache.myfaces.tobago.context.Markup getMarkup() {
084        if (markup != null) {
085          return markup;
086        }
087        ValueExpression ve = getValueExpression("markup");
088        if (ve != null) {
089          try {
090            Object object = ve.getValue(getFacesContext().getELContext());
091            return Markup.valueOf(object);
092          } catch (ELException e) {
093                      throw new FacesException(e);
094              }
095        }
096        return null;
097      }
098    
099      public void setMarkup(org.apache.myfaces.tobago.context.Markup markup) {
100        this.markup = markup;
101      }
102    
103      public org.apache.myfaces.tobago.layout.Measure getMarginLeft() {
104        if (marginLeft != null) {
105          return marginLeft;
106        }
107        ValueExpression ve = getValueExpression("marginLeft");
108        if (ve != null) {
109          try {
110            Object object = ve.getValue(getFacesContext().getELContext());
111            return Measure.valueOf(object);
112          } catch (ELException e) {
113                      throw new FacesException(e);
114              }
115        }
116        return ((LayoutComponentRenderer) getRenderer(getFacesContext())).getMarginLeft(getFacesContext(), this);
117      }
118    
119      public void setMarginLeft(org.apache.myfaces.tobago.layout.Measure marginLeft) {
120        this.marginLeft = marginLeft;
121      }
122    
123      /**
124      <strong>ValueBindingExpression</strong> pointing to a object to save the
125       component's state.
126    
127      */
128      public java.lang.Object getState() {
129        if (state != null) {
130          return state;
131        }
132        ValueExpression ve = getValueExpression("state");
133        if (ve != null) {
134          try {
135            return (java.lang.Object) ve.getValue(getFacesContext().getELContext());
136          } catch (ELException e) {
137                      throw new FacesException(e);
138              }
139        }
140        return null;
141      }
142    
143      public void setState(java.lang.Object state) {
144        this.state = state;
145      }
146    
147      public org.apache.myfaces.tobago.layout.Measure getMinimumHeight() {
148        if (minimumHeight != null) {
149          return minimumHeight;
150        }
151        ValueExpression ve = getValueExpression("minimumHeight");
152        if (ve != null) {
153          try {
154            Object object = ve.getValue(getFacesContext().getELContext());
155            return Measure.valueOf(object);
156          } catch (ELException e) {
157                      throw new FacesException(e);
158              }
159        }
160        return ((LayoutComponentRenderer) getRenderer(getFacesContext())).getMinimumHeight(getFacesContext(), this);
161      }
162    
163      public void setMinimumHeight(org.apache.myfaces.tobago.layout.Measure minimumHeight) {
164        this.minimumHeight = minimumHeight;
165      }
166    
167      /**
168      This value will usually be set by the layout manager.
169    
170      */
171      public org.apache.myfaces.tobago.layout.Measure getHeight() {
172        if (height != null) {
173          return height;
174        }
175        ValueExpression ve = getValueExpression("height");
176        if (ve != null) {
177          try {
178            Object object = ve.getValue(getFacesContext().getELContext());
179            return Measure.valueOf(object);
180          } catch (ELException e) {
181                      throw new FacesException(e);
182              }
183        }
184        return ((LayoutComponentRenderer) getRenderer(getFacesContext())).getHeight(getFacesContext(), this);
185      }
186    
187      public void setHeight(org.apache.myfaces.tobago.layout.Measure height) {
188        this.height = height;
189      }
190    
191      public boolean isShowRoot() {
192        if (showRoot != null) {
193          return showRoot;
194        }
195        ValueExpression ve = getValueExpression("showRoot");
196        if (ve != null) {
197          try {
198            Boolean bool = (Boolean) ve.getValue(getFacesContext().getELContext());
199            if (bool != null) {
200              return bool;
201            }
202          } catch (ELException e) {
203                      throw new FacesException(e);
204              }
205        }
206        return false;
207      }
208    
209      public void setShowRoot(boolean showRoot) {
210        this.showRoot = showRoot;
211      }
212    
213      public org.apache.myfaces.tobago.layout.Measure getMinimumWidth() {
214        if (minimumWidth != null) {
215          return minimumWidth;
216        }
217        ValueExpression ve = getValueExpression("minimumWidth");
218        if (ve != null) {
219          try {
220            Object object = ve.getValue(getFacesContext().getELContext());
221            return Measure.valueOf(object);
222          } catch (ELException e) {
223                      throw new FacesException(e);
224              }
225        }
226        return ((LayoutComponentRenderer)getRenderer(getFacesContext())).getMinimumWidth(getFacesContext(), this);
227      }
228    
229      public void setMinimumWidth(org.apache.myfaces.tobago.layout.Measure minimumWidth) {
230        this.minimumWidth = minimumWidth;
231      }
232    
233      public java.lang.Integer getRowSpan() {
234        if (rowSpan != null) {
235          return rowSpan;
236        }
237        ValueExpression ve = getValueExpression("rowSpan");
238        if (ve != null) {
239          try {
240            Number number = (Number) ve.getValue(getFacesContext().getELContext());
241            if (number != null) {
242              return number.intValue();
243            }
244          } catch (ELException e) {
245                      throw new FacesException(e);
246              }
247        }
248        return 1;
249      }
250    
251      public void setRowSpan(java.lang.Integer rowSpan) {
252        this.rowSpan = rowSpan;
253      }
254    
255      /**
256      This value will usually be set by the layout manager.
257    
258      */
259      public org.apache.myfaces.tobago.layout.Measure getLeft() {
260        if (left != null) {
261          return left;
262        }
263        ValueExpression ve = getValueExpression("left");
264        if (ve != null) {
265          try {
266            Object object = ve.getValue(getFacesContext().getELContext());
267            return Measure.valueOf(object);
268          } catch (ELException e) {
269                      throw new FacesException(e);
270              }
271        }
272        return null;
273      }
274    
275      public void setLeft(org.apache.myfaces.tobago.layout.Measure left) {
276        this.left = left;
277      }
278    
279      public java.lang.Integer getColumnSpan() {
280        if (columnSpan != null) {
281          return columnSpan;
282        }
283        ValueExpression ve = getValueExpression("columnSpan");
284        if (ve != null) {
285          try {
286            Number number = (Number) ve.getValue(getFacesContext().getELContext());
287            if (number != null) {
288              return number.intValue();
289            }
290          } catch (ELException e) {
291                      throw new FacesException(e);
292              }
293        }
294        return 1;
295      }
296    
297      public void setColumnSpan(java.lang.Integer columnSpan) {
298        this.columnSpan = columnSpan;
299      }
300    
301      /**
302      Flag indicating that a value is required.
303       If the value is an empty string a
304       ValidationError occurs and a Error Message is rendered.
305      <br />Default: <code>false</code>
306      */
307      public boolean isRequired() {
308        if (required != null) {
309          return required;
310        }
311        ValueExpression ve = getValueExpression("required");
312        if (ve != null) {
313          try {
314            Boolean bool = (Boolean) ve.getValue(getFacesContext().getELContext());
315            if (bool != null) {
316              return bool;
317            }
318          } catch (ELException e) {
319                      throw new FacesException(e);
320              }
321        }
322        return false;
323      }
324    
325      public void setRequired(boolean required) {
326        this.required = required;
327      }
328    
329      public org.apache.myfaces.tobago.layout.Measure getMaximumHeight() {
330        if (maximumHeight != null) {
331          return maximumHeight;
332        }
333        ValueExpression ve = getValueExpression("maximumHeight");
334        if (ve != null) {
335          try {
336            Object object = ve.getValue(getFacesContext().getELContext());
337            return Measure.valueOf(object);
338          } catch (ELException e) {
339                      throw new FacesException(e);
340              }
341        }
342        return ((LayoutComponentRenderer) getRenderer(getFacesContext())).getMaximumHeight(getFacesContext(), this);
343      }
344    
345      public void setMaximumHeight(org.apache.myfaces.tobago.layout.Measure maximumHeight) {
346        this.maximumHeight = maximumHeight;
347      }
348    
349      /**
350      This value will usually be set by the layout manager.
351    
352      */
353      public org.apache.myfaces.tobago.layout.Measure getTop() {
354        if (top != null) {
355          return top;
356        }
357        ValueExpression ve = getValueExpression("top");
358        if (ve != null) {
359          try {
360            Object object = ve.getValue(getFacesContext().getELContext());
361            return Measure.valueOf(object);
362          } catch (ELException e) {
363                      throw new FacesException(e);
364              }
365        }
366        return null;
367      }
368    
369      public void setTop(org.apache.myfaces.tobago.layout.Measure top) {
370        this.top = top;
371      }
372    
373      /**
374      This value will usually be set by the layout manager. It holds the current width computed by the layout manager.
375    
376      */
377      public org.apache.myfaces.tobago.layout.Measure getCurrentWidth() {
378        if (currentWidth != null) {
379          return currentWidth;
380        }
381        ValueExpression ve = getValueExpression("currentWidth");
382        if (ve != null) {
383          try {
384            Object object = ve.getValue(getFacesContext().getELContext());
385            return Measure.valueOf(object);
386          } catch (ELException e) {
387                      throw new FacesException(e);
388              }
389        }
390        return getWidth();
391      }
392    
393      public void setCurrentWidth(org.apache.myfaces.tobago.layout.Measure currentWidth) {
394        this.currentWidth = currentWidth;
395      }
396    
397      public org.apache.myfaces.tobago.layout.Measure getMarginTop() {
398        if (marginTop != null) {
399          return marginTop;
400        }
401        ValueExpression ve = getValueExpression("marginTop");
402        if (ve != null) {
403          try {
404            Object object = ve.getValue(getFacesContext().getELContext());
405            return Measure.valueOf(object);
406          } catch (ELException e) {
407                      throw new FacesException(e);
408              }
409        }
410        return ((LayoutComponentRenderer) getRenderer(getFacesContext())).getMarginTop(getFacesContext(), this);
411      }
412    
413      public void setMarginTop(org.apache.myfaces.tobago.layout.Measure marginTop) {
414        this.marginTop = marginTop;
415      }
416    
417      public org.apache.myfaces.tobago.layout.Measure getMarginRight() {
418        if (marginRight != null) {
419          return marginRight;
420        }
421        ValueExpression ve = getValueExpression("marginRight");
422        if (ve != null) {
423          try {
424            Object object = ve.getValue(getFacesContext().getELContext());
425            return Measure.valueOf(object);
426          } catch (ELException e) {
427                      throw new FacesException(e);
428              }
429        }
430        return ((LayoutComponentRenderer) getRenderer(getFacesContext())).getMarginRight(getFacesContext(), this);
431      }
432    
433      public void setMarginRight(org.apache.myfaces.tobago.layout.Measure marginRight) {
434        this.marginRight = marginRight;
435      }
436    
437      /**
438      This value will usually be set by the layout manager.
439    
440      */
441      public org.apache.myfaces.tobago.layout.Measure getWidth() {
442        if (width != null) {
443          return width;
444        }
445        ValueExpression ve = getValueExpression("width");
446        if (ve != null) {
447          try {
448            Object object = ve.getValue(getFacesContext().getELContext());
449            return Measure.valueOf(object);
450          } catch (ELException e) {
451                      throw new FacesException(e);
452              }
453        }
454        return ((LayoutComponentRenderer) getRenderer(getFacesContext())).getWidth(getFacesContext(), this);
455      }
456    
457      public void setWidth(org.apache.myfaces.tobago.layout.Measure width) {
458        this.width = width;
459      }
460    
461      /**
462      This value will usually be set by the layout manager. It holds the current height computed by the layout manager.
463    
464      */
465      public org.apache.myfaces.tobago.layout.Measure getCurrentHeight() {
466        if (currentHeight != null) {
467          return currentHeight;
468        }
469        ValueExpression ve = getValueExpression("currentHeight");
470        if (ve != null) {
471          try {
472            Object object = ve.getValue(getFacesContext().getELContext());
473            return Measure.valueOf(object);
474          } catch (ELException e) {
475                      throw new FacesException(e);
476              }
477        }
478        return getHeight();
479      }
480    
481      public void setCurrentHeight(org.apache.myfaces.tobago.layout.Measure currentHeight) {
482        this.currentHeight = currentHeight;
483      }
484    
485      public org.apache.myfaces.tobago.layout.Measure getPreferredHeight() {
486        if (preferredHeight != null) {
487          return preferredHeight;
488        }
489        ValueExpression ve = getValueExpression("preferredHeight");
490        if (ve != null) {
491          try {
492            Object object = ve.getValue(getFacesContext().getELContext());
493            return Measure.valueOf(object);
494          } catch (ELException e) {
495                      throw new FacesException(e);
496              }
497        }
498        return ((LayoutComponentRenderer) getRenderer(getFacesContext())).getPreferredHeight(getFacesContext(), this);
499      }
500    
501      public void setPreferredHeight(org.apache.myfaces.tobago.layout.Measure preferredHeight) {
502        this.preferredHeight = preferredHeight;
503      }
504    
505      public boolean isShowRootJunction() {
506        if (showRootJunction != null) {
507          return showRootJunction;
508        }
509        ValueExpression ve = getValueExpression("showRootJunction");
510        if (ve != null) {
511          try {
512            Boolean bool = (Boolean) ve.getValue(getFacesContext().getELContext());
513            if (bool != null) {
514              return bool;
515            }
516          } catch (ELException e) {
517                      throw new FacesException(e);
518              }
519        }
520        return false;
521      }
522    
523      public void setShowRootJunction(boolean showRootJunction) {
524        this.showRootJunction = showRootJunction;
525      }
526    
527      /**
528      This attribute is for internal use only.
529    
530      */
531      public org.apache.myfaces.tobago.layout.Display getDisplay() {
532        if (display != null) {
533          return display;
534        }
535        ValueExpression ve = getValueExpression("display");
536        if (ve != null) {
537          try {
538            return (org.apache.myfaces.tobago.layout.Display) ve.getValue(getFacesContext().getELContext());
539          } catch (ELException e) {
540                      throw new FacesException(e);
541              }
542        }
543        return null;
544      }
545    
546      public void setDisplay(org.apache.myfaces.tobago.layout.Display display) {
547        this.display = display;
548      }
549    
550      public org.apache.myfaces.tobago.layout.Measure getMaximumWidth() {
551        if (maximumWidth != null) {
552          return maximumWidth;
553        }
554        ValueExpression ve = getValueExpression("maximumWidth");
555        if (ve != null) {
556          try {
557            Object object = ve.getValue(getFacesContext().getELContext());
558            return Measure.valueOf(object);
559          } catch (ELException e) {
560                      throw new FacesException(e);
561              }
562        }
563        return ((LayoutComponentRenderer) getRenderer(getFacesContext())).getMaximumWidth(getFacesContext(), this);
564      }
565    
566      public void setMaximumWidth(org.apache.myfaces.tobago.layout.Measure maximumWidth) {
567        this.maximumWidth = maximumWidth;
568      }
569    
570      public org.apache.myfaces.tobago.layout.Measure getPreferredWidth() {
571        if (preferredWidth != null) {
572          return preferredWidth;
573        }
574        ValueExpression ve = getValueExpression("preferredWidth");
575        if (ve != null) {
576          try {
577            Object object = ve.getValue(getFacesContext().getELContext());
578            return Measure.valueOf(object);
579          } catch (ELException e) {
580                      throw new FacesException(e);
581              }
582        }
583        return ((LayoutComponentRenderer) getRenderer(getFacesContext())).getPreferredWidth(getFacesContext(), this);
584      }
585    
586      public void setPreferredWidth(org.apache.myfaces.tobago.layout.Measure preferredWidth) {
587        this.preferredWidth = preferredWidth;
588      }
589    
590      public org.apache.myfaces.tobago.layout.Measure getMarginBottom() {
591        if (marginBottom != null) {
592          return marginBottom;
593        }
594        ValueExpression ve = getValueExpression("marginBottom");
595        if (ve != null) {
596          try {
597            Object object = ve.getValue(getFacesContext().getELContext());
598            return Measure.valueOf(object);
599          } catch (ELException e) {
600                      throw new FacesException(e);
601              }
602        }
603        return ((LayoutComponentRenderer) getRenderer(getFacesContext())).getMarginBottom(getFacesContext(), this);
604      }
605    
606      public void setMarginBottom(org.apache.myfaces.tobago.layout.Measure marginBottom) {
607        this.marginBottom = marginBottom;
608      }
609    
610      /**
611      This attribute is for internal use only.
612    
613      */
614      public java.lang.Integer getVerticalIndex() {
615        if (verticalIndex != null) {
616          return verticalIndex;
617        }
618        ValueExpression ve = getValueExpression("verticalIndex");
619        if (ve != null) {
620          try {
621            Number number = (Number) ve.getValue(getFacesContext().getELContext());
622            if (number != null) {
623              return number.intValue();
624            }
625          } catch (ELException e) {
626                      throw new FacesException(e);
627              }
628        }
629        return null;
630      }
631    
632      public void setVerticalIndex(java.lang.Integer verticalIndex) {
633        this.verticalIndex = verticalIndex;
634      }
635    
636      /**
637      Flag indicating whether or not this component should be render selectable items.
638       Possible values are:
639       <ul>
640       <li><strong>multi</strong> : a multi section tree is rendered</li>
641       <li><strong>single</strong> : a single section tree is rendered</li>
642       <li><strong>multiLeafOnly</strong> : a multi section tree is rendered,
643       only Leaf's are selectable</li>
644       <li><strong>singleLeafOnly</strong> : a single section tree is rendered,
645       only Leaf's are selectable</li>
646       </ul>
647       For any other value or if this attribute is omitted the items are not selectable.
648      <br />Default: <code>off</code><br />Allowed Values: <code>multi,single,multiLeafOnly,singleLeafOnly,off</code>
649      */
650      public java.lang.String getSelectable() {
651        if (selectable != null) {
652          return selectable;
653        }
654        ValueExpression ve = getValueExpression("selectable");
655        if (ve != null) {
656          try {
657            java.lang.String selectable = (java.lang.String) ve.getValue(getFacesContext().getELContext());
658            if (selectable != null) {
659              return selectable;
660            }
661          } catch (ELException e) {
662                      throw new FacesException(e);
663              }
664        }
665        return "off";
666      }
667    
668      public void setSelectable(java.lang.String selectable) {
669        this.selectable = selectable;
670      }
671    
672      public org.apache.myfaces.tobago.context.Markup getCurrentMarkup() {
673        if (currentMarkup != null) {
674          return currentMarkup;
675        }
676        return null;
677      }
678    
679      public void setCurrentMarkup(org.apache.myfaces.tobago.context.Markup currentMarkup) {
680        this.currentMarkup = currentMarkup;
681      }
682    
683      /**
684      This attribute is for internal use only.
685    
686      */
687      public java.lang.Integer getHorizontalIndex() {
688        if (horizontalIndex != null) {
689          return horizontalIndex;
690        }
691        ValueExpression ve = getValueExpression("horizontalIndex");
692        if (ve != null) {
693          try {
694            Number number = (Number) ve.getValue(getFacesContext().getELContext());
695            if (number != null) {
696              return number.intValue();
697            }
698          } catch (ELException e) {
699                      throw new FacesException(e);
700              }
701        }
702        return null;
703      }
704    
705      public void setHorizontalIndex(java.lang.Integer horizontalIndex) {
706        this.horizontalIndex = horizontalIndex;
707      }
708    
709      public void restoreState(FacesContext context, Object componentState) {
710        Object[] values = (Object[]) componentState;
711        super.restoreState(context, values[0]);
712        markup = (org.apache.myfaces.tobago.context.Markup) values[1];
713        marginLeft = (org.apache.myfaces.tobago.layout.Measure) values[2];
714        state = (java.lang.Object) values[3];
715        minimumHeight = (org.apache.myfaces.tobago.layout.Measure) values[4];
716        height = (org.apache.myfaces.tobago.layout.Measure) values[5];
717        showRoot = (java.lang.Boolean) values[6];
718        minimumWidth = (org.apache.myfaces.tobago.layout.Measure) values[7];
719        rowSpan = (java.lang.Integer) values[8];
720        left = (org.apache.myfaces.tobago.layout.Measure) values[9];
721        columnSpan = (java.lang.Integer) values[10];
722        required = (java.lang.Boolean) values[11];
723        maximumHeight = (org.apache.myfaces.tobago.layout.Measure) values[12];
724        top = (org.apache.myfaces.tobago.layout.Measure) values[13];
725        currentWidth = (org.apache.myfaces.tobago.layout.Measure) values[14];
726        marginTop = (org.apache.myfaces.tobago.layout.Measure) values[15];
727        marginRight = (org.apache.myfaces.tobago.layout.Measure) values[16];
728        width = (org.apache.myfaces.tobago.layout.Measure) values[17];
729        currentHeight = (org.apache.myfaces.tobago.layout.Measure) values[18];
730        preferredHeight = (org.apache.myfaces.tobago.layout.Measure) values[19];
731        showRootJunction = (java.lang.Boolean) values[20];
732        display = (org.apache.myfaces.tobago.layout.Display) values[21];
733        maximumWidth = (org.apache.myfaces.tobago.layout.Measure) values[22];
734        preferredWidth = (org.apache.myfaces.tobago.layout.Measure) values[23];
735        marginBottom = (org.apache.myfaces.tobago.layout.Measure) values[24];
736        verticalIndex = (java.lang.Integer) values[25];
737        selectable = (java.lang.String) values[26];
738        horizontalIndex = (java.lang.Integer) values[27];
739      }
740    
741      public Object saveState(FacesContext context) {
742        Object[] values = new Object[28];
743        values[0] = super.saveState(context);
744        values[1] = markup;
745        values[2] = marginLeft;
746        values[3] = state;
747        values[4] = minimumHeight;
748        values[5] = height;
749        values[6] = showRoot;
750        values[7] = minimumWidth;
751        values[8] = rowSpan;
752        values[9] = left;
753        values[10] = columnSpan;
754        values[11] = required;
755        values[12] = maximumHeight;
756        values[13] = top;
757        values[14] = currentWidth;
758        values[15] = marginTop;
759        values[16] = marginRight;
760        values[17] = width;
761        values[18] = currentHeight;
762        values[19] = preferredHeight;
763        values[20] = showRootJunction;
764        values[21] = display;
765        values[22] = maximumWidth;
766        values[23] = preferredWidth;
767        values[24] = marginBottom;
768        values[25] = verticalIndex;
769        values[26] = selectable;
770        values[27] = horizontalIndex;
771        currentMarkup = null;
772        return values;
773      }
774    
775    
776    }