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.

AbstractMultiSelectTestUI.java 2.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package com.vaadin.tests.components.abstractlisting;
  2. import java.util.LinkedHashMap;
  3. import java.util.List;
  4. import java.util.stream.Collectors;
  5. import java.util.stream.IntStream;
  6. import com.vaadin.ui.AbstractMultiSelect;
  7. import com.vaadin.ui.ItemCaptionGenerator;
  8. public abstract class AbstractMultiSelectTestUI<MULTISELECT extends AbstractMultiSelect<Object>>
  9. extends AbstractListingTestUI<MULTISELECT> {
  10. protected final String selectionCategory = "Selection";
  11. @Override
  12. protected void createActions() {
  13. super.createActions();
  14. createItemCaptionGeneratorMenu();
  15. createSelectionMenu();
  16. createListenerMenu();
  17. }
  18. protected void createItemCaptionGeneratorMenu() {
  19. LinkedHashMap<String, ItemCaptionGenerator<Object>> options = new LinkedHashMap<>();
  20. options.put("Null Caption Generator", item -> null);
  21. options.put("Default Caption Generator", item -> item.toString());
  22. options.put("Custom Caption Generator", item -> item + " Caption");
  23. createSelectAction("Item Caption Generator", "Item Generator", options,
  24. "None", (abstractMultiSelect, captionGenerator, data) -> {
  25. abstractMultiSelect
  26. .setItemCaptionGenerator(captionGenerator);
  27. abstractMultiSelect.getDataCommunicator().getDataProvider()
  28. .refreshAll();
  29. }, true);
  30. }
  31. protected void createSelectionMenu() {
  32. createClickAction("Clear selection", selectionCategory,
  33. (component, item, data) -> component.deselectAll(), "");
  34. Command<MULTISELECT, String> toggleSelection = (component, item,
  35. data) -> toggleSelection(item);
  36. List<String> items = IntStream.of(0, 1, 5, 10, 25)
  37. .mapToObj(i -> "Item " + i).collect(Collectors.toList());
  38. items.forEach(item -> createClickAction("Toggle " + item,
  39. selectionCategory, toggleSelection, item));
  40. Command<MULTISELECT, Boolean> toggleMultiSelection = (component, i,
  41. data) -> toggleMultiSelection(i, items);
  42. createBooleanAction("Toggle items 0, 1, 5, 10, 25", selectionCategory,
  43. false, toggleMultiSelection, items);
  44. }
  45. private void toggleSelection(String item) {
  46. if (getComponent().isSelected(item)) {
  47. getComponent().deselect(item);
  48. } else {
  49. getComponent().select(item);
  50. }
  51. }
  52. private void toggleMultiSelection(boolean add, List<String> items) {
  53. if (add) {
  54. getComponent().select(items.toArray());
  55. } else {
  56. getComponent().deselect(items.toArray());
  57. }
  58. }
  59. protected void createListenerMenu() {
  60. createListenerAction("Selection listener", "Listeners",
  61. c -> c.addSelectionListener(
  62. event -> log("Selected: " + event.getNewSelection())));
  63. }
  64. }