package com.vaadin.tests.components.grid; import java.util.stream.IntStream; import com.vaadin.data.Binder; import com.vaadin.data.Binder.Binding; import com.vaadin.data.converter.StringToIntegerConverter; import com.vaadin.server.VaadinRequest; import com.vaadin.tests.components.AbstractTestUI; import com.vaadin.tests.data.bean.Person; import com.vaadin.ui.Grid; import com.vaadin.ui.Grid.Column; import com.vaadin.ui.TextField; import com.vaadin.ui.renderers.NumberRenderer; public class GridEditorMultiselect extends AbstractTestUI { @Override protected void setup(VaadinRequest request) { Grid<Person> grid = new Grid<>(); Column<Person, String> nameColumn = grid.addColumn(Person::getFirstName) .setCaption("name"); Column<Person, Integer> ageColumn = grid .addColumn(Person::getAge, new NumberRenderer()) .setCaption("age"); Binder<Person> binder = grid.getEditor().getBinder(); nameColumn.setEditorComponent(new TextField(), Person::setFirstName); Binding<Person, Integer> ageBinding = binder.forField(new TextField()) .withConverter(new StringToIntegerConverter("")) .bind(Person::getAge, Person::setAge); ageColumn.setEditorBinding(ageBinding); grid.setItems(IntStream.range(0, 30).mapToObj(this::createPerson)); grid.getEditor().setEnabled(true); grid.setSelectionMode(Grid.SelectionMode.MULTI); addComponent(grid); } @Override protected Integer getTicketNumber() { return 17132; } @Override protected String getTestDescription() { return "Grid Multiselect: Edit mode allows invalid selection"; } private Person createPerson(int i) { Person person = new Person(); person.setFirstName("name" + i); person.setAge(i); return person; } }