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.

GridColumnWidthsWithoutData.java 2.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package com.vaadin.tests.components.grid;
  2. import java.util.ArrayList;
  3. import java.util.EnumSet;
  4. import java.util.List;
  5. import com.vaadin.data.provider.DataProvider;
  6. import com.vaadin.server.SerializablePredicate;
  7. import com.vaadin.server.VaadinRequest;
  8. import com.vaadin.tests.components.AbstractTestUI;
  9. import com.vaadin.tests.data.bean.Person;
  10. import com.vaadin.ui.Button;
  11. import com.vaadin.ui.Grid;
  12. import com.vaadin.ui.Grid.SelectionMode;
  13. import com.vaadin.ui.NativeSelect;
  14. import com.vaadin.ui.VerticalLayout;
  15. public class GridColumnWidthsWithoutData extends AbstractTestUI {
  16. private SelectionMode selectionMode = SelectionMode.NONE;
  17. private List<Person> items;
  18. private DataProvider<Person, SerializablePredicate<Person>> provider;
  19. private Grid<Person> grid = createGrid(true);
  20. @Override
  21. protected void setup(VaadinRequest request) {
  22. addComponent(grid);
  23. NativeSelect<SelectionMode> selectionModeSelector = new NativeSelect<>(
  24. "Selection mode", EnumSet.allOf(SelectionMode.class));
  25. selectionModeSelector.setValue(selectionMode);
  26. selectionModeSelector.addValueChangeListener(event -> {
  27. selectionMode = selectionModeSelector.getValue();
  28. grid.setSelectionMode(selectionMode);
  29. });
  30. addComponent(selectionModeSelector);
  31. addComponent(new Button("Recreate without data",
  32. event -> replaceGrid(createGrid(false))));
  33. addComponent(new Button("Recreate with data",
  34. event -> replaceGrid(createGrid(true))));
  35. addComponent(new Button("Add data", event -> addDataToGrid()));
  36. addComponent(new Button("Remove data", event -> {
  37. items.clear();
  38. provider.refreshAll();
  39. }));
  40. }
  41. private void replaceGrid(Grid<Person> newGrid) {
  42. ((VerticalLayout) grid.getParent()).replaceComponent(grid, newGrid);
  43. grid = newGrid;
  44. }
  45. private Grid<Person> createGrid(boolean withData) {
  46. Grid<Person> grid = new Grid<>();
  47. grid.addColumn(Person::getFirstName);
  48. grid.addColumn(Person::getLastName);
  49. grid.setWidth("300px");
  50. grid.setSelectionMode(selectionMode);
  51. items = new ArrayList<>();
  52. provider = DataProvider.ofCollection(items);
  53. grid.setDataProvider(provider);
  54. if (withData) {
  55. addDataToGrid();
  56. }
  57. return grid;
  58. }
  59. private void addDataToGrid() {
  60. Person person = new Person();
  61. person.setFirstName("Some");
  62. person.setLastName("Data with more data in one col");
  63. items.add(person);
  64. provider.refreshAll();
  65. }
  66. }