diff options
4 files changed, 92 insertions, 4 deletions
diff --git a/client/src/com/vaadin/client/widgets/Grid.java b/client/src/com/vaadin/client/widgets/Grid.java index 81d8929ecf..a5a93c19ef 100644 --- a/client/src/com/vaadin/client/widgets/Grid.java +++ b/client/src/com/vaadin/client/widgets/Grid.java @@ -4650,12 +4650,10 @@ public class Grid<T> extends ResizeComposite implements * The header caption for this column * @return the column itself * - * @throws IllegalArgumentException - * if given caption text is null */ public Column<C, T> setHeaderCaption(String caption) { if (caption == null) { - throw new IllegalArgumentException("Caption cannot be null."); + caption = ""; } if (!this.headerCaption.equals(caption)) { diff --git a/server/src/com/vaadin/ui/Grid.java b/server/src/com/vaadin/ui/Grid.java index 5dfb8e83ed..0f3e634ed3 100644 --- a/server/src/com/vaadin/ui/Grid.java +++ b/server/src/com/vaadin/ui/Grid.java @@ -3250,7 +3250,9 @@ public class Grid extends AbstractFocusable implements SelectionNotifier, public Column setHeaderCaption(String caption) throws IllegalStateException { checkColumnIsAttached(); - + if (caption == null) { + caption = ""; // Render null as empty + } state.headerCaption = caption; HeaderRow row = grid.getHeader().getDefaultRow(); diff --git a/uitest/src/com/vaadin/tests/components/grid/NullHeaders.java b/uitest/src/com/vaadin/tests/components/grid/NullHeaders.java new file mode 100644 index 0000000000..10fe20c478 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/grid/NullHeaders.java @@ -0,0 +1,40 @@ +/* + * 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; + +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUIWithLog; +import com.vaadin.ui.Grid; + +public class NullHeaders extends AbstractTestUIWithLog { + + @Override + protected void setup(VaadinRequest request) { + final Grid grid = new Grid(); + grid.addColumn("country", String.class); + grid.addColumn("foo", String.class); + grid.addColumn("bar", Integer.class); + + grid.getColumn("country").setHeaderCaption(null); + grid.getColumn("foo").setHeaderCaption(""); + grid.getColumn("bar").setHeaderCaption(null); + grid.addRow("Finland", "foo", 1); + grid.addRow("Swaziland", "bar", 2); + grid.addRow("Japan", "baz", 3); + addComponent(grid); + } + +} diff --git a/uitest/src/com/vaadin/tests/components/grid/NullHeadersTest.java b/uitest/src/com/vaadin/tests/components/grid/NullHeadersTest.java new file mode 100644 index 0000000000..55f1238326 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/grid/NullHeadersTest.java @@ -0,0 +1,48 @@ +/* + * 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; + +import org.junit.Assert; +import org.junit.Test; + +import com.vaadin.testbench.elements.GridElement; +import com.vaadin.tests.tb3.SingleBrowserTest; + +public class NullHeadersTest extends SingleBrowserTest { + + @Test + public void gridWithNullHeadersShouldBeRendered() { + openTestURL(); + + GridElement grid = $(GridElement.class).first(); + + Assert.assertEquals(1, grid.getHeaderCount()); + Assert.assertEquals(3, grid.getHeaderCells(0).size()); + for (int i = 0; i < 3; i++) { + Assert.assertEquals("", grid.getHeaderCell(0, 0).getText()); + } + assertRow(grid, 0, "Finland", "foo", "1"); + assertRow(grid, 1, "Swaziland", "bar", "2"); + assertRow(grid, 2, "Japan", "baz", "3"); + } + + private void assertRow(GridElement grid, int row, String... contents) { + for (int col = 0; col < contents.length; col++) { + Assert.assertEquals(contents[col], grid.getCell(row, col).getText()); + } + + } +} |