diff options
Diffstat (limited to 'server/src')
-rw-r--r-- | server/src/main/java/com/vaadin/ui/ComboBox.java | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/server/src/main/java/com/vaadin/ui/ComboBox.java b/server/src/main/java/com/vaadin/ui/ComboBox.java index 0a5a36c856..2d613a90a8 100644 --- a/server/src/main/java/com/vaadin/ui/ComboBox.java +++ b/server/src/main/java/com/vaadin/ui/ComboBox.java @@ -186,20 +186,23 @@ public class ComboBox<T> extends AbstractSingleSelect<T> @Override public void createNewItem(String itemValue) { // New option entered - boolean added = false; + boolean clientSideHandling = false; if (itemValue != null && !itemValue.isEmpty()) { if (getNewItemProvider() != null) { - Optional<T> item = getNewItemProvider().apply(itemValue); - added = item.isPresent(); + getNewItemProvider().apply(itemValue).ifPresent(value -> { + // Update state for the newly selected value + setSelectedItem(value, true); + getDataCommunicator().reset(); + }); } else if (getNewItemHandler() != null) { getNewItemHandler().accept(itemValue); // Up to the user to tell if no item was added. - added = true; + clientSideHandling = true; } } - if (!added) { - // New item was not handled. + if (!clientSideHandling) { + // New item was maybe added with NewItemHandler getRpcProxy(ComboBoxClientRpc.class).newItemNotAdded(itemValue); } } |