]> source.dussan.org Git - vaadin-framework.git/commitdiff
Update column caption when a text is set in the default header row
authorArtur <artur@vaadin.com>
Wed, 8 Mar 2017 07:56:15 +0000 (09:56 +0200)
committerTeemu Suo-Anttila <tsuoanttila@users.noreply.github.com>
Thu, 16 Mar 2017 14:21:24 +0000 (16:21 +0200)
Fixes #8751

server/src/main/java/com/vaadin/ui/Grid.java
server/src/main/java/com/vaadin/ui/components/grid/Header.java
server/src/test/java/com/vaadin/tests/server/component/grid/GridDefaultHeaderTest.java

index a9f7f743e3f7058efc56fdd352035d091fcb7f7e..ed74b4c6647ad97a44fe8d8d34f5b1c0a3465648 100644 (file)
@@ -1119,6 +1119,9 @@ public class Grid<T> extends AbstractListing<T> implements HasComponents,
          */
         public Column<T, V> 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();
index 421d616387669c912909836ad082c264ff00ad9f..b6668a0ae2b043384e5df935c63f11257db6ee86 100644 (file)
@@ -53,6 +53,17 @@ public abstract class Header extends StaticSection<Header.Row> {
             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);
+                    }
+                }
+            }
         }
 
         /**
index bdecc15c35dc27224522b92fc02a5f1c438d58e8..e863143bb473c1bf5b06f97c6c4902b2509041e4 100644 (file)
@@ -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());
+    }
 }