Browse Source

Move ComboBox filtering mode to state (#19929)

Change-Id: Ida38de55e1fc06aa6ec5e693f34cd5bc14ac4fc5
feature/combobox-communication
Henri Sara 8 years ago
parent
commit
02b9064f0f

+ 2
- 6
client/src/com/vaadin/client/ui/combobox/ComboBoxConnector.java View File

@@ -36,7 +36,6 @@ import com.vaadin.shared.communication.FieldRpc.FocusAndBlurServerRpc;
import com.vaadin.shared.ui.Connect;
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)
@@ -82,6 +81,8 @@ public class ComboBoxConnector extends AbstractFieldConnector implements

getWidget().pageLength = getState().pageLength;

getWidget().filteringmode = getState().filteringMode;

Profiler.leave("ComboBoxConnector.onStateChanged update content");
}

@@ -100,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")

+ 5
- 9
server/src/com/vaadin/ui/ComboBox.java View File

@@ -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;

@@ -207,7 +205,7 @@ public class ComboBox extends AbstractSelect implements

private boolean isFilteringNeeded() {
return filterstring != null && filterstring.length() > 0
&& filteringMode != FilteringMode.OFF;
&& getFilteringMode() != FilteringMode.OFF;
}

@Override
@@ -240,8 +238,6 @@ public class ComboBox extends AbstractSelect implements
String[] selectedKeys = new String[(getValue() == null
&& getNullSelectionItemId() == null ? 0 : 1)];

target.addAttribute("filteringmode", getFilteringMode().toString());

// Paints the options and create array of selected id keys
int keyIndex = 0;

@@ -438,7 +434,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
@@ -693,7 +689,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);
@@ -736,12 +732,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

+ 7
- 0
shared/src/com/vaadin/shared/ui/combobox/ComboBoxState.java View File

@@ -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;

}

Loading…
Cancel
Save