Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

GridComponents.java 2.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package com.vaadin.tests.components.grid;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. import java.util.stream.IntStream;
  5. import com.vaadin.annotations.Widgetset;
  6. import com.vaadin.server.VaadinRequest;
  7. import com.vaadin.shared.ui.ValueChangeMode;
  8. import com.vaadin.tests.components.AbstractTestUIWithLog;
  9. import com.vaadin.ui.Button;
  10. import com.vaadin.ui.Grid;
  11. import com.vaadin.ui.Label;
  12. import com.vaadin.ui.Notification;
  13. import com.vaadin.ui.Notification.Type;
  14. import com.vaadin.ui.TextField;
  15. import com.vaadin.ui.renderers.ComponentRenderer;
  16. @Widgetset("com.vaadin.DefaultWidgetSet")
  17. public class GridComponents extends AbstractTestUIWithLog {
  18. private Map<String, TextField> textFields = new HashMap<>();
  19. private int counter = 0;
  20. @Override
  21. protected void setup(VaadinRequest request) {
  22. Grid<String> grid = new Grid<>();
  23. grid.addColumn(string -> new Label(string), new ComponentRenderer())
  24. .setCaption("Label");
  25. grid.addComponentColumn(string -> {
  26. if (textFields.containsKey(string)) {
  27. log("Reusing old text field for: " + string);
  28. return textFields.get(string);
  29. }
  30. TextField textField = new TextField();
  31. textField.setValue(string);
  32. textField.setWidth("100%");
  33. // Make sure all changes are sent immediately
  34. textField.setValueChangeMode(ValueChangeMode.EAGER);
  35. textField.addValueChangeListener(e -> {
  36. // Value of text field edited by user, store
  37. textFields.put(string, textField);
  38. });
  39. return textField;
  40. }).setId("textField").setCaption("TextField");
  41. grid.addColumn(string -> {
  42. Button button = new Button("Click Me!",
  43. e -> Notification.show(
  44. "Clicked button on row for: " + string,
  45. Type.WARNING_MESSAGE));
  46. button.setId(string.replace(' ', '_').toLowerCase());
  47. return button;
  48. }, new ComponentRenderer()).setId("button").setCaption("Button");
  49. // make sure the buttons and focus outlines fit completely in a row
  50. grid.setRowHeight(40);
  51. grid.getDefaultHeaderRow().join("textField", "button")
  52. .setText("Other Components");
  53. addComponent(grid);
  54. grid.setSizeFull();
  55. Button resetData = new Button("Reset data", e -> {
  56. grid.setItems(IntStream.range(0, 1000).boxed()
  57. .map(i -> "Row " + (i + (counter * 1000))));
  58. textFields.clear();
  59. ++counter;
  60. });
  61. resetData.click();
  62. addComponent(resetData);
  63. }
  64. }