From: Artur Signell Date: Mon, 16 Feb 2009 07:50:19 +0000 (+0000) Subject: Test case and fix for #2214 - Filterselect navigation problem when moving up to first... X-Git-Tag: 6.7.0.beta1~3151 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=eba84481b28c3f8c9af173bc669a2184377b9145;p=vaadin-framework.git Test case and fix for #2214 - Filterselect navigation problem when moving up to first page svn changeset:6843/svn branch:trunk --- diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java index c7d224c70e..450db45620 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java @@ -8,6 +8,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.Iterator; +import java.util.List; import com.google.gwt.user.client.Command; import com.google.gwt.user.client.DOM; @@ -713,9 +714,17 @@ public class IFilterSelect extends Composite implements Paintable, Field, // we're paging w/ arrows if (lastIndex == 0) { // going up, select last item - suggestionPopup.menu - .selectItem((MenuItem) suggestionPopup.menu - .getItems().get(PAGELENTH - 1)); + int lastItem = PAGELENTH - 1; + List items = suggestionPopup.menu.getItems(); + /* + * The first page can contain less than 10 items if the null + * selection item is filtered away + */ + if (lastItem >= items.size()) { + lastItem = items.size() - 1; + } + suggestionPopup.menu.selectItem((MenuItem) items + .get(lastItem)); } else { // going down, select first item suggestionPopup.menu diff --git a/src/com/itmill/toolkit/tests/components/combobox/ComboBoxNavigation.java b/src/com/itmill/toolkit/tests/components/combobox/ComboBoxNavigation.java new file mode 100644 index 0000000000..85b1bb11f6 --- /dev/null +++ b/src/com/itmill/toolkit/tests/components/combobox/ComboBoxNavigation.java @@ -0,0 +1,30 @@ +package com.itmill.toolkit.tests.components.combobox; + +import com.itmill.toolkit.tests.components.TestBase; +import com.itmill.toolkit.ui.ComboBox; + +public class ComboBoxNavigation extends TestBase { + + @Override + protected String getDescription() { + return "Entering e in the field and scrolling down with the arrow keys should always select the next item, also when the page changes. Scrolling back up should always select the previous item, also when changing pages."; + } + + @Override + protected Integer getTicketNumber() { + return 2214; + } + + @Override + protected void setup() { + ComboBox cb = new ComboBox(); + for (int i = 1; i < 100; i++) { + cb.addItem("Item " + i); + } + + cb.setFilteringMode(ComboBox.FILTERINGMODE_CONTAINS); + addComponent(cb); + + } + +}