package com.vaadin.tests.components.grid;
import java.util.Arrays;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractReindeerTestUI;
import com.vaadin.tests.data.bean.Person;
import com.vaadin.ui.Button;
import com.vaadin.ui.Grid;
import com.vaadin.ui.Grid.Column;
import com.vaadin.ui.renderers.NumberRenderer;
import com.vaadin.v7.ui.Label;
public class GridColumnHiding extends AbstractReindeerTestUI {
@Override
protected void setup(VaadinRequest request) {
Grid<Person> grid = new Grid<>();
Column<Person, String> nameColumn = grid.addColumn(Person::getFirstName)
.setHidable(true).setCaption("Name");
Column<Person, Integer> ageColumn = grid
.addColumn(Person::getAge, new NumberRenderer())
.setHidable(true)
.setHidingToggleCaption("custom age column caption")
.setCaption("Age");
Column<Person, String> emailColumn = grid.addColumn(Person::getEmail)
.setCaption("Email");
Button toggleNameColumn = new Button("server side toggle name column");
Button toggleAgeColumn = new Button("server side toggle age column");
Button toggleEmailColumn = new Button(
"server side toggle email column");
toggleNameColumn.addClickListener(
event -> nameColumn.setHidden(!nameColumn.isHidden()));
toggleAgeColumn.addClickListener(
event -> ageColumn.setHidden(!ageColumn.isHidden()));
toggleEmailColumn.addClickListener(
event -> emailColumn.setHidden(!emailColumn.isHidden()));
Label visibilityChangeLabel = new Label("visibility change label");
grid.addColumnVisibilityChangeListener(event -> visibilityChangeLabel
.setValue(event.getColumn().isHidden() + ""));
Button toggleHidden = new Button("Toggle all column hidden state",
event -> grid.getColumns().forEach(
column -> column.setHidden(!column.isHidden())));
grid.setItems(Arrays.asList(Person.createTestPerson1(),
Person.createTestPerson2()));
addComponents(grid, toggleNameColumn, toggleAgeColumn,
toggleEmailColumn, visibilityChangeLabel, toggleHidden);
}
}