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.

GridNullSafeNestedPropertyColumn.java 2.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package com.vaadin.tests.components.grid;
  2. import com.vaadin.annotations.Widgetset;
  3. import com.vaadin.data.provider.ListDataProvider;
  4. import com.vaadin.server.VaadinRequest;
  5. import com.vaadin.tests.components.AbstractTestUI;
  6. import com.vaadin.tests.data.bean.Address;
  7. import com.vaadin.tests.data.bean.Country;
  8. import com.vaadin.tests.data.bean.Person;
  9. import com.vaadin.tests.data.bean.Sex;
  10. import com.vaadin.ui.Button;
  11. import com.vaadin.ui.Grid;
  12. import com.vaadin.ui.TextField;
  13. import com.vaadin.ui.renderers.TextRenderer;
  14. import java.util.ArrayList;
  15. import java.util.List;
  16. @Widgetset("com.vaadin.DefaultWidgetSet")
  17. public class GridNullSafeNestedPropertyColumn extends AbstractTestUI {
  18. private List<Person> personList = new ArrayList<>();
  19. private ListDataProvider<Person> listDataProvider;
  20. private Grid.Column nullSafeColumn = null;
  21. private Grid.Column regularColumn = null;
  22. @Override
  23. protected void setup(VaadinRequest request) {
  24. Grid<Person> grid = new Grid<>(Person.class);
  25. grid.setSizeFull();
  26. personList.add(new Person("person", "with", "an address", 0,
  27. Sex.UNKNOWN, new Address("street", 0, "", Country.FINLAND)));
  28. listDataProvider = new ListDataProvider<>(personList);
  29. grid.setDataProvider(listDataProvider);
  30. Button addPersonButton = new Button("add person with a null address",
  31. event -> {
  32. Address address = null;
  33. Person person = new Person("person", "without", "address",
  34. 42, Sex.UNKNOWN, address);
  35. personList.add(person);
  36. listDataProvider.refreshAll();
  37. });
  38. addPersonButton.setId("add");
  39. Button addSafeColumnButton = new Button(
  40. "add 'address.streetAddress' as a null-safe column", event -> {
  41. nullSafeColumn = grid.addColumn("address.streetAddress",
  42. new TextRenderer(),
  43. Grid.Column.NestedNullBehavior.ALLOW_NULLS);
  44. });
  45. addSafeColumnButton.setId("safe");
  46. Button addUnsafeColumnButton = new Button(
  47. "add 'address.streetAddress' column without nested null safety",
  48. event -> {
  49. regularColumn = grid.addColumn("address.streetAddress");
  50. });
  51. addUnsafeColumnButton.setId("unsafe");
  52. addComponents(grid, addPersonButton, addSafeColumnButton,
  53. addUnsafeColumnButton);
  54. }
  55. }