Browse Source

Update column caption when a text is set in the default header row

Fixes #8751
tags/8.1.0.alpha1
Artur 7 years ago
parent
commit
f467f3fa2f

+ 3
- 0
server/src/main/java/com/vaadin/ui/Grid.java View 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();

+ 11
- 0
server/src/main/java/com/vaadin/ui/components/grid/Header.java View 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);
}
}
}
}

/**

+ 26
- 0
server/src/test/java/com/vaadin/tests/server/component/grid/GridDefaultHeaderTest.java View 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());
}
}

Loading…
Cancel
Save