diff options
author | Teemu Suo-Anttila <teemusa@vaadin.com> | 2016-09-06 15:07:37 +0300 |
---|---|---|
committer | Artur Signell <artur@vaadin.com> | 2016-09-08 11:33:14 +0000 |
commit | 74df0fadeb7d6c2a6e15b4716602d6ab7ffb54b1 (patch) | |
tree | 8d913860bc0e2fb9b14dafcf8cff149e641aea1a /uitest | |
parent | 8a4d90789ffd6a28ce29870bd176ace62f33288f (diff) | |
download | vaadin-framework-74df0fadeb7d6c2a6e15b4716602d6ab7ffb54b1.tar.gz vaadin-framework-74df0fadeb7d6c2a6e15b4716602d6ab7ffb54b1.zip |
Add StyleGenerators for Grid and Columns
Change-Id: I5eedce6ac24381d657357ff07ca1ccedd804158d
Diffstat (limited to 'uitest')
3 files changed, 215 insertions, 2 deletions
diff --git a/uitest/src/main/java/com/vaadin/tests/components/grid/basics/GridBasics.java b/uitest/src/main/java/com/vaadin/tests/components/grid/basics/GridBasics.java index a47d8b3e9e..5c9f03336e 100644 --- a/uitest/src/main/java/com/vaadin/tests/components/grid/basics/GridBasics.java +++ b/uitest/src/main/java/com/vaadin/tests/components/grid/basics/GridBasics.java @@ -18,6 +18,7 @@ import com.vaadin.ui.Component; import com.vaadin.ui.CssLayout; import com.vaadin.ui.Grid; import com.vaadin.ui.Grid.DetailsGenerator; +import com.vaadin.ui.Grid.StyleGenerator; import com.vaadin.ui.Label; import com.vaadin.ui.MenuBar; import com.vaadin.ui.MenuBar.MenuItem; @@ -32,6 +33,17 @@ import com.vaadin.ui.renderers.ProgressBarRenderer; @Widgetset("com.vaadin.DefaultWidgetSet") public class GridBasics extends AbstractTestUIWithLog { + public static final String ROW_STYLE_GENERATOR_ROW_NUMBERS_FOR_3_OF_4 = "Row numbers for 3/4"; + public static final String ROW_STYLE_GENERATOR_NONE = "None"; + public static final String ROW_STYLE_GENERATOR_ROW_NUMBERS = "Row numbers"; + public static final String ROW_STYLE_GENERATOR_EMPTY = "Empty string"; + public static final String ROW_STYLE_GENERATOR_NULL = "Null"; + public static final String CELL_STYLE_GENERATOR_NONE = "None"; + public static final String CELL_STYLE_GENERATOR_PROPERTY_TO_STRING = "Property to string"; + public static final String CELL_STYLE_GENERATOR_SPECIAL = "Special for 1/4 Column 1"; + public static final String CELL_STYLE_GENERATOR_EMPTY = "Empty string"; + public static final String CELL_STYLE_GENERATOR_NULL = "Null"; + private static class DetailedDetailsGenerator implements DetailsGenerator<DataObject> { @@ -120,6 +132,8 @@ public class GridBasics extends AbstractTestUIWithLog { dataObj -> "(" + dataObj.getRowNumber() + ", 0)"); grid.addColumn("Column 1", dataObj -> "(" + dataObj.getRowNumber() + ", 1)"); + grid.addColumn("Column 2", + dataObj -> "(" + dataObj.getRowNumber() + ", 2)"); grid.addColumn("Row Number", DataObject::getRowNumber, new NumberRenderer()); @@ -172,6 +186,50 @@ public class GridBasics extends AbstractTestUIWithLog { addGridMethodMenu(frozenColMenu, "" + i, i, grid::setFrozenColumnCount); } + createRowStyleMenu(stateMenu.addItem("Row style generator", null)); + createCellStyleMenu(stateMenu.addItem("Cell style generator", null)); + } + + private void createRowStyleMenu(MenuItem rowStyleMenu) { + addGridMethodMenu(rowStyleMenu, ROW_STYLE_GENERATOR_NONE, null, + grid::setStyleGenerator); + addGridMethodMenu(rowStyleMenu, ROW_STYLE_GENERATOR_ROW_NUMBERS, + t -> "row" + t.getRowNumber(), grid::setStyleGenerator); + addGridMethodMenu(rowStyleMenu, + ROW_STYLE_GENERATOR_ROW_NUMBERS_FOR_3_OF_4, + t -> t.getRowNumber() % 4 != 0 ? "row" + t.getRowNumber() + : null, + grid::setStyleGenerator); + addGridMethodMenu(rowStyleMenu, ROW_STYLE_GENERATOR_EMPTY, t -> "", + grid::setStyleGenerator); + addGridMethodMenu(rowStyleMenu, ROW_STYLE_GENERATOR_NULL, t -> null, + grid::setStyleGenerator); + } + + private void createCellStyleMenu(MenuItem cellStyleMenu) { + addGridMethodMenu(cellStyleMenu, CELL_STYLE_GENERATOR_NONE, + (StyleGenerator<DataObject>) null, + sg -> grid.getColumns().forEach(c -> c.setStyleGenerator(sg))); + addGridMethodMenu(cellStyleMenu, CELL_STYLE_GENERATOR_EMPTY, + (StyleGenerator<DataObject>) t -> "", + sg -> grid.getColumns().forEach(c -> c.setStyleGenerator(sg))); + addGridMethodMenu(cellStyleMenu, + CELL_STYLE_GENERATOR_PROPERTY_TO_STRING, null, + sg -> grid.getColumns().forEach(c -> c.setStyleGenerator( + t -> c.getCaption().replaceAll(" ", "-")))); + addGridMethodMenu(cellStyleMenu, CELL_STYLE_GENERATOR_SPECIAL, null, + sg -> grid.getColumns().forEach(c -> c.setStyleGenerator(t -> { + if (t.getRowNumber() % 4 == 1) { + return null; + } else if (t.getRowNumber() % 4 == 3 + && c.getCaption().equals("Column 1")) { + return null; + } + return c.getCaption().replaceAll(" ", "_"); + }))); + addGridMethodMenu(cellStyleMenu, CELL_STYLE_GENERATOR_NULL, + (StyleGenerator<DataObject>) t -> null, + sg -> grid.getColumns().forEach(c -> c.setStyleGenerator(sg))); } private <T> void addGridMethodMenu(MenuItem parent, String name, T value, diff --git a/uitest/src/test/java/com/vaadin/tests/components/grid/basics/GridBasicStyleGeneratorTest.java b/uitest/src/test/java/com/vaadin/tests/components/grid/basics/GridBasicStyleGeneratorTest.java new file mode 100644 index 0000000000..b9b93fa884 --- /dev/null +++ b/uitest/src/test/java/com/vaadin/tests/components/grid/basics/GridBasicStyleGeneratorTest.java @@ -0,0 +1,155 @@ +/* + * Copyright 2000-2016 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.basics; + +import static org.junit.Assert.assertFalse; + +import org.junit.Assert; +import org.junit.Ignore; +import org.junit.Test; + +import com.vaadin.testbench.elements.GridElement.GridCellElement; +import com.vaadin.testbench.elements.GridElement.GridRowElement; +import com.vaadin.testbench.elements.NotificationElement; + +public class GridBasicStyleGeneratorTest extends GridBasicsTest { + @Test + public void testStyleNameGeneratorScrolling() throws Exception { + openTestURL(); + + selectRowStyleNameGenerator( + GridBasics.ROW_STYLE_GENERATOR_ROW_NUMBERS_FOR_3_OF_4); + selectCellStyleNameGenerator(GridBasics.CELL_STYLE_GENERATOR_SPECIAL); + + GridRowElement row = getGridElement().getRow(2); + GridCellElement cell = getGridElement().getCell(3, 2); + + Assert.assertTrue(hasCssClass(row, "row2")); + Assert.assertTrue(hasCssClass(cell, "Column_2")); + + // Scroll down and verify that the old elements don't have the + // stylename any more + + // Carefully chosen offset to hit an index % 4 without cell style + row = getGridElement().getRow(352); + cell = getGridElement().getCell(353, 2); + + Assert.assertFalse(hasCssClass(row, "row352")); + Assert.assertFalse(hasCssClass(cell, "Column_2")); + } + + @Test + public void testDisableStyleNameGenerator() throws Exception { + openTestURL(); + + selectRowStyleNameGenerator( + GridBasics.ROW_STYLE_GENERATOR_ROW_NUMBERS_FOR_3_OF_4); + selectCellStyleNameGenerator(GridBasics.CELL_STYLE_GENERATOR_SPECIAL); + + // Just verify that change was effective + GridRowElement row = getGridElement().getRow(2); + GridCellElement cell = getGridElement().getCell(3, 2); + + Assert.assertTrue(hasCssClass(row, "row2")); + Assert.assertTrue(hasCssClass(cell, "Column_2")); + + // Disable the generator and check again + selectRowStyleNameGenerator(GridBasics.ROW_STYLE_GENERATOR_NONE); + selectCellStyleNameGenerator(GridBasics.CELL_STYLE_GENERATOR_NONE); + + row = getGridElement().getRow(2); + cell = getGridElement().getCell(3, 2); + + Assert.assertFalse(hasCssClass(row, "row2")); + Assert.assertFalse(hasCssClass(cell, "Column_2")); + } + + @Test + public void testChangeStyleNameGenerator() throws Exception { + openTestURL(); + + selectRowStyleNameGenerator( + GridBasics.ROW_STYLE_GENERATOR_ROW_NUMBERS_FOR_3_OF_4); + selectCellStyleNameGenerator(GridBasics.CELL_STYLE_GENERATOR_SPECIAL); + + // Just verify that change was effective + GridRowElement row = getGridElement().getRow(2); + GridCellElement cell = getGridElement().getCell(3, 2); + + Assert.assertTrue(hasCssClass(row, "row2")); + Assert.assertTrue(hasCssClass(cell, "Column_2")); + + // Change the generator and check again + selectRowStyleNameGenerator(GridBasics.ROW_STYLE_GENERATOR_NONE); + selectCellStyleNameGenerator( + GridBasics.CELL_STYLE_GENERATOR_PROPERTY_TO_STRING); + + row = getGridElement().getRow(2); + cell = getGridElement().getCell(3, 2); + + // Old styles removed? + Assert.assertFalse(hasCssClass(row, "row2")); + Assert.assertFalse(hasCssClass(cell, "Column_2")); + + // New style present? + Assert.assertTrue(hasCssClass(cell, "Column-2")); + } + + @Test + @Ignore + public void testCellStyleGeneratorWithSelectionColumn() { + setDebug(true); + openTestURL(); + selectMenuPath("Component", "State", "Selection mode", "multi"); + + selectCellStyleNameGenerator(GridBasics.CELL_STYLE_GENERATOR_SPECIAL); + + assertFalse("Error notification was present", + isElementPresent(NotificationElement.class)); + } + + private void selectRowStyleNameGenerator(String name) { + selectMenuPath("Component", "State", "Row style generator", name); + } + + private void selectCellStyleNameGenerator(String name) { + selectMenuPath("Component", "State", "Cell style generator", name); + } + + @Test + public void testEmptyStringStyleGenerator() { + setDebug(true); + openTestURL(); + + selectCellStyleNameGenerator(GridBasics.CELL_STYLE_GENERATOR_EMPTY); + selectRowStyleNameGenerator(GridBasics.ROW_STYLE_GENERATOR_EMPTY); + + assertFalse("Error notification was present", + isElementPresent(NotificationElement.class)); + } + + @Test + public void testNullStringStyleGenerator() { + setDebug(true); + openTestURL(); + + selectCellStyleNameGenerator(GridBasics.CELL_STYLE_GENERATOR_NULL); + selectRowStyleNameGenerator(GridBasics.ROW_STYLE_GENERATOR_NULL); + + assertFalse("Error notification was present", + isElementPresent(NotificationElement.class)); + } +} diff --git a/uitest/src/test/java/com/vaadin/tests/components/grid/basics/GridContentTest.java b/uitest/src/test/java/com/vaadin/tests/components/grid/basics/GridContentTest.java index 88f2eb0b20..ba7187a5ec 100644 --- a/uitest/src/test/java/com/vaadin/tests/components/grid/basics/GridContentTest.java +++ b/uitest/src/test/java/com/vaadin/tests/components/grid/basics/GridContentTest.java @@ -10,8 +10,8 @@ public class GridContentTest extends GridBasicsTest { DataObject first = getTestData().findFirst().orElse(null); Assert.assertEquals("Text content should match row number", first.getRowNumber().toString(), - getGridElement().getCell(0, 4).getText()); + getGridElement().getCell(0, 5).getText()); Assert.assertEquals("HTML content did not match", first.getHtmlString(), - getGridElement().getCell(0, 4).getAttribute("innerHTML")); + getGridElement().getCell(0, 5).getAttribute("innerHTML")); } } |