您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

GridHeaderFormatChange.java 4.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package com.vaadin.tests.components.grid;
  2. import com.vaadin.data.SelectionModel;
  3. import com.vaadin.server.VaadinRequest;
  4. import com.vaadin.tests.components.AbstractReindeerTestUI;
  5. import com.vaadin.tests.data.bean.Address;
  6. import com.vaadin.tests.data.bean.Person;
  7. import com.vaadin.ui.Button;
  8. import com.vaadin.ui.Grid;
  9. import com.vaadin.ui.Grid.Column;
  10. import com.vaadin.ui.Grid.SelectionMode;
  11. import com.vaadin.ui.HorizontalLayout;
  12. import com.vaadin.ui.components.grid.HeaderRow;
  13. public class GridHeaderFormatChange extends AbstractReindeerTestUI {
  14. private static final long serialVersionUID = -2787771187365766027L;
  15. private HeaderRow row;
  16. @Override
  17. protected void setup(VaadinRequest request) {
  18. Grid<Person> grid = new Grid<>();
  19. grid.setWidth("600px");
  20. grid.addColumn(Person::getFirstName).setId("firstName");
  21. grid.addColumn(Person::getLastName).setId("lastName");
  22. grid.addColumn(person -> person.getAddress().getStreetAddress())
  23. .setId("streetAddress");
  24. grid.addColumn(person -> person.getAddress().getPostalCode())
  25. .setId("zip");
  26. grid.addColumn(person -> person.getAddress().getCity()).setId("city");
  27. grid.setSelectionMode(SelectionMode.SINGLE);
  28. addComponent(grid);
  29. grid.setItems(createPerson());
  30. Button showHide = new Button("Hide firstName", event -> {
  31. Column<Person, ?> column = grid.getColumn("firstName");
  32. if (grid.getColumn("firstName") != null) {
  33. grid.removeColumn(column);
  34. event.getButton().setCaption("Show firstName");
  35. } else {
  36. grid.addColumn(Person::getFirstName).setId("firstName");
  37. grid.setColumnOrder(grid.getColumn("firstName"),
  38. grid.getColumn("lastName"),
  39. grid.getColumn("streetAddress"), grid.getColumn("zip"),
  40. grid.getColumn("city"));
  41. event.getButton().setCaption("Hide firstName");
  42. }
  43. });
  44. showHide.setId("show_hide");
  45. Button selectionMode = new Button("Set multiselect", event -> {
  46. if (grid.getSelectionModel() instanceof SelectionModel.Single) {
  47. grid.setSelectionMode(SelectionMode.MULTI);
  48. } else {
  49. grid.setSelectionMode(SelectionMode.SINGLE);
  50. }
  51. });
  52. selectionMode.setId("selection_mode");
  53. Button join = new Button("Add Join header column", event -> {
  54. if (row == null) {
  55. row = grid.prependHeaderRow();
  56. if (grid.getColumn("firstName") != null) {
  57. row.join(
  58. grid.getDefaultHeaderRow()
  59. .getCell(grid.getColumn("firstName")),
  60. grid.getDefaultHeaderRow()
  61. .getCell(grid.getColumn("lastName")))
  62. .setText("Full Name");
  63. }
  64. row.join(
  65. grid.getDefaultHeaderRow()
  66. .getCell(grid.getColumn("streetAddress")),
  67. grid.getDefaultHeaderRow()
  68. .getCell(grid.getColumn("zip")),
  69. grid.getDefaultHeaderRow()
  70. .getCell(grid.getColumn("city")))
  71. .setText("Address");
  72. } else {
  73. grid.removeHeaderRow(row);
  74. row = null;
  75. }
  76. });
  77. join.setId("join");
  78. addComponent(new HorizontalLayout(showHide, selectionMode, join));
  79. }
  80. @Override
  81. protected String getTestDescription() {
  82. return "Grid for testing header re-rendering.";
  83. }
  84. @Override
  85. protected Integer getTicketNumber() {
  86. return 17131;
  87. }
  88. private Person createPerson() {
  89. Person person = new Person();
  90. person.setFirstName("Rudolph");
  91. person.setLastName("Reindeer");
  92. person.setAddress(new Address());
  93. person.getAddress().setStreetAddress("Ruukinkatu 2-4");
  94. person.getAddress().setPostalCode(20540);
  95. person.getAddress().setCity("Turku");
  96. return person;
  97. }
  98. }