aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Alhroos <john.ahlroos@itmill.com>2010-06-17 14:24:43 +0000
committerJohn Alhroos <john.ahlroos@itmill.com>2010-06-17 14:24:43 +0000
commit2acb37f3c06c251f28abc13367603c7972f468cc (patch)
tree44046e4c41a946156296e15c87baf65dfa5cb94b
parent625286eb36a4f1c83ebaad613e1e4042f20c136b (diff)
downloadvaadin-framework-2acb37f3c06c251f28abc13367603c7972f468cc.tar.gz
vaadin-framework-2acb37f3c06c251f28abc13367603c7972f468cc.zip
Fix for #5102
svn changeset:13750/svn branch:6.4
-rw-r--r--src/com/vaadin/terminal/gwt/client/ui/VTwinColSelect.java73
1 files changed, 60 insertions, 13 deletions
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VTwinColSelect.java b/src/com/vaadin/terminal/gwt/client/ui/VTwinColSelect.java
index 089c61080f..d30ada2a97 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/VTwinColSelect.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/VTwinColSelect.java
@@ -8,19 +8,24 @@ import java.util.ArrayList;
import java.util.Iterator;
import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.DoubleClickEvent;
+import com.google.gwt.event.dom.client.DoubleClickHandler;
+import com.google.gwt.event.dom.client.HasDoubleClickHandlers;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyDownEvent;
import com.google.gwt.event.dom.client.KeyDownHandler;
import com.google.gwt.event.dom.client.MouseDownEvent;
import com.google.gwt.event.dom.client.MouseDownHandler;
+import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.Panel;
import com.vaadin.terminal.gwt.client.UIDL;
-
-public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler, MouseDownHandler {
+
+public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler,
+ MouseDownHandler, DoubleClickHandler {
private static final String CLASSNAME = "v-select-twincol";
@@ -28,9 +33,9 @@ public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler,
private static final int DEFAULT_COLUMN_COUNT = 10;
- private final ListBox options;
+ private final DoubleClickListBox options;
- private final ListBox selections;
+ private final DoubleClickListBox selections;
private final VButton add;
@@ -42,12 +47,34 @@ public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler,
private boolean widthSet = false;
+ /**
+ * A ListBox which catches double clicks
+ *
+ */
+ public class DoubleClickListBox extends ListBox implements
+ HasDoubleClickHandlers {
+ public DoubleClickListBox(boolean isMultipleSelect) {
+ super(isMultipleSelect);
+ }
+
+ public DoubleClickListBox() {
+ super();
+ }
+
+ public HandlerRegistration addDoubleClickHandler(
+ DoubleClickHandler handler) {
+ return addDomHandler(handler, DoubleClickEvent.getType());
+ }
+ }
+
public VTwinColSelect() {
super(CLASSNAME);
- options = new ListBox();
+ options = new DoubleClickListBox();
options.addClickHandler(this);
- selections = new ListBox();
+ options.addDoubleClickHandler(this);
+ selections = new DoubleClickListBox();
selections.addClickHandler(this);
+ selections.addDoubleClickHandler(this);
options.setVisibleItemCount(VISIBLE_COUNT);
selections.setVisibleItemCount(VISIBLE_COUNT);
options.setStyleName(CLASSNAME + "-options");
@@ -69,12 +96,12 @@ public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler,
buttons.add(remove);
panel.add(buttons);
panel.add(selections);
-
+
options.addKeyDownHandler(this);
options.addMouseDownHandler(this);
selections.addMouseDownHandler(this);
- selections.addKeyDownHandler(this);
+ selections.addKeyDownHandler(this);
}
@Override
@@ -285,12 +312,12 @@ public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler,
public void focus() {
options.setFocus(true);
- }
+ }
/**
* Get the key that selects an item in the table. By default it is the Enter
* key but by overriding this you can change the key to whatever you want.
- *
+ *
* @return
*/
protected int getNavigationSelectKey() {
@@ -299,7 +326,7 @@ public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler,
/*
* (non-Javadoc)
- *
+ *
* @see
* com.google.gwt.event.dom.client.KeyDownHandler#onKeyDown(com.google.gwt
* .event.dom.client.KeyDownEvent)
@@ -362,7 +389,7 @@ public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler,
/*
* (non-Javadoc)
- *
+ *
* @see
* com.google.gwt.event.dom.client.MouseDownHandler#onMouseDown(com.google
* .gwt.event.dom.client.MouseDownEvent)
@@ -380,5 +407,25 @@ public class VTwinColSelect extends VOptionGroupBase implements KeyDownHandler,
}
}
- }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.google.gwt.event.dom.client.DoubleClickHandler#onDoubleClick(com.
+ * google.gwt.event.dom.client.DoubleClickEvent)
+ */
+ public void onDoubleClick(DoubleClickEvent event) {
+ if (event.getSource() == options) {
+ addItem();
+ options.setSelectedIndex(-1);
+ options.setFocus(false);
+ } else if (event.getSource() == selections) {
+ removeItem();
+ selections.setSelectedIndex(-1);
+ selections.setFocus(false);
+ }
+
+ }
}