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.

GridColumnPresentation.java 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package com.vaadin.tests.components.grid;
  2. import com.vaadin.data.HasValue;
  3. import com.vaadin.server.ErrorMessage;
  4. import com.vaadin.server.VaadinRequest;
  5. import com.vaadin.shared.Registration;
  6. import com.vaadin.tests.components.AbstractTestUI;
  7. import com.vaadin.tests.data.bean.Address;
  8. import com.vaadin.tests.data.bean.Person;
  9. import com.vaadin.ui.Composite;
  10. import com.vaadin.ui.Grid;
  11. import com.vaadin.ui.Label;
  12. import com.vaadin.ui.renderers.TextRenderer;
  13. /**
  14. * An example for using a different value and presentation types in a Grid
  15. * column.
  16. */
  17. public class GridColumnPresentation extends AbstractTestUI {
  18. /**
  19. * Dummy HasValue for Address.
  20. */
  21. private static class AddressField extends Composite
  22. implements HasValue<Address> {
  23. Address address;
  24. private Label label;
  25. public AddressField() {
  26. super();
  27. label = new Label();
  28. setCompositionRoot(label);
  29. }
  30. @Override
  31. public void setValue(Address value) {
  32. Address oldAddress = address;
  33. address = value;
  34. label.setValue(String.valueOf(address));
  35. fireEvent(new ValueChangeEvent<>(this, oldAddress, false));
  36. }
  37. @Override
  38. public Address getValue() {
  39. return address;
  40. }
  41. @Override
  42. public Registration addValueChangeListener(
  43. ValueChangeListener<Address> listener) {
  44. return addListener(ValueChangeEvent.class, listener,
  45. ValueChangeListener.VALUE_CHANGE_METHOD);
  46. }
  47. @Override
  48. public boolean isReadOnly() {
  49. return super.isReadOnly();
  50. }
  51. @Override
  52. public void setReadOnly(boolean readOnly) {
  53. super.setReadOnly(readOnly);
  54. }
  55. @Override
  56. public boolean isRequiredIndicatorVisible() {
  57. return super.isRequiredIndicatorVisible();
  58. }
  59. @Override
  60. public void setRequiredIndicatorVisible(boolean visible) {
  61. super.setRequiredIndicatorVisible(visible);
  62. }
  63. @Override
  64. public void setComponentError(ErrorMessage componentError) {
  65. label.setComponentError(componentError);
  66. }
  67. }
  68. @Override
  69. protected void setup(VaadinRequest request) {
  70. Grid<Person> personGrid = new Grid<>();
  71. personGrid.setItems(Person.createTestPerson1(),
  72. Person.createTestPerson2());
  73. personGrid.addColumn(Person::getAddress)
  74. .setRenderer(
  75. address -> address.getCity() + " "
  76. + address.getCountry().name(),
  77. new TextRenderer())
  78. .setCaption("Address")
  79. .setEditorComponent(new AddressField(), Person::setAddress);
  80. personGrid.getEditor().setEnabled(true);
  81. addComponent(personGrid);
  82. }
  83. }