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