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.

GridScrollTo.java 2.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package com.vaadin.tests.components.grid;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import com.vaadin.data.ValueProvider;
  5. import com.vaadin.server.VaadinRequest;
  6. import com.vaadin.tests.components.AbstractTestUI;
  7. import com.vaadin.ui.Button;
  8. import com.vaadin.ui.Grid;
  9. import com.vaadin.ui.HorizontalLayout;
  10. import com.vaadin.ui.Label;
  11. import com.vaadin.ui.TextField;
  12. public class GridScrollTo extends AbstractTestUI {
  13. @Override
  14. protected void setup(VaadinRequest request) {
  15. List<String> data = new ArrayList<>();
  16. for (int i = 0; i < 200; i++) {
  17. data.add("Name " + i);
  18. }
  19. Grid<String> grid = new Grid<>();
  20. grid.setItems(data);
  21. grid.setSelectionMode(Grid.SelectionMode.NONE);
  22. grid.addColumn(ValueProvider.identity()).setId("Name")
  23. .setCaption("Name");
  24. grid.setDetailsGenerator(item -> {
  25. final HorizontalLayout detailsLayout = new HorizontalLayout();
  26. detailsLayout.setWidth(100, Unit.PERCENTAGE);
  27. detailsLayout.setHeightUndefined();
  28. final Label lbl1 = new Label(item + " details");
  29. detailsLayout.addComponent(lbl1);
  30. return detailsLayout;
  31. });
  32. grid.addItemClickListener(event -> {
  33. final String itemId = event.getItem();
  34. grid.setDetailsVisible(itemId, !grid.isDetailsVisible(itemId));
  35. });
  36. Button scrollToTop = new Button("Scroll to top",
  37. clickEvent -> grid.scrollToStart());
  38. scrollToTop.setId("top");
  39. Button scrollToEnd = new Button("Scroll to end",
  40. clickEvent -> grid.scrollToEnd());
  41. scrollToEnd.setId("end");
  42. TextField rowField = new TextField("Target row");
  43. rowField.setId("row-field");
  44. Button scrollToRow = new Button("Scroll to row", clickEvent -> grid
  45. .scrollTo(Integer.parseInt(rowField.getValue())));
  46. scrollToRow.setId("row");
  47. addComponent(grid);
  48. addComponent(new HorizontalLayout(scrollToTop, scrollToEnd, rowField,
  49. scrollToRow));
  50. }
  51. }