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