diff options
author | Teemu Suo-Anttila <teemusa@vaadin.com> | 2016-01-22 14:23:55 +0200 |
---|---|---|
committer | Teemu Suo-Anttila <teemusa@vaadin.com> | 2016-02-15 17:11:45 +0200 |
commit | 656f5d4ab6beb560f205ee7d194e59f34a6fc315 (patch) | |
tree | 99b748e6a149a1745a54861e32de5dde34a75038 | |
parent | 0e647a881cd6d23e57c34ac10dbe7cae22e178e2 (diff) | |
download | vaadin-framework-656f5d4ab6beb560f205ee7d194e59f34a6fc315.tar.gz vaadin-framework-656f5d4ab6beb560f205ee7d194e59f34a6fc315.zip |
Fix Components cleanup on Header/FooterRow remove in Grid (#19497)
Change-Id: Iaa36f2dd6a61487ec49da3adb4cc9a2485641cd9
-rw-r--r-- | server/src/com/vaadin/ui/Grid.java | 11 | ||||
-rw-r--r-- | uitest/src/com/vaadin/tests/components/grid/GridHeaderFooterComponentsTest.java | 41 |
2 files changed, 50 insertions, 2 deletions
diff --git a/server/src/com/vaadin/ui/Grid.java b/server/src/com/vaadin/ui/Grid.java index 06ab8d1581..4074672675 100644 --- a/server/src/com/vaadin/ui/Grid.java +++ b/server/src/com/vaadin/ui/Grid.java @@ -2467,6 +2467,12 @@ public class Grid extends AbstractFocusable implements SelectionNotifier, } abstract protected String getCellTagName(); + + void detach() { + for (CELLTYPE cell : cells.values()) { + cell.detach(); + } + } } /** @@ -2674,6 +2680,10 @@ public class Grid extends AbstractFocusable implements SelectionNotifier, .html())); } } + + void detach() { + removeComponentIfPresent(); + } } protected Grid grid; @@ -2720,6 +2730,7 @@ public class Grid extends AbstractFocusable implements SelectionNotifier, + rowIndex); } ROWTYPE row = rows.remove(rowIndex); + row.detach(); getSectionState().rows.remove(rowIndex); markAsDirty(); diff --git a/uitest/src/com/vaadin/tests/components/grid/GridHeaderFooterComponentsTest.java b/uitest/src/com/vaadin/tests/components/grid/GridHeaderFooterComponentsTest.java index 977b16cebd..e8d3abf42d 100644 --- a/uitest/src/com/vaadin/tests/components/grid/GridHeaderFooterComponentsTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/GridHeaderFooterComponentsTest.java @@ -15,11 +15,15 @@ */ package com.vaadin.tests.components.grid; +import static org.junit.Assert.assertFalse; + import java.util.List; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; +import com.vaadin.testbench.By; import com.vaadin.testbench.elements.ButtonElement; import com.vaadin.testbench.elements.GridElement; import com.vaadin.testbench.elements.GridElement.GridCellElement; @@ -28,9 +32,15 @@ import com.vaadin.tests.tb3.SingleBrowserTest; public class GridHeaderFooterComponentsTest extends SingleBrowserTest { + @Before + public void setUp() { + setDebug(true); + + openTestURL(); + } + @Test public void hideAndShowComponentsInHeader() { - openTestURL(); GridElement grid = $(GridElement.class).first(); int filterRow = 2; @@ -48,6 +58,8 @@ public class GridHeaderFooterComponentsTest extends SingleBrowserTest { textfield.setValue("foo"); Assert.assertEquals("1. value change for field in string to foo", getLogRow(0)); + + assertNoErrorNotifications(); } private TextFieldElement getHeaderElement(GridElement grid, int row, int col) { @@ -66,7 +78,6 @@ public class GridHeaderFooterComponentsTest extends SingleBrowserTest { @Test public void hideAndShowComponentsInFooter() { - openTestURL(); GridElement grid = $(GridElement.class).first(); int filterRow = 0; @@ -84,6 +95,8 @@ public class GridHeaderFooterComponentsTest extends SingleBrowserTest { textfield.setValue("foo"); Assert.assertEquals("1. value change for field in string to foo", getLogRow(0)); + + assertNoErrorNotifications(); } private TextFieldElement getFooterElement(GridElement grid, int row, int col) { @@ -100,4 +113,28 @@ public class GridHeaderFooterComponentsTest extends SingleBrowserTest { } } + @Test + public void testRemoveAllHeadersAndFooters() { + openTestURL(); + + for (int i = 2; i >= 0; --i) { + // Remove Header + $(GridElement.class).first().getHeaderCell(i, 0) + .$(ButtonElement.class).first().click(); + assertFalse( + "Header " + i + " should not be present.", + $(GridElement.class).first().isElementPresent( + By.vaadin("#header[" + i + "]"))); + + // Remove Footer + $(GridElement.class).first().getFooterCell(i, 0) + .$(ButtonElement.class).first().click(); + assertFalse( + "Footer " + i + " should not be present.", + $(GridElement.class).first().isElementPresent( + By.vaadin("#footer[" + i + "]"))); + } + + assertNoErrorNotifications(); + } } |