f603c16a64174dfc14ebd61bffad43a3d5da94f3
[scilab.git] / scilab / modules / graphic_objects / src / java / org / scilab / modules / graphic_objects / uicontrol / Uicontrol.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2011 - DIGITEO - Bruno JOFRET
4  * Copyright (C) 2011 - DIGITEO - Vincent COUVERT
5  *
6  * This file must be used under the terms of the CeCILL.
7  * This source file is licensed as described in the file COPYING, which
8  * you should have received as part of this distribution.  The terms
9  * are also available at
10  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
11  *
12  */
13
14 package org.scilab.modules.graphic_objects.uicontrol;
15
16 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_POSITION__;
17 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_STYLE__;
18 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UICONTROL__;
19 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_BACKGROUNDCOLOR__;
20 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_CHECKBOX__;
21 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_EDIT__;
22 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME__;
23 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_ENABLE__;
24 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTANGLE__;
25 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTNAME__;
26 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTSIZE__;
27 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTUNITS__;
28 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTWEIGHT__;
29 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FOREGROUNDCOLOR__;
30 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_HORIZONTALALIGNMENT__;
31 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_IMAGERENDERER__;
32 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_LISTBOX__;
33 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_LISTBOXTOP__;
34 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_LISTBOXTOP_SIZE__;
35 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_MIN__;
36 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_MAX__;
37 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_POPUPMENU__;
38 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_PUSHBUTTON__;
39 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_RADIOBUTTON__;
40 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_RAISED_RELIEF__;
41 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_RELIEF__;
42 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_SLIDER__;
43 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_SLIDERSTEP__;
44 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_STRING__;
45 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_STRING_SIZE__;
46 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_STRING_COLNB__;
47 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TABLE__;
48 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TEXT__;
49 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_UNITS__;
50 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_VALUE__;
51 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_VALUE_SIZE__;
52 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_VERTICALALIGNMENT__;
53
54 import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
55 import org.scilab.modules.graphic_objects.graphicObject.Visitor;
56
57 /**
58  * @author Bruno JOFRET
59  * @author Vincent COUVERT
60  */
61 public class Uicontrol extends GraphicObject {
62
63     private static final double DEFAULT_RED_BACKGROUND = 0.8;
64     private static final double DEFAULT_GREEN_BACKGROUND = 0.8;
65     private static final double DEFAULT_BLUE_BACKGROUND = 0.8;
66
67     private static final double DEFAULT_X = 20.0;
68     private static final double DEFAULT_Y = 40.0;
69     private static final double DEFAULT_WIDTH = 40.0;
70     private static final double DEFAULT_HEIGHT = 20.0;
71
72     private static final double DEFAULTFONTSIZE = 10;
73     private static final String DEFAULTFONTNAME = "helvetica";
74     private static final String DEFAULTFONTWEIGHT = "normal";
75     private static final String DEFAULTFONTANGLE = DEFAULTFONTWEIGHT;
76
77     private static final String DEFAULTRELIEF = __GO_UI_RAISED_RELIEF__;
78
79     private UicontrolStyle style;
80     private Double[] backgroundColor = {DEFAULT_RED_BACKGROUND, DEFAULT_GREEN_BACKGROUND, DEFAULT_BLUE_BACKGROUND};
81     private boolean enable = true;
82     private String fontAngle = DEFAULTFONTANGLE;
83     private String fontName = DEFAULTFONTNAME;
84     private double fontSize = DEFAULTFONTSIZE;
85     private String fontUnits = "points";
86     private String fontWeight = DEFAULTFONTWEIGHT;
87     private Double[] foregroundColor = {0.0, 0.0, 0.0};
88     private String horizontalAlignment = "center";
89     private Integer[] listboxTop;
90     private double max = 1.0;
91     private double min;
92     private Double[] position = {DEFAULT_X, DEFAULT_Y, DEFAULT_WIDTH, DEFAULT_HEIGHT};
93     private String relief = DEFAULTRELIEF;
94     private Double[] sliderStep = {0.01, 0.1};
95     private String[] string = {""};
96     private int stringColNb = 1; // Used for tables
97     private String units = "pixels";
98     private Double[] value;
99     private String verticalAlignment = "middle";
100
101     /**
102      * All uicontrol properties
103      */
104     private enum UicontrolProperty {
105         STYLE,
106         BACKGROUNDCOLOR,
107         ENABLE,
108         FONTANGLE,
109         FONTNAME,
110         FONTSIZE,
111         FONTUNITS,
112         FONTWEIGHT,
113         FOREGROUNDCOLOR,
114         HORIZONTALALIGNMENT,
115         LISTBOXTOP,
116         LISTBOXTOP_SIZE,
117         MAX,
118         MIN,
119         POSITION,
120         SCALE,
121         SHEAR,
122         SLIDERSTEP,
123         STRING,
124         STRING_SIZE,
125         STRING_COLNB,
126         RELIEF,
127         UNITS,
128         VALUE,
129         VALUE_SIZE,
130         VERTICALALIGNMENT
131     };
132
133     /**
134      * All uicontrol styles
135      */
136     private enum UicontrolStyle {
137         CHECKBOX,
138         EDIT,
139         FRAME,
140         IMAGERENDERER,
141         LISTBOX,
142         POPUPMENU,
143         PUSHBUTTON,
144         RADIOBUTTON,
145         SLIDER,
146         TABLE,
147         TEXT
148     };
149
150     /**
151      * Constructor
152      */
153     public Uicontrol() {
154         super();
155     }
156
157     /**
158      * Get style as a string
159      * @param style the uicontrol style
160      * @return the uicontrol style as a string
161      */
162     private String styleEnumToString(UicontrolStyle style) {
163         String stringStyle = null;
164         switch (style) {
165             case CHECKBOX:
166                 stringStyle = __GO_UI_CHECKBOX__;
167                 break;
168             case EDIT:
169                 stringStyle = __GO_UI_EDIT__;
170                 break;
171             case FRAME:
172                 stringStyle = __GO_UI_FRAME__;
173                 break;
174             case IMAGERENDERER:
175                 stringStyle = __GO_UI_IMAGERENDERER__;
176                 break;
177             case LISTBOX:
178                 stringStyle = __GO_UI_LISTBOX__;
179                 break;
180             case POPUPMENU:
181                 stringStyle = __GO_UI_POPUPMENU__;
182                 break;
183             case PUSHBUTTON:
184                 stringStyle = __GO_UI_PUSHBUTTON__;
185                 break;
186             case RADIOBUTTON:
187                 stringStyle = __GO_UI_RADIOBUTTON__;
188                 break;
189             case SLIDER:
190                 stringStyle = __GO_UI_SLIDER__;
191                 break;
192             case TABLE:
193                 stringStyle = __GO_UI_TABLE__;
194                 break;
195             case TEXT:
196                 stringStyle = __GO_UI_TEXT__;
197                 break;
198             default:
199                 stringStyle = null;
200                 break;
201         }
202         return stringStyle;
203     }
204
205     /**
206      * Get style as an enum element
207      * @param style the uicontrol style
208      * @return the uicontrol style as an enum element
209      */
210     private UicontrolStyle stringToStyleEnum(String style) {
211         UicontrolStyle enumStyle = null;
212         if (style.equals(__GO_UI_CHECKBOX__)) {
213             enumStyle = UicontrolStyle.CHECKBOX;
214         } else if (style.equals(__GO_UI_EDIT__)) {
215             enumStyle = UicontrolStyle.EDIT;
216         } else if (style.equals(__GO_UI_FRAME__)) {
217             enumStyle = UicontrolStyle.FRAME;
218         } else if (style.equals(__GO_UI_IMAGERENDERER__)) {
219             enumStyle = UicontrolStyle.IMAGERENDERER;
220         } else if (style.equals(__GO_UI_LISTBOX__)) {
221             enumStyle = UicontrolStyle.LISTBOX;
222         } else if (style.equals(__GO_UI_POPUPMENU__)) {
223             enumStyle = UicontrolStyle.POPUPMENU;
224         } else if (style.equals(__GO_UI_PUSHBUTTON__)) {
225             enumStyle = UicontrolStyle.PUSHBUTTON;
226         } else if (style.equals(__GO_UI_RADIOBUTTON__)) {
227             enumStyle = UicontrolStyle.RADIOBUTTON;
228         } else if (style.equals(__GO_UI_SLIDER__)) {
229             enumStyle = UicontrolStyle.SLIDER;
230         } else if (style.equals(__GO_UI_TABLE__)) {
231             enumStyle = UicontrolStyle.TABLE;
232         } else if (style.equals(__GO_UI_TEXT__)) {
233             enumStyle = UicontrolStyle.TEXT;
234         }
235         return enumStyle;
236     }
237
238     /**
239      * Get this object type
240      * @return uicontrol
241      * @see org.scilab.modules.graphic_objects.graphicObject.GraphicObject#getType()
242      */
243     public String getType() {
244         return __GO_UICONTROL__;
245     }
246
247     /**
248      * Returns the enum associated to a property name
249      * @param propertyName the property name
250      * @return the property enum
251      */
252     public Object getPropertyFromName(String propertyName) {
253         if (propertyName.equals(__GO_STYLE__)) {
254             return UicontrolProperty.STYLE;
255         } else if (propertyName.equals(__GO_UI_BACKGROUNDCOLOR__)) {
256             return UicontrolProperty.BACKGROUNDCOLOR;
257         } else if (propertyName.equals(__GO_UI_ENABLE__)) {
258             return UicontrolProperty.ENABLE;
259         } else if (propertyName.equals(__GO_UI_FONTANGLE__)) {
260             return UicontrolProperty.FONTANGLE;
261         } else if (propertyName.equals(__GO_UI_FONTNAME__)) {
262             return UicontrolProperty.FONTNAME;
263         } else if (propertyName.equals(__GO_UI_FONTSIZE__)) {
264             return UicontrolProperty.FONTSIZE;
265         } else if (propertyName.equals(__GO_UI_FONTUNITS__)) {
266             return UicontrolProperty.FONTUNITS;
267         } else if (propertyName.equals(__GO_UI_FONTWEIGHT__)) {
268             return UicontrolProperty.FONTWEIGHT;
269         } else if (propertyName.equals(__GO_UI_FOREGROUNDCOLOR__)) {
270             return UicontrolProperty.FOREGROUNDCOLOR;
271         } else if (propertyName.equals(__GO_UI_HORIZONTALALIGNMENT__)) {
272             return UicontrolProperty.HORIZONTALALIGNMENT;
273         } else if (propertyName.equals(__GO_UI_LISTBOXTOP__)) {
274             return UicontrolProperty.LISTBOXTOP;
275         } else if (propertyName.equals(__GO_UI_LISTBOXTOP_SIZE__)) {
276             return UicontrolProperty.LISTBOXTOP_SIZE;
277         } else if (propertyName.equals(__GO_UI_MAX__)) {
278             return UicontrolProperty.MAX;
279         } else if (propertyName.equals(__GO_UI_MIN__)) {
280             return UicontrolProperty.MIN;
281         } else if (propertyName.equals(__GO_POSITION__)) {
282             return UicontrolProperty.POSITION;
283         } else if (propertyName.equals(__GO_UI_RELIEF__)) {
284             return UicontrolProperty.RELIEF;
285         } else if (propertyName.equals(__GO_UI_SLIDERSTEP__)) {
286             return UicontrolProperty.SLIDERSTEP;
287         } else if (propertyName.equals(__GO_UI_STRING__)) {
288             return UicontrolProperty.STRING;
289         } else if (propertyName.equals(__GO_UI_STRING_SIZE__)) {
290             return UicontrolProperty.STRING_SIZE;
291         } else if (propertyName.equals(__GO_UI_STRING_COLNB__)) {
292             return UicontrolProperty.STRING_COLNB;
293         } else if (propertyName.equals(__GO_UI_UNITS__)) {
294             return UicontrolProperty.UNITS;
295         } else if (propertyName.equals(__GO_UI_VALUE__)) {
296             return UicontrolProperty.VALUE;
297         } else if (propertyName.equals(__GO_UI_VALUE_SIZE__)) {
298             return UicontrolProperty.VALUE_SIZE;
299         } else if (propertyName.equals(__GO_UI_VERTICALALIGNMENT__)) {
300             return UicontrolProperty.VERTICALALIGNMENT;
301         } else {
302             return super.getPropertyFromName(propertyName);
303         }
304     }
305
306     /**
307      * Fast property get method
308      * @param property the property to get
309      * @return the property value
310      */
311     public Object getProperty(Object property) {
312         if (property == UicontrolProperty.STYLE) {
313             return getStyle();
314         } else if (property == UicontrolProperty.BACKGROUNDCOLOR) {
315             return getBackgroundColor();
316         } else if (property == UicontrolProperty.ENABLE) {
317             return getEnable();
318         } else if (property == UicontrolProperty.FONTANGLE) {
319             return getFontAngle();
320         } else if (property == UicontrolProperty.FONTNAME) {
321             return getFontName();
322         } else if (property == UicontrolProperty.FONTSIZE) {
323             return getFontSize();
324         } else if (property == UicontrolProperty.FONTUNITS) {
325             return getFontUnits();
326         } else if (property == UicontrolProperty.FONTWEIGHT) {
327             return getFontWeight();
328         } else if (property == UicontrolProperty.FOREGROUNDCOLOR) {
329             return getForegroundColor();
330         } else if (property == UicontrolProperty.HORIZONTALALIGNMENT) {
331             return getHorizontalAlignment();
332         } else if (property == UicontrolProperty.LISTBOXTOP) {
333             return getListboxTop();
334         } else if (property == UicontrolProperty.LISTBOXTOP_SIZE) {
335             return getListboxTopSize();
336         } else if (property == UicontrolProperty.MAX) {
337             return getMax();
338         } else if (property == UicontrolProperty.MIN) {
339             return getMin();
340         } else if (property == UicontrolProperty.POSITION) {
341             return getUiPosition();
342         } else if (property == UicontrolProperty.RELIEF) {
343             return getRelief();
344         } else if (property == UicontrolProperty.SLIDERSTEP) {
345             return getSliderStep();
346         } else if (property == UicontrolProperty.STRING) {
347             return getString();
348         } else if (property == UicontrolProperty.STRING_SIZE) {
349             return getString().length;
350         } else if (property == UicontrolProperty.STRING_COLNB) {
351             return getStringColNb();
352         } else if (property == UicontrolProperty.UNITS) {
353             return getUnits();
354         } else if (property == UicontrolProperty.VALUE) {
355             return getUiValue();
356         } else if (property == UicontrolProperty.VALUE_SIZE) {
357             return getUiValueSize();
358         } else if (property == UicontrolProperty.VERTICALALIGNMENT) {
359             return getVerticalAlignment();
360         } else {
361             return super.getProperty(property);
362         }
363     }
364
365     /**
366      * Fast property set method
367      * @param property the property to set
368      * @param value the property value
369      * @return true if the property has been set, false otherwise
370      */
371     public UpdateStatus setProperty(Object property, Object value) {
372         if (property == UicontrolProperty.STYLE) {
373             setStyle((String) value);
374         } else if (property == UicontrolProperty.BACKGROUNDCOLOR) {
375             setBackgroundColor((Double[]) value);
376         } else if (property == UicontrolProperty.ENABLE) {
377             setEnable((Boolean) value);
378         } else if (property == UicontrolProperty.FONTANGLE) {
379             setFontAngle((String) value);
380         } else if (property == UicontrolProperty.FONTNAME) {
381             setFontName((String) value);
382         } else if (property == UicontrolProperty.FONTSIZE) {
383             setFontSize((Double) value);
384         } else if (property == UicontrolProperty.FONTUNITS) {
385             setFontUnits((String) value);
386         } else if (property == UicontrolProperty.FONTWEIGHT) {
387             setFontWeight((String) value);
388         } else if (property == UicontrolProperty.FOREGROUNDCOLOR) {
389             setForegroundColor((Double[]) value);
390         } else if (property == UicontrolProperty.HORIZONTALALIGNMENT) {
391             setHorizontalAlignment((String) value);
392         } else if (property == UicontrolProperty.LISTBOXTOP) {
393             setListboxTop((Integer[]) value);
394         } else if (property == UicontrolProperty.MAX) {
395             setMax((Double) value);
396         } else if (property == UicontrolProperty.MIN) {
397             setMin((Double) value);
398         } else if (property == UicontrolProperty.POSITION) {
399             setUiPosition((Double[]) value);
400         } else if (property == UicontrolProperty.RELIEF) {
401             setRelief((String) value);
402         } else if (property == UicontrolProperty.SLIDERSTEP) {
403             setSliderStep((Double[]) value);
404         } else if (property == UicontrolProperty.STRING) {
405             setString((String[]) value);
406         } else if (property == UicontrolProperty.STRING_COLNB) {
407             setStringColNb((Integer) value);
408         } else if (property == UicontrolProperty.UNITS) {
409             setUnits((String) value);
410         } else if (property == UicontrolProperty.VALUE) {
411             setUiValue((Double[]) value);
412         } else if (property == UicontrolProperty.VERTICALALIGNMENT) {
413             setVerticalAlignment((String) value);
414         } else {
415             return super.setProperty(property, value);
416         }
417
418         return UpdateStatus.Success;
419     }
420
421     /**
422      * Get the style
423      * @return the style
424      */
425     public String getStyle() {
426         return styleEnumToString(this.style);
427     }
428
429     /**
430      * Set the style
431      * @param style the style
432      */
433     public void setStyle(String style) {
434         this.style = stringToStyleEnum(style);
435     }
436
437     /* Background Color */
438     public Double[] getBackgroundColor() {
439         return this.backgroundColor;
440     }
441
442     public void setBackgroundColor(Double[] colors) {
443         this.backgroundColor = colors;
444     }
445
446     /* Enable */
447     public boolean getEnable() {
448         return this.enable;
449     }
450
451     public void setEnable(boolean status) {
452         this.enable = status;
453     }
454
455     /* FontAngle */
456     public String getFontAngle() {
457         return this.fontAngle;
458     }
459
460     public void setFontAngle(String fontAngle) {
461         this.fontAngle = fontAngle;
462     }
463
464     /* FontName */
465     public String getFontName() {
466         return this.fontName;
467     }
468
469     public void setFontName(String fontName) {
470         this.fontName = fontName;
471     }
472
473     /* FontSize */
474     public double getFontSize() {
475         return this.fontSize;
476     }
477
478     public void setFontSize(double fontSize) {
479         this.fontSize = fontSize;
480     }
481
482     /* FontUnits */
483     public String getFontUnits() {
484         return this.fontUnits;
485     }
486
487     public void setFontUnits(String fontUnits) {
488         this.fontUnits = fontUnits;
489     }
490
491     /* FontWeight */
492     public String getFontWeight() {
493         return this.fontWeight;
494     }
495
496     public void setFontWeight(String fontWeight) {
497         this.fontWeight = fontWeight;
498     }
499
500     /* Foreground Color */
501     public Double[] getForegroundColor() {
502         return this.foregroundColor;
503     }
504
505     public void setForegroundColor(Double[] colors) {
506         this.foregroundColor = colors;
507     }
508
509     /* Horizontal Alignment */
510     public String getHorizontalAlignment() {
511         return this.horizontalAlignment;
512     }
513
514     public void setHorizontalAlignment(String alignment) {
515         this.horizontalAlignment = alignment;
516     }
517
518     /* Listbox Top */
519     public Integer getListboxTopSize() {
520         return (listboxTop != null ? listboxTop.length : 0);
521     }
522
523     public Integer[] getListboxTop() {
524         return this.listboxTop;
525     }
526
527     public void setListboxTop(Integer[] listboxTop) {
528         this.listboxTop = listboxTop;
529     }
530
531     /* Max */
532     public Double getMax() {
533         return this.max;
534     }
535
536     public void setMax(double max) {
537         this.max = max;
538     }
539
540     /* Min */
541     public Double getMin() {
542         return this.min;
543     }
544
545     public void setMin(double min) {
546         this.min = min;
547     }
548
549     /* Position */
550     public Double[] getUiPosition() {
551         return this.position;
552     }
553
554     public void setUiPosition(Double[] position) {
555         this.position = position;
556     }
557
558     /* Relief */
559     public String getRelief() {
560         return this.relief;
561     }
562
563     public void setRelief(String relief) {
564         this.relief = relief;
565     }
566
567     /**
568      * Get the string
569      * @return the string
570      */
571     public String[] getString() {
572         return this.string;
573     }
574
575     /**
576      * Set the string
577      * @param string the string
578      */
579     public void setString(String[] string) {
580         this.string = string;
581     }
582
583     /**
584      * Get the string column number
585      * @return the number of columns
586      */
587     public int getStringColNb() {
588         return stringColNb;
589     }
590
591     /**
592      * Set the string column number
593      * @param stringColNb the number of columns
594      */
595     public void setStringColNb(Integer stringColNb) {
596         this.stringColNb = stringColNb;
597     }
598
599
600     /* Slider Step */
601     public Double[] getSliderStep() {
602         return this.sliderStep;
603     }
604
605     public void setSliderStep(Double[] sliderStep) {
606         this.sliderStep = sliderStep;
607     }
608
609     /* Units */
610     public String getUnits() {
611         return this.units;
612     }
613
614     public void setUnits(String units) {
615         this.units = units;
616     }
617
618     /* Value */
619     public Integer getUiValueSize() {
620         return (value != null ? value.length : 0);
621     }
622
623     public Double[] getUiValue() {
624         return this.value;
625     }
626
627     public void setUiValue(Double[] value) {
628         this.value = value;
629     }
630
631     /* Vertical Alignment */
632     public String getVerticalAlignment() {
633         return this.verticalAlignment;
634     }
635
636     public void setVerticalAlignment(String alignment) {
637         this.verticalAlignment = alignment;
638     }
639
640     public void accept(Visitor visitor) {
641
642     }
643
644 }