summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--client/src/com/vaadin/client/widgets/Grid.java4
-rw-r--r--server/src/com/vaadin/ui/Grid.java4
-rw-r--r--uitest/src/com/vaadin/tests/components/grid/NullHeaders.java40
-rw-r--r--uitest/src/com/vaadin/tests/components/grid/NullHeadersTest.java48
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());
+ }
+
+ }
+}