]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fix for #5102
authorJohn Alhroos <john.ahlroos@itmill.com>
Thu, 17 Jun 2010 14:24:43 +0000 (14:24 +0000)
committerJohn Alhroos <john.ahlroos@itmill.com>
Thu, 17 Jun 2010 14:24:43 +0000 (14:24 +0000)
svn changeset:13750/svn branch:6.4

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

index 089c61080fb827c10c2c121b17a3bb061a4a1165..d30ada2a97186a18825ed23d987c9c7017b693e2 100644 (file)
@@ -8,19 +8,24 @@ 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.DoubleClickEvent;\r
+import com.google.gwt.event.dom.client.DoubleClickHandler;\r
+import com.google.gwt.event.dom.client.HasDoubleClickHandlers;\r
 import com.google.gwt.event.dom.client.KeyCodes;\r
 import com.google.gwt.event.dom.client.KeyDownEvent;\r
 import com.google.gwt.event.dom.client.KeyDownHandler;\r
 import com.google.gwt.event.dom.client.MouseDownEvent;\r
 import com.google.gwt.event.dom.client.MouseDownHandler;\r
+import com.google.gwt.event.shared.HandlerRegistration;\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.ListBox;\r
 import com.google.gwt.user.client.ui.Panel;\r
 import com.vaadin.terminal.gwt.client.UIDL;\r
-
-public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler, MouseDownHandler {\r
+\r
+public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler,\r
+        MouseDownHandler, DoubleClickHandler {\r
 \r
     private static final String CLASSNAME = "v-select-twincol";\r
 \r
@@ -28,9 +33,9 @@ public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler,
 \r
     private static final int DEFAULT_COLUMN_COUNT = 10;\r
 \r
-    private final ListBox options;\r
+    private final DoubleClickListBox options;\r
 \r
-    private final ListBox selections;\r
+    private final DoubleClickListBox selections;\r
 \r
     private final VButton add;\r
 \r
@@ -42,12 +47,34 @@ public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler,
 \r
     private boolean widthSet = false;\r
 \r
+    /**\r
+     * A ListBox which catches double clicks\r
+     * \r
+     */\r
+    public class DoubleClickListBox extends ListBox implements\r
+            HasDoubleClickHandlers {\r
+        public DoubleClickListBox(boolean isMultipleSelect) {\r
+            super(isMultipleSelect);\r
+        }\r
+\r
+        public DoubleClickListBox() {\r
+            super();\r
+        }\r
+\r
+        public HandlerRegistration addDoubleClickHandler(\r
+                DoubleClickHandler handler) {\r
+            return addDomHandler(handler, DoubleClickEvent.getType());\r
+        }\r
+    }\r
+\r
     public VTwinColSelect() {\r
         super(CLASSNAME);\r
-        options = new ListBox();\r
+        options = new DoubleClickListBox();\r
         options.addClickHandler(this);\r
-        selections = new ListBox();\r
+        options.addDoubleClickHandler(this);\r
+        selections = new DoubleClickListBox();\r
         selections.addClickHandler(this);\r
+        selections.addDoubleClickHandler(this);\r
         options.setVisibleItemCount(VISIBLE_COUNT);\r
         selections.setVisibleItemCount(VISIBLE_COUNT);\r
         options.setStyleName(CLASSNAME + "-options");\r
@@ -69,12 +96,12 @@ public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler,
         buttons.add(remove);\r
         panel.add(buttons);\r
         panel.add(selections);\r
-
+\r
         options.addKeyDownHandler(this);\r
         options.addMouseDownHandler(this);\r
 \r
         selections.addMouseDownHandler(this);\r
-        selections.addKeyDownHandler(this);
+        selections.addKeyDownHandler(this);\r
     }\r
 \r
     @Override\r
@@ -285,12 +312,12 @@ public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler,
 \r
     public void focus() {\r
         options.setFocus(true);\r
-    }
+    }\r
 \r
     /**\r
      * Get the key that selects an item in the table. By default it is the Enter\r
      * key but by overriding this you can change the key to whatever you want.\r
-     *\r
+     * \r
      * @return\r
      */\r
     protected int getNavigationSelectKey() {\r
@@ -299,7 +326,7 @@ public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler,
 \r
     /*\r
      * (non-Javadoc)\r
-     *\r
+     * \r
      * @see\r
      * com.google.gwt.event.dom.client.KeyDownHandler#onKeyDown(com.google.gwt\r
      * .event.dom.client.KeyDownEvent)\r
@@ -362,7 +389,7 @@ public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler,
 \r
     /*\r
      * (non-Javadoc)\r
-     *\r
+     * \r
      * @see\r
      * com.google.gwt.event.dom.client.MouseDownHandler#onMouseDown(com.google\r
      * .gwt.event.dom.client.MouseDownEvent)\r
@@ -380,5 +407,25 @@ public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler,
             }\r
         }\r
 \r
-    }
+    }\r
+\r
+    /*\r
+     * (non-Javadoc)\r
+     * \r
+     * @see\r
+     * com.google.gwt.event.dom.client.DoubleClickHandler#onDoubleClick(com.\r
+     * google.gwt.event.dom.client.DoubleClickEvent)\r
+     */\r
+    public void onDoubleClick(DoubleClickEvent event) {\r
+        if (event.getSource() == options) {\r
+            addItem();\r
+            options.setSelectedIndex(-1);\r
+            options.setFocus(false);\r
+        } else if (event.getSource() == selections) {\r
+            removeItem();\r
+            selections.setSelectedIndex(-1);\r
+            selections.setFocus(false);\r
+        }\r
+\r
+    }\r
 }\r