aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--client/src/com/vaadin/client/ui/grid/Grid.java12
-rw-r--r--uitest/src/com/vaadin/tests/components/grid/WidgetRenderers.java13
-rw-r--r--uitest/src/com/vaadin/tests/components/grid/WidgetRenderersTest.java21
3 files changed, 41 insertions, 5 deletions
diff --git a/client/src/com/vaadin/client/ui/grid/Grid.java b/client/src/com/vaadin/client/ui/grid/Grid.java
index d98927ce18..32de9cccc8 100644
--- a/client/src/com/vaadin/client/ui/grid/Grid.java
+++ b/client/src/com/vaadin/client/ui/grid/Grid.java
@@ -3140,6 +3140,11 @@ public class Grid<T> extends ResizeComposite implements
* array of columns in wanted order
*/
public void setColumnOrder(GridColumn<?, T>... orderedColumns) {
+ ColumnConfiguration conf = getEscalator().getColumnConfiguration();
+
+ // Trigger ComplexRenderer.destroy for old content
+ conf.removeColumns(0, conf.getColumnCount());
+
List<GridColumn<?, T>> newOrder = new ArrayList<GridColumn<?, T>>();
if (selectionColumn != null) {
newOrder.add(selectionColumn);
@@ -3162,6 +3167,9 @@ public class Grid<T> extends ResizeComposite implements
}
columns = newOrder;
+ // Do ComplexRenderer.init and render new content
+ conf.insertColumns(0, columns.size());
+
// Update column widths.
for (GridColumn<?, T> column : columns) {
column.reapplyWidth();
@@ -3174,10 +3182,6 @@ public class Grid<T> extends ResizeComposite implements
for (FooterRow row : footer.getRows()) {
row.calculateColspans();
}
-
- refreshHeader();
- refreshBody();
- refreshFooter();
}
/**
diff --git a/uitest/src/com/vaadin/tests/components/grid/WidgetRenderers.java b/uitest/src/com/vaadin/tests/components/grid/WidgetRenderers.java
index fa39fda3e6..8c6037938c 100644
--- a/uitest/src/com/vaadin/tests/components/grid/WidgetRenderers.java
+++ b/uitest/src/com/vaadin/tests/components/grid/WidgetRenderers.java
@@ -21,6 +21,8 @@ import com.vaadin.server.Resource;
import com.vaadin.server.ThemeResource;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Grid;
import com.vaadin.ui.Grid.SelectionMode;
import com.vaadin.ui.components.grid.renderers.ButtonRenderer;
@@ -49,7 +51,7 @@ public class WidgetRenderers extends AbstractTestUI {
item.getItemProperty(ImageRenderer.class).setValue(
new ThemeResource("window/img/close.png"));
- Grid grid = new Grid(container);
+ final Grid grid = new Grid(container);
grid.setId("test-grid");
grid.setSelectionMode(SelectionMode.NONE);
@@ -77,6 +79,15 @@ public class WidgetRenderers extends AbstractTestUI {
}));
addComponent(grid);
+
+ addComponent(new Button("Change column order",
+ new Button.ClickListener() {
+ @Override
+ public void buttonClick(ClickEvent event) {
+ grid.setColumnOrder(ImageRenderer.class,
+ ProgressBarRenderer.class, ButtonRenderer.class);
+ }
+ }));
}
@Override
diff --git a/uitest/src/com/vaadin/tests/components/grid/WidgetRenderersTest.java b/uitest/src/com/vaadin/tests/components/grid/WidgetRenderersTest.java
index d130eb643c..595e02655b 100644
--- a/uitest/src/com/vaadin/tests/components/grid/WidgetRenderersTest.java
+++ b/uitest/src/com/vaadin/tests/components/grid/WidgetRenderersTest.java
@@ -16,12 +16,15 @@
package com.vaadin.tests.components.grid;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import org.openqa.selenium.WebElement;
import com.vaadin.testbench.By;
+import com.vaadin.testbench.elements.ButtonElement;
+import com.vaadin.testbench.elements.NotificationElement;
import com.vaadin.tests.annotations.TestCategory;
import com.vaadin.tests.components.grid.GridElement.GridCellElement;
import com.vaadin.tests.tb3.MultiBrowserTest;
@@ -70,6 +73,24 @@ public class WidgetRenderersTest extends MultiBrowserTest {
.endsWith("window/img/maximize.png"));
}
+ @Test
+ public void testColumnReorder() {
+ setDebug(true);
+ openTestURL();
+
+ $(ButtonElement.class).caption("Change column order").first().click();
+
+ assertFalse("Notification was present",
+ isElementPresent(NotificationElement.class));
+
+ assertTrue(getGridCell(0, 0)
+ .isElementPresent(By.className("gwt-Image")));
+ assertTrue(getGridCell(0, 1).isElementPresent(
+ By.className("v-progressbar")));
+ assertTrue(getGridCell(0, 2).isElementPresent(
+ By.className("gwt-Button")));
+ }
+
GridCellElement getGridCell(int row, int col) {
return $(GridElement.class).first().getCell(row, col);
}