update value and string on tab and layer uicontrol 16/13816/6
Antoine ELIAS [Mon, 24 Feb 2014 16:30:11 +0000 (17:30 +0100)]
Change-Id: I3d842e5cb76e0a726ebd7daa2420251d1cbb664c

13 files changed:
scilab/modules/graphic_objects/includes/graphicObjectProperties.h
scilab/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/GraphicObject.java
scilab/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/GraphicObjectProperties.java
scilab/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/Uicontrol.java
scilab/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/layer/Layer.java
scilab/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/tab/Tab.java
scilab/modules/graphic_objects/src/scripts/propertiesMap.properties
scilab/modules/graphics/src/c/getHandleProperty/set_constraints_property.c
scilab/modules/gui/src/java/org/scilab/modules/gui/bridge/frame/SwingScilabFrame.java
scilab/modules/gui/src/java/org/scilab/modules/gui/bridge/frame/SwingScilabLayer.java
scilab/modules/gui/src/java/org/scilab/modules/gui/bridge/tab/SwingScilabTabGroup.java
scilab/modules/gui/tests/unit_tests/tab_layer.tag.dia.ref [new file with mode: 0644]
scilab/modules/gui/tests/unit_tests/tab_layer.tag.tst [new file with mode: 0644]

index c63e75d..af75180 100755 (executable)
 #define __GO_UI_MIN__ 289
 #define __GO_UI_RELIEF__ 290
 #define __GO_UI_STRING__ 291
-#define __GO_UI_STRING_SIZE__ 292
-#define __GO_UI_STRING_COLNB__ 293
-#define __GO_UI_TOOLTIPSTRING__ 294
-#define __GO_UI_TOOLTIPSTRING_SIZE__ 295
-#define __GO_UI_SLIDERSTEP__ 296
-#define __GO_UI_UNITS__ 297
-#define __GO_UI_VALUE__ 298
-#define __GO_UI_VALUE_SIZE__ 299
-#define __GO_UI_VERTICALALIGNMENT__ 300
-#define __GO_UIPARENTMENU__ 301
-#define __GO_UICHILDMENU__ 302
-#define __GO_UICHECKEDMENU__ 303
-#define __GO_UI_CHECKED__ 304
-#define __GO_UI_LABEL__ 305
-#define __GO_UI_MNEMONIC__ 306
-#define __GO_UI_ACCELERATOR__ 307
-#define __GO_UI_SEPARATOR__ 308
-#define __GO_UI_ICON__ 309
-#define __GO_CONSOLE__ 310
-#define __GO_SHOWHIDDENHANDLES__ 311
-#define __GO_USEDEPRECATEDLF__ 312
-#define __GO_WAITBAR__ 313
-#define __GO_PROGRESSIONBAR__ 314
-#define __GO_UI_MESSAGE__ 315
-#define __GO_UI_MESSAGE_SIZE__ 316
-#define __GO_DATATIP__ 317
-#define __GO_DATATIP_DATA__ 318
-#define __GO_DATATIP_ORIENTATION__ 319
-#define __GO_DATATIP_3COMPONENT__ 320
-#define __GO_DATATIP_AUTOORIENTATION__ 321
-#define __GO_DATATIP_INTERP_MODE__ 322
-#define __GO_DATATIP_DISPLAY_FNC__ 323
-#define __GO_DATATIP_BOX_MODE__ 324
-#define __GO_DATATIP_LABEL_MODE__ 325
-#define __GO_DATATIP_MARK__ 326
-#define __GO_AMBIENTCOLOR__ 327
-#define __GO_DIFFUSECOLOR__ 328
-#define __GO_SPECULARCOLOR__ 329
-#define __GO_COLOR_MATERIAL__ 330
-#define __GO_MATERIAL_SHININESS__ 331
-#define __GO_LIGHT__ 332
-#define __GO_LIGHT_TYPE__ 333
-#define __GO_DATATIPS__ 334
-#define __GO_DATATIPS_COUNT__ 335
-#define __GO_DATATIP_INDEXES__ 336
-#define __GO_DATA_MODEL_DISPLAY_FUNCTION__ 337
-#define __GO_DATA_MODEL_DISPLAY_FUNCTION_SIZE__ 338
-#define __GO_RESIZE__ 339
-#define __GO_TOOLBAR__ 340
-#define __GO_TOOLBAR_VISIBLE__ 341
-#define __GO_MENUBAR__ 342
-#define __GO_MENUBAR_VISIBLE__ 343
-#define __GO_INFOBAR_VISIBLE__ 344
-#define __GO_DOCKABLE__ 345
-#define __GO_LAYOUT__ 346
-#define __GO_LAYOUT_SET__ 347
-#define __GO_UI_TAB__ 348
-#define __GO_UI_GRIDBAG_GRID__ 349
-#define __GO_UI_GRIDBAG_WEIGHT__ 350
-#define __GO_UI_GRIDBAG_FILL__ 351
-#define __GO_UI_GRIDBAG_ANCHOR__ 352
-#define __GO_UI_GRIDBAG_PADDING__ 353
-#define __GO_UI_GRIDBAG_PREFERREDSIZE__ 354
-#define __GO_UI_GRID_GRID__ 355
-#define __GO_UI_GRID_PADDING__ 356
-#define __GO_UI_BORDER_POSITION__ 357
-#define __GO_GRID_OPT_GRID__ 358
-#define __GO_GRID_OPT_PADDING__ 359
-#define __GO_BORDER_OPT_PADDING__ 360
-#define __GO_UI_FRAME_BORDER__ 361
-#define __GO_UI_FRAME_BORDER_COLOR__ 362
-#define __GO_UI_FRAME_BORDER_HIGHLIGHT_IN__ 363
-#define __GO_UI_FRAME_BORDER_HIGHLIGHT_OUT__ 364
-#define __GO_UI_FRAME_BORDER_IN_BORDER__ 365
-#define __GO_UI_FRAME_BORDER_JUSTIFICATION__ 366
-#define __GO_UI_FRAME_BORDER_OUT_BORDER__ 367
-#define __GO_UI_FRAME_BORDER_ROUNDED__ 368
-#define __GO_UI_FRAME_BORDER_SHADOW_IN__ 369
-#define __GO_UI_FRAME_BORDER_SHADOW_OUT__ 370
-#define __GO_UI_FRAME_BORDER_TITLE__ 371
-#define __GO_UI_FRAME_BORDER_POSITION__ 372
-#define __GO_UI_FRAME_BORDER_STYLE__ 373
-#define __GO_UI_GROUP_NAME__ 374
-#define __GO_UI_TITLE_POSITION__ 375
-#define __GO_UI_TITLE_SCROLL__ 376
-#define __GO_UI_FRAME_BORDER_TYPE__ 377
-#define __GO_UI_SCROLLABLE__ 378
+#define __GO_UI_TAB_STRING__ 292
+#define __GO_UI_STRING_SIZE__ 293
+#define __GO_UI_STRING_COLNB__ 294
+#define __GO_UI_TOOLTIPSTRING__ 295
+#define __GO_UI_TOOLTIPSTRING_SIZE__ 296
+#define __GO_UI_SLIDERSTEP__ 297
+#define __GO_UI_UNITS__ 298
+#define __GO_UI_VALUE__ 299
+#define __GO_UI_TAB_VALUE__ 300
+#define __GO_UI_VALUE_SIZE__ 301
+#define __GO_UI_VERTICALALIGNMENT__ 302
+#define __GO_UIPARENTMENU__ 303
+#define __GO_UICHILDMENU__ 304
+#define __GO_UICHECKEDMENU__ 305
+#define __GO_UI_CHECKED__ 306
+#define __GO_UI_LABEL__ 307
+#define __GO_UI_MNEMONIC__ 308
+#define __GO_UI_ACCELERATOR__ 309
+#define __GO_UI_SEPARATOR__ 310
+#define __GO_UI_ICON__ 311
+#define __GO_CONSOLE__ 312
+#define __GO_SHOWHIDDENHANDLES__ 313
+#define __GO_USEDEPRECATEDLF__ 314
+#define __GO_WAITBAR__ 315
+#define __GO_PROGRESSIONBAR__ 316
+#define __GO_UI_MESSAGE__ 317
+#define __GO_UI_MESSAGE_SIZE__ 318
+#define __GO_DATATIP__ 319
+#define __GO_DATATIP_DATA__ 320
+#define __GO_DATATIP_ORIENTATION__ 321
+#define __GO_DATATIP_3COMPONENT__ 322
+#define __GO_DATATIP_AUTOORIENTATION__ 323
+#define __GO_DATATIP_INTERP_MODE__ 324
+#define __GO_DATATIP_DISPLAY_FNC__ 325
+#define __GO_DATATIP_BOX_MODE__ 326
+#define __GO_DATATIP_LABEL_MODE__ 327
+#define __GO_DATATIP_MARK__ 328
+#define __GO_AMBIENTCOLOR__ 329
+#define __GO_DIFFUSECOLOR__ 330
+#define __GO_SPECULARCOLOR__ 331
+#define __GO_COLOR_MATERIAL__ 332
+#define __GO_MATERIAL_SHININESS__ 333
+#define __GO_LIGHT__ 334
+#define __GO_LIGHT_TYPE__ 335
+#define __GO_DATATIPS__ 336
+#define __GO_DATATIPS_COUNT__ 337
+#define __GO_DATATIP_INDEXES__ 338
+#define __GO_DATA_MODEL_DISPLAY_FUNCTION__ 339
+#define __GO_DATA_MODEL_DISPLAY_FUNCTION_SIZE__ 340
+#define __GO_RESIZE__ 341
+#define __GO_TOOLBAR__ 342
+#define __GO_TOOLBAR_VISIBLE__ 343
+#define __GO_MENUBAR__ 344
+#define __GO_MENUBAR_VISIBLE__ 345
+#define __GO_INFOBAR_VISIBLE__ 346
+#define __GO_DOCKABLE__ 347
+#define __GO_LAYOUT__ 348
+#define __GO_LAYOUT_SET__ 349
+#define __GO_UI_TAB__ 350
+#define __GO_UI_GRIDBAG_GRID__ 351
+#define __GO_UI_GRIDBAG_WEIGHT__ 352
+#define __GO_UI_GRIDBAG_FILL__ 353
+#define __GO_UI_GRIDBAG_ANCHOR__ 354
+#define __GO_UI_GRIDBAG_PADDING__ 355
+#define __GO_UI_GRIDBAG_PREFERREDSIZE__ 356
+#define __GO_UI_GRID_GRID__ 357
+#define __GO_UI_GRID_PADDING__ 358
+#define __GO_UI_BORDER_POSITION__ 359
+#define __GO_GRID_OPT_GRID__ 360
+#define __GO_GRID_OPT_PADDING__ 361
+#define __GO_BORDER_OPT_PADDING__ 362
+#define __GO_UI_FRAME_BORDER__ 363
+#define __GO_UI_FRAME_BORDER_COLOR__ 364
+#define __GO_UI_FRAME_BORDER_HIGHLIGHT_IN__ 365
+#define __GO_UI_FRAME_BORDER_HIGHLIGHT_OUT__ 366
+#define __GO_UI_FRAME_BORDER_IN_BORDER__ 367
+#define __GO_UI_FRAME_BORDER_JUSTIFICATION__ 368
+#define __GO_UI_FRAME_BORDER_OUT_BORDER__ 369
+#define __GO_UI_FRAME_BORDER_ROUNDED__ 370
+#define __GO_UI_FRAME_BORDER_SHADOW_IN__ 371
+#define __GO_UI_FRAME_BORDER_SHADOW_OUT__ 372
+#define __GO_UI_FRAME_BORDER_TITLE__ 373
+#define __GO_UI_FRAME_BORDER_POSITION__ 374
+#define __GO_UI_FRAME_BORDER_STYLE__ 375
+#define __GO_UI_GROUP_NAME__ 376
+#define __GO_UI_TITLE_POSITION__ 377
+#define __GO_UI_TITLE_SCROLL__ 378
+#define __GO_UI_FRAME_BORDER_TYPE__ 379
+#define __GO_UI_SCROLLABLE__ 380
 
 #endif /* !__GRAPHIC_OBJECT_PROPERTIES_H__ */
index a0d562a..7c6f924 100644 (file)
@@ -591,6 +591,10 @@ public abstract class GraphicObject implements Cloneable {
      * @return TODO
      */
     public UpdateStatus setTag(String tag) {
+        if (this.tag.equals(tag)) {
+            return UpdateStatus.NoChange;
+        }
+
         this.tag = tag;
         return UpdateStatus.Success;
     }
index d42fed6..aa6ac9b 100755 (executable)
@@ -312,92 +312,94 @@ public class GraphicObjectProperties {
     public static final int __GO_UI_MIN__ = 289;
     public static final int __GO_UI_RELIEF__ = 290;
     public static final int __GO_UI_STRING__ = 291;
-    public static final int __GO_UI_STRING_SIZE__ = 292;
-    public static final int __GO_UI_STRING_COLNB__ = 293;
-    public static final int __GO_UI_TOOLTIPSTRING__ = 294;
-    public static final int __GO_UI_TOOLTIPSTRING_SIZE__ = 295;
-    public static final int __GO_UI_SLIDERSTEP__ = 296;
-    public static final int __GO_UI_UNITS__ = 297;
-    public static final int __GO_UI_VALUE__ = 298;
-    public static final int __GO_UI_VALUE_SIZE__ = 299;
-    public static final int __GO_UI_VERTICALALIGNMENT__ = 300;
-    public static final int __GO_UIPARENTMENU__ = 301;
-    public static final int __GO_UICHILDMENU__ = 302;
-    public static final int __GO_UICHECKEDMENU__ = 303;
-    public static final int __GO_UI_CHECKED__ = 304;
-    public static final int __GO_UI_LABEL__ = 305;
-    public static final int __GO_UI_MNEMONIC__ = 306;
-    public static final int __GO_UI_ACCELERATOR__ = 307;
-    public static final int __GO_UI_SEPARATOR__ = 308;
-    public static final int __GO_UI_ICON__ = 309;
-    public static final int __GO_CONSOLE__ = 310;
-    public static final int __GO_SHOWHIDDENHANDLES__ = 311;
-    public static final int __GO_USEDEPRECATEDLF__ = 312;
-    public static final int __GO_WAITBAR__ = 313;
-    public static final int __GO_PROGRESSIONBAR__ = 314;
-    public static final int __GO_UI_MESSAGE__ = 315;
-    public static final int __GO_UI_MESSAGE_SIZE__ = 316;
-    public static final int __GO_DATATIP__ = 317;
-    public static final int __GO_DATATIP_DATA__ = 318;
-    public static final int __GO_DATATIP_ORIENTATION__ = 319;
-    public static final int __GO_DATATIP_3COMPONENT__ = 320;
-    public static final int __GO_DATATIP_AUTOORIENTATION__ = 321;
-    public static final int __GO_DATATIP_INTERP_MODE__ = 322;
-    public static final int __GO_DATATIP_DISPLAY_FNC__ = 323;
-    public static final int __GO_DATATIP_BOX_MODE__ = 324;
-    public static final int __GO_DATATIP_LABEL_MODE__ = 325;
-    public static final int __GO_DATATIP_MARK__ = 326;
-    public static final int __GO_AMBIENTCOLOR__ = 327;
-    public static final int __GO_DIFFUSECOLOR__ = 328;
-    public static final int __GO_SPECULARCOLOR__ = 329;
-    public static final int __GO_COLOR_MATERIAL__ = 330;
-    public static final int __GO_MATERIAL_SHININESS__ = 331;
-    public static final int __GO_LIGHT__ = 332;
-    public static final int __GO_LIGHT_TYPE__ = 333;
-    public static final int __GO_DATATIPS__ = 334;
-    public static final int __GO_DATATIPS_COUNT__ = 335;
-    public static final int __GO_DATATIP_INDEXES__ = 336;
-    public static final int __GO_DATA_MODEL_DISPLAY_FUNCTION__ = 337;
-    public static final int __GO_DATA_MODEL_DISPLAY_FUNCTION_SIZE__ = 338;
-    public static final int __GO_RESIZE__ = 339;
-    public static final int __GO_TOOLBAR__ = 340;
-    public static final int __GO_TOOLBAR_VISIBLE__ = 341;
-    public static final int __GO_MENUBAR__ = 342;
-    public static final int __GO_MENUBAR_VISIBLE__ = 343;
-    public static final int __GO_INFOBAR_VISIBLE__ = 344;
-    public static final int __GO_DOCKABLE__ = 345;
-    public static final int __GO_LAYOUT__ = 346;
-    public static final int __GO_LAYOUT_SET__ = 347;
-    public static final int __GO_UI_TAB__ = 348;
-    public static final int __GO_UI_GRIDBAG_GRID__ = 349;
-    public static final int __GO_UI_GRIDBAG_WEIGHT__ = 350;
-    public static final int __GO_UI_GRIDBAG_FILL__ = 351;
-    public static final int __GO_UI_GRIDBAG_ANCHOR__ = 352;
-    public static final int __GO_UI_GRIDBAG_PADDING__ = 353;
-    public static final int __GO_UI_GRIDBAG_PREFERREDSIZE__ = 354;
-    public static final int __GO_UI_GRID_GRID__ = 355;
-    public static final int __GO_UI_GRID_PADDING__ = 356;
-    public static final int __GO_UI_BORDER_POSITION__ = 357;
-    public static final int __GO_GRID_OPT_GRID__ = 358;
-    public static final int __GO_GRID_OPT_PADDING__ = 359;
-    public static final int __GO_BORDER_OPT_PADDING__ = 360;
-    public static final int __GO_UI_FRAME_BORDER__ = 361;
-    public static final int __GO_UI_FRAME_BORDER_COLOR__ = 362;
-    public static final int __GO_UI_FRAME_BORDER_HIGHLIGHT_IN__ = 363;
-    public static final int __GO_UI_FRAME_BORDER_HIGHLIGHT_OUT__ = 364;
-    public static final int __GO_UI_FRAME_BORDER_IN_BORDER__ = 365;
-    public static final int __GO_UI_FRAME_BORDER_JUSTIFICATION__ = 366;
-    public static final int __GO_UI_FRAME_BORDER_OUT_BORDER__ = 367;
-    public static final int __GO_UI_FRAME_BORDER_ROUNDED__ = 368;
-    public static final int __GO_UI_FRAME_BORDER_SHADOW_IN__ = 369;
-    public static final int __GO_UI_FRAME_BORDER_SHADOW_OUT__ = 370;
-    public static final int __GO_UI_FRAME_BORDER_TITLE__ = 371;
-    public static final int __GO_UI_FRAME_BORDER_POSITION__ = 372;
-    public static final int __GO_UI_FRAME_BORDER_STYLE__ = 373;
-    public static final int __GO_UI_GROUP_NAME__ = 374;
-    public static final int __GO_UI_TITLE_POSITION__ = 375;
-    public static final int __GO_UI_TITLE_SCROLL__ = 376;
-    public static final int __GO_UI_FRAME_BORDER_TYPE__ = 377;
-    public static final int __GO_UI_SCROLLABLE__ = 378;
+    public static final int __GO_UI_TAB_STRING__ = 292;
+    public static final int __GO_UI_STRING_SIZE__ = 293;
+    public static final int __GO_UI_STRING_COLNB__ = 294;
+    public static final int __GO_UI_TOOLTIPSTRING__ = 295;
+    public static final int __GO_UI_TOOLTIPSTRING_SIZE__ = 296;
+    public static final int __GO_UI_SLIDERSTEP__ = 297;
+    public static final int __GO_UI_UNITS__ = 298;
+    public static final int __GO_UI_VALUE__ = 299;
+    public static final int __GO_UI_TAB_VALUE__ = 300;
+    public static final int __GO_UI_VALUE_SIZE__ = 301;
+    public static final int __GO_UI_VERTICALALIGNMENT__ = 302;
+    public static final int __GO_UIPARENTMENU__ = 303;
+    public static final int __GO_UICHILDMENU__ = 304;
+    public static final int __GO_UICHECKEDMENU__ = 305;
+    public static final int __GO_UI_CHECKED__ = 306;
+    public static final int __GO_UI_LABEL__ = 307;
+    public static final int __GO_UI_MNEMONIC__ = 308;
+    public static final int __GO_UI_ACCELERATOR__ = 309;
+    public static final int __GO_UI_SEPARATOR__ = 310;
+    public static final int __GO_UI_ICON__ = 311;
+    public static final int __GO_CONSOLE__ = 312;
+    public static final int __GO_SHOWHIDDENHANDLES__ = 313;
+    public static final int __GO_USEDEPRECATEDLF__ = 314;
+    public static final int __GO_WAITBAR__ = 315;
+    public static final int __GO_PROGRESSIONBAR__ = 316;
+    public static final int __GO_UI_MESSAGE__ = 317;
+    public static final int __GO_UI_MESSAGE_SIZE__ = 318;
+    public static final int __GO_DATATIP__ = 319;
+    public static final int __GO_DATATIP_DATA__ = 320;
+    public static final int __GO_DATATIP_ORIENTATION__ = 321;
+    public static final int __GO_DATATIP_3COMPONENT__ = 322;
+    public static final int __GO_DATATIP_AUTOORIENTATION__ = 323;
+    public static final int __GO_DATATIP_INTERP_MODE__ = 324;
+    public static final int __GO_DATATIP_DISPLAY_FNC__ = 325;
+    public static final int __GO_DATATIP_BOX_MODE__ = 326;
+    public static final int __GO_DATATIP_LABEL_MODE__ = 327;
+    public static final int __GO_DATATIP_MARK__ = 328;
+    public static final int __GO_AMBIENTCOLOR__ = 329;
+    public static final int __GO_DIFFUSECOLOR__ = 330;
+    public static final int __GO_SPECULARCOLOR__ = 331;
+    public static final int __GO_COLOR_MATERIAL__ = 332;
+    public static final int __GO_MATERIAL_SHININESS__ = 333;
+    public static final int __GO_LIGHT__ = 334;
+    public static final int __GO_LIGHT_TYPE__ = 335;
+    public static final int __GO_DATATIPS__ = 336;
+    public static final int __GO_DATATIPS_COUNT__ = 337;
+    public static final int __GO_DATATIP_INDEXES__ = 338;
+    public static final int __GO_DATA_MODEL_DISPLAY_FUNCTION__ = 339;
+    public static final int __GO_DATA_MODEL_DISPLAY_FUNCTION_SIZE__ = 340;
+    public static final int __GO_RESIZE__ = 341;
+    public static final int __GO_TOOLBAR__ = 342;
+    public static final int __GO_TOOLBAR_VISIBLE__ = 343;
+    public static final int __GO_MENUBAR__ = 344;
+    public static final int __GO_MENUBAR_VISIBLE__ = 345;
+    public static final int __GO_INFOBAR_VISIBLE__ = 346;
+    public static final int __GO_DOCKABLE__ = 347;
+    public static final int __GO_LAYOUT__ = 348;
+    public static final int __GO_LAYOUT_SET__ = 349;
+    public static final int __GO_UI_TAB__ = 350;
+    public static final int __GO_UI_GRIDBAG_GRID__ = 351;
+    public static final int __GO_UI_GRIDBAG_WEIGHT__ = 352;
+    public static final int __GO_UI_GRIDBAG_FILL__ = 353;
+    public static final int __GO_UI_GRIDBAG_ANCHOR__ = 354;
+    public static final int __GO_UI_GRIDBAG_PADDING__ = 355;
+    public static final int __GO_UI_GRIDBAG_PREFERREDSIZE__ = 356;
+    public static final int __GO_UI_GRID_GRID__ = 357;
+    public static final int __GO_UI_GRID_PADDING__ = 358;
+    public static final int __GO_UI_BORDER_POSITION__ = 359;
+    public static final int __GO_GRID_OPT_GRID__ = 360;
+    public static final int __GO_GRID_OPT_PADDING__ = 361;
+    public static final int __GO_BORDER_OPT_PADDING__ = 362;
+    public static final int __GO_UI_FRAME_BORDER__ = 363;
+    public static final int __GO_UI_FRAME_BORDER_COLOR__ = 364;
+    public static final int __GO_UI_FRAME_BORDER_HIGHLIGHT_IN__ = 365;
+    public static final int __GO_UI_FRAME_BORDER_HIGHLIGHT_OUT__ = 366;
+    public static final int __GO_UI_FRAME_BORDER_IN_BORDER__ = 367;
+    public static final int __GO_UI_FRAME_BORDER_JUSTIFICATION__ = 368;
+    public static final int __GO_UI_FRAME_BORDER_OUT_BORDER__ = 369;
+    public static final int __GO_UI_FRAME_BORDER_ROUNDED__ = 370;
+    public static final int __GO_UI_FRAME_BORDER_SHADOW_IN__ = 371;
+    public static final int __GO_UI_FRAME_BORDER_SHADOW_OUT__ = 372;
+    public static final int __GO_UI_FRAME_BORDER_TITLE__ = 373;
+    public static final int __GO_UI_FRAME_BORDER_POSITION__ = 374;
+    public static final int __GO_UI_FRAME_BORDER_STYLE__ = 375;
+    public static final int __GO_UI_GROUP_NAME__ = 376;
+    public static final int __GO_UI_TITLE_POSITION__ = 377;
+    public static final int __GO_UI_TITLE_SCROLL__ = 378;
+    public static final int __GO_UI_FRAME_BORDER_TYPE__ = 379;
+    public static final int __GO_UI_SCROLLABLE__ = 380;
 
 }
index 6547a50..af521e2 100644 (file)
@@ -1043,6 +1043,39 @@ public class Uicontrol extends GraphicObject {
      * @param string the string
      */
     public UpdateStatus setString(String[] string) {
+        //update needed ?
+
+        //both null or same object
+        if (this.string == string) {
+            return UpdateStatus.NoChange;
+        }
+
+        boolean needUpdate = false;
+        if (this.string.length == string.length) {
+            for (int i = 0 ; i < string.length ; i++) {
+
+                if (this.string[i] == null && string[i] == null) {
+                    continue;
+                }
+
+                //only one null
+                if ((this.string[i] == null || string[i] == null) &&
+                        this.string[i] != string[i]) {
+                    needUpdate = true;
+                    break;
+                }
+
+                if (this.string[i].equals(string[i]) == false) {
+                    needUpdate = true;
+                    break;
+                }
+            }
+        }
+
+        if (needUpdate == false) {
+            return UpdateStatus.NoChange;
+        }
+
         if (this.style == UicontrolStyle.LISTBOX || this.style == UicontrolStyle.POPUPMENU) {
             /* String can be set using a|b|c|d */
             if (string.length == 0) {
index e03894d..b10b238 100644 (file)
@@ -13,6 +13,8 @@
 package org.scilab.modules.graphic_objects.uicontrol.layer;
 
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_LAYER__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TAB_STRING__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TAB_VALUE__;
 
 import javax.swing.UIDefaults;
 import javax.swing.UIManager;
@@ -24,6 +26,11 @@ import org.scilab.modules.graphic_objects.utils.LayoutType;
  * @author Vincent COUVERT
  */
 public class Layer extends Uicontrol {
+    private enum LayerProperty {
+        LAYER_VALUE,
+        LAYER_STRING
+    };
+
 
     /**
      * Constructor
@@ -45,4 +52,41 @@ public class Layer extends Uicontrol {
         //layout
         setLayout(LayoutType.BORDER);
     }
+
+    public Object  getPropertyFromName(int property) {
+        if (property == __GO_UI_TAB_VALUE__) {
+            return LayerProperty.LAYER_VALUE;
+        } else if (property == __GO_UI_TAB_STRING__) {
+            return LayerProperty.LAYER_STRING;
+        } else {
+            return super.getPropertyFromName(property);
+        }
+    }
+
+    public UpdateStatus setProperty(Object property, Object value) {
+        if (!(property instanceof LayerProperty)) {
+            return super.setProperty(property, value);
+        }
+
+        LayerProperty p = (LayerProperty) property;
+        switch (p) {
+            case LAYER_STRING:
+                return setUiTabString((String[])value);
+            case LAYER_VALUE:
+                return setUiTabValue((Double[])value);
+            default:
+                return super.setProperty(property, value);
+        }
+    }
+
+    public UpdateStatus setUiTabString(String[] value) {
+        setString(value);
+        return UpdateStatus.NoChange;
+    }
+
+    public UpdateStatus setUiTabValue(Double[] value) {
+        setUiValue(value);
+        return UpdateStatus.NoChange;
+    }
+
 }
index f5ac9df..5593853 100644 (file)
@@ -12,6 +12,8 @@
 
 package org.scilab.modules.graphic_objects.uicontrol.tab;
 
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TAB_STRING__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TAB_VALUE__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TAB__;
 
 import javax.swing.UIDefaults;
@@ -25,6 +27,10 @@ import org.scilab.modules.graphic_objects.utils.LayoutType;
  * @author Vincent COUVERT
  */
 public class Tab extends Uicontrol {
+    private enum TabProperty {
+        TAB_VALUE,
+        TAB_STRING
+    };
 
     /**
      * Constructor
@@ -51,4 +57,39 @@ public class Tab extends Uicontrol {
         }
     }
 
+    public Object  getPropertyFromName(int property) {
+        if (property == __GO_UI_TAB_VALUE__) {
+            return TabProperty.TAB_VALUE;
+        } else if (property == __GO_UI_TAB_STRING__) {
+            return TabProperty.TAB_STRING;
+        } else {
+            return super.getPropertyFromName(property);
+        }
+    }
+
+    public UpdateStatus setProperty(Object property, Object value) {
+        if (!(property instanceof TabProperty)) {
+            return super.setProperty(property, value);
+        }
+
+        TabProperty p = (TabProperty) property;
+        switch (p) {
+            case TAB_STRING:
+                return setUiTabString((String[])value);
+            case TAB_VALUE:
+                return setUiTabValue((Double[])value);
+            default:
+                return super.setProperty(property, value);
+        }
+    }
+
+    public UpdateStatus setUiTabString(String[] value) {
+        setString(value);
+        return UpdateStatus.NoChange;
+    }
+
+    public UpdateStatus setUiTabValue(Double[] value) {
+        setUiValue(value);
+        return UpdateStatus.NoChange;
+    }
 }
index 94eea8b..b1fbd5a 100755 (executable)
@@ -326,6 +326,7 @@ __GO_UI_MAX__
 __GO_UI_MIN__
 __GO_UI_RELIEF__
 __GO_UI_STRING__
+__GO_UI_TAB_STRING__
 __GO_UI_STRING_SIZE__
 __GO_UI_STRING_COLNB__
 __GO_UI_TOOLTIPSTRING__
@@ -333,6 +334,7 @@ __GO_UI_TOOLTIPSTRING_SIZE__
 __GO_UI_SLIDERSTEP__
 __GO_UI_UNITS__
 __GO_UI_VALUE__
+__GO_UI_TAB_VALUE__
 __GO_UI_VALUE_SIZE__
 __GO_UI_VERTICALALIGNMENT__
 
index 9209c20..a47faff 100644 (file)
@@ -54,6 +54,13 @@ int set_constraints_property(void* _pvCtx, int iObjUID, void* _pvData, int value
         char** pstField = NULL;
         char* pstType = NULL;
 
+
+        if (valueType != sci_tlist)
+        {
+            Scierror(999, _("Wrong type for '%s' property: '%s' expected.\n"), "constraints", "tlist");
+            return 1;
+        }
+
         sciErr = getListItemAddress(_pvCtx, piAddrList, 1, &piAddr);
         if (sciErr.iErr)
         {
index 1d26e07..a9995ae 100644 (file)
@@ -19,14 +19,10 @@ import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProp
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_GRID_OPT_GRID__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_GRID_OPT_PADDING__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_LAYOUT__;
-import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_PARENT__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_POSITION__;
-import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_STYLE__;
-import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TYPE__;
-import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UICONTROL__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TAG__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_ENABLE__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER__;
-import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_LAYER__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_STRING__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_VALUE__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_VISIBLE__;
@@ -194,6 +190,7 @@ public class SwingScilabFrame extends JPanel implements SwingViewObject, SimpleF
             add(canvas, BorderLayout.CENTER);
             return;
         }
+
         Uicontrol uicontrol = (Uicontrol) GraphicModel.getModel().getObjectFromId(member.getId());
         if (getLayout() instanceof BorderLayout) {
             switch (uicontrol.getBorderPositionAsEnum()) {
@@ -302,6 +299,9 @@ public class SwingScilabFrame extends JPanel implements SwingViewObject, SimpleF
         } else {
             this.add((Component) member);
         }
+
+        //force update position
+        member.update(__GO_POSITION__, GraphicController.getController().getProperty(member.getId(), __GO_POSITION__));
     }
 
     /**
@@ -779,13 +779,10 @@ public class SwingScilabFrame extends JPanel implements SwingViewObject, SimpleF
                         return;
                     }
 
-                    int[] intValue = new int[doubleValue.length];
-                    for (int k = 0; k < doubleValue.length; k++) {
-                        intValue[k] = doubleValue[k].intValue();
-                    }
+                    Integer val = doubleValue[0].intValue();
 
                     //if intValue[0] is out of bounds, do not update view but let "wrong" value in model
-                    layer.setActiveLayer(intValue[0]);
+                    layer.setActiveLayer(val);
                 }
                 break;
             }
@@ -850,23 +847,27 @@ public class SwingScilabFrame extends JPanel implements SwingViewObject, SimpleF
             }
             case __GO_VISIBLE__: {
                 boolean needUpdate = true;
-                Integer parent = (Integer) controller.getProperty(uid, __GO_PARENT__);
-                if (parent != 0) {
-                    Integer type = (Integer) controller.getProperty(parent, __GO_TYPE__);
-                    if (type == __GO_UICONTROL__) {
-                        Integer style = (Integer) controller.getProperty(parent, __GO_STYLE__);
-                        if (style == __GO_UI_LAYER__) {
-                            //no no no don't touch visible on layer children !
-                            Boolean visible = (Boolean) value;
-                            SwingScilabLayer layer = (SwingScilabLayer) SwingView.getFromId(parent);
-                            Boolean isActive = layer.isLayerActive(this);
-                            if (isActive != visible) {
-                                controller.setProperty(uid, __GO_VISIBLE__, isActive);
-                            }
-
-                            needUpdate = false;
-                        }
+                Component parent = ((SwingScilabFrame)this).getParent();
+                if (parent instanceof SwingScilabLayer) {
+                    //no no no don't touch visible on layer children !
+                    Boolean visible = (Boolean) value;
+                    SwingScilabLayer layer = (SwingScilabLayer) parent;
+                    Boolean isActive = layer.isLayerActive(this);
+                    if (isActive != visible) {
+                        controller.setProperty(uid, __GO_VISIBLE__, isActive);
+                    }
+
+                    needUpdate = false;
+                } else if (parent instanceof SwingScilabTabGroup) {
+                    //no no no don't touch visible on layer children !
+                    Boolean visible = (Boolean) value;
+                    SwingScilabTabGroup layer = (SwingScilabTabGroup) parent;
+                    Boolean isActive = layer.isTabActive(this);
+                    if (isActive != visible) {
+                        controller.setProperty(uid, __GO_VISIBLE__, isActive);
                     }
+
+                    needUpdate = false;
                 }
 
                 if (needUpdate) {
@@ -875,6 +876,16 @@ public class SwingScilabFrame extends JPanel implements SwingViewObject, SimpleF
 
                 break;
             }
+            case __GO_TAG__ : {
+                Component parent = ((SwingScilabFrame)this).getParent();
+                if (parent instanceof SwingScilabLayer) {
+                    SwingScilabLayer layer = (SwingScilabLayer)parent;
+                    layer.updateModelProperties(null, layer.getActiveLayer());
+                } else if (parent instanceof SwingScilabTabGroup) {
+                    ((SwingScilabTabGroup)parent).updateModelProperties();
+                }
+                break;
+            }
             default:
                 SwingViewWidget.update(this, property, value);
                 break;
index a76a7a7..0dd17a5 100644 (file)
@@ -2,9 +2,10 @@ package org.scilab.modules.gui.bridge.frame;
 
 
 
-import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_VALUE__;
-import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_VISIBLE__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TAG__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TAB_STRING__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TAB_VALUE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_VISIBLE__;
 
 import java.awt.CardLayout;
 import java.awt.Component;
@@ -25,25 +26,22 @@ public class SwingScilabLayer extends SwingScilabFrame {
     public void addMember(SwingScilabFrame member) {
         String name = member.getId().toString();
         member.setName(name);
-        layers.add(member.getId());
+        layers.add(0, member.getId());
         add(member, name);
         revalidate();
-        //active the first child
-        if (getActiveLayer() == -1) {
-            setActiveLayer(1);
-        }
+        //active added child
+        setActiveLayer(1);
     }
 
     public void addMember(SwingScilabScrollableFrame member) {
         String name = member.getId().toString();
         member.setName(name);
-        layers.add(member.getId());
+        layers.add(0, member.getId());
         add(member, name);
         revalidate();
-        //active the first child
-        if (getActiveLayer() == -1) {
-            setActiveLayer(1);
-        }
+
+        //active added child
+        setActiveLayer(1);
     }
 
     public Integer getActiveLayer() {
@@ -64,11 +62,11 @@ public class SwingScilabLayer extends SwingScilabFrame {
     }
 
     private Component getLayerFromIndex(Integer layer) {
-        if (layer < 1 || layer > getComponentCount()) {
+        if (layer == null || layer < 1 || layer > getComponentCount()) {
             return null;
         }
 
-        return getComponent(layer - 1);
+        return getComponent(getComponentCount() - layer);
     }
 
     private Integer getLayerIndex(Component layer) {
@@ -108,9 +106,6 @@ public class SwingScilabLayer extends SwingScilabFrame {
                 active = 1;
             }
         }
-
-        //update model with new index
-        GraphicController.getController().setProperty(getId(),  __GO_UI_VALUE__, new Double[] {active.doubleValue()});
     }
 
     public void removeMember(SwingScilabFrame member) {
@@ -125,9 +120,6 @@ public class SwingScilabLayer extends SwingScilabFrame {
                 active = 1;
             }
         }
-
-        //update model with new index
-        GraphicController.getController().setProperty(getId(),  __GO_UI_VALUE__, new Double[] {active.doubleValue()});
     }
 
     public boolean setActiveLayer(Integer layerPos) {
@@ -136,12 +128,13 @@ public class SwingScilabLayer extends SwingScilabFrame {
         }
 
         Integer previous = getActiveLayer();
+
         if (setActiveLayer(layers.get(layerPos - 1).toString()) == false) {
             return false;
         }
 
         Integer next = getActiveLayer();
-        updateChildrenVisible(previous, next);
+        updateModelProperties(previous, next);
         return true;
     }
 
@@ -165,19 +158,22 @@ public class SwingScilabLayer extends SwingScilabFrame {
 
         return false;
     }
-    private void updateChildrenVisible(Integer previous, Integer next) {
+
+    public void updateModelProperties(Integer previous, Integer next) {
         SwingViewObject previousFrame = (SwingViewObject)getLayerFromIndex(previous);
         SwingViewObject nextFrame = (SwingViewObject) getLayerFromIndex(next);
 
+        String name = null;
         if (previousFrame != null) {
             GraphicController.getController().setProperty(previousFrame.getId(), __GO_VISIBLE__, false);
         }
 
         if (nextFrame != null) {
             GraphicController.getController().setProperty(nextFrame.getId(), __GO_VISIBLE__, true);
+            name = (String)GraphicController.getController().getProperty(nextFrame.getId(), __GO_TAG__);
         }
 
-        GraphicController.getController().setProperty(getId(),  __GO_UI_VALUE__, new Double[] {next.doubleValue()});
-
+        GraphicController.getController().setProperty(getId(),  __GO_UI_TAB_VALUE__, new Double[] {next.doubleValue()});
+        GraphicController.getController().setProperty(getId(),  __GO_UI_TAB_STRING__, new String[] {name});
     }
 }
index cdeb2aa..80df1a9 100644 (file)
 
 package org.scilab.modules.gui.bridge.tab;
 
-import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_CALLBACKTYPE__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_CALLBACK__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_CALLBACKTYPE__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_POSITION__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTANGLE__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTNAME__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTSIZE__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTWEIGHT__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_STRING__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TAB_STRING__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TITLE_POSITION__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TITLE_SCROLL__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_VALUE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TAB_VALUE__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_VISIBLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TAG__;
 
 import java.awt.Component;
 import java.awt.Font;
@@ -54,20 +57,8 @@ public class SwingScilabTabGroup extends JTabbedPane implements SwingViewObject
 
         listener = new ChangeListener() {
             public void stateChanged(ChangeEvent e) {
-                GraphicController controller = GraphicController.getController();
-                SwingScilabTabGroup me = (SwingScilabTabGroup)e.getSource();
-                int index = me.getSelectedIndex();
-
-                //get current id
-                Double[] prev = (Double[])controller.getProperty(me.getId(), __GO_UI_VALUE__);
-                Integer previous = null;
-                if (prev != null && prev[0] != null) {
-                    previous = ((SwingViewObject)getComponentAt(prev[0].intValue() - 1)).getId();
-                }
-                //get next id
-                Integer next = ((SwingViewObject)getComponentAt(index)).getId();
                 //update value, string and children visible
-                updateModelProperties(previous, next, index);
+                updateModelProperties();
 
                 //call callback function if exists
                 if (callback != null) {
@@ -89,11 +80,11 @@ public class SwingScilabTabGroup extends JTabbedPane implements SwingViewObject
 
     public void update(int property, Object value) {
         switch (property) {
-            case __GO_VISIBLE__ :
+            case __GO_VISIBLE__:
                 setVisible((Boolean) value);
                 break;
-            case __GO_UI_TITLE_POSITION__ :
-                Integer pos = (Integer)value;
+            case __GO_UI_TITLE_POSITION__:
+                Integer pos = (Integer) value;
                 switch (Uicontrol.TitlePositionType.intToEnum(pos)) {
                     case BOTTOM:
                         setTabPlacement(JTabbedPane.BOTTOM);
@@ -110,27 +101,26 @@ public class SwingScilabTabGroup extends JTabbedPane implements SwingViewObject
                         break;
                 }
                 break;
-            case __GO_UI_TITLE_SCROLL__ :
-                if ((Boolean)value) {
+            case __GO_UI_TITLE_SCROLL__:
+                if ((Boolean) value) {
                     setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
                 } else {
                     setTabLayoutPolicy(JTabbedPane.WRAP_TAB_LAYOUT);
                 }
                 break;
-            case __GO_UI_FONTNAME__ :
-            case __GO_UI_FONTANGLE__ :
-            case __GO_UI_FONTSIZE__ :
-            case __GO_UI_FONTWEIGHT__ : {
-                for (int i = 0 ; i < getTabCount() ; i++) {
+            case __GO_UI_FONTNAME__:
+            case __GO_UI_FONTANGLE__:
+            case __GO_UI_FONTSIZE__:
+            case __GO_UI_FONTWEIGHT__: {
+                for (int i = 0; i < getTabCount(); i++) {
                     setTitleAt(i, null);
                 }
                 break;
             }
-            case __GO_POSITION__ : {
+            case __GO_POSITION__: {
                 Double[] positions = (Double[]) value;
                 setSize(positions[2].intValue(), positions[3].intValue());
-                Position javaPosition = PositionConverter.scilabToJava(new Position(positions[0].intValue(), positions[1].intValue()),
-                                        new Size(getSize().width, getSize().height), getParent());
+                Position javaPosition = PositionConverter.scilabToJava(new Position(positions[0].intValue(), positions[1].intValue()), new Size(getSize().width, getSize().height), getParent());
                 setLocation(javaPosition.getX(), javaPosition.getY());
                 break;
             }
@@ -140,22 +130,18 @@ public class SwingScilabTabGroup extends JTabbedPane implements SwingViewObject
                     return;
                 }
 
-                int[] intValue = new int[doubleValue.length];
-                for (int k = 0; k < doubleValue.length; k++) {
-                    intValue[k] = doubleValue[k].intValue();
-                }
-
+                Integer val = doubleValue[0].intValue();
                 //if intValue[0] is out of bounds, do not update view but let "wrong" value in model
-                if (intValue[0] > 0 && intValue[0] <= getTabCount()) {
-                    setSelectedIndex(intValue[0] - 1);
+                if (val > 0 && val <= getTabCount()) {
+                    setSelectedIndex(val - 1);
                 }
                 break;
             }
             case __GO_UI_STRING__: {
                 //set tab by his name
-                String name = ((String[])value)[0];
-                for (int i = 0 ; i < getTabCount() ; i++) {
-                    JLabel current = (JLabel)getTabComponentAt(i);
+                String name = ((String[]) value)[0];
+                for (int i = 0; i < getTabCount(); i++) {
+                    JLabel current = (JLabel) getTabComponentAt(i);
                     if (current != null && current.getText() != null && current.getText().equals(name)) {
                         setSelectedIndex(i);
                         break;
@@ -178,7 +164,7 @@ public class SwingScilabTabGroup extends JTabbedPane implements SwingViewObject
                 }
                 break;
             }
-            default : {
+            default: {
             }
         }
     }
@@ -186,10 +172,26 @@ public class SwingScilabTabGroup extends JTabbedPane implements SwingViewObject
     public void insertTab(String title, Icon icon, Component component, String tooltip, int index) {
         super.insertTab(title, icon, component, tooltip, index);
         setTitleAt(index, title);
+        setSelectedIndex(index);
     }
 
-    private void updateModelProperties(Integer previous, Integer next, Integer newIndex) {
+    public void updateModelProperties() {
         GraphicController controller = GraphicController.getController();
+
+        int index = getSelectedIndex();
+
+        //get current id
+        Double[] prev = (Double[]) controller.getProperty(getId(), __GO_UI_VALUE__);
+        Integer previous = null;
+        if (prev != null && prev[0] != null) {
+            if (prev[0] == 0) {
+                prev[0] = 1.0;
+            }
+            previous = ((SwingViewObject) getComponentAt(prev[0].intValue() - 1)).getId();
+        }
+        //get next id
+        Integer next = ((SwingViewObject) getComponentAt(index)).getId();
+
         if (previous != null && previous != 0) {
             //set visible false en previous selected children
             controller.setProperty(previous, __GO_VISIBLE__, false);
@@ -201,19 +203,18 @@ public class SwingScilabTabGroup extends JTabbedPane implements SwingViewObject
         }
 
         //update value with new selected tab index ( 1-indexed )
-        controller.setProperty(getId(), __GO_UI_VALUE__, new Double[] {(double)(newIndex + 1)});
+        controller.setProperty(getId(), __GO_UI_TAB_VALUE__, new Double[] { (double) (index + 1) });
         //update string with new selected tab name
-        String[] tabName = (String[])controller.getProperty(next, __GO_UI_STRING__);
-        controller.setProperty(getId(), __GO_UI_STRING__, tabName);
-
+        String tabName = (String) controller.getProperty(next, __GO_TAG__);
+        controller.setProperty(getId(), __GO_UI_TAB_STRING__, new String[] {tabName});
     }
 
     public void setTitleAt(int index, String title) {
         //super.setTitleAt(index, title);
-        String fontName = (String)GraphicController.getController().getProperty(getId(), __GO_UI_FONTNAME__);
-        Double fontSize = (Double)GraphicController.getController().getProperty(getId(), __GO_UI_FONTSIZE__);
-        String fontAngle = (String)GraphicController.getController().getProperty(getId(), __GO_UI_FONTANGLE__);
-        String fontWeight = (String)GraphicController.getController().getProperty(getId(), __GO_UI_FONTWEIGHT__);
+        String fontName = (String) GraphicController.getController().getProperty(getId(), __GO_UI_FONTNAME__);
+        Double fontSize = (Double) GraphicController.getController().getProperty(getId(), __GO_UI_FONTSIZE__);
+        String fontAngle = (String) GraphicController.getController().getProperty(getId(), __GO_UI_FONTANGLE__);
+        String fontWeight = (String) GraphicController.getController().getProperty(getId(), __GO_UI_FONTWEIGHT__);
 
         int fontStyle = Font.PLAIN;
         if (fontAngle.equals("italic")) {
@@ -227,16 +228,13 @@ public class SwingScilabTabGroup extends JTabbedPane implements SwingViewObject
         JLabel label = null;
         Component comp = getTabComponentAt(index);
         if (comp instanceof JLabel) {
-            label = (JLabel)comp;
+            label = (JLabel) comp;
         } else {
             label = new JLabel();
         }
 
         Font oldFont = label.getFont();
-        Font font = new Font(
-            fontName.equals("") == false ? fontName : oldFont.getFontName(),
-            fontStyle,
-            fontSize != 0.0 ? fontSize.intValue() : oldFont.getSize());
+        Font font = new Font(fontName.equals("") == false ? fontName : oldFont.getFontName(), fontStyle, fontSize != 0.0 ? fontSize.intValue() : oldFont.getSize());
 
         label.setFont(font);
 
@@ -246,4 +244,13 @@ public class SwingScilabTabGroup extends JTabbedPane implements SwingViewObject
         setTabComponentAt(index, label);
     }
 
+    public Boolean isTabActive(Component tab) {
+        if (getSelectedComponent() == tab) {
+            return true;
+        }
+
+        return false;
+    }
+
+
 }
diff --git a/scilab/modules/gui/tests/unit_tests/tab_layer.tag.dia.ref b/scilab/modules/gui/tests/unit_tests/tab_layer.tag.dia.ref
new file mode 100644 (file)
index 0000000..608232e
--- /dev/null
@@ -0,0 +1,65 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Antoine ELIAS 
+// 
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution.  The terms
+// are also available at    
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+function tabs = createTab(uiType)
+    f = figure("dockable", "off" ,"infobar_visible", "off", "toolbar_visible", "off", "menubar_visible", "off", "default_axes", "off", "layout", "border")
+    f.axes_size = [470, 410];
+    tabs = uicontrol(f, "style", uiType, "tag" ,"tab", "constraints", createConstraints("border", "center"));
+    tab1 = uicontrol(tabs, "style", "frame", "tag", "tab 1", "string", "tab 1", "layout", "border");
+    uicontrol(tab1, "string", "button 1");
+    tab2 = uicontrol(tabs, "style", "frame", "tag", "tab 2", "string", "tab 2", "layout", "border");
+    uicontrol(tab2, "string", "button 2");
+    tab3 = uicontrol(tabs, "style", "frame", "tag", "tab 3", "string", "tab 3", "layout", "border");
+    uicontrol(tab3, "string", "button 3");
+endfunction
+//tab
+tab = createTab("tab");
+assert_checkequal(tab.value, 1);
+assert_checkequal(tab.string, "tab 3");
+tab.value = 2;
+assert_checkequal(tab.value, 2);
+assert_checkequal(tab.string, "tab 2");
+tab.value = 3;
+assert_checkequal(tab.value, 3);
+assert_checkequal(tab.string, "tab 1");
+tab.value = 1;
+assert_checkequal(tab.value, 1);
+assert_checkequal(tab.string, "tab 3");
+tab.children(1).tag = "newTag";
+assert_checkequal(tab.value, 1);
+assert_checkequal(tab.string, "newTag");
+tab.value = 3;
+assert_checkequal(tab.value, 3);
+assert_checkequal(tab.string, "tab 1");
+tab.value = 1;
+assert_checkequal(tab.value, 1);
+assert_checkequal(tab.string, "newTag");
+delete(gcf());
+//layer
+layer = createTab("layer");
+assert_checkequal(layer.value, 1);
+assert_checkequal(layer.string, "tab 3");
+layer.value = 2;
+assert_checkequal(layer.value, 2);
+assert_checkequal(layer.string, "tab 2");
+layer.value = 3;
+assert_checkequal(layer.value, 3);
+assert_checkequal(layer.string, "tab 1");
+layer.value = 1;
+assert_checkequal(layer.value, 1);
+assert_checkequal(layer.string, "tab 3");
+layer.children(1).tag = "newTag";
+assert_checkequal(layer.value, 1);
+assert_checkequal(layer.string, "newTag");
+layer.value = 3;
+assert_checkequal(layer.value, 3);
+assert_checkequal(layer.string, "tab 1");
+layer.value = 1;
+assert_checkequal(layer.value, 1);
+assert_checkequal(layer.string, "newTag");
+delete(gcf());
diff --git a/scilab/modules/gui/tests/unit_tests/tab_layer.tag.tst b/scilab/modules/gui/tests/unit_tests/tab_layer.tag.tst
new file mode 100644 (file)
index 0000000..4cead72
--- /dev/null
@@ -0,0 +1,79 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Antoine ELIAS 
+// 
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution.  The terms
+// are also available at    
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function tabs = createTab(uiType)
+    f = figure("dockable", "off" ,"infobar_visible", "off", "toolbar_visible", "off", "menubar_visible", "off", "default_axes", "off", "layout", "border")
+    f.axes_size = [470, 410];
+
+    tabs = uicontrol(f, "style", uiType, "tag" ,"tab", "constraints", createConstraints("border", "center"));
+
+    tab1 = uicontrol(tabs, "style", "frame", "tag", "tab 1", "string", "tab 1", "layout", "border");
+    uicontrol(tab1, "string", "button 1");
+
+    tab2 = uicontrol(tabs, "style", "frame", "tag", "tab 2", "string", "tab 2", "layout", "border");
+    uicontrol(tab2, "string", "button 2");
+
+    tab3 = uicontrol(tabs, "style", "frame", "tag", "tab 3", "string", "tab 3", "layout", "border");
+    uicontrol(tab3, "string", "button 3");
+endfunction
+
+//tab
+tab = createTab("tab");
+
+assert_checkequal(tab.value, 1);
+assert_checkequal(tab.string, "tab 3");
+tab.value = 2;
+assert_checkequal(tab.value, 2);
+assert_checkequal(tab.string, "tab 2");
+tab.value = 3;
+assert_checkequal(tab.value, 3);
+assert_checkequal(tab.string, "tab 1");
+tab.value = 1;
+assert_checkequal(tab.value, 1);
+assert_checkequal(tab.string, "tab 3");
+
+tab.children(1).tag = "newTag";
+assert_checkequal(tab.value, 1);
+assert_checkequal(tab.string, "newTag");
+tab.value = 3;
+assert_checkequal(tab.value, 3);
+assert_checkequal(tab.string, "tab 1");
+tab.value = 1;
+assert_checkequal(tab.value, 1);
+assert_checkequal(tab.string, "newTag");
+
+delete(gcf());
+
+//layer
+layer = createTab("layer");
+
+assert_checkequal(layer.value, 1);
+assert_checkequal(layer.string, "tab 3");
+layer.value = 2;
+assert_checkequal(layer.value, 2);
+assert_checkequal(layer.string, "tab 2");
+layer.value = 3;
+assert_checkequal(layer.value, 3);
+assert_checkequal(layer.string, "tab 1");
+layer.value = 1;
+assert_checkequal(layer.value, 1);
+assert_checkequal(layer.string, "tab 3");
+
+layer.children(1).tag = "newTag";
+assert_checkequal(layer.value, 1);
+assert_checkequal(layer.string, "newTag");
+
+layer.value = 3;
+assert_checkequal(layer.value, 3);
+assert_checkequal(layer.string, "tab 1");
+layer.value = 1;
+assert_checkequal(layer.value, 1);
+assert_checkequal(layer.string, "newTag");
+
+delete(gcf());