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