Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

GridEditorNonBuffered.java 3.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package com.vaadin.tests.components.grid;
  2. import java.util.ArrayList;
  3. import java.util.Collection;
  4. import java.util.List;
  5. import java.util.Locale;
  6. import java.util.Random;
  7. import com.vaadin.data.Binder;
  8. import com.vaadin.data.Binder.Binding;
  9. import com.vaadin.server.VaadinRequest;
  10. import com.vaadin.tests.components.AbstractReindeerTestUIWithLog;
  11. import com.vaadin.tests.util.Person;
  12. import com.vaadin.tests.util.TestDataGenerator;
  13. import com.vaadin.ui.Grid;
  14. import com.vaadin.ui.Grid.Column;
  15. import com.vaadin.ui.TextField;
  16. import com.vaadin.ui.renderers.NumberRenderer;
  17. public class GridEditorNonBuffered extends AbstractReindeerTestUIWithLog {
  18. final static String VALIDATION_ERROR_MESSAGE = "Validator error. Name cannot be empty";
  19. @Override
  20. protected void setup(VaadinRequest request) {
  21. Grid<Person> grid = createGrid();
  22. grid.setItems(createTestData());
  23. addComponent(grid);
  24. }
  25. protected Collection<Person> createTestData() {
  26. return createTestData(100);
  27. }
  28. protected Collection<Person> createTestData(int size) {
  29. Random r = new Random(0);
  30. List<Person> testData = new ArrayList<>();
  31. for (int i = 0; i < size; i++) {
  32. Person person = new Person();
  33. person.setFirstName(TestDataGenerator.getFirstName(r));
  34. person.setLastName(TestDataGenerator.getLastName(r));
  35. person.getAddress().setCity(TestDataGenerator.getCity(r));
  36. person.setEmail(person.getFirstName().toLowerCase(Locale.ROOT) + "."
  37. + person.getLastName().toLowerCase(Locale.ROOT)
  38. + "@vaadin.com");
  39. person.setPhoneNumber(TestDataGenerator.getPhoneNumber(r));
  40. person.getAddress()
  41. .setPostalCode(TestDataGenerator.getPostalCode(r));
  42. person.getAddress()
  43. .setStreetAddress(TestDataGenerator.getStreetAddress(r));
  44. testData.add(person);
  45. }
  46. return testData;
  47. }
  48. protected Grid<Person> createGrid() {
  49. Grid<Person> grid = new Grid<>();
  50. grid.addColumn(Person::getEmail).setCaption("Email").setId("email");
  51. Column<Person, String> firstNameColumn = grid
  52. .addColumn(Person::getFirstName).setCaption("First Name")
  53. .setId("firstName");
  54. Column<Person, String> lastNameColumn = grid
  55. .addColumn(Person::getLastName).setCaption("Last Name")
  56. .setId("lastName");
  57. grid.addColumn(Person::getPhoneNumber).setCaption("Phone Number")
  58. .setId("phone");
  59. grid.addColumn(person -> person.getAddress().getStreetAddress())
  60. .setCaption("Street Address").setId("street");
  61. grid.addColumn(person -> person.getAddress().getPostalCode(),
  62. new NumberRenderer()).setCaption("Postal Code").setId("zip");
  63. grid.addColumn(person -> person.getAddress().getCity())
  64. .setCaption("City").setId("city");
  65. Binder<Person> binder = new Binder<>();
  66. TextField firstNameEditor = new TextField();
  67. Binding<Person, String> firstNamebinding = binder
  68. .forField(firstNameEditor)
  69. .withValidator(v -> (v != null && !v.isEmpty()),
  70. VALIDATION_ERROR_MESSAGE)
  71. .bind(Person::getFirstName, Person::setFirstName);
  72. firstNameColumn.setEditorBinding(firstNamebinding);
  73. TextField lastNameEditor = new TextField();
  74. Binding<Person, String> lastNamebinding = binder
  75. .forField(lastNameEditor)
  76. .withValidator(v -> (v != null && !v.isEmpty()),
  77. VALIDATION_ERROR_MESSAGE)
  78. .bind(Person::getLastName, Person::setLastName);
  79. lastNameColumn.setEditorBinding(lastNamebinding);
  80. grid.getEditor().setBuffered(false);
  81. grid.getEditor().setEnabled(true);
  82. grid.getEditor().setBinder(binder);
  83. return grid;
  84. }
  85. }