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