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.

JavaScriptRenderers.java 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. package com.vaadin.tests.components.grid;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import com.vaadin.annotations.Widgetset;
  5. import com.vaadin.server.VaadinRequest;
  6. import com.vaadin.tests.components.AbstractReindeerTestUI;
  7. import com.vaadin.ui.Button;
  8. import com.vaadin.ui.Grid;
  9. import com.vaadin.ui.Label;
  10. @Widgetset("com.vaadin.DefaultWidgetSet")
  11. public class JavaScriptRenderers extends AbstractReindeerTestUI {
  12. public static class ItemBean {
  13. private Integer id;
  14. private String string;
  15. private MyBean bean;
  16. public Integer getId() {
  17. return id;
  18. }
  19. public void setId(Integer id) {
  20. this.id = id;
  21. }
  22. public String getString() {
  23. return string;
  24. }
  25. public void setString(String string) {
  26. this.string = string;
  27. }
  28. public MyBean getBean() {
  29. return bean;
  30. }
  31. public void setBean(MyBean bean) {
  32. this.bean = bean;
  33. }
  34. }
  35. public static class MyBean {
  36. private int integer;
  37. private String string;
  38. public MyBean(int integer, String string) {
  39. super();
  40. this.integer = integer;
  41. this.string = string;
  42. }
  43. public int getInteger() {
  44. return integer;
  45. }
  46. public void setInteger(int integer) {
  47. this.integer = integer;
  48. }
  49. public String getString() {
  50. return string;
  51. }
  52. public void setString(String string) {
  53. this.string = string;
  54. }
  55. }
  56. private Grid<ItemBean> grid;
  57. @Override
  58. protected void setup(VaadinRequest request) {
  59. List<ItemBean> items = new ArrayList<>(1000);
  60. for (int i = 0; i < 1000; i++) {
  61. ItemBean bean = new ItemBean();
  62. bean.setId(i);
  63. bean.setString("string" + i);
  64. bean.setBean(new MyBean(i + 1, Integer.toString(i - 1)));
  65. items.add(bean);
  66. }
  67. Label clientLog = new Label();
  68. clientLog.setId("clientLog");
  69. addComponent(clientLog);
  70. grid = createGrid(items);
  71. addComponent(grid);
  72. addComponent(new Button("Recreate grid", event -> {
  73. Grid<ItemBean> newGrid = createGrid(items);
  74. replaceComponent(grid, newGrid);
  75. grid = newGrid;
  76. }));
  77. }
  78. private Grid<ItemBean> createGrid(List<ItemBean> items) {
  79. Grid<ItemBean> grid = new Grid<>();
  80. grid.addColumn(item -> item.getId().toString()).setCaption("Id");
  81. grid.addColumn(ItemBean::getBean, new MyBeanJSRenderer())
  82. .setCaption("Bean");
  83. grid.addColumn(ItemBean::getString, new JavaScriptStringRenderer())
  84. .setCaption("String");
  85. grid.addColumn(ItemBean::getString,
  86. new JavaScriptStringRendererWithDestoryMethod())
  87. .setCaption("String2");
  88. grid.setItems(items);
  89. return grid;
  90. }
  91. }