123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- package com.vaadin.tests.components.grid;
-
- import java.util.stream.IntStream;
-
- import com.vaadin.server.VaadinRequest;
- import com.vaadin.tests.components.AbstractTestUIWithLog;
- import com.vaadin.tests.data.bean.Person;
- import com.vaadin.ui.Button;
- import com.vaadin.ui.Component;
- import com.vaadin.ui.Grid;
- import com.vaadin.ui.Grid.Column;
- import com.vaadin.ui.TextField;
- import com.vaadin.ui.components.grid.FooterCell;
- import com.vaadin.ui.components.grid.FooterRow;
- import com.vaadin.ui.components.grid.HeaderCell;
- import com.vaadin.ui.components.grid.HeaderRow;
- import com.vaadin.ui.renderers.NumberRenderer;
-
- public class GridHeaderFooterComponents extends AbstractTestUIWithLog {
-
- @Override
- protected void setup(VaadinRequest request) {
- final Grid<Person> grid = new Grid<>();
- grid.setWidth("800px");
- grid.addColumn(Person::getFirstName).setId("action");
- grid.addColumn(Person::getLastName).setId("string");
- grid.addColumn(Person::getAge, new NumberRenderer()).setId("int");
- grid.addColumn(Person::getSalaryDouble, new NumberRenderer())
- .setId("double");
-
- grid.setItems(IntStream.range(0, 5).mapToObj(this::createPerson));
-
- final HeaderRow defaultRow = grid.getDefaultHeaderRow();
- final HeaderRow toggleVisibilityRow = grid.appendHeaderRow();
- final HeaderRow filterRow = grid.appendHeaderRow();
-
- final FooterRow footerRow = grid.appendFooterRow();
- final FooterRow toggleVisibilityFooterRow = grid.addFooterRowAt(0);
- final FooterRow filterFooterRow = grid.addFooterRowAt(0);
-
- // Set up a filter for all columns
-
- for (Column<Person, ?> column : grid.getColumns()) {
- final HeaderCell headerCell = filterRow.getCell(column);
- final FooterCell footerCell = filterFooterRow.getCell(column);
-
- headerCell.setComponent(createTextField(column.getId()));
- footerCell.setComponent(createTextField(column.getId()));
-
- toggleVisibilityRow.getCell(column.getId())
- .setComponent(new Button("Toggle field", event -> {
- Component c = headerCell.getComponent();
- c.setVisible(!c.isVisible());
- }));
- toggleVisibilityFooterRow.getCell(column.getId())
- .setComponent(new Button("Toggle field", event -> {
- Component c = footerCell.getComponent();
- c.setVisible(!c.isVisible());
- }));
- }
-
- addComponent(grid);
-
- addRemoveHeaderRow(grid, defaultRow);
- addRemoveHeaderRow(grid, filterRow);
- addRemoveHeaderRow(grid, toggleVisibilityRow);
-
- addRemoveFooterRow(grid, footerRow);
- addRemoveFooterRow(grid, filterFooterRow);
- addRemoveFooterRow(grid, toggleVisibilityFooterRow);
-
- // Hide first field initially
- filterRow.getCell("string").getComponent().setVisible(false);
- filterFooterRow.getCell("string").getComponent().setVisible(false);
- }
-
- private void addRemoveHeaderRow(final Grid<Person> grid,
- final HeaderRow row) {
- row.getCell("action").setComponent(
- new Button("Remove row", event -> grid.removeHeaderRow(row)));
-
- }
-
- private void addRemoveFooterRow(final Grid<Person> grid,
- final FooterRow row) {
- row.getCell("action").setComponent(
- new Button("Remove row", event -> grid.removeFooterRow(row)));
- }
-
- private Person createPerson(int i) {
- Person person = new Person();
- person.setFirstName("");
- person.setLastName("Hello world");
- person.setAge(13);
- person.setSalaryDouble(5.2d);
- return person;
- }
-
- private TextField createTextField(final Object pid) {
- TextField filterField = new TextField();
- filterField.setWidth("8em");
- filterField.setValue("Filter: " + pid);
- filterField.addValueChangeListener(
- listener -> log("value change for field in " + pid + " to "
- + listener.getValue()));
- return filterField;
- }
-
- }
|