You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

GridDetailsAndUndefinedHeight.java 2.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package com.vaadin.tests.components.grid;
  2. import java.util.ArrayList;
  3. import java.util.Collection;
  4. import java.util.Set;
  5. import java.util.stream.IntStream;
  6. import com.vaadin.server.VaadinRequest;
  7. import com.vaadin.shared.ui.grid.HeightMode;
  8. import com.vaadin.tests.components.AbstractReindeerTestUI;
  9. import com.vaadin.tests.data.bean.Person;
  10. import com.vaadin.ui.Grid;
  11. import com.vaadin.ui.Grid.SelectionMode;
  12. import com.vaadin.ui.Label;
  13. import com.vaadin.ui.VerticalLayout;
  14. public class GridDetailsAndUndefinedHeight extends AbstractReindeerTestUI {
  15. @Override
  16. protected void setup(VaadinRequest request) {
  17. ArrayList<Person> itemsCollection = new ArrayList<>();
  18. final Grid<Person> grid = new Grid<Person>() {
  19. @Override
  20. public void setItems(Collection<Person> items) {
  21. itemsCollection.clear();
  22. itemsCollection.addAll(items);
  23. super.setItems(items);
  24. }
  25. };
  26. addComponent(grid);
  27. grid.addColumn(Person::getFirstName);
  28. grid.addColumn(Person::getLastName);
  29. grid.addColumn(Person::getEmail);
  30. grid.setItems(IntStream.range(0, 5).mapToObj(this::createPerson));
  31. grid.setWidthFull();
  32. grid.setHeightMode(HeightMode.UNDEFINED);
  33. grid.setSelectionMode(SelectionMode.SINGLE);
  34. grid.addSelectionListener(event -> {
  35. itemsCollection
  36. .forEach(item -> grid.setDetailsVisible(item, false));
  37. final Set<Person> selections = event.getAllSelectedItems();
  38. if (!selections.isEmpty()) {
  39. Person selection = selections.iterator().next();
  40. grid.setDetailsVisible(selection, true);
  41. grid.scrollTo(itemsCollection.indexOf(selection));
  42. }
  43. });
  44. grid.setDetailsGenerator(person -> new VerticalLayout(
  45. new Label("Details " + itemsCollection.indexOf(person))));
  46. }
  47. private Person createPerson(int index) {
  48. Person person = new Person();
  49. person.setFirstName("cell " + index + " 0");
  50. person.setLastName("cell " + index + " 1");
  51. person.setEmail("cell " + index + " 2");
  52. return person;
  53. }
  54. @Override
  55. protected String getTestDescription() {
  56. return "Second selection should successfully close "
  57. + "the details row from the first selection.";
  58. }
  59. @Override
  60. protected Integer getTicketNumber() {
  61. return 11856;
  62. }
  63. }