From 6d493408ed7a53c42e57cd87b43548403ea5e3b7 Mon Sep 17 00:00:00 2001 From: Henri Sara Date: Mon, 9 Nov 2015 12:42:25 +0200 Subject: [PATCH] Move ComboBox filtering mode to state (#19929) Change-Id: I7eaf2dae59133745d6a7c686503625f1f5216c52 --- .../client/ui/combobox/ComboBoxConnector.java | 13 ++----------- .../src/main/java/com/vaadin/ui/ComboBox.java | 17 +++++++---------- .../shared/ui/combobox/ComboBoxState.java | 7 +++++++ 3 files changed, 16 insertions(+), 21 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 189f6b469d..01a8db571c 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 @@ -34,10 +34,8 @@ import com.vaadin.client.ui.VFilterSelect.FilterSelectSuggestion; import com.vaadin.shared.EventId; import com.vaadin.shared.communication.FieldRpc.FocusAndBlurServerRpc; import com.vaadin.shared.ui.Connect; -import com.vaadin.shared.ui.combobox.ComboBoxConstants; import com.vaadin.shared.ui.combobox.ComboBoxServerRpc; import com.vaadin.shared.ui.combobox.ComboBoxState; -import com.vaadin.shared.ui.combobox.FilteringMode; import com.vaadin.ui.ComboBox; @Connect(ComboBox.class) @@ -83,6 +81,8 @@ public class ComboBoxConnector extends AbstractFieldConnector implements getWidget().pageLength = getState().pageLength; + getWidget().filteringmode = getState().filteringMode; + Profiler.leave("ComboBoxConnector.onStateChanged update content"); } @@ -101,11 +101,6 @@ public class ComboBoxConnector extends AbstractFieldConnector implements // not a FocusWidget -> needs own tabindex handling getWidget().tb.setTabIndex(getState().tabIndex); - if (uidl.hasAttribute("filteringmode")) { - getWidget().filteringmode = FilteringMode.valueOf(uidl - .getStringAttribute("filteringmode")); - } - getWidget().nullSelectionAllowed = uidl.hasAttribute("nullselect"); getWidget().nullSelectItem = uidl.hasAttribute("nullselectitem") @@ -113,10 +108,6 @@ public class ComboBoxConnector extends AbstractFieldConnector implements getWidget().currentPage = uidl.getIntVariable("page"); - if (uidl.hasAttribute("pagelength")) { - getWidget().pageLength = uidl.getIntAttribute("pagelength"); - } - if (uidl.hasAttribute("suggestionPopupWidth")) { getWidget().suggestionPopupWidth = uidl .getStringAttribute("suggestionPopupWidth"); diff --git a/server/src/main/java/com/vaadin/ui/ComboBox.java b/server/src/main/java/com/vaadin/ui/ComboBox.java index cfb5ebfc1a..73786b390c 100644 --- a/server/src/main/java/com/vaadin/ui/ComboBox.java +++ b/server/src/main/java/com/vaadin/ui/ComboBox.java @@ -115,8 +115,6 @@ public class ComboBox extends AbstractSelect implements // Current page when the user is 'paging' trough options private int currentPage = -1; - private FilteringMode filteringMode = FilteringMode.STARTSWITH; - private String filterstring; private String prevfilterstring; @@ -216,7 +214,7 @@ public class ComboBox extends AbstractSelect implements private boolean isFilteringNeeded() { return filterstring != null && filterstring.length() > 0 - && filteringMode != FilteringMode.OFF; + && getFilteringMode() != FilteringMode.OFF; } @Override @@ -254,8 +252,6 @@ public class ComboBox extends AbstractSelect implements suggestionPopupWidth); } - target.addAttribute("filteringmode", getFilteringMode().toString()); - // Paints the options and create array of selected id keys int keyIndex = 0; @@ -452,7 +448,7 @@ public class ComboBox extends AbstractSelect implements Filterable filterable = (Filterable) container; - Filter filter = buildFilter(filterstring, filteringMode); + Filter filter = buildFilter(filterstring, getFilteringMode()); // adding and removing filters leads to extraneous item set // change events from the underlying container, but the ComboBox does @@ -707,7 +703,7 @@ public class ComboBox extends AbstractSelect implements } else { caption = caption.toLowerCase(getLocale()); } - switch (filteringMode) { + switch (getFilteringMode()) { case CONTAINS: if (caption.indexOf(filterstring) > -1) { filteredOptions.add(itemId); @@ -750,12 +746,12 @@ public class ComboBox extends AbstractSelect implements @Override public void setFilteringMode(FilteringMode filteringMode) { - this.filteringMode = filteringMode; + getState().filteringMode = filteringMode; } @Override public FilteringMode getFilteringMode() { - return filteringMode; + return getState(false).filteringMode; } @Override @@ -889,7 +885,8 @@ public class ComboBox extends AbstractSelect implements * * @see #getPopupWidth() * @since 7.7 - * @param width the width + * @param width + * the width */ public void setPopupWidth(String width) { suggestionPopupWidth = width; diff --git a/shared/src/main/java/com/vaadin/shared/ui/combobox/ComboBoxState.java b/shared/src/main/java/com/vaadin/shared/ui/combobox/ComboBoxState.java index 21bf4b9340..6eae3fc46e 100644 --- a/shared/src/main/java/com/vaadin/shared/ui/combobox/ComboBoxState.java +++ b/shared/src/main/java/com/vaadin/shared/ui/combobox/ComboBoxState.java @@ -48,4 +48,11 @@ public class ComboBoxState extends AbstractSelectState { * Number of items to show per page or 0 to disable paging. */ public int pageLength = 10; + + /** + * Current filtering mode (look for match of the user typed string in the + * beginning of the item caption or anywhere in the item caption). + */ + public FilteringMode filteringMode = FilteringMode.STARTSWITH; + } -- 2.39.5