]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fixed selecting after changes aren't automatically updated from the server (client...
authorJouni Koivuviita <jouni.koivuviita@itmill.com>
Wed, 11 Jul 2007 06:36:43 +0000 (06:36 +0000)
committerJouni Koivuviita <jouni.koivuviita@itmill.com>
Wed, 11 Jul 2007 06:36:43 +0000 (06:36 +0000)
svn changeset:1836/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/ui/ITwinColSelect.java

index 2b9e2f3f443b244cee94f775ab39934c3ba36b76..b710b00b63e9b04083316838c616bc392524c0d2 100644 (file)
@@ -78,20 +78,24 @@ public class ITwinColSelect extends IOptionGroupBase {
                return selectedItemKeys.toArray();\r
        }\r
        \r
-       private String[] getItemsToAdd() {\r
-               String[] selectedIndexes = new String[options.getItemCount()];\r
+       private boolean[] getItemsToAdd() {\r
+               boolean[] selectedIndexes = new boolean[options.getItemCount()];\r
                for(int i = 0; i < options.getItemCount(); i++) {\r
                        if(options.isItemSelected(i))\r
-                               selectedIndexes[i] = options.getValue(i);\r
+                               selectedIndexes[i] = true;\r
+                       else\r
+                               selectedIndexes[i] = false;\r
                }\r
                return selectedIndexes;\r
        }\r
        \r
-       private String[] getItemsToRemove() {\r
-               String[] selectedIndexes = new String[selections.getItemCount()];\r
+       private boolean[] getItemsToRemove() {\r
+               boolean[] selectedIndexes = new boolean[selections.getItemCount()];\r
                for(int i = 0; i < selections.getItemCount(); i++) {\r
                        if(selections.isItemSelected(i))\r
-                               selectedIndexes[i] = selections.getValue(i);\r
+                               selectedIndexes[i] = true;\r
+                       else\r
+                               selectedIndexes[i] = false;\r
                }\r
                return selectedIndexes;\r
        }\r
@@ -99,17 +103,36 @@ public class ITwinColSelect extends IOptionGroupBase {
        public void onClick(Widget sender) {\r
                super.onClick(sender);\r
                if(sender == add) {\r
-                       String[] sel = getItemsToAdd();\r
+                       boolean[] sel = getItemsToAdd();\r
                        for(int i=0; i < sel.length; i++) {\r
-                               if(sel[i]!=null) selectedKeys.add(sel[i]);\r
+                               if(sel[i]) {\r
+                                       int optionIndex = i-(sel.length-options.getItemCount());\r
+                                       selectedKeys.add(options.getValue(optionIndex));\r
+                                       \r
+                                       // Move selection to another column\r
+                                       String text = options.getItemText(optionIndex);\r
+                                       String value = options.getValue(optionIndex);\r
+                                       selections.addItem(text, value);\r
+                                       options.removeItem(optionIndex);\r
+                               }\r
                        }\r
-                       client.updateVariable(id, "selected", selectedKeys.toArray(), true); // Immediate\r
+                       client.updateVariable(id, "selected", selectedKeys.toArray(), immediate);\r
+                       \r
                } else if(sender == remove) {\r
-                       String[] sel = getItemsToRemove();\r
+                       boolean[] sel = getItemsToRemove();\r
                        for(int i=0; i < sel.length; i++) {\r
-                               if(sel[i]!=null) selectedKeys.remove(sel[i]);\r
+                               if(sel[i]) {\r
+                                       int selectionIndex = i-(sel.length-selections.getItemCount());\r
+                                       selectedKeys.remove(selections.getValue(selectionIndex));\r
+                                       \r
+                                       // Move selection to another column\r
+                                       String text = selections.getItemText(selectionIndex);\r
+                                       String value = selections.getValue(selectionIndex);\r
+                                       options.addItem(text, value);\r
+                                       selections.removeItem(selectionIndex);\r
+                               }\r
                        }\r
-                       client.updateVariable(id, "selected", selectedKeys.toArray(), true); // Immediate\r
+                       client.updateVariable(id, "selected", selectedKeys.toArray(), immediate);\r
                }\r
        }\r
 \r