From 665f3355a2f6a759ca7ee088025a4546c3953b02 Mon Sep 17 00:00:00 2001 From: Tatu Lund Date: Fri, 4 Sep 2020 13:23:34 +0300 Subject: Add convenience overloading for setColumn (#12093) Fixes: https://github.com/vaadin/framework/issues/7773 --- server/src/main/java/com/vaadin/ui/Grid.java | 22 ++++++++++++++++++++++ .../tests/server/component/grid/GridTest.java | 19 +++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/server/src/main/java/com/vaadin/ui/Grid.java b/server/src/main/java/com/vaadin/ui/Grid.java index bba799690d..eb90328725 100644 --- a/server/src/main/java/com/vaadin/ui/Grid.java +++ b/server/src/main/java/com/vaadin/ui/Grid.java @@ -4020,6 +4020,28 @@ public class Grid extends AbstractListing implements HasComponents, .forEach(this::removeColumn); } + /** + * Sets the columns and their order based on their column ids provided that + * collection supports preserving of the order. Columns currently in this + * grid that are not present in the collection of column ids are removed. + * This includes any column that has no id. Similarly, any new column in + * columns will be added to this grid. New columns can only be added for a + * Grid created using {@link Grid#Grid(Class)} or + * {@link #withPropertySet(PropertySet)}. + * + * + * @param columnIds + * the column ids to set + * + * @see Column#setId(String) + * @see #setColumns(String...) + */ + public void setColumns(Collection columnIds) { + Objects.requireNonNull(columnIds, "columnIds can't be null"); + String[] columns = columnIds.toArray(new String[columnIds.size()]); + setColumns(columns); + } + private String getGeneratedIdentifier() { String columnId = "" + counter; counter++; diff --git a/server/src/test/java/com/vaadin/tests/server/component/grid/GridTest.java b/server/src/test/java/com/vaadin/tests/server/component/grid/GridTest.java index 6f1a227a1c..5320959967 100644 --- a/server/src/test/java/com/vaadin/tests/server/component/grid/GridTest.java +++ b/server/src/test/java/com/vaadin/tests/server/component/grid/GridTest.java @@ -570,6 +570,25 @@ public class GridTest { assertEquals("name", columns.get(1).getId()); } + @Test + public void setColumns_addColumns_v2_beangrid() { + Grid grid = new Grid<>(Person.class); + + // Remove so we can add it back + grid.removeColumn("name"); + + List columnIds = new ArrayList<>(); + columnIds.add("born"); + columnIds.add("name"); + + grid.setColumns(columnIds); + + List> columns = grid.getColumns(); + assertEquals(2, columns.size()); + assertEquals("born", columns.get(0).getId()); + assertEquals("name", columns.get(1).getId()); + } + @Test public void setColumnOrder_byColumn() { grid.setColumnOrder(randomColumn, lengthColumn); -- cgit v1.2.3