From ded683a75f5923274952a0a173ca09b61c834c82 Mon Sep 17 00:00:00 2001 From: Pekka Hyvönen Date: Thu, 18 May 2017 15:48:02 +0300 Subject: Add shorthand for adding a column with ComponentRenderer --- documentation/components/components-grid.asciidoc | 4 ++-- server/src/main/java/com/vaadin/ui/Grid.java | 21 +++++++++++++++++++++ .../components/grid/GridComponentRendererTest.java | 5 ++--- .../tests/components/grid/GridComponents.java | 6 +++--- 4 files changed, 28 insertions(+), 8 deletions(-) diff --git a/documentation/components/components-grid.asciidoc b/documentation/components/components-grid.asciidoc index 1195a1c79a..160b97f077 100644 --- a/documentation/components/components-grid.asciidoc +++ b/documentation/components/components-grid.asciidoc @@ -576,12 +576,12 @@ the height of all rows in the Grid. Use [classname]#Button# in [classname]#Grid#: + ---- -grid.addColumn(person -> { +grid.addComponentColumn(person -> { Button button = new Button("Click me!"); button.addClickListener(click -> Notification.show("Clicked: " + person.toString())); return button; -}, new ComponentRenderer()); +}); // make sure the buttons fit in the cells of the Grid grid.setRowHeight(40); ---- diff --git a/server/src/main/java/com/vaadin/ui/Grid.java b/server/src/main/java/com/vaadin/ui/Grid.java index 463e475a44..845a61a42a 100644 --- a/server/src/main/java/com/vaadin/ui/Grid.java +++ b/server/src/main/java/com/vaadin/ui/Grid.java @@ -2420,6 +2420,25 @@ public class Grid extends AbstractListing implements HasComponents, return column; } + /** + * Adds a column that shows components. + *

+ * This is a shorthand for {@link #addColum()} with a + * {@link ComponentRenderer}. + * + * @param componentProvider + * a value provider that will return a component for the given + * item + * @return the new column + * @param + * the column value type, extends component + * @since 8.1 + */ + public Column addComponentColumn( + ValueProvider componentProvider) { + return addColumn(componentProvider, new ComponentRenderer()); + } + /** * Creates a column instance from a value provider and a renderer. * @@ -2428,6 +2447,8 @@ public class Grid extends AbstractListing implements HasComponents, * @param renderer * the renderer * @return a new column instance + * @param + * the column value type * * @since 8.0.3 */ diff --git a/server/src/test/java/com/vaadin/tests/components/grid/GridComponentRendererTest.java b/server/src/test/java/com/vaadin/tests/components/grid/GridComponentRendererTest.java index 9e6eb33704..d0b2b11dca 100644 --- a/server/src/test/java/com/vaadin/tests/components/grid/GridComponentRendererTest.java +++ b/server/src/test/java/com/vaadin/tests/components/grid/GridComponentRendererTest.java @@ -15,7 +15,6 @@ import com.vaadin.tests.util.AlwaysLockedVaadinSession; import com.vaadin.tests.util.MockUI; import com.vaadin.ui.Grid; import com.vaadin.ui.Label; -import com.vaadin.ui.renderers.ComponentRenderer; /** * Test to validate clean detaching in Grid with ComponentRenderer. @@ -37,11 +36,11 @@ public class GridComponentRendererTest { dataProvider = DataProvider.ofCollection(backend); grid = new Grid<>(); grid.setDataProvider(dataProvider); - grid.addColumn(p -> { + grid.addComponentColumn(p -> { oldComponent = testComponent; testComponent = new Label(); return testComponent; - }, new ComponentRenderer()); + }); new MockUI() { @Override public Future access(Runnable runnable) { diff --git a/uitest/src/main/java/com/vaadin/tests/components/grid/GridComponents.java b/uitest/src/main/java/com/vaadin/tests/components/grid/GridComponents.java index 1a546a767d..dce85d3be9 100644 --- a/uitest/src/main/java/com/vaadin/tests/components/grid/GridComponents.java +++ b/uitest/src/main/java/com/vaadin/tests/components/grid/GridComponents.java @@ -24,9 +24,9 @@ public class GridComponents extends AbstractTestUIWithLog { @Override protected void setup(VaadinRequest request) { - Grid grid = new Grid(); + Grid grid = new Grid<>(); grid.addColumn(string -> new Label(string), new ComponentRenderer()); - grid.addColumn(string -> { + grid.addComponentColumn(string -> { if (textFields.containsKey(string)) { log("Reusing old text field for: " + string); return textFields.get(string); @@ -41,7 +41,7 @@ public class GridComponents extends AbstractTestUIWithLog { textFields.put(string, textField); }); return textField; - }, new ComponentRenderer()); + }); grid.addColumn(string -> { Button button = new Button("Click Me!", e -> Notification.show( -- cgit v1.2.3