@@ -20,6 +20,7 @@ import com.vaadin.client.annotations.OnStateChange; | |||
import com.vaadin.client.connectors.AbstractRendererConnector; | |||
import com.vaadin.client.extensions.AbstractExtensionConnector; | |||
import com.vaadin.client.widgets.Grid.Column; | |||
import com.vaadin.client.widgets.Grid.HeaderCell; | |||
import com.vaadin.shared.data.DataCommunicatorConstants; | |||
import com.vaadin.shared.ui.Connect; | |||
import com.vaadin.shared.ui.grid.ColumnState; | |||
@@ -48,6 +49,11 @@ public class ColumnConnector extends AbstractExtensionConnector { | |||
public String getConnectorId() { | |||
return connectorId; | |||
} | |||
@Override | |||
protected void setDefaultHeaderContent(HeaderCell cell) { | |||
// NO-OP, Server takes care of header contents. | |||
} | |||
} | |||
private CustomColumn column; |
@@ -4853,7 +4853,7 @@ public class Grid<T> extends ResizeComposite implements HasSelectionHandlers<T>, | |||
private void updateHeader() { | |||
HeaderRow row = grid.getHeader().getDefaultRow(); | |||
if (row != null) { | |||
row.getCell(this).setText(headerCaption); | |||
setDefaultHeaderContent(row.getCell(this)); | |||
if (isHidable()) { | |||
grid.columnHider.updateHidingToggle(this); | |||
} |
@@ -25,7 +25,8 @@ public class GridComponents extends AbstractTestUIWithLog { | |||
@Override | |||
protected void setup(VaadinRequest request) { | |||
Grid<String> grid = new Grid<>(); | |||
grid.addColumn(string -> new Label(string), new ComponentRenderer()); | |||
grid.addColumn(string -> new Label(string), new ComponentRenderer()) | |||
.setCaption("Label"); | |||
grid.addComponentColumn(string -> { | |||
if (textFields.containsKey(string)) { | |||
log("Reusing old text field for: " + string); | |||
@@ -41,7 +42,7 @@ public class GridComponents extends AbstractTestUIWithLog { | |||
textFields.put(string, textField); | |||
}); | |||
return textField; | |||
}); | |||
}).setId("textField").setCaption("TextField"); | |||
grid.addColumn(string -> { | |||
Button button = new Button("Click Me!", | |||
e -> Notification.show( | |||
@@ -49,10 +50,13 @@ public class GridComponents extends AbstractTestUIWithLog { | |||
Type.WARNING_MESSAGE)); | |||
button.setId(string.replace(' ', '_').toLowerCase()); | |||
return button; | |||
}, new ComponentRenderer()); | |||
}, new ComponentRenderer()).setId("button").setCaption("Button"); | |||
// make sure the buttons and focus outlines fit completely in a row | |||
grid.setRowHeight(40); | |||
grid.getDefaultHeaderRow().join("textField", "button") | |||
.setText("Other Components"); | |||
addComponent(grid); | |||
grid.setSizeFull(); | |||
@@ -82,6 +82,15 @@ public class GridComponentsTest extends MultiBrowserTest { | |||
assertRowExists(999, "Row 999"); | |||
} | |||
@Test | |||
public void testHeaders() { | |||
openTestURL(); | |||
GridElement grid = $(GridElement.class).first(); | |||
Assert.assertEquals("Label", grid.getHeaderCell(0, 0).getText()); | |||
Assert.assertEquals("Other Components", | |||
grid.getHeaderCell(0, 1).getText()); | |||
} | |||
private void assertRowExists(int i, String string) { | |||
GridRowElement row = $(GridElement.class).first().getRow(i); | |||
Assert.assertEquals("Label text did not match", string, |