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.

GridDetailsLocation.java 2.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package com.vaadin.tests.components.grid;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import com.vaadin.server.VaadinRequest;
  5. import com.vaadin.tests.components.AbstractTestUI;
  6. import com.vaadin.tests.util.Person;
  7. import com.vaadin.tests.util.PersonContainer;
  8. import com.vaadin.ui.Button;
  9. import com.vaadin.ui.CheckBox;
  10. import com.vaadin.ui.Grid;
  11. import com.vaadin.ui.Label;
  12. import com.vaadin.ui.TextField;
  13. public class GridDetailsLocation extends AbstractTestUI {
  14. private TextField numberTextField;
  15. private Grid<Person> grid;
  16. private List<Person> testData;
  17. @Override
  18. protected void setup(VaadinRequest request) {
  19. grid = new Grid<>();
  20. testData = new ArrayList<>(PersonContainer.createTestData(1000));
  21. grid.setItems(testData);
  22. grid.addColumn(item -> item.getFirstName()).setCaption("First Name");
  23. grid.addColumn(item -> item.getLastName()).setCaption("Last Name");
  24. grid.setSelectionMode(Grid.SelectionMode.NONE);
  25. addComponent(grid);
  26. final CheckBox checkbox = new CheckBox("Details generator");
  27. checkbox.addValueChangeListener(event -> {
  28. if (checkbox.getValue()) {
  29. grid.setDetailsGenerator(person -> {
  30. Label label = new Label(
  31. person.getFirstName() + " " + person.getLastName());
  32. // currently the decorator row doesn't change its height
  33. // when the content height is different.
  34. label.setHeight("30px");
  35. return label;
  36. });
  37. } else {
  38. grid.setDetailsGenerator(null);
  39. }
  40. });
  41. addComponent(checkbox);
  42. numberTextField = new TextField("Row");
  43. addComponent(numberTextField);
  44. addComponent(new Button("Toggle and scroll", clickEvent -> {
  45. toggle();
  46. scrollTo();
  47. }));
  48. addComponent(new Button("Scroll and toggle", clickEvent -> {
  49. scrollTo();
  50. toggle();
  51. }));
  52. }
  53. private void toggle() {
  54. Person itemId = testData
  55. .get(Integer.parseInt(numberTextField.getValue()));
  56. boolean isVisible = grid.isDetailsVisible(itemId);
  57. grid.setDetailsVisible(itemId, !isVisible);
  58. }
  59. private void scrollTo() {
  60. grid.scrollTo(Integer.parseInt(numberTextField.getValue()));
  61. }
  62. }