From 2acb37f3c06c251f28abc13367603c7972f468cc Mon Sep 17 00:00:00 2001 From: John Alhroos Date: Thu, 17 Jun 2010 14:24:43 +0000 Subject: [PATCH] Fix for #5102 svn changeset:13750/svn branch:6.4 --- .../gwt/client/ui/VTwinColSelect.java | 73 +++++++++++++++---- 1 file 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); + } + + } } -- 2.39.5