From 9207d3f3442a6ab6b9fda29d8a76e2bee4929ab1 Mon Sep 17 00:00:00 2001 From: Henri Sara Date: Thu, 5 Nov 2015 13:06:20 +0200 Subject: [PATCH] Create new items with RPC (#19929) When the user creates a new item, send it with client to server RPC. Change-Id: Iaf60fc910d4e8b57b681b4cf13f124871c1a01b0 --- .../client/ui/combobox/ComboBoxConnector.java | 3 +-- .../src/main/java/com/vaadin/ui/ComboBox.java | 22 ++++++++++--------- .../shared/ui/combobox/ComboBoxServerRpc.java | 9 +++++++- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/client/src/main/java/com/vaadin/client/ui/combobox/ComboBoxConnector.java b/client/src/main/java/com/vaadin/client/ui/combobox/ComboBoxConnector.java index df73aa6902..f66a115313 100644 --- a/client/src/main/java/com/vaadin/client/ui/combobox/ComboBoxConnector.java +++ b/client/src/main/java/com/vaadin/client/ui/combobox/ComboBoxConnector.java @@ -399,8 +399,7 @@ public class ComboBoxConnector extends AbstractFieldConnector implements * user entered string value for the new item */ public void sendNewItem(String itemValue) { - getConnection().updateVariable(getConnectorId(), "newitem", itemValue, - immediate); + rpc.createNewItem(itemValue); } /** diff --git a/server/src/main/java/com/vaadin/ui/ComboBox.java b/server/src/main/java/com/vaadin/ui/ComboBox.java index d448f23ac7..bb87aed0bb 100644 --- a/server/src/main/java/com/vaadin/ui/ComboBox.java +++ b/server/src/main/java/com/vaadin/ui/ComboBox.java @@ -76,7 +76,18 @@ public class ComboBox extends AbstractSelect implements } private ComboBoxServerRpc rpc = new ComboBoxServerRpc() { - + @Override + public void createNewItem(String itemValue) { + if (isNewItemsAllowed()) { + // New option entered (and it is allowed) + if (itemValue != null && itemValue.length() > 0) { + getNewItemHandler().addNewItem(itemValue); + // rebuild list + filterstring = null; + prevfilterstring = null; + } + } + } }; /** @@ -747,15 +758,6 @@ public class ComboBox extends AbstractSelect implements filterstring = filterstring.toLowerCase(getLocale()); } requestRepaint(); - } else if (isNewItemsAllowed()) { - // New option entered (and it is allowed) - final String newitem = (String) variables.get("newitem"); - if (newitem != null && newitem.length() > 0) { - getNewItemHandler().addNewItem(newitem); - // rebuild list - filterstring = null; - prevfilterstring = null; - } } if (variables.containsKey(FocusEvent.EVENT_ID)) { diff --git a/shared/src/main/java/com/vaadin/shared/ui/combobox/ComboBoxServerRpc.java b/shared/src/main/java/com/vaadin/shared/ui/combobox/ComboBoxServerRpc.java index d140e7da6e..04d93c9062 100644 --- a/shared/src/main/java/com/vaadin/shared/ui/combobox/ComboBoxServerRpc.java +++ b/shared/src/main/java/com/vaadin/shared/ui/combobox/ComboBoxServerRpc.java @@ -23,5 +23,12 @@ import com.vaadin.shared.communication.ServerRpc; * @since */ public interface ComboBoxServerRpc extends ServerRpc { - + /** + * Create a new item in the combo box. This method can only be used when the + * ComboBox is configured to allow the creation of new items by the user. + * + * @param itemValue + * user entered string value for the new item + */ + public void createNewItem(String itemValue); } -- 2.39.5