fix trouble in combobox events, remove debug messages 09/13909/2
Antoine ELIAS [Wed, 5 Mar 2014 10:04:56 +0000 (11:04 +0100)]
Change-Id: I58cb8277c5420bef4ebcdba854e8b8e066bf7325

scilab/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/XMLDomLoader.java
scilab/modules/gui/src/java/org/scilab/modules/gui/bridge/popupmenu/SwingScilabPopupMenu.java

index b5cd905..a0c7bec 100644 (file)
@@ -575,7 +575,6 @@ public class XMLDomLoader {
         for (int i = 0 ; i < attr.getLength() ; i++) {
             Node prop = attr.item(i);
             Pair<Integer, ModelType> pair = MenuPropToGO.get(prop.getNodeName());
-            System.out.println("node : " + prop.getNodeName());
             ModelType modelType = pair.getSecond();
             switch (modelType) {
                 case BOOLEAN:
index 6e1e4ea..c74c95c 100644 (file)
@@ -296,6 +296,12 @@ public class SwingScilabPopupMenu extends JComboBox implements SwingViewObject,
         GraphicController controller = GraphicController.getController();
         Integer nbCol = (Integer)controller.getProperty(getId(), __GO_UI_STRING_COLNB__);
 
+        /* Remove the listener to avoid the callback to be executed */
+        removeActionListener(defaultActionListener);
+
+        /* Clear previous items */
+        removeAllItems();
+
         colorBox = false;
         if (nbCol == 2) {
             //combocolor ?
@@ -320,14 +326,6 @@ public class SwingScilabPopupMenu extends JComboBox implements SwingViewObject,
 
             setRenderer(colorRenderer);
 
-            /* Remove the listener to avoid the callback to be executed */
-            if (callback != null) {
-                removeActionListener(defaultActionListener);
-            }
-
-            /* Clear previous items */
-            removeAllItems();
-
             int colorOffset = text.length / 2;
             for (int i = 0 ; i < colorOffset ; i++) {
                 try {
@@ -340,42 +338,26 @@ public class SwingScilabPopupMenu extends JComboBox implements SwingViewObject,
                     break;
                 }
             }
-
-            controller.setProperty(uid, __GO_UI_VALUE__, new Double[] {});
-            /* Remove the listener to avoid the callback to be executed */
-            if (callback != null) {
-                addActionListener(defaultActionListener);
-            }
         }
 
         //default case or colorBox failed
         if (colorBox == false) {
             setRenderer(textRenderer);
 
-            /* Remove the listener to avoid the callback to be executed */
-            if (callback != null) {
-                removeActionListener(defaultActionListener);
-            }
-
-            /* Clear previous items */
-            removeAllItems();
-
             if (text.length == 1 && text[0].length() == 0) {
                 /* Clear the popup items */
-                return;
             } else {
                 for (int i = 0; i < text.length; i++) {
                     addItem(new SwingScilabTextItem(text[i]));
                 }
             }
-
-            setSelectedIndex(-1);
-
-            /* Remove the listener to avoid the callback to be executed */
-            if (callback != null) {
-                addActionListener(defaultActionListener);
-            }
         }
+
+        setSelectedIndex(-1);
+        //take care to add listener BEFORE set Property to avoid multiple remove and multiple add
+        addActionListener(defaultActionListener);
+        controller.setProperty(uid, __GO_UI_VALUE__, new Double[] {});
+        /* Remove the listener to avoid the callback to be executed */
     }
 
     /**
@@ -457,7 +439,7 @@ public class SwingScilabPopupMenu extends JComboBox implements SwingViewObject,
 
                 //[] or 0 -> no selection
                 if (doubleValue.length == 0 || doubleValue[0] == 0) {
-                    setSelectedIndex(-1);
+                    setUserSelectedIndex(-1);
                     return;
                 }