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.

GridClickableRenderers.java 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package com.vaadin.tests.components.grid;
  2. import com.vaadin.server.ExternalResource;
  3. import com.vaadin.server.VaadinRequest;
  4. import com.vaadin.tests.components.AbstractReindeerTestUI;
  5. import com.vaadin.ui.Grid;
  6. import com.vaadin.ui.Label;
  7. import com.vaadin.ui.renderers.ButtonRenderer;
  8. import com.vaadin.ui.renderers.ImageRenderer;
  9. public class GridClickableRenderers extends AbstractReindeerTestUI {
  10. private static class TestPOJO {
  11. String testText;
  12. String imageUrl;
  13. String buttonText;
  14. String buttonHtml;
  15. boolean truthValue;
  16. TestPOJO(String intValue, String imageUrl, String buttonText,
  17. String buttonHtml, boolean truthValue) {
  18. testText = intValue;
  19. this.imageUrl = imageUrl;
  20. this.buttonText = buttonText;
  21. this.buttonHtml = buttonHtml;
  22. this.truthValue = truthValue;
  23. }
  24. }
  25. @Override
  26. protected void setup(VaadinRequest request) {
  27. Label valueDisplayLabel = new Label("button click label");
  28. Label checkBoxValueLabel = new Label("checkbox click label");
  29. Grid<TestPOJO> grid = new Grid<>();
  30. grid.addColumn(pojo -> new ExternalResource(pojo.imageUrl),
  31. new ImageRenderer<>()).setId("images").setCaption("Images");
  32. grid.addColumn(pojo -> pojo.buttonText,
  33. new ButtonRenderer<>(event -> valueDisplayLabel
  34. .setValue(event.getItem().testText + " clicked")))
  35. .setId("buttons").setCaption("Buttons");
  36. ButtonRenderer<TestPOJO> htmlButtonRenderer = new ButtonRenderer<>();
  37. htmlButtonRenderer.setHtmlContentAllowed(true);
  38. htmlButtonRenderer.addClickListener(event -> valueDisplayLabel
  39. .setValue(event.getItem().buttonHtml + " clicked"));
  40. grid.addColumn(pojo -> pojo.buttonHtml, htmlButtonRenderer)
  41. .setId("buttonsHtml").setCaption("Buttons HTML");
  42. ButtonRenderer<TestPOJO> yesNoRenderer = new ButtonRenderer<>();
  43. yesNoRenderer.addClickListener(event -> {
  44. TestPOJO item = event.getItem();
  45. item.truthValue = !item.truthValue;
  46. checkBoxValueLabel.setValue(item.testText + " " + item.truthValue);
  47. grid.getDataProvider().refreshAll();
  48. });
  49. grid.addColumn(pojo -> pojo.truthValue ? "Yes" : "No", yesNoRenderer)
  50. .setCaption("Truth").setId("truth");
  51. grid.setItems(
  52. new TestPOJO("first row", "", "button 1 text",
  53. "button 1 <b style='color: red'>html</b>", true),
  54. new TestPOJO("second row", "", "button 2 text",
  55. "button 2 <b style='color: red'>html</b>", false));
  56. addComponents(valueDisplayLabel, checkBoxValueLabel, grid);
  57. }
  58. }