b9eaa23bcac13185f90eec0cc35efea65e5b0cc7
[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.1-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_BORDER_OPT_PADDING__;
17 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_GRID_OPT_GRID__;
18 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_GRID_OPT_PADDING__;
19 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_LAYOUT_SET__;
20 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_LAYOUT__;
21 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_MARGINS__;
22 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_POSITION__;
23 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_STYLE__;
24 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UICONTROL__;
25 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_BACKGROUNDCOLOR__;
26 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_BORDER_POSITION__;
27 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_CHECKBOX__;
28 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_EDIT__;
29 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_ENABLE__;
30 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTANGLE__;
31 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTNAME__;
32 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTSIZE__;
33 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTUNITS__;
34 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTWEIGHT__;
35 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FOREGROUNDCOLOR__;
36 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER__;
37 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME__;
38 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_GRIDBAG_ANCHOR__;
39 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_GRIDBAG_FILL__;
40 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_GRIDBAG_GRID__;
41 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_GRIDBAG_PADDING__;
42 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_GRIDBAG_WEIGHT__;
43 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_GROUP_NAME__;
44 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_HORIZONTALALIGNMENT__;
45 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_IMAGE__;
46 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_LAYER__;
47 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_LISTBOXTOP_SIZE__;
48 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_LISTBOXTOP__;
49 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_LISTBOX__;
50 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_MAX__;
51 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_MIN__;
52 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_POPUPMENU__;
53 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_PUSHBUTTON__;
54 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_RADIOBUTTON__;
55 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_RELIEF__;
56 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_SLIDERSTEP__;
57 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_SLIDER__;
58 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_STRING_COLNB__;
59 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_STRING_SIZE__;
60 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_STRING__;
61 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TABLE__;
62 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TAB__;
63 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TEXT__;
64 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TOOLTIPSTRING_SIZE__;
65 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TOOLTIPSTRING__;
66 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_UNITS__;
67 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_VALUE_SIZE__;
68 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_VALUE__;
69 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_VERTICALALIGNMENT__;
70 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TITLE_POSITION__;
71 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TITLE_SCROLL__;
72
73 import java.util.Arrays;
74 import java.util.StringTokenizer;
75
76 import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
77 import org.scilab.modules.graphic_objects.graphicObject.Visitor;
78 import org.scilab.modules.graphic_objects.utils.LayoutType;
79
80 /**
81  * @author Bruno JOFRET
82  * @author Vincent COUVERT
83  */
84 public class Uicontrol extends GraphicObject {
85
86     public enum TitlePositionType {
87         TOP, LEFT, BOTTOM, RIGHT;
88         public static TitlePositionType intToEnum(Integer value) {
89             switch (value) {
90                 case 0:
91                     return TOP;
92                 case 1:
93                     return LEFT;
94                 default:
95                 case 2:
96                     return BOTTOM;
97                 case 3:
98                     return RIGHT;
99             }
100         }
101     }
102
103     public enum BorderLayoutType {
104         BOTTOM, TOP, CENTER, LEFT, RIGHT;
105         public static BorderLayoutType intToEnum(Integer value) {
106             switch (value) {
107                 case 0:
108                     return BorderLayoutType.BOTTOM;
109                 case 1:
110                     return BorderLayoutType.TOP;
111                 default:
112                 case 2:
113                     return BorderLayoutType.CENTER;
114                 case 3:
115                     return BorderLayoutType.LEFT;
116                 case 4:
117                     return BorderLayoutType.RIGHT;
118             }
119         }
120
121         public static BorderLayoutType stringToEnum(String value) {
122             if (value == null || value.equals("")) {
123                 return CENTER;
124             }
125
126             char[] chars = value.toCharArray();
127             if (chars[0] == 'n' || chars[0] == 'N') {
128                 return TOP;
129             }
130
131             if (chars[0] == 'e' || chars[0] == 'E') {
132                 return RIGHT;
133             }
134
135             if (chars[0] == 's' || chars[0] == 'S') {
136                 return BOTTOM;
137             }
138
139             if (chars[0] == 'w' || chars[0] == 'W') {
140                 return LEFT;
141             }
142
143             return CENTER;
144         }
145     }
146
147     public enum FillType {
148         NONE, VERTICAL, HORIZONTAL, BOTH;
149         public static FillType intToEnum(Integer value) {
150             switch (value) {
151                 default:
152                 case 0:
153                     return FillType.NONE;
154                 case 1:
155                     return FillType.VERTICAL;
156                 case 2:
157                     return FillType.HORIZONTAL;
158                 case 3:
159                     return FillType.BOTH;
160             }
161         }
162
163         public static FillType stringToEnum(String value) {
164             if (value == null || value.equals("")) {
165                 return NONE;
166             }
167
168             char[] chars = value.toCharArray();
169             if (chars[0] == 'v' || chars[0] == 'V') {
170                 return VERTICAL;
171             }
172
173             if (chars[0] == 'h' || chars[0] == 'H') {
174                 return HORIZONTAL;
175             }
176
177             if (chars[0] == 'b' || chars[0] == 'B') {
178                 return BOTH;
179             }
180
181             return NONE;
182         }
183     }
184
185     public enum AnchorType {
186         CENTER, UPPER, LOWER, RIGHT, LEFT, UPPER_RIGHT, UPPER_LEFT, LOWER_RIGHT, LOWER_LEFT;
187         //c,e,w,n,s,ne,nw,se,sw
188         public static AnchorType intToEnum(Integer value) {
189             switch (value) {
190                 default:
191                 case 0:
192                     return CENTER;
193                 case 1:
194                     return UPPER;
195                 case 2:
196                     return LOWER;
197                 case 3:
198                     return RIGHT;
199                 case 4:
200                     return LEFT;
201                 case 5:
202                     return UPPER_RIGHT;
203                 case 6:
204                     return UPPER_LEFT;
205                 case 7:
206                     return LOWER_RIGHT;
207                 case 8:
208                     return LOWER_LEFT;
209             }
210         }
211
212         public static AnchorType stringToEnum(String value) {
213             if (value == null || value.equals("")) {
214                 return CENTER;
215             }
216
217             char[] chars = value.toCharArray();
218             if (chars[0] == 'e' || chars[0] == 'E') {
219                 return RIGHT;
220             }
221
222             if (chars[0] == 'w' || chars[0] == 'W') {
223                 return LEFT;
224             }
225
226             if (chars[0] == 'n' || chars[0] == 'N') {
227                 if (chars.length == 1) {
228                     return UPPER;
229                 }
230
231                 if (chars[1] == 'e' || chars[1] == 'E') {
232                     return UPPER_RIGHT;
233                 }
234
235                 if (chars[1] == 'w' || chars[1] == 'W') {
236                     return UPPER_LEFT;
237                 }
238             }
239
240             if (chars[0] == 's' || chars[0] == 'S') {
241                 if (chars.length == 1) {
242                     return LOWER;
243                 }
244
245                 if (chars[1] == 'e' || chars[1] == 'E') {
246                     return LOWER_RIGHT;
247                 }
248
249                 if (chars[1] == 'w' || chars[1] == 'W') {
250                     return LOWER_LEFT;
251                 }
252             }
253
254             return CENTER;
255         }
256     }
257
258     protected static final String NONE_RELIEF   = "";
259     protected static final String FLAT_RELIEF   = "flat";
260     protected static final String RAISED_RELIEF = "raised";
261     protected static final String SUNKEN_RELIEF = "sunken";
262     protected static final String GROOVE_RELIEF = "groove";
263     protected static final String RIDGE_RELIEF  = "ridge";
264     protected static final String SOLID_RELIEF  = "solid";
265
266     protected static final double DEFAULT_RED_BACKGROUND = 0.8;
267     protected static final double DEFAULT_GREEN_BACKGROUND = 0.8;
268     protected static final double DEFAULT_BLUE_BACKGROUND = 0.8;
269
270     private static final double DEFAULT_X = 20.0;
271     private static final double DEFAULT_Y = 40.0;
272     private static final double DEFAULT_WIDTH = 40.0;
273     private static final double DEFAULT_HEIGHT = 20.0;
274
275     protected static final double DEFAULTFONTSIZE = 10;
276     protected static final String DEFAULTFONTNAME = "helvetica";
277     protected static final String DEFAULTFONTWEIGHT = "normal";
278     protected static final String DEFAULTFONTANGLE = "normal";
279     private static final String STRING_SEPARATOR = "|";
280
281     private UicontrolStyle style;
282     private Double[] backgroundColor = { -1.0, -1.0, -1.0};
283     private boolean enable = true;
284     private String fontAngle = "";
285     private String fontName = "";
286     private double fontSize = 0;
287     private String fontUnits = "points";
288     private String fontWeight = "";
289     private Double[] foregroundColor = {0.0, 0.0, 0.0};
290     private String horizontalAlignment = "";
291     private Integer[] listboxTop;
292     private double max = 1.0;
293     private double min;
294     private Double[] position = {DEFAULT_X, DEFAULT_Y, DEFAULT_WIDTH, DEFAULT_HEIGHT};
295     private String relief = NONE_RELIEF;
296     private Double[] sliderStep = {0.01, 0.1};
297     private String[] string = {""};
298     private int stringColNb = 1; // Used for tables
299     private String[] tooltipString = {""};
300     private String units = "pixels";
301     private Double[] value;
302     private String verticalAlignment = "";
303     private LayoutType layout = LayoutType.NONE;
304     private Double[] margins = new Double[] {0.0, 0.0, 0.0, 0.0};
305     private Integer[] gridbagGrid = new Integer[] {0, 0, 0, 0};
306     private Double[] gridbagWeight = new Double[] {0.0, 0.0};
307     private FillType gridbagFill = FillType.NONE;
308     private AnchorType gridbagAnchor = AnchorType.CENTER;
309     private Integer[] gridbagPadding = new Integer[] {0, 0};
310     private BorderLayoutType borderPosition = BorderLayoutType.CENTER;
311
312     /** layout options */
313     private Integer[] gridOptGrid = new Integer[] {0, 0};
314     private Integer[] gridOptPadding = new Integer[] {0, 0};
315     private Integer[] borderOptPadding = new Integer[] {0, 0};
316
317     /** border options */
318     private Integer frameBorder = 0;
319
320     /** groupname for radiobutton */
321     private String groupName = "";
322
323     /** tab properties */
324     private Boolean titleScroll = false;
325     private TitlePositionType titlePosition = TitlePositionType.TOP;
326     /**
327      * All uicontrol properties
328      */
329     private enum UicontrolProperty {
330         STYLE,
331         BACKGROUNDCOLOR,
332         ENABLE,
333         FONTANGLE,
334         FONTNAME,
335         FONTSIZE,
336         FONTUNITS,
337         FONTWEIGHT,
338         FOREGROUNDCOLOR,
339         HORIZONTALALIGNMENT,
340         LISTBOXTOP,
341         LISTBOXTOP_SIZE,
342         MAX,
343         MIN,
344         POSITION,
345         SCALE,
346         SHEAR,
347         SLIDERSTEP,
348         STRING,
349         STRING_SIZE,
350         STRING_COLNB,
351         RELIEF,
352         TOOLTIPSTRING,
353         TOOLTIPSTRING_SIZE,
354         UNITS,
355         VALUE,
356         VALUE_SIZE,
357         VERTICALALIGNMENT,
358         LAYOUT,
359         LAYOUT_SET,
360         MARGINS,
361         GRIDBAG_GRID,
362         GRIDBAG_WEIGHT,
363         GRIDBAG_FILL,
364         GRIDBAG_ANCHOR,
365         GRIDBAG_PADDING,
366         BORDER_POSITION,
367         GRIDOPT_GRID,
368         GRIDOPT_PADDING,
369         BORDEROPT_PADDING,
370         FRAMEBORDER,
371         GROUPNAME,
372         TITLE_POSITION,
373         TITLE_SCROLL
374     };
375
376     /**
377      * All uicontrol styles
378      */
379     private enum UicontrolStyle {
380         CHECKBOX,
381         EDIT,
382         FRAME,
383         IMAGE,
384         LISTBOX,
385         POPUPMENU,
386         PUSHBUTTON,
387         RADIOBUTTON,
388         SLIDER,
389         TABLE,
390         TEXT,
391         TABGROUP,
392         TAB,
393         LAYER
394     };
395
396     /**
397      * Constructor
398      */
399     public Uicontrol() {
400         super();
401         setVisible(false); /* To avoid to see the object rendered before all its properties to be set (See bug #10346) */
402     }
403
404     /**
405      * Get style as a string
406      * @param style the uicontrol style
407      * @return the uicontrol style as a string
408      */
409     private int styleEnumToInt(UicontrolStyle style) {
410         switch (style) {
411             case CHECKBOX:
412                 return __GO_UI_CHECKBOX__;
413             case EDIT:
414                 return __GO_UI_EDIT__;
415             case FRAME:
416                 return __GO_UI_FRAME__;
417             case IMAGE:
418                 return __GO_UI_IMAGE__;
419             case LISTBOX:
420                 return __GO_UI_LISTBOX__;
421             case POPUPMENU:
422                 return __GO_UI_POPUPMENU__;
423             case PUSHBUTTON:
424                 return __GO_UI_PUSHBUTTON__;
425             case RADIOBUTTON:
426                 return __GO_UI_RADIOBUTTON__;
427             case SLIDER:
428                 return __GO_UI_SLIDER__;
429             case TABLE:
430                 return __GO_UI_TABLE__;
431             case TEXT:
432                 return __GO_UI_TEXT__;
433             case TAB:
434                 return __GO_UI_TAB__;
435             case LAYER:
436                 return __GO_UI_LAYER__;
437             default :
438                 return -1;
439         }
440     }
441
442     /**
443      * Get style as an enum element
444      * @param style the uicontrol style
445      * @return the uicontrol style as an enum element
446      */
447     private UicontrolStyle intToStyleEnum(int style) {
448         switch (style) {
449             case __GO_UI_CHECKBOX__ :
450                 return UicontrolStyle.CHECKBOX;
451             case __GO_UI_EDIT__ :
452                 return UicontrolStyle.EDIT;
453             case __GO_UI_FRAME__ :
454                 return UicontrolStyle.FRAME;
455             case __GO_UI_IMAGE__ :
456                 return  UicontrolStyle.IMAGE;
457             case __GO_UI_LISTBOX__ :
458                 return UicontrolStyle.LISTBOX;
459             case __GO_UI_POPUPMENU__ :
460                 return UicontrolStyle.POPUPMENU;
461             case __GO_UI_PUSHBUTTON__ :
462                 return UicontrolStyle.PUSHBUTTON;
463             case __GO_UI_RADIOBUTTON__ :
464                 return UicontrolStyle.RADIOBUTTON;
465             case __GO_UI_SLIDER__ :
466                 return UicontrolStyle.SLIDER;
467             case __GO_UI_TABLE__ :
468                 return UicontrolStyle.TABLE;
469             case __GO_UI_TEXT__ :
470                 return UicontrolStyle.TEXT;
471             case __GO_UI_TAB__:
472                 return UicontrolStyle.TAB;
473             case __GO_UI_LAYER__:
474                 return UicontrolStyle.LAYER;
475             default :
476                 return null;
477         }
478     }
479
480     /**
481      * Get this object type
482      * @return uicontrol
483      * @see org.scilab.modules.graphic_objects.graphicObject.GraphicObject#getType()
484      */
485     public Integer getType() {
486         return __GO_UICONTROL__;
487     }
488
489     /**
490      * Returns the enum associated to a property name
491      * @param propertyName the property name
492      * @return the property enum
493      */
494     public Object getPropertyFromName(int propertyName) {
495         switch (propertyName) {
496             case __GO_STYLE__ :
497                 return UicontrolProperty.STYLE;
498             case __GO_UI_BACKGROUNDCOLOR__ :
499                 return UicontrolProperty.BACKGROUNDCOLOR;
500             case __GO_UI_ENABLE__ :
501                 return UicontrolProperty.ENABLE;
502             case __GO_UI_FONTANGLE__ :
503                 return UicontrolProperty.FONTANGLE;
504             case __GO_UI_FONTNAME__ :
505                 return UicontrolProperty.FONTNAME;
506             case __GO_UI_FONTSIZE__ :
507                 return UicontrolProperty.FONTSIZE;
508             case __GO_UI_FONTUNITS__ :
509                 return UicontrolProperty.FONTUNITS;
510             case __GO_UI_FONTWEIGHT__ :
511                 return UicontrolProperty.FONTWEIGHT;
512             case __GO_UI_FOREGROUNDCOLOR__ :
513                 return UicontrolProperty.FOREGROUNDCOLOR;
514             case __GO_UI_HORIZONTALALIGNMENT__ :
515                 return UicontrolProperty.HORIZONTALALIGNMENT;
516             case __GO_UI_LISTBOXTOP__ :
517                 return UicontrolProperty.LISTBOXTOP;
518             case __GO_UI_LISTBOXTOP_SIZE__ :
519                 return UicontrolProperty.LISTBOXTOP_SIZE;
520             case __GO_UI_MAX__ :
521                 return UicontrolProperty.MAX;
522             case __GO_UI_MIN__ :
523                 return UicontrolProperty.MIN;
524             case __GO_POSITION__ :
525                 return UicontrolProperty.POSITION;
526             case __GO_UI_RELIEF__ :
527                 return UicontrolProperty.RELIEF;
528             case __GO_UI_SLIDERSTEP__ :
529                 return UicontrolProperty.SLIDERSTEP;
530             case __GO_UI_STRING__ :
531                 return UicontrolProperty.STRING;
532             case __GO_UI_STRING_SIZE__ :
533                 return UicontrolProperty.STRING_SIZE;
534             case __GO_UI_STRING_COLNB__ :
535                 return UicontrolProperty.STRING_COLNB;
536             case __GO_UI_TOOLTIPSTRING__ :
537                 return UicontrolProperty.TOOLTIPSTRING;
538             case __GO_UI_TOOLTIPSTRING_SIZE__ :
539                 return UicontrolProperty.TOOLTIPSTRING_SIZE;
540             case __GO_UI_UNITS__ :
541                 return UicontrolProperty.UNITS;
542             case __GO_UI_VALUE__ :
543                 return UicontrolProperty.VALUE;
544             case __GO_UI_VALUE_SIZE__ :
545                 return UicontrolProperty.VALUE_SIZE;
546             case __GO_UI_VERTICALALIGNMENT__ :
547                 return UicontrolProperty.VERTICALALIGNMENT;
548             case __GO_LAYOUT__ :
549                 return UicontrolProperty.LAYOUT;
550             case __GO_LAYOUT_SET__ :
551                 return UicontrolProperty.LAYOUT_SET;
552             case __GO_MARGINS__:
553                 return UicontrolProperty.MARGINS;
554             case __GO_UI_GRIDBAG_GRID__:
555                 return UicontrolProperty.GRIDBAG_GRID;
556             case __GO_UI_GRIDBAG_WEIGHT__:
557                 return UicontrolProperty.GRIDBAG_WEIGHT;
558             case __GO_UI_GRIDBAG_FILL__:
559                 return UicontrolProperty.GRIDBAG_FILL;
560             case __GO_UI_GRIDBAG_ANCHOR__:
561                 return UicontrolProperty.GRIDBAG_ANCHOR;
562             case __GO_UI_GRIDBAG_PADDING__:
563                 return UicontrolProperty.GRIDBAG_PADDING;
564             case __GO_UI_BORDER_POSITION__:
565                 return UicontrolProperty.BORDER_POSITION;
566             case __GO_GRID_OPT_GRID__:
567                 return UicontrolProperty.GRIDOPT_GRID;
568             case __GO_GRID_OPT_PADDING__:
569                 return UicontrolProperty.GRIDOPT_PADDING;
570             case __GO_BORDER_OPT_PADDING__:
571                 return UicontrolProperty.BORDEROPT_PADDING;
572             case __GO_UI_FRAME_BORDER__:
573                 return UicontrolProperty.FRAMEBORDER;
574             case __GO_UI_GROUP_NAME__:
575                 return UicontrolProperty.GROUPNAME;
576             case __GO_UI_TITLE_POSITION__:
577                 return UicontrolProperty.TITLE_POSITION;
578             case __GO_UI_TITLE_SCROLL__:
579                 return UicontrolProperty.TITLE_SCROLL;
580             default :
581                 return super.getPropertyFromName(propertyName);
582         }
583     }
584
585     /**
586      * Fast property get method
587      * @param property the property to get
588      * @return the property value
589      */
590     public Object getProperty(Object property) {
591         if (property == UicontrolProperty.STYLE) {
592             return getStyle();
593         } else if (property == UicontrolProperty.BACKGROUNDCOLOR) {
594             return getBackgroundColor();
595         } else if (property == UicontrolProperty.ENABLE) {
596             return getEnable();
597         } else if (property == UicontrolProperty.FONTANGLE) {
598             return getFontAngle();
599         } else if (property == UicontrolProperty.FONTNAME) {
600             return getFontName();
601         } else if (property == UicontrolProperty.FONTSIZE) {
602             return getFontSize();
603         } else if (property == UicontrolProperty.FONTUNITS) {
604             return getFontUnits();
605         } else if (property == UicontrolProperty.FONTWEIGHT) {
606             return getFontWeight();
607         } else if (property == UicontrolProperty.FOREGROUNDCOLOR) {
608             return getForegroundColor();
609         } else if (property == UicontrolProperty.HORIZONTALALIGNMENT) {
610             return getHorizontalAlignment();
611         } else if (property == UicontrolProperty.LISTBOXTOP) {
612             return getListboxTop();
613         } else if (property == UicontrolProperty.LISTBOXTOP_SIZE) {
614             return getListboxTopSize();
615         } else if (property == UicontrolProperty.MAX) {
616             return getMax();
617         } else if (property == UicontrolProperty.MIN) {
618             return getMin();
619         } else if (property == UicontrolProperty.POSITION) {
620             return getUiPosition();
621         } else if (property == UicontrolProperty.RELIEF) {
622             return getRelief();
623         } else if (property == UicontrolProperty.SLIDERSTEP) {
624             return getSliderStep();
625         } else if (property == UicontrolProperty.STRING) {
626             return getString();
627         } else if (property == UicontrolProperty.STRING_SIZE) {
628             return getString().length;
629         } else if (property == UicontrolProperty.STRING_COLNB) {
630             return getStringColNb();
631         } else if (property == UicontrolProperty.TOOLTIPSTRING) {
632             return getTooltipString();
633         } else if (property == UicontrolProperty.TOOLTIPSTRING_SIZE) {
634             return getTooltipString().length;
635         } else if (property == UicontrolProperty.UNITS) {
636             return getUnits();
637         } else if (property == UicontrolProperty.VALUE) {
638             return getUiValue();
639         } else if (property == UicontrolProperty.VALUE_SIZE) {
640             return getUiValueSize();
641         } else if (property == UicontrolProperty.VERTICALALIGNMENT) {
642             return getVerticalAlignment();
643         } else if (property == UicontrolProperty.LAYOUT) {
644             return getLayout();
645         } else if (property == UicontrolProperty.LAYOUT_SET) {
646             return isLayoutSettable();
647         } else if (property == UicontrolProperty.MARGINS) {
648             return getMargins();
649         } else if (property == UicontrolProperty.GRIDBAG_GRID) {
650             return getGridBagGrid();
651         } else if (property == UicontrolProperty.GRIDBAG_WEIGHT) {
652             return getGridBagWeight();
653         } else if (property == UicontrolProperty.GRIDBAG_FILL) {
654             return getGridBagFill();
655         } else if (property == UicontrolProperty.GRIDBAG_ANCHOR) {
656             return getGridBagAnchor();
657         } else if (property == UicontrolProperty.GRIDBAG_PADDING) {
658             return getGridBagPadding();
659         } else if (property == UicontrolProperty.BORDER_POSITION) {
660             return getBorderPosition();
661         } else if (property == UicontrolProperty.GRIDOPT_GRID) {
662             return getGridOptGrid();
663         } else if (property == UicontrolProperty.GRIDOPT_PADDING) {
664             return getGridOptPadding();
665         } else if (property == UicontrolProperty.BORDEROPT_PADDING) {
666             return getBorderOptPadding();
667         } else if (property == UicontrolProperty.FRAMEBORDER) {
668             return getFrameBorder();
669         } else if (property == UicontrolProperty.GROUPNAME) {
670             return getGroupName();
671         } else if (property == UicontrolProperty.TITLE_POSITION) {
672             return getTitlePosition();
673         } else if (property == UicontrolProperty.TITLE_SCROLL) {
674             return getTitleScroll();
675         } else {
676             return super.getProperty(property);
677         }
678     }
679
680     /**
681      * Fast property set method
682      * @param property the property to set
683      * @param value the property value
684      * @return true if the property has been set, false otherwise
685      */
686     public UpdateStatus setProperty(Object property, Object value) {
687         if (!(property instanceof UicontrolProperty)) {
688             return super.setProperty(property, value);
689         }
690
691         UicontrolProperty p = (UicontrolProperty) property;
692         switch (p) {
693             case STYLE:
694                 return setStyle((Integer) value);
695             case BACKGROUNDCOLOR:
696                 return setBackgroundColor((Double[]) value);
697             case ENABLE:
698                 return setEnable((Boolean) value);
699             case FONTANGLE:
700                 return setFontAngle((String) value);
701             case FONTNAME:
702                 return setFontName((String) value);
703             case FONTSIZE:
704                 return setFontSize((Double) value);
705             case FONTUNITS:
706                 return setFontUnits((String) value);
707             case FONTWEIGHT:
708                 return setFontWeight((String) value);
709             case FOREGROUNDCOLOR:
710                 return setForegroundColor((Double[]) value);
711             case HORIZONTALALIGNMENT:
712                 return setHorizontalAlignment((String) value);
713             case LISTBOXTOP:
714                 return setListboxTop((Integer[]) value);
715             case MAX:
716                 return setMax((Double) value);
717             case MIN:
718                 return setMin((Double) value);
719             case POSITION:
720                 return setUiPosition((Double[]) value);
721             case RELIEF:
722                 return setRelief((String) value);
723             case SLIDERSTEP:
724                 return setSliderStep((Double[]) value);
725             case STRING:
726                 return setString((String[]) value);
727             case STRING_COLNB:
728                 return setStringColNb((Integer) value);
729             case TOOLTIPSTRING:
730                 return setTooltipString((String[]) value);
731             case UNITS:
732                 return setUnits((String) value);
733             case VALUE:
734                 return setUiValue((Double[]) value);
735             case VERTICALALIGNMENT:
736                 return setVerticalAlignment((String) value);
737             case LAYOUT:
738                 return setLayout((Integer) value);
739             case MARGINS:
740                 return setMargins((Double[]) value);
741             case GRIDBAG_GRID:
742                 return setGridBagGrid((Integer[]) value);
743             case GRIDBAG_WEIGHT:
744                 return setGridBagWeight((Double[]) value);
745             case GRIDBAG_FILL:
746                 return setGridBagFill((Integer) value);
747             case GRIDBAG_ANCHOR:
748                 return setGridBagAnchor((Integer) value);
749             case GRIDBAG_PADDING:
750                 return setGridBagPadding((Integer[]) value);
751             case BORDER_POSITION:
752                 return setBorderPosition((Integer) value);
753             case GRIDOPT_GRID:
754                 return setGridOptGrid((Integer[]) value);
755             case GRIDOPT_PADDING:
756                 return setGridOptPadding((Integer[]) value);
757             case BORDEROPT_PADDING:
758                 return setBorderOptPadding((Integer[]) value);
759             case FRAMEBORDER:
760                 return setFrameBorder((Integer) value);
761             case GROUPNAME:
762                 return setGroupName((String) value);
763             case TITLE_POSITION:
764                 return setTitlePosition((Integer) value);
765             case TITLE_SCROLL:
766                 return setTitleScroll((Boolean) value);
767             default:
768                 return super.setProperty(property, value);
769         }
770     }
771
772     /**
773          * Get the style
774          * @return the style
775          */
776     public Integer getStyle() {
777         return styleEnumToInt(this.style);
778     }
779
780     /**
781      * Set the style
782      * @param style the style
783      * @return TODO
784      */
785     public UpdateStatus setStyle(int style) {
786         UicontrolStyle val =  intToStyleEnum(style);
787         if (val == this.style) {
788             return UpdateStatus.NoChange;
789         }
790
791         this.style = val;
792         return UpdateStatus.Success;
793     }
794
795     /* Background Color */
796     public Double[] getBackgroundColor() {
797         return this.backgroundColor;
798     }
799
800     public UpdateStatus setBackgroundColor(Double[] colors) {
801         if (Arrays.equals(colors, this.backgroundColor)) {
802             return UpdateStatus.NoChange;
803         }
804
805         this.backgroundColor = colors;
806         return UpdateStatus.Success;
807     }
808
809     /* Enable */
810     public boolean getEnable() {
811         return this.enable;
812     }
813
814     public UpdateStatus setEnable(boolean status) {
815         if (this.enable == status) {
816             return UpdateStatus.NoChange;
817         }
818         this.enable = status;
819         return UpdateStatus.Success;
820     }
821
822     /* FontAngle */
823     public String getFontAngle() {
824         return this.fontAngle;
825     }
826
827     public UpdateStatus setFontAngle(String fontAngle) {
828         if (this.fontAngle.equals(fontAngle)) {
829             return UpdateStatus.NoChange;
830         }
831         this.fontAngle = fontAngle;
832         return UpdateStatus.Success;
833     }
834
835     /* FontName */
836     public String getFontName() {
837         return this.fontName;
838     }
839
840     public UpdateStatus setFontName(String fontName) {
841         if (this.fontName.equals(fontName)) {
842             return UpdateStatus.NoChange;
843         }
844         this.fontName = fontName;
845         return UpdateStatus.Success;
846     }
847
848     /* FontSize */
849     public double getFontSize() {
850         return this.fontSize;
851     }
852
853     public UpdateStatus setFontSize(double fontSize) {
854         if (this.fontSize == fontSize) {
855             return UpdateStatus.NoChange;
856         }
857         this.fontSize = fontSize;
858         return UpdateStatus.Success;
859     }
860
861     /* FontUnits */
862     public String getFontUnits() {
863         return this.fontUnits;
864     }
865
866     public UpdateStatus setFontUnits(String fontUnits) {
867         if (this.fontUnits.equals(fontUnits)) {
868             return UpdateStatus.NoChange;
869         }
870         this.fontUnits = fontUnits;
871         return UpdateStatus.Success;
872     }
873
874     /* FontWeight */
875     public String getFontWeight() {
876         return this.fontWeight;
877     }
878
879     public UpdateStatus setFontWeight(String fontWeight) {
880         if (this.fontWeight.equals(fontWeight)) {
881             return UpdateStatus.NoChange;
882         }
883         this.fontWeight = fontWeight;
884         return UpdateStatus.Success;
885     }
886
887     /* Foreground Color */
888     public Double[] getForegroundColor() {
889         return this.foregroundColor;
890     }
891
892     public UpdateStatus setForegroundColor(Double[] colors) {
893         if (Arrays.equals(this.foregroundColor, colors)) {
894             return UpdateStatus.NoChange;
895         }
896         this.foregroundColor = colors;
897         return UpdateStatus.Success;
898     }
899
900     /* Horizontal Alignment */
901     public String getHorizontalAlignment() {
902         return this.horizontalAlignment;
903     }
904
905     public UpdateStatus setHorizontalAlignment(String alignment) {
906         if (this.horizontalAlignment.equals(alignment)) {
907             return UpdateStatus.NoChange;
908         }
909         this.horizontalAlignment = alignment;
910         return UpdateStatus.Success;
911     }
912
913     /* Listbox Top */
914     public Integer getListboxTopSize() {
915         return (listboxTop != null ? listboxTop.length : 0);
916     }
917
918     public Integer[] getListboxTop() {
919         return this.listboxTop;
920     }
921
922     public UpdateStatus setListboxTop(Integer[] listboxTop) {
923         if (Arrays.equals(this.listboxTop, listboxTop)) {
924             return UpdateStatus.NoChange;
925         }
926         this.listboxTop = listboxTop;
927         return UpdateStatus.Success;
928     }
929
930     /* Max */
931     public Double getMax() {
932         return this.max;
933     }
934
935     public UpdateStatus setMax(double max) {
936         if (this.max == max) {
937             return UpdateStatus.NoChange;
938         }
939         this.max = max;
940         return UpdateStatus.Success;
941     }
942
943     /* Min */
944     public Double getMin() {
945         return this.min;
946     }
947
948     public UpdateStatus setMin(double min) {
949         if (this.min == min) {
950             return UpdateStatus.NoChange;
951         }
952         this.min = min;
953         return UpdateStatus.Success;
954     }
955
956     /* Position */
957     public Double[] getUiPosition() {
958         return this.position;
959     }
960
961     public UpdateStatus setUiPosition(Double[] position) {
962         if (Arrays.equals(this.position, position)) {
963             return UpdateStatus.NoChange;
964         }
965         this.position = position;
966         return UpdateStatus.Success;
967     }
968
969     /* Relief */
970     public String getRelief() {
971         return this.relief;
972     }
973
974     public UpdateStatus setRelief(String relief) {
975         if (this.relief.equals(relief)) {
976             return UpdateStatus.NoChange;
977         }
978         this.relief = relief;
979         return UpdateStatus.Success;
980     }
981
982     /**
983      * Get the string
984      * @return the string
985      */
986     public String[] getString() {
987         return this.string;
988     }
989
990     /**
991      * Set the string
992      * @param string the string
993      */
994     public UpdateStatus setString(String[] string) {
995         if (this.style == UicontrolStyle.LISTBOX || this.style == UicontrolStyle.POPUPMENU) {
996             /* String can be set using a|b|c|d */
997             if (string.length == 1 & string[0].contains(STRING_SEPARATOR)) {
998                 StringTokenizer strTok = new StringTokenizer(string[0], STRING_SEPARATOR);
999                 String[] stringTab = new String[strTok.countTokens()];
1000                 while (strTok.hasMoreTokens()) {
1001                     stringTab[stringTab.length - strTok.countTokens()] = strTok.nextToken();
1002                 }
1003                 this.string = stringTab;
1004                 return UpdateStatus.Success;
1005             }
1006         }
1007         this.string = string;
1008         return UpdateStatus.Success;
1009     }
1010
1011     /**
1012      * Get the string column number
1013      * @return the number of columns
1014      */
1015     public int getStringColNb() {
1016         return stringColNb;
1017     }
1018
1019     /**
1020      * Set the string column number
1021      * @param stringColNb the number of columns
1022      */
1023     public UpdateStatus setStringColNb(Integer stringColNb) {
1024         if (this.stringColNb == stringColNb) {
1025             return UpdateStatus.NoChange;
1026         }
1027         this.stringColNb = stringColNb;
1028         return UpdateStatus.Success;
1029     }
1030
1031
1032     /**
1033      * Get the tooltip string
1034      * @return the tooltip string
1035      */
1036     public String[] getTooltipString() {
1037         return this.tooltipString;
1038     }
1039
1040     /**
1041      * Set the tooltip string
1042      * @param tooltipString the tooltip string
1043      */
1044     public UpdateStatus setTooltipString(String[] tooltipString) {
1045         if (Arrays.equals(this.tooltipString, tooltipString)) {
1046             return UpdateStatus.NoChange;
1047         }
1048         this.tooltipString = tooltipString;
1049         return UpdateStatus.Success;
1050     }
1051
1052     /* Slider Step */
1053     public Double[] getSliderStep() {
1054         return this.sliderStep;
1055     }
1056
1057     public UpdateStatus setSliderStep(Double[] sliderStep) {
1058         if (Arrays.equals(this.sliderStep, sliderStep)) {
1059             return UpdateStatus.NoChange;
1060         }
1061         this.sliderStep = sliderStep;
1062         return UpdateStatus.Success;
1063     }
1064
1065     /* Units */
1066     public String getUnits() {
1067         return this.units;
1068     }
1069
1070     public UpdateStatus setUnits(String units) {
1071         if (this.units.equals(units)) {
1072             return UpdateStatus.NoChange;
1073         }
1074         this.units = units;
1075         return UpdateStatus.Success;
1076     }
1077
1078     /* Value */
1079     public Integer getUiValueSize() {
1080         return (value != null ? value.length : 0);
1081     }
1082
1083     public Double[] getUiValue() {
1084         return this.value;
1085     }
1086
1087     public UpdateStatus setUiValue(Double[] value) {
1088         if (Arrays.equals(this.value, value)) {
1089             return UpdateStatus.NoChange;
1090         }
1091         this.value = value;
1092         return UpdateStatus.Success;
1093     }
1094
1095     /* Vertical Alignment */
1096     public String getVerticalAlignment() {
1097         return this.verticalAlignment;
1098     }
1099
1100     public UpdateStatus setVerticalAlignment(String alignment) {
1101         if (this.verticalAlignment.equals(alignment)) {
1102             return UpdateStatus.NoChange;
1103         }
1104         this.verticalAlignment = alignment;
1105         return UpdateStatus.Success;
1106     }
1107
1108     public Integer getLayout() {
1109         return layout.ordinal();
1110     }
1111
1112     public LayoutType getLayoutAsEnum() {
1113         return layout;
1114     }
1115
1116     public boolean isLayoutSettable() {
1117         return (this.layout == LayoutType.NONE);
1118     }
1119
1120     public UpdateStatus setLayout(Integer value) {
1121         return setLayout(LayoutType.intToEnum(value));
1122     }
1123
1124     public UpdateStatus setLayout(LayoutType layout) {
1125         //avoid to set layout twice
1126         if (this.layout == LayoutType.NONE) {
1127             if (layout == LayoutType.NONE) {
1128                 return UpdateStatus.NoChange;
1129             }
1130
1131             this.layout = layout;
1132             return UpdateStatus.Success;
1133         }
1134
1135         return UpdateStatus.Fail;
1136     }
1137
1138     public Double[] getMargins() {
1139         return margins;
1140     }
1141
1142     public UpdateStatus setMargins(Double[] value) {
1143         UpdateStatus status = UpdateStatus.NoChange;
1144         if (value.length != 4) {
1145             return UpdateStatus.Fail;
1146         }
1147
1148         for (int i = 0 ; i < 4 ; i++) {
1149             if (margins[i].equals(value[i]) == false) {
1150                 margins[i] = value[i];
1151                 status = UpdateStatus.Success;
1152             }
1153         }
1154
1155         return status;
1156     }
1157
1158     public Integer getBorderPosition() {
1159         return borderPosition.ordinal();
1160     }
1161
1162     public BorderLayoutType getBorderPositionAsEnum() {
1163         return borderPosition;
1164     }
1165
1166     public UpdateStatus setBorderPosition(Integer value) {
1167         return setBorderPosition(BorderLayoutType.intToEnum(value));
1168     }
1169
1170     public UpdateStatus setBorderPosition(BorderLayoutType value) {
1171         if (borderPosition == value) {
1172             return UpdateStatus.NoChange;
1173         }
1174
1175         borderPosition = value;
1176         return UpdateStatus.Success;
1177     }
1178
1179     public Integer[] getGridBagPadding() {
1180         return gridbagPadding;
1181     }
1182
1183     public UpdateStatus setGridBagPadding(Integer[] value) {
1184         UpdateStatus status = UpdateStatus.NoChange;
1185         if (gridbagPadding.length != value.length) {
1186             return UpdateStatus.Fail;
1187         }
1188
1189         for (int i = 0 ; i < value.length ; i++) {
1190             if (gridbagPadding[i] != value[i]) {
1191                 gridbagPadding[i] = value[i];
1192                 status = UpdateStatus.Success;
1193             }
1194         }
1195
1196         return status;
1197     }
1198
1199     public Integer getGridBagAnchor() {
1200         return gridbagAnchor.ordinal();
1201     }
1202
1203     public AnchorType getGridBagAnchorAsEnum() {
1204         return gridbagAnchor;
1205     }
1206
1207     public UpdateStatus setGridBagAnchor(Integer value) {
1208         return setGridBagAnchor(AnchorType.intToEnum(value));
1209     }
1210
1211     public UpdateStatus setGridBagAnchor(AnchorType value) {
1212         if (gridbagAnchor == value) {
1213             return UpdateStatus.NoChange;
1214         }
1215
1216         gridbagAnchor = value;
1217         return UpdateStatus.Success;
1218     }
1219
1220     public Integer getGridBagFill() {
1221         return gridbagFill.ordinal();
1222     }
1223
1224     public FillType getGridBagFillAsEnum() {
1225         return gridbagFill;
1226     }
1227
1228     public UpdateStatus setGridBagFill(Integer value) {
1229         return setGridBagFill(FillType.intToEnum(value));
1230     }
1231
1232     public UpdateStatus setGridBagFill(FillType value) {
1233         if (gridbagFill == value) {
1234             return UpdateStatus.NoChange;
1235         }
1236
1237         gridbagFill = value;
1238         return UpdateStatus.Success;
1239     }
1240
1241     public Double[] getGridBagWeight() {
1242         return gridbagWeight;
1243     }
1244
1245     public UpdateStatus setGridBagWeight(Double[] value) {
1246         UpdateStatus status = UpdateStatus.NoChange;
1247         if (gridbagWeight.length != value.length) {
1248             return UpdateStatus.Fail;
1249         }
1250
1251         for (int i = 0 ; i < value.length ; i++) {
1252             if (gridbagWeight[i] != value[i]) {
1253                 gridbagWeight[i] = value[i];
1254                 status = UpdateStatus.Success;
1255             }
1256         }
1257
1258         return status;
1259     }
1260
1261     public Integer[] getGridBagGrid() {
1262         return gridbagGrid;
1263     }
1264
1265     public UpdateStatus setGridBagGrid(Integer[] value) {
1266         UpdateStatus status = UpdateStatus.NoChange;
1267         if (gridbagGrid.length != value.length) {
1268             return UpdateStatus.Fail;
1269         }
1270
1271         for (int i = 0 ; i < value.length ; i++) {
1272             if (gridbagGrid[i] != value[i]) {
1273                 gridbagGrid[i] = value[i];
1274                 status = UpdateStatus.Success;
1275             }
1276         }
1277
1278         return status;
1279     }
1280
1281     public Integer[] getBorderOptPadding() {
1282         return borderOptPadding;
1283     }
1284
1285     public UpdateStatus setBorderOptPadding(Integer[] value) {
1286         UpdateStatus status = UpdateStatus.NoChange;
1287         if (borderOptPadding.length != value.length) {
1288             return UpdateStatus.Fail;
1289         }
1290
1291         for (int i = 0 ; i < value.length ; i++) {
1292             if (borderOptPadding[i] != value[i]) {
1293                 borderOptPadding[i] = value[i];
1294                 status = UpdateStatus.Success;
1295             }
1296         }
1297
1298         return status;
1299     }
1300
1301     public Integer[] getGridOptPadding() {
1302         return gridOptPadding;
1303     }
1304
1305     public UpdateStatus setGridOptPadding(Integer[] value) {
1306         UpdateStatus status = UpdateStatus.NoChange;
1307         if (gridOptPadding.length != value.length) {
1308             return UpdateStatus.Fail;
1309         }
1310
1311         for (int i = 0 ; i < value.length ; i++) {
1312             if (gridOptPadding[i] != value[i]) {
1313                 gridOptPadding[i] = value[i];
1314                 status = UpdateStatus.Success;
1315             }
1316         }
1317
1318         return status;
1319     }
1320
1321     public Integer[] getGridOptGrid() {
1322         return gridOptGrid;
1323     }
1324
1325     public UpdateStatus setGridOptGrid(Integer[] value) {
1326         UpdateStatus status = UpdateStatus.NoChange;
1327         if (gridOptGrid.length != value.length) {
1328             return UpdateStatus.Fail;
1329         }
1330
1331         for (int i = 0 ; i < value.length ; i++) {
1332             if (gridOptGrid[i] != value[i]) {
1333                 gridOptGrid[i] = value[i];
1334                 status = UpdateStatus.Success;
1335             }
1336         }
1337
1338         return status;
1339     }
1340
1341     public Integer getFrameBorder() {
1342         return frameBorder;
1343     }
1344
1345     public UpdateStatus setFrameBorder(Integer value) {
1346         if (frameBorder.equals(value)) {
1347             return UpdateStatus.NoChange;
1348         }
1349
1350         frameBorder = value;
1351         return UpdateStatus.Success;
1352     }
1353
1354     public String getGroupName() {
1355         return groupName;
1356     }
1357
1358     public UpdateStatus setGroupName(String value) {
1359         if (groupName.equals(value)) {
1360             return UpdateStatus.NoChange;
1361         }
1362
1363         groupName = value;
1364         return UpdateStatus.Success;
1365     }
1366
1367     public Boolean getTitleScroll() {
1368         return titleScroll;
1369     }
1370
1371     public UpdateStatus setTitleScroll(Boolean value) {
1372         if (titleScroll == value) {
1373             return UpdateStatus.NoChange;
1374         }
1375
1376         titleScroll = value;
1377         return UpdateStatus.Success;
1378     }
1379
1380     public Integer getTitlePosition() {
1381         return titlePosition.ordinal();
1382     }
1383
1384     public TitlePositionType getTitlePositionAsEnum() {
1385         return titlePosition;
1386     }
1387
1388
1389     public UpdateStatus setTitlePosition(Integer value) {
1390         return setTitlePosition(TitlePositionType.intToEnum(value));
1391     }
1392
1393     public UpdateStatus setTitlePosition(TitlePositionType value) {
1394         if (titlePosition == value) {
1395             return UpdateStatus.NoChange;
1396         }
1397
1398         titlePosition = value;
1399         return UpdateStatus.Success;
1400     }
1401
1402
1403     public void accept(Visitor visitor) {
1404     }
1405 }