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