@Override public List<TYPE> getValue() { return selectionHandler.getSelectedValues(); }
@Override public void registerItem(LiveSearchSelectorItem<TYPE> item) { item.setSelectionCallback(() -> selectItem(item)); item.setMultipleSelection(true); LiveSearchSelectorItem<TYPE> selectedItem = selectedItems.stream() .filter(filterItem -> filterItem.getKey().equals(item.getKey())) .findFirst() .orElse(null); if(selectedItem != null && selectedItem.getKey().equals(item.getKey())) { selectedItems.remove(selectedItem); visibleItems.remove(selectedItem); item.select(); selectedItems.add(item); } visibleItems.add(item); }
handler.setMaxDropDownTextItems(3); handler.registerItem(firstItem); LiveSearchSelectorItem secondItem = createItem("b"); handler.registerItem(secondItem); LiveSearchSelectorItem thirdItem = createItem("c"); handler.registerItem(thirdItem); LiveSearchSelectorItem fourthItem = createItem("d"); handler.registerItem(fourthItem); handler.selectKey("a"); verify(handler, times(1)).selectItem(firstItem); verify(firstItem).select(); verify(callback).execute(); checkHandlerSelectedValue("a"); assertEquals(1, handler.getSelectedValues().size()); assertEquals("a", handler.getDropDownMenuHeader()); handler.selectKey("b"); verify(handler, times(1)).selectItem(secondItem); verify(secondItem).select(); verify(callback, times(2)).execute(); checkHandlerSelectedValue("b"); assertEquals(2, handler.getSelectedValues().size()); assertEquals("a & b", handler.getDropDownMenuHeader()); handler.selectKey("c"); verify(handler, times(1)).selectItem(thirdItem); verify(thirdItem).select();
@Test public void testClearSelection() { // Register Items LiveSearchSelectorItem firstItem = createItem("a"); handler.registerItem(firstItem); LiveSearchSelectorItem secondItem = createItem("b"); handler.registerItem(secondItem); LiveSearchSelectorItem thirdItem = createItem("c"); handler.registerItem(thirdItem); LiveSearchSelectorItem fourthItem = createItem("d"); handler.registerItem(fourthItem); handler.selectKey("a"); handler.selectKey("b"); handler.selectKey("c"); handler.selectKey("d"); assertEquals(4, handler.getSelectedValues().size()); assertEquals("a, b, c & d", handler.getDropDownMenuHeader()); handler.clearSelection(); assertEquals(0, handler.getSelectedValues().size()); assertEquals(null, handler.getDropDownMenuHeader()); }
protected LiveSearchSelectorItem doTestSelectItem() { LiveSearchSelectorItem item = createItem(SELECTED_ITEM_TEXT); handler.registerItem(item); handler.selectItem(item); verify(item).select(); checkHandlerSelectedValue(SELECTED_ITEM_TEXT); assertEquals(SELECTED_ITEM_TEXT, handler.getDropDownMenuHeader()); verify(callback).execute(); return item; }
@Test public void testSelectItem() { doTestSelectItem(); assertEquals(1, handler.getSelectedValues().size()); assertEquals(SELECTED_ITEM_TEXT, handler.getDropDownMenuHeader()); }
@Test public void testRegisterItemWithoutSelectedValue() { LiveSearchSelectorItem item = createItem("any"); handler.registerItem(item); verify(item, never()).select(); verify(item, times(1)).setSelectionCallback(any()); verify(item, times(1)).setMultipleSelection(true); checkHandlerSelectedValue(null); assertEquals(null, handler.getDropDownMenuHeader()); }
@Before public void init() { handler.setLiveSearchSelectionCallback(callback); }
@Override protected FormGroup getFormGroup(RenderMode renderMode) { DefaultFormGroup formGroup = formGroupsInstance.get(); final List<TYPE> values = field.getListOfValues(); selector.init(searchService, new MultipleLiveSearchSelectionHandler<>(field.getMaxElementsOnTitle())); selector.setMaxItems(field.getMaxDropdownElements()); selector.setEnabled(!field.getReadOnly() && renderingContext.getRenderMode().equals(RenderMode.EDIT_MODE)); selector.setFilterEnabled(field.getAllowFilter()); selector.setClearSelectionEnabled(field.getAllowClearSelection()); if (renderMode.equals(RenderMode.PRETTY_MODE)) { selector.setEnabled(false); } formGroup.render(selector.asWidget(), field); return formGroup; }
@Test public void testRegisterIItemWithSelectedValue() { LiveSearchSelectorItem selectedItem = doTestSelectItem(); LiveSearchSelectorItem secondItem = createItem(SELECTED_ITEM_TEXT); handler.registerItem(secondItem); verify(selectedItem, atLeast(1)).getKey(); verify(secondItem, times(2)).getKey(); verify(secondItem).select(); checkHandlerSelectedValue(SELECTED_ITEM_TEXT); assertEquals(SELECTED_ITEM_TEXT, handler.getDropDownMenuHeader()); }
@Override public void setValue(List<TYPE> values, boolean fireEvents) { if (values != null) { if(values instanceof BindableListWrapper) { values = ((BindableListWrapper<TYPE>)values).deepUnwrap(); } if (!selectionHandler.getSelectedValues().equals(values)) { selector.clearSelection(); values.stream().forEach(value -> selector.setSelectedItem(value)); } if (fireEvents) { ValueChangeEvent.fire(this, values); } } }
@Override public void registerItem(LiveSearchSelectorItem<TYPE> item) { item.setSelectionCallback(() -> selectItem(item)); item.setMultipleSelection(true); LiveSearchSelectorItem<TYPE> selectedItem = selectedItems.stream() .filter(filterItem -> filterItem.getKey().equals(item.getKey())) .findFirst() .orElse(null); if(selectedItem != null && selectedItem.getKey().equals(item.getKey())) { selectedItems.remove(selectedItem); visibleItems.remove(selectedItem); item.select(); selectedItems.add(item); } visibleItems.add(item); }
private void checkHandlerSelectedValue(String value) { if (value != null) { assertTrue(handler.getSelectedValues().contains(value)); } else { assertTrue(handler.getSelectedValues().isEmpty()); } } }
public void init(LiveSearchService<TYPE> searchService, MultipleLiveSearchSelectionHandler<TYPE> searchSelectionHandler) { this.searchService = searchService; this.selectionHandler = searchSelectionHandler; selector.init(searchService, selectionHandler); selector.setOnChange(() -> setValue(selectionHandler.getSelectedValues(), true)); }