]> source.dussan.org Git - vaadin-framework.git/commitdiff
Request ComboBox pages with RPC (#19929)
authorHenri Sara <hesara@vaadin.com>
Mon, 9 Nov 2015 10:58:52 +0000 (12:58 +0200)
committerVaadin Code Review <review@vaadin.com>
Thu, 21 Jul 2016 13:17:15 +0000 (13:17 +0000)
All client to server communication of ComboBox is now done
with RPC.

There is still an empty changeVariables() methods to
override the default behavior in AbstractSelect.

Change-Id: Ic11ea48cac1846272609f6e4107bb0006d18494c

client/src/main/java/com/vaadin/client/ui/combobox/ComboBoxConnector.java
server/src/main/java/com/vaadin/ui/ComboBox.java
shared/src/main/java/com/vaadin/shared/ui/combobox/ComboBoxServerRpc.java

index e300fa4d54abab8f7d257ee8d1e460176b45e7ce..9132764a587a8e2002d0d7c72fea5925cef7db67 100644 (file)
@@ -395,8 +395,7 @@ public class ComboBoxConnector extends AbstractFieldConnector implements
      */
     public void requestFirstPage() {
         sendSelection(null);
-        getConnection().updateVariable(getConnectorId(), "filter", "", false);
-        getConnection().updateVariable(getConnectorId(), "page", 0, true);
+        requestPage("", 0);
     }
 
     /**
@@ -413,10 +412,7 @@ public class ComboBoxConnector extends AbstractFieldConnector implements
      *            the page number to get
      */
     public void requestPage(String filter, int page) {
-        getConnection().updateVariable(getConnectorId(), "filter", filter,
-                false);
-        getConnection().updateVariable(getConnectorId(), "page", page,
-                immediate);
+        rpc.requestPage(filter, page);
     }
 
     /**
index f36dcb840600cddedb7625fb07ce13e139b6bcf4..b341c1ed932dc07b05e42f527dbd89642accbadb 100644 (file)
@@ -103,6 +103,19 @@ public class ComboBox extends AbstractSelect implements
                 }
             }
         }
+
+        @Override
+        public void requestPage(String filter, int page) {
+            filterstring = filter;
+            if (filterstring != null) {
+                filterstring = filterstring.toLowerCase(getLocale());
+            }
+            currentPage = page;
+
+            // TODO this should trigger a data-only update instead of a full
+            // repaint
+            requestRepaint();
+        }
     };
 
     FocusAndBlurServerRpcImpl focusBlurRpc = new FocusAndBlurServerRpcImpl(this) {
@@ -732,16 +745,7 @@ public class ComboBox extends AbstractSelect implements
         // Not calling super.changeVariables due the history of select
         // component hierarchy
 
-        String newFilter;
-        if ((newFilter = (String) variables.get("filter")) != null) {
-            // this is a filter request
-            currentPage = ((Integer) variables.get("page")).intValue();
-            filterstring = newFilter;
-            if (filterstring != null) {
-                filterstring = filterstring.toLowerCase(getLocale());
-            }
-            requestRepaint();
-        }
+        // all the client to server requests are now handled by RPC
     }
 
     @Override
index 38704b5169b33d9d93da7342d7ea8c4ac1da5447..863aadcbcdb0508bd74b889c7ae10b46e16999bb 100644 (file)
@@ -39,4 +39,15 @@ public interface ComboBoxServerRpc extends ServerRpc {
      *            the id of a single item or null to deselect the current value
      */
     public void setSelectedItem(String item);
+
+    /**
+     * Request the server to send a page of the item list.
+     * 
+     * @param filter
+     *            filter string interpreted according to the current filtering
+     *            mode
+     * @param page
+     *            zero based page number
+     */
+    public void requestPage(String filter, int page);
 }