protected void setValueToSource(V value) { if (source.getState() == BindingState.ACTIVE && !source.isReadOnly()) { source.setValue(value); } }
protected void clearValue() { for (CubaTokenListLabel label : new ArrayList<>(itemComponents.values())) { T item = componentItems.get(label); if (item != null) { itemComponents.remove(item); componentItems.remove(label); } if (owner.itemChangeHandler != null) { owner.itemChangeHandler.removeItem(item); } } if (owner.itemChangeHandler == null) { ValueSource<Collection<T>> valueSource = owner.getValueSource(); if (valueSource != null) { Collection<T> vsv = owner.getValueSourceValue(); if (Set.class.isAssignableFrom(vsv.getClass())) { valueSource.setValue(new LinkedHashSet<>()); } else { valueSource.setValue(new ArrayList<>()); } } else { owner.setValue(new ArrayList<>()); } } }
protected void handleSelection(Collection<V> selected) { if (itemChangeHandler != null) { selected.forEach(itemChangeHandler::addItem); } else { ValueSource<Collection<V>> valueSource = getValueSource(); if (valueSource != null) { Collection<V> modelValue = refreshValueIfNeeded(); for (V newItem : selected) { if (!modelValue.contains(newItem)) { modelValue.add(newItem); } } valueSource.setValue(modelValue); } else { Collection<V> value = getValue(); if (value == null) { value = new ArrayList<>(); } value.addAll(selected); setValue(value); } } }
protected void doRemove(CubaTokenListLabel source) { T item = componentItems.get(source); if (item != null) { itemComponents.remove(item); componentItems.remove(source); if (owner.itemChangeHandler != null) { owner.itemChangeHandler.removeItem(item); } else { if (owner.getValueSource() != null) { Collection<T> value = owner.getValueSourceValue(); value.remove(item); owner.getValueSource().setValue(value); } else { Collection<T> value = new ArrayList<>(owner.getValue()); value.remove(item); owner.setValue(value); } } } }