* Bug 13962 fixed: preselecting a groupnamed radiobutton impossible after exec>1 94/19194/5
Adeline CARNIS [Thu, 16 Mar 2017 09:54:50 +0000 (10:54 +0100)]
  http://bugzilla.scilab.org/13962

Change-Id: I4ee9b2eedcf0b58c06ade22fa1319334c19b4b5a

scilab/CHANGES.md
scilab/modules/gui/src/java/org/scilab/modules/gui/bridge/groupmanager/GroupManager.java
scilab/modules/gui/src/java/org/scilab/modules/gui/bridge/radiobutton/SwingScilabRadioButton.java
scilab/modules/gui/tests/nonreg_tests/bug_13962.tst [new file with mode: 0644]

index 90d57ec..93fed0e 100644 (file)
@@ -419,6 +419,7 @@ the [development mailing list](dev@lists.scilab.org) for a particular toolbox.
 * [#13581](http://bugzilla.scilab.org/show_bug.cgi?id=13581): The example of `inistate()` help page did not work on Windows 64bit.
 * [#13592](http://bugzilla.scilab.org/show_bug.cgi?id=13592): In an axes in a uicontrol frame, setting a `legend` interactively might not follow the mouse accurately.
 * [#13900](http://bugzilla.scilab.org/show_bug.cgi?id=13900): `nanmin` and `nanmax` were useless duplicates of `min` and `max`
+* [#13962](http://bugzilla.scilab.org/show_bug.cgi?id=13962): Preselecting a groupnamed radiobutton was impossible after having created it already once.
 * [#13979](http://bugzilla.scilab.org/show_bug.cgi?id=13979): A variable whose name is longer than 24 characters could not be cleared.
 * [#14221](http://bugzilla.scilab.org/show_bug.cgi?id=14221): `msprintf` and `mprintf` ignored row-wise processing with `%%`.
 * [#14254](http://bugzilla.scilab.org/show_bug.cgi?id=14254): When installing an ATOMS module that is not locally registered and available, the error message was unclear.
index 71da651..2018d8c 100644 (file)
@@ -30,6 +30,7 @@ public class GroupManager {
         removeFromGroup(obj);
 
         ButtonGroup group = buttonGroup.get(groupName);
+
         if (group == null) {
             group = new ButtonGroup();
             buttonGroup.put(groupName, group);
@@ -54,4 +55,10 @@ public class GroupManager {
         ButtonGroup group = buttonGroup.get(groupname);
         group.setSelected(model, status);
     }
+
+    public boolean isSelected(String groupname) {
+        ButtonGroup group = buttonGroup.get(groupname);
+        ButtonModel model = group.getSelection();
+        return group.isSelected(model);
+    }
 }
index 5dd4461..5fa5a85 100644 (file)
@@ -95,7 +95,7 @@ public class SwingScilabRadioButton extends JRadioButton implements SwingViewObj
                             Integer id = 0;
                             if (aButton instanceof SwingScilabRadioButton) {
                                 id = ((SwingScilabRadioButton) aButton).getId();
-                            } else if (aButton instanceof SwingScilabRadioButton) {
+                            } else if (aButton instanceof SwingScilabCheckBox) {
                                 id = ((SwingScilabCheckBox) aButton).getId();
                             } else {
                                 continue;
@@ -353,6 +353,11 @@ public class SwingScilabRadioButton extends JRadioButton implements SwingViewObj
                     GroupManager.getGroupManager().removeFromGroup(this);
                 } else {
                     GroupManager.getGroupManager().addToGroup(groupName, this);
+                    boolean select = GroupManager.getGroupManager().isSelected(groupName);
+                    Double[] Value = (Double[]) controller.getProperty(uid, __GO_UI_VALUE__);
+                    if (select && Value[0] == 1) {
+                        setChecked(true);
+                    }
                 }
                 break;
             }
diff --git a/scilab/modules/gui/tests/nonreg_tests/bug_13962.tst b/scilab/modules/gui/tests/nonreg_tests/bug_13962.tst
new file mode 100644 (file)
index 0000000..15393cb
--- /dev/null
@@ -0,0 +1,42 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2017 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- TEST WITH GRAPHIC -->
+
+// <-- INTERACTIVE TEST -->
+
+// <-- Non-regression test for bug 13962 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/13962
+//
+// <-- Short Description -->
+// If the groupname and value properties were setted to radiobutton creation, 
+// then it was only selected at the first execution.
+
+function test()
+f = createWindow();
+f.figure_name = "test";
+f.axes_size = [200 200];
+f.tag = "test";
+f.background = -2;
+
+r1 = uicontrol(f, "style", "radiobutton", ... 
+"string", "radiobutton1", ...
+"groupname", "testgroup", ...
+"value", 1, ...
+"tag", "r1", ...
+"position", [0 90 200 20]);
+endfunction
+
+test();
+// check that the radiobutton is well selected.
+close();
+
+test();
+// check that the radiobutton is well selected.
+close();