Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

DummyData.java 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. package com.vaadin.tests.data;
  2. import java.util.ArrayList;
  3. import java.util.Collection;
  4. import java.util.Collections;
  5. import java.util.List;
  6. import java.util.Optional;
  7. import java.util.stream.Stream;
  8. import com.vaadin.annotations.Widgetset;
  9. import com.vaadin.data.HasDataProvider;
  10. import com.vaadin.data.provider.DataProvider;
  11. import com.vaadin.data.provider.ListDataProvider;
  12. import com.vaadin.data.provider.Query;
  13. import com.vaadin.server.VaadinRequest;
  14. import com.vaadin.shared.data.DataCommunicatorConstants;
  15. import com.vaadin.tests.components.AbstractTestUIWithLog;
  16. import com.vaadin.tests.widgetset.TestingWidgetSet;
  17. import com.vaadin.ui.AbstractSingleSelect;
  18. import com.vaadin.ui.Button;
  19. import com.vaadin.ui.HorizontalLayout;
  20. @Widgetset(TestingWidgetSet.NAME)
  21. public class DummyData extends AbstractTestUIWithLog {
  22. /**
  23. * DataProvider that keeps track on how often the data is requested.
  24. */
  25. private class LoggingDataProvider extends ListDataProvider<String> {
  26. private int count = 0;
  27. private LoggingDataProvider(Collection<String> collection) {
  28. super(collection);
  29. }
  30. @Override
  31. public Stream<String> fetch(Query query) {
  32. log("Backend request #" + count++);
  33. return super.fetch(query);
  34. }
  35. }
  36. /**
  37. * Simplified server only selection model. Selection state passed in data,
  38. * shown as bold text.
  39. */
  40. public static class DummyComponent extends AbstractSingleSelect<String>
  41. implements HasDataProvider<String> {
  42. private String selected;
  43. private DummyComponent() {
  44. addDataGenerator((str, json) -> {
  45. json.put(DataCommunicatorConstants.DATA, str);
  46. if (isSelected(str)) {
  47. json.put(DataCommunicatorConstants.SELECTED, true);
  48. }
  49. });
  50. }
  51. @Override
  52. public Optional<String> getSelectedItem() {
  53. return Optional.ofNullable(selected);
  54. }
  55. @Override
  56. public void setValue(String item) {
  57. if (selected != null) {
  58. getDataCommunicator().refresh(selected);
  59. }
  60. selected = item;
  61. if (selected != null) {
  62. getDataCommunicator().refresh(selected);
  63. }
  64. }
  65. @Override
  66. public DataProvider<String, ?> getDataProvider() {
  67. return internalGetDataProvider();
  68. }
  69. @Override
  70. public void setDataProvider(DataProvider<String, ?> dataProvider) {
  71. internalSetDataProvider(dataProvider);
  72. }
  73. }
  74. @Override
  75. protected void setup(VaadinRequest request) {
  76. DummyComponent dummy = new DummyComponent();
  77. List<String> items = new ArrayList<>();
  78. for (int i = 0; i < 300; ++i) {
  79. items.add("Foo " + i);
  80. }
  81. dummy.setDataProvider(new LoggingDataProvider(items));
  82. dummy.setValue("Foo 200");
  83. HorizontalLayout controls = new HorizontalLayout();
  84. addComponent(controls);
  85. controls.addComponent(
  86. new Button("Select Foo 20", e -> dummy.setValue("Foo " + 20)));
  87. controls.addComponent(new Button("Reset data provider",
  88. e -> dummy.setDataProvider(new LoggingDataProvider(items))));
  89. controls.addComponent(
  90. new Button("Remove all data", e -> dummy.setDataProvider(
  91. new LoggingDataProvider(Collections.emptyList()))));
  92. addComponent(dummy);
  93. }
  94. }