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
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
\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
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
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