aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--client/src/com/vaadin/client/ui/grid/GridConnector.java21
-rw-r--r--uitest/src/com/vaadin/tests/components/grid/GridBasicFeaturesTest.java21
2 files changed, 37 insertions, 5 deletions
diff --git a/client/src/com/vaadin/client/ui/grid/GridConnector.java b/client/src/com/vaadin/client/ui/grid/GridConnector.java
index e55a71cb2e..8100cd875a 100644
--- a/client/src/com/vaadin/client/ui/grid/GridConnector.java
+++ b/client/src/com/vaadin/client/ui/grid/GridConnector.java
@@ -51,15 +51,26 @@ public class GridConnector extends AbstractComponentConnector {
*/
private class CustomGridColumn extends GridColumn<String, String[]> {
- private final int columnIndex;
+ private final String id;
- public CustomGridColumn(int columnIndex) {
- this.columnIndex = columnIndex;
+ public CustomGridColumn(String id) {
+ this.id = id;
}
@Override
public String getValue(String[] obj) {
- return obj[columnIndex];
+ return obj[resolveCurrentIndexFromState()];
+ }
+
+ private int resolveCurrentIndexFromState() {
+ List<GridColumnState> columns = getState().columns;
+ int numColumns = columns.size();
+ for (int index = 0; index < numColumns; index++) {
+ if (columns.get(index).id.equals(id)) {
+ return index;
+ }
+ }
+ return -1;
}
}
@@ -203,7 +214,7 @@ public class GridConnector extends AbstractComponentConnector {
*/
private void addColumnFromStateChangeEvent(int columnIndex) {
GridColumnState state = getState().columns.get(columnIndex);
- CustomGridColumn column = new CustomGridColumn(columnIndex);
+ CustomGridColumn column = new CustomGridColumn(state.id);
columnIdToColumn.put(state.id, column);
// Adds a column to grid, and registers Grid with the column.
diff --git a/uitest/src/com/vaadin/tests/components/grid/GridBasicFeaturesTest.java b/uitest/src/com/vaadin/tests/components/grid/GridBasicFeaturesTest.java
index 7163fbea75..73bef67c32 100644
--- a/uitest/src/com/vaadin/tests/components/grid/GridBasicFeaturesTest.java
+++ b/uitest/src/com/vaadin/tests/components/grid/GridBasicFeaturesTest.java
@@ -15,6 +15,8 @@
*/
package com.vaadin.tests.components.grid;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.IsNot.not;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -167,6 +169,25 @@ public class GridBasicFeaturesTest extends MultiBrowserTest {
}
@Test
+ public void testDataLoadingAfterRowRemoval() throws Exception {
+ openTestURL();
+
+ // Remove columns 2,3,4
+ selectMenuPath("Component", "Columns", "Column2", "Remove");
+ selectMenuPath("Component", "Columns", "Column3", "Remove");
+ selectMenuPath("Component", "Columns", "Column4", "Remove");
+
+ // Scroll so new data is lazy loaded
+ scrollGridVerticallyTo(1000);
+
+ // Let lazy loading do its job
+ sleep(1000);
+
+ // Check that row is loaded
+ assertThat(getBodyCellByRowAndColumn(11, 1).getText(), not("..."));
+ }
+
+ @Test
public void testFreezingColumn() throws Exception {
openTestURL();