From 4f1d664497a0ae6f2ef5f7e63e0c483708b1350a Mon Sep 17 00:00:00 2001 From: Teemu Suo-Anttila Date: Fri, 18 Aug 2017 12:03:36 +0300 Subject: Fix state update on Grid Column hide in client (#9836) Fixes #9152 --- server/src/main/java/com/vaadin/ui/Grid.java | 5 ++--- .../tests/components/grid/GridColumnHidingTest.java | 21 ++++++++++++++++++++- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/server/src/main/java/com/vaadin/ui/Grid.java b/server/src/main/java/com/vaadin/ui/Grid.java index 70e947ccd8..9a0c5e1aea 100644 --- a/server/src/main/java/com/vaadin/ui/Grid.java +++ b/server/src/main/java/com/vaadin/ui/Grid.java @@ -681,9 +681,8 @@ public class Grid extends AbstractListing implements HasComponents, @Override public void columnVisibilityChanged(String internalId, boolean hidden) { Column column = getColumnByInternalId(internalId); - ColumnState columnState = column.getState(false); - if (columnState.hidden != hidden) { - columnState.hidden = hidden; + if (column.isHidden() != hidden) { + column.setHidden(hidden); fireColumnVisibilityChangeEvent(column, hidden, true); } } diff --git a/uitest/src/test/java/com/vaadin/tests/components/grid/GridColumnHidingTest.java b/uitest/src/test/java/com/vaadin/tests/components/grid/GridColumnHidingTest.java index a8a1d8f229..e1b5939ead 100644 --- a/uitest/src/test/java/com/vaadin/tests/components/grid/GridColumnHidingTest.java +++ b/uitest/src/test/java/com/vaadin/tests/components/grid/GridColumnHidingTest.java @@ -26,8 +26,8 @@ import org.openqa.selenium.WebElement; import org.openqa.selenium.interactions.Actions; import com.vaadin.testbench.By; -import com.vaadin.testbench.elements.GridElement; import com.vaadin.testbench.elements.ButtonElement; +import com.vaadin.testbench.elements.GridElement; import com.vaadin.testbench.elements.GridElement.GridCellElement; import com.vaadin.testbench.elements.LabelElement; import com.vaadin.tests.tb3.MultiBrowserTest; @@ -88,6 +88,25 @@ public class GridColumnHidingTest extends MultiBrowserTest { Assert.assertEquals("maya@foo.bar", grid.getCell(1, 1).getText()); } + @Test + public void clientHideServerShowColumns() { + openTestURL(); + GridElement grid = $(GridElement.class).first(); + + getSidebarOpenButton(grid).click(); + // Assuming client-side hiding works. See clientHideColumns() + getColumnHidingToggle(grid, "custom age column caption").click(); + getColumnHidingToggle(grid, "Name").click(); + + // Show from server + $(ButtonElement.class).caption("server side toggle age column").first() + .click(); + Assert.assertEquals("46", grid.getCell(0, 0).getText()); + Assert.assertEquals("18", grid.getCell(1, 0).getText()); + Assert.assertEquals("yeah@cool.com", grid.getCell(0, 1).getText()); + Assert.assertEquals("maya@foo.bar", grid.getCell(1, 1).getText()); + } + @Test public void columnVisibilityChangeListener() { openTestURL(); -- cgit v1.2.3