From f467f3fa2fcfba3ade9e59b15aa28e8a76363d2c Mon Sep 17 00:00:00 2001 From: Artur Date: Wed, 8 Mar 2017 09:56:15 +0200 Subject: [PATCH] Update column caption when a text is set in the default header row Fixes #8751 --- server/src/main/java/com/vaadin/ui/Grid.java | 3 +++ .../com/vaadin/ui/components/grid/Header.java | 11 ++++++++ .../component/grid/GridDefaultHeaderTest.java | 26 +++++++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/server/src/main/java/com/vaadin/ui/Grid.java b/server/src/main/java/com/vaadin/ui/Grid.java index a9f7f743e3..ed74b4c664 100644 --- a/server/src/main/java/com/vaadin/ui/Grid.java +++ b/server/src/main/java/com/vaadin/ui/Grid.java @@ -1119,6 +1119,9 @@ public class Grid extends AbstractListing implements HasComponents, */ public Column setCaption(String caption) { Objects.requireNonNull(caption, "Header caption can't be null"); + if (caption.equals(getState(false).caption)) { + return this; + } getState().caption = caption; HeaderRow row = getGrid().getDefaultHeaderRow(); diff --git a/server/src/main/java/com/vaadin/ui/components/grid/Header.java b/server/src/main/java/com/vaadin/ui/components/grid/Header.java index 421d616387..b6668a0ae2 100644 --- a/server/src/main/java/com/vaadin/ui/components/grid/Header.java +++ b/server/src/main/java/com/vaadin/ui/components/grid/Header.java @@ -53,6 +53,17 @@ public abstract class Header extends StaticSection { protected Cell() { super(Row.this); } + + @Override + public void setText(String text) { + super.setText(text); + if (isDefault()) { + Column col = getColumnByInternalId(getColumnId()); + if (col != null) { + col.setCaption(text); + } + } + } } /** diff --git a/server/src/test/java/com/vaadin/tests/server/component/grid/GridDefaultHeaderTest.java b/server/src/test/java/com/vaadin/tests/server/component/grid/GridDefaultHeaderTest.java index bdecc15c35..e863143bb4 100644 --- a/server/src/test/java/com/vaadin/tests/server/component/grid/GridDefaultHeaderTest.java +++ b/server/src/test/java/com/vaadin/tests/server/component/grid/GridDefaultHeaderTest.java @@ -25,6 +25,7 @@ import org.junit.Test; import com.vaadin.data.ValueProvider; import com.vaadin.ui.Grid; import com.vaadin.ui.Grid.Column; +import com.vaadin.ui.components.grid.HeaderCell; import com.vaadin.ui.components.grid.HeaderRow; public class GridDefaultHeaderTest { @@ -84,4 +85,29 @@ public class GridDefaultHeaderTest { assertEquals("First", grid.getHeaderRow(0).getCell(column1).getText()); } + + @Test + public void updateDefaultRow_columnCaptionUpdated() { + grid.getDefaultHeaderRow().getCell(column1).setText("new"); + assertEquals("new", column1.getCaption()); + assertEquals("Second", column2.getCaption()); + } + + @Test + public void updateDefaultRowWithMergedCell_columnCaptionNotUpdated() { + HeaderCell merged = grid.getDefaultHeaderRow().join(column1, column2); + merged.setText("new"); + assertEquals("First", column1.getCaption()); + assertEquals("Second", column2.getCaption()); + } + + @Test + public void updateColumnCaption_defaultRowWithMergedCellNotUpdated() { + HeaderCell merged = grid.getDefaultHeaderRow().join(column1, column2); + merged.setText("new"); + column1.setCaption("foo"); + column2.setCaption("bar"); + + assertEquals("new", merged.getText()); + } } -- 2.39.5