Fix ValuePicker setAcceptableValues when passing shorter list
ValuePicker never called setRowCount of the wrapped CellList so a
shorter setAcceptableValues list would leave previous elements in
the list, only replacing the first list items.
Bug: issue 8613
Change-Id: I43c79b92ce6c1a4670eddccf84dd3789042f45ba
diff --git a/user/src/com/google/gwt/user/client/ui/ValuePicker.java b/user/src/com/google/gwt/user/client/ui/ValuePicker.java
index 68a2422..90e52ff 100644
--- a/user/src/com/google/gwt/user/client/ui/ValuePicker.java
+++ b/user/src/com/google/gwt/user/client/ui/ValuePicker.java
@@ -108,8 +108,8 @@
return value;
}
- public void setAcceptableValues(Collection<T> places) {
- cellList.setRowData(0, new ArrayList<T>(places));
+ public void setAcceptableValues(Collection<T> values) {
+ cellList.setRowData(new ArrayList<T>(values));
}
public void setPageSize(int size) {
diff --git a/user/test/com/google/gwt/user/UiPart2Suite.java b/user/test/com/google/gwt/user/UiPart2Suite.java
index cde0c66..8ba4117 100644
--- a/user/test/com/google/gwt/user/UiPart2Suite.java
+++ b/user/test/com/google/gwt/user/UiPart2Suite.java
@@ -63,6 +63,7 @@
import com.google.gwt.user.client.ui.UIObjectTest;
import com.google.gwt.user.client.ui.ValueBoxBaseTest;
import com.google.gwt.user.client.ui.ValueListBoxTest;
+import com.google.gwt.user.client.ui.ValuePickerTest;
import com.google.gwt.user.client.ui.VerticalPanelTest;
import com.google.gwt.user.client.ui.VerticalSplitPanelTest;
import com.google.gwt.user.client.ui.WidgetCollectionTest;
@@ -128,6 +129,7 @@
suite.addTestSuite(UIObjectTest.class);
suite.addTestSuite(ValueBoxBaseTest.class);
suite.addTestSuite(ValueListBoxTest.class);
+ suite.addTestSuite(ValuePickerTest.class);
suite.addTestSuite(VerticalPanelTest.class);
suite.addTestSuite(VerticalSplitPanelTest.class);
suite.addTestSuite(WidgetCollectionTest.class);
diff --git a/user/test/com/google/gwt/user/client/ui/ValuePickerTest.java b/user/test/com/google/gwt/user/client/ui/ValuePickerTest.java
new file mode 100644
index 0000000..0cfb783
--- /dev/null
+++ b/user/test/com/google/gwt/user/client/ui/ValuePickerTest.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2014 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.user.client.ui;
+
+import com.google.gwt.cell.client.TextCell;
+import com.google.gwt.junit.client.GWTTestCase;
+import com.google.gwt.user.cellview.client.CellList;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Tests for {@link ValuePicker}.
+ */
+public class ValuePickerTest extends GWTTestCase {
+
+ @Override
+ public String getModuleName() {
+ return "com.google.gwt.user.User";
+ }
+
+ // See https://code.google.com/p/google-web-toolkit/issues/detail?id=8613
+ public void testSetAcceptableValuesWithShorterList() {
+ CellList<String> cellList = new CellList<String>(new TextCell());
+ ValuePicker<String> picker = new ValuePicker<String>(cellList);
+
+ List<String> acceptableValues = Arrays.asList("Zeroth", "First", "Second", "Third");
+ picker.setAcceptableValues(acceptableValues);
+ assertEquals(acceptableValues, cellList.getVisibleItems());
+
+ acceptableValues = Arrays.asList("First", "Second");
+ picker.setAcceptableValues(acceptableValues);
+ assertEquals(acceptableValues, cellList.getVisibleItems());
+ }
+}