]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fix for #3699
authorJohn Alhroos <john.ahlroos@itmill.com>
Tue, 1 Jun 2010 07:24:53 +0000 (07:24 +0000)
committerJohn Alhroos <john.ahlroos@itmill.com>
Tue, 1 Jun 2010 07:24:53 +0000 (07:24 +0000)
svn changeset:13451/svn branch:6.3

src/com/vaadin/terminal/gwt/client/ui/VTwinColSelect.java

index 880144a11ba482542ed0d163d95da9f767e7ce31..a4d53ed837199b1be244fa50f5047d77558628d2 100644 (file)
@@ -8,6 +8,8 @@ import java.util.ArrayList;
 import java.util.Iterator;\r
 \r
 import com.google.gwt.event.dom.client.ClickEvent;\r
+import com.google.gwt.event.dom.client.MouseDownEvent;\r
+import com.google.gwt.event.dom.client.MouseDownHandler;\r
 import com.google.gwt.user.client.DOM;\r
 import com.google.gwt.user.client.ui.FlowPanel;\r
 import com.google.gwt.user.client.ui.HTML;\r
@@ -15,7 +17,8 @@ import com.google.gwt.user.client.ui.ListBox;
 import com.google.gwt.user.client.ui.Panel;\r
 import com.vaadin.terminal.gwt.client.UIDL;\r
 \r
-public class VTwinColSelect extends VOptionGroupBase {\r
+public class VTwinColSelect extends VOptionGroupBase implements\r
+        MouseDownHandler {\r
 \r
     private static final String CLASSNAME = "v-select-twincol";\r
 \r
@@ -31,9 +34,9 @@ public class VTwinColSelect extends VOptionGroupBase {
 \r
     private final VButton remove;\r
 \r
-    private FlowPanel buttons;\r
+    private final FlowPanel buttons;\r
 \r
-    private Panel panel;\r
+    private final Panel panel;\r
 \r
     private boolean widthSet = false;\r
 \r
@@ -64,6 +67,9 @@ public class VTwinColSelect extends VOptionGroupBase {
         buttons.add(remove);\r
         panel.add(buttons);\r
         panel.add(selections);\r
+\r
+        options.addMouseDownHandler(this);\r
+        selections.addMouseDownHandler(this);\r
     }\r
 \r
     @Override\r
@@ -241,4 +247,26 @@ public class VTwinColSelect extends VOptionGroupBase {
     public void focus() {\r
         options.setFocus(true);\r
     }\r
+\r
+    /*\r
+     * (non-Javadoc)\r
+     *\r
+     * @see\r
+     * com.google.gwt.event.dom.client.MouseDownHandler#onMouseDown(com.google\r
+     * .gwt.event.dom.client.MouseDownEvent)\r
+     */\r
+    public void onMouseDown(MouseDownEvent event) {\r
+        // Ensure that items are deselected when selecting\r
+        // from a different source. See #3699 for details.\r
+        if (event.getSource() == options) {\r
+            for (int i = 0; i < selections.getItemCount(); i++) {\r
+                selections.setItemSelected(i, false);\r
+            }\r
+        } else if (event.getSource() == selections) {\r
+            for (int i = 0; i < options.getItemCount(); i++) {\r
+                options.setItemSelected(i, false);\r
+            }\r
+        }\r
+\r
+    }\r
 }\r