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