diff options
author | Johannes Dahlström <johannesd@vaadin.com> | 2014-07-15 20:44:59 +0300 |
---|---|---|
committer | Johannes Dahlström <johannesd@vaadin.com> | 2014-07-22 09:10:57 +0000 |
commit | aca2902c9cafcb02db19a0cdd42b1488786c0f56 (patch) | |
tree | ca9d222f8b4771d9fec91858c05a40d2009727a8 /uitest/src/com/vaadin/tests | |
parent | 59091b486a91754612b555f854d65b77a82eb6b4 (diff) | |
download | vaadin-framework-aca2902c9cafcb02db19a0cdd42b1488786c0f56.tar.gz vaadin-framework-aca2902c9cafcb02db19a0cdd42b1488786c0f56.zip |
Client-side Grid header/footer rewrite: add add/remove rows support (#13334)
Currently supported:
* Adding and removal of header and footer rows
* Header is single-row by default
* Footer is zero-row by default
* Text captions
TODO:
* Column spanning
* HTML content
* Widget content
* Component content
* Sorting/Indicators
* Server side API
* Shared state handling
Change-Id: I54b5062f31e38e872ca64394dfa02f866a1af202
Diffstat (limited to 'uitest/src/com/vaadin/tests')
4 files changed, 235 insertions, 34 deletions
diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridFooterTest.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridFooterTest.java index e126994f34..80110ddc81 100644 --- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridFooterTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridFooterTest.java @@ -17,20 +17,58 @@ package com.vaadin.tests.components.grid.basicfeatures; import static org.junit.Assert.assertEquals; -import java.util.List; - import org.junit.Test; -import com.vaadin.testbench.TestBenchElement; - -public class GridFooterTest extends GridBasicClientFeaturesTest { +public class GridFooterTest extends GridStaticSectionTest { @Test public void testFooterVisibility() throws Exception { openTestURL(); // Footer should have zero rows by default - List<TestBenchElement> cells = getGridFooterRowCells(); - assertEquals(0, cells.size()); + assertEquals(0, getGridFooterRowCells().size()); + } + + @Test + public void testAddRows() throws Exception { + openTestURL(); + + selectMenuPath("Component", "Footer", "Append row"); + + assertFooterCount(1); + assertFooterTexts(0, 0); + + selectMenuPath("Component", "Footer", "Prepend row"); + + assertFooterCount(2); + assertFooterTexts(1, 0); + assertFooterTexts(0, 1); + + selectMenuPath("Component", "Footer", "Append row"); + + assertFooterCount(3); + assertFooterTexts(1, 0); + assertFooterTexts(0, 1); + assertFooterTexts(2, 2); + } + + @Test + public void testRemoveRows() throws Exception { + openTestURL(); + + selectMenuPath("Component", "Footer", "Prepend row"); + selectMenuPath("Component", "Footer", "Append row"); + + selectMenuPath("Component", "Footer", "Remove top row"); + + assertFooterCount(1); + assertFooterTexts(1, 0); + + selectMenuPath("Component", "Footer", "Remove bottom row"); + assertFooterCount(0); + } + + private void assertFooterCount(int count) { + assertEquals("footer count", count, getGridElement().getFooterCount()); } } diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridHeaderTest.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridHeaderTest.java index 716e3b30fc..c1bc4cdd73 100644 --- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridHeaderTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridHeaderTest.java @@ -23,28 +23,21 @@ import org.junit.Test; import com.vaadin.testbench.TestBenchElement; -public class GridHeaderTest extends GridBasicClientFeaturesTest { +public class GridHeaderTest extends GridStaticSectionTest { @Test public void testHeaderVisibility() throws Exception { openTestURL(); // Column headers should be visible by default - List<TestBenchElement> cells = getGridHeaderRowCells(); - assertEquals(GridBasicFeatures.COLUMNS, cells.size()); + assertEquals(GridBasicFeatures.COLUMNS, getGridHeaderRowCells().size()); } @Test public void testHeaderCaptions() throws Exception { openTestURL(); - List<TestBenchElement> cells = getGridHeaderRowCells(); - - int i = 0; - for (TestBenchElement cell : cells) { - assertText("Column " + i, cell); - i++; - } + assertHeaderTexts(0, 0); } @Test @@ -57,23 +50,66 @@ public class GridHeaderTest extends GridBasicClientFeaturesTest { List<TestBenchElement> cells = getGridHeaderRowCells(); assertEquals(GridBasicFeatures.COLUMNS - 2, cells.size()); - assertText("Column 0", cells.get(0)); - assertText("Column 2", cells.get(1)); - assertText("Column 4", cells.get(2)); + assertText("Header (0,0)", cells.get(0)); + assertText("Header (0,2)", cells.get(1)); + assertText("Header (0,4)", cells.get(2)); selectMenuPath("Component", "Columns", "Column 3", "Visible"); cells = getGridHeaderRowCells(); assertEquals(GridBasicFeatures.COLUMNS - 1, cells.size()); - assertText("Column 0", cells.get(0)); - assertText("Column 2", cells.get(1)); - assertText("Column 3", cells.get(2)); - assertText("Column 4", cells.get(3)); + assertText("Header (0,0)", cells.get(0)); + assertText("Header (0,2)", cells.get(1)); + assertText("Header (0,3)", cells.get(2)); + assertText("Header (0,4)", cells.get(3)); + } + + @Test + public void testAddRows() throws Exception { + openTestURL(); + + selectMenuPath("Component", "Header", "Append row"); + + assertHeaderCount(2); + assertHeaderTexts(0, 0); + assertHeaderTexts(1, 1); + + selectMenuPath("Component", "Header", "Prepend row"); + + assertHeaderCount(3); + assertHeaderTexts(2, 0); + assertHeaderTexts(0, 1); + assertHeaderTexts(1, 2); + + selectMenuPath("Component", "Header", "Append row"); + + assertHeaderCount(4); + assertHeaderTexts(2, 0); + assertHeaderTexts(0, 1); + assertHeaderTexts(1, 2); + assertHeaderTexts(3, 3); + } + + @Test + public void testRemoveRows() throws Exception { + openTestURL(); + + selectMenuPath("Component", "Header", "Prepend row"); + selectMenuPath("Component", "Header", "Append row"); + + selectMenuPath("Component", "Header", "Remove top row"); + + assertHeaderCount(2); + assertHeaderTexts(0, 0); + assertHeaderTexts(2, 1); + + selectMenuPath("Component", "Header", "Remove bottom row"); + assertHeaderCount(1); + assertHeaderTexts(0, 0); } - private static void assertText(String text, TestBenchElement e) { - // TBE.getText returns "" if the element is scrolled out of view - assertEquals(text, e.getAttribute("innerHTML")); + private void assertHeaderCount(int count) { + assertEquals("header count", count, getGridElement().getHeaderCount()); } } diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridStaticSectionTest.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridStaticSectionTest.java new file mode 100644 index 0000000000..8f6739e16d --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridStaticSectionTest.java @@ -0,0 +1,52 @@ +/* + * Copyright 2000-2014 Vaadin Ltd. + * + * 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.vaadin.tests.components.grid.basicfeatures; + +import static org.junit.Assert.assertEquals; + +import com.vaadin.testbench.TestBenchElement; + +/** + * Abstract base class for header and footer tests. + * + * @since + * @author Vaadin Ltd + */ +public abstract class GridStaticSectionTest extends GridBasicClientFeaturesTest { + + protected void assertHeaderTexts(int headerId, int rowIndex) { + int i = 0; + for (TestBenchElement cell : getGridElement().getHeaderCells(rowIndex)) { + assertText(String.format("Header (%d,%d)", headerId, i), cell); + i++; + } + assertEquals("number of header columns", GridBasicFeatures.COLUMNS, i); + } + + protected void assertFooterTexts(int footerId, int rowIndex) { + int i = 0; + for (TestBenchElement cell : getGridElement().getFooterCells(rowIndex)) { + assertText(String.format("Footer (%d,%d)", footerId, i), cell); + i++; + } + assertEquals("number of footer columns", GridBasicFeatures.COLUMNS, i); + } + + protected static void assertText(String text, TestBenchElement e) { + // TBE.getText returns "" if the element is scrolled out of view + assertEquals(text, e.getAttribute("innerHTML")); + } +} diff --git a/uitest/src/com/vaadin/tests/widgetset/client/grid/GridBasicClientFeatures.java b/uitest/src/com/vaadin/tests/widgetset/client/grid/GridBasicClientFeatures.java index 182a5bfa29..8564b149d8 100644 --- a/uitest/src/com/vaadin/tests/widgetset/client/grid/GridBasicClientFeatures.java +++ b/uitest/src/com/vaadin/tests/widgetset/client/grid/GridBasicClientFeatures.java @@ -25,7 +25,10 @@ import com.vaadin.client.ui.grid.FlyweightCell; import com.vaadin.client.ui.grid.Grid; import com.vaadin.client.ui.grid.Grid.SelectionMode; import com.vaadin.client.ui.grid.GridColumn; -import com.vaadin.client.ui.grid.GridHeader.HeaderCell; +import com.vaadin.client.ui.grid.GridFooter; +import com.vaadin.client.ui.grid.GridFooter.FooterRow; +import com.vaadin.client.ui.grid.GridHeader; +import com.vaadin.client.ui.grid.GridHeader.HeaderRow; import com.vaadin.client.ui.grid.Renderer; import com.vaadin.client.ui.grid.datasources.ListDataSource; import com.vaadin.client.ui.grid.renderers.DateRenderer; @@ -193,12 +196,7 @@ public class GridBasicClientFeatures extends }); } - // Set captions to column headers - - for (int i = 0; i < COLUMNS; ++i) { - HeaderCell cell = grid.getHeader().getRow(0).getCell(i); - cell.setText("Column " + i); - } + setHeaderTexts(grid.getHeader().getRow(0)); // // Populate the menu @@ -206,6 +204,8 @@ public class GridBasicClientFeatures extends createStateMenu(); createColumnsMenu(); + createHeaderMenu(); + createFooterMenu(); grid.getElement().getStyle().setZIndex(0); add(grid); @@ -250,6 +250,81 @@ public class GridBasicClientFeatures extends } } + private int headerCounter = 0; + private int footerCounter = 0; + + private void setHeaderTexts(HeaderRow row) { + for (int i = 0; i < COLUMNS; ++i) { + row.getCell(i).setText("Header (" + headerCounter + "," + i + ")"); + } + headerCounter++; + } + + private void setFooterTexts(FooterRow row) { + for (int i = 0; i < COLUMNS; ++i) { + row.getCell(i).setText("Footer (" + footerCounter + "," + i + ")"); + } + footerCounter++; + } + + private void createHeaderMenu() { + final GridHeader header = grid.getHeader(); + addMenuCommand("Prepend row", new ScheduledCommand() { + @Override + public void execute() { + setHeaderTexts(header.prependRow()); + } + }, "Component", "Header"); + addMenuCommand("Append row", new ScheduledCommand() { + @Override + public void execute() { + setHeaderTexts(header.appendRow()); + } + }, "Component", "Header"); + addMenuCommand("Remove top row", new ScheduledCommand() { + @Override + public void execute() { + header.removeRow(0); + } + }, "Component", "Header"); + addMenuCommand("Remove bottom row", new ScheduledCommand() { + @Override + public void execute() { + header.removeRow(header.getRowCount() - 1); + } + }, "Component", "Header"); + } + + private void createFooterMenu() { + + final GridFooter footer = grid.getFooter(); + + addMenuCommand("Prepend row", new ScheduledCommand() { + @Override + public void execute() { + setFooterTexts(footer.prependRow()); + } + }, "Component", "Footer"); + addMenuCommand("Append row", new ScheduledCommand() { + @Override + public void execute() { + setFooterTexts(footer.appendRow()); + } + }, "Component", "Footer"); + addMenuCommand("Remove top row", new ScheduledCommand() { + @Override + public void execute() { + footer.removeRow(0); + } + }, "Component", "Footer"); + addMenuCommand("Remove bottom row", new ScheduledCommand() { + @Override + public void execute() { + footer.removeRow(footer.getRowCount() - 1); + } + }, "Component", "Footer"); + } + /** * Creates a a renderer for a {@link Renderers} */ |