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.

CheckBoxGroupTestUI.java 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package com.vaadin.tests.components.checkbox;
  2. import java.util.LinkedHashMap;
  3. import java.util.Objects;
  4. import com.vaadin.icons.VaadinIcons;
  5. import com.vaadin.server.SerializablePredicate;
  6. import com.vaadin.tests.components.abstractlisting.AbstractMultiSelectTestUI;
  7. import com.vaadin.ui.CheckBoxGroup;
  8. import com.vaadin.ui.DescriptionGenerator;
  9. import com.vaadin.ui.IconGenerator;
  10. /**
  11. * Test UI for CheckBoxGroup component
  12. *
  13. * @author Vaadin Ltd
  14. */
  15. public class CheckBoxGroupTestUI
  16. extends AbstractMultiSelectTestUI<CheckBoxGroup<Object>> {
  17. private static final IconGenerator<Object> DEFAULT_ICON_GENERATOR = item -> "Item 2"
  18. .equals(item) ? ICON_16_HELP_PNG_CACHEABLE : null;
  19. @SuppressWarnings({ "unchecked", "rawtypes" })
  20. @Override
  21. protected Class<CheckBoxGroup<Object>> getTestClass() {
  22. return (Class) CheckBoxGroup.class;
  23. }
  24. @Override
  25. protected CheckBoxGroup<Object> constructComponent() {
  26. CheckBoxGroup<Object> checkBoxGroup = super.constructComponent();
  27. checkBoxGroup.setItemIconGenerator(DEFAULT_ICON_GENERATOR);
  28. checkBoxGroup.setItemEnabledProvider(item -> !"Item 10".equals(item));
  29. return checkBoxGroup;
  30. }
  31. @Override
  32. protected void createActions() {
  33. super.createActions();
  34. createItemIconGenerator();
  35. createItemDescriptionGeneratorMenu();
  36. createItemEnabledProviderMenu();
  37. }
  38. private void createItemIconGenerator() {
  39. createBooleanAction("Use Item Icon Generator", "Item Generator", false,
  40. this::useItemIconProvider);
  41. }
  42. private void createItemDescriptionGeneratorMenu() {
  43. LinkedHashMap<String, DescriptionGenerator<Object>> options = new LinkedHashMap<>();
  44. options.put("Null Description Generator", item -> null);
  45. options.put("Default Description Generator", item -> item.toString());
  46. options.put("Custom Description Generator",
  47. item -> item + " Description");
  48. createSelectAction("Item Description Generator",
  49. "Item Description Generator", options, "None",
  50. (checkBoxGroup, generator, data) -> {
  51. checkBoxGroup.setItemDescriptionGenerator(generator);
  52. checkBoxGroup.getDataProvider().refreshAll();
  53. }, true);
  54. }
  55. private void createItemEnabledProviderMenu() {
  56. LinkedHashMap<String, SerializablePredicate<Object>> options = new LinkedHashMap<>();
  57. options.put("Disable Item 0", o -> !Objects.equals(o, "Item 0"));
  58. options.put("Disable Item 3", o -> !Objects.equals(o, "Item 3"));
  59. options.put("Disable Item 5", o -> !Objects.equals(o, "Item 5"));
  60. createSelectAction("Item Enabled Provider", "Item Enabled Provider",
  61. options, "None", (checkBoxGroup, generator, data) -> {
  62. checkBoxGroup.setItemEnabledProvider(generator);
  63. checkBoxGroup.getDataProvider().refreshAll();
  64. }, true);
  65. }
  66. private void useItemIconProvider(CheckBoxGroup<Object> group,
  67. boolean activate, Object data) {
  68. if (activate) {
  69. group.setItemIconGenerator(
  70. item -> VaadinIcons.values()[getIndex(item) + 1]);
  71. } else {
  72. group.setItemIconGenerator(DEFAULT_ICON_GENERATOR);
  73. }
  74. group.getDataProvider().refreshAll();
  75. }
  76. private int getIndex(Object item) {
  77. int index = item.toString().indexOf(' ');
  78. if (index < 0) {
  79. return 0;
  80. }
  81. String postfix = item.toString().substring(index + 1);
  82. index = postfix.indexOf(' ');
  83. if (index >= 0) {
  84. postfix = postfix.substring(0, index);
  85. }
  86. try {
  87. return Integer.parseInt(postfix);
  88. } catch (NumberFormatException e) {
  89. return 0;
  90. }
  91. }
  92. }