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

import com.vaadin.shared.ui.Connect; import com.vaadin.shared.ui.Connect;
import com.vaadin.shared.ui.combobox.ComboBoxServerRpc; import com.vaadin.shared.ui.combobox.ComboBoxServerRpc;
import com.vaadin.shared.ui.combobox.ComboBoxState; import com.vaadin.shared.ui.combobox.ComboBoxState;
import com.vaadin.shared.ui.combobox.FilteringMode;
import com.vaadin.ui.ComboBox; import com.vaadin.ui.ComboBox;


@Connect(ComboBox.class) @Connect(ComboBox.class)


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


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

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


// not a FocusWidget -> needs own tabindex handling // not a FocusWidget -> needs own tabindex handling
getWidget().tb.setTabIndex(getState().tabIndex); getWidget().tb.setTabIndex(getState().tabIndex);


if (uidl.hasAttribute("filteringmode")) {
getWidget().filteringmode = FilteringMode.valueOf(uidl
.getStringAttribute("filteringmode"));
}

getWidget().nullSelectionAllowed = uidl.hasAttribute("nullselect"); getWidget().nullSelectionAllowed = uidl.hasAttribute("nullselect");


getWidget().nullSelectItem = uidl.hasAttribute("nullselectitem") getWidget().nullSelectItem = uidl.hasAttribute("nullselectitem")

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

// Current page when the user is 'paging' trough options // Current page when the user is 'paging' trough options
private int currentPage = -1; private int currentPage = -1;


private FilteringMode filteringMode = FilteringMode.STARTSWITH;

private String filterstring; private String filterstring;
private String prevfilterstring; private String prevfilterstring;




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


@Override @Override
String[] selectedKeys = new String[(getValue() == null String[] selectedKeys = new String[(getValue() == null
&& getNullSelectionItemId() == null ? 0 : 1)]; && getNullSelectionItemId() == null ? 0 : 1)];


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

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




Filterable filterable = (Filterable) container; Filterable filterable = (Filterable) container;


Filter filter = buildFilter(filterstring, filteringMode);
Filter filter = buildFilter(filterstring, getFilteringMode());


// adding and removing filters leads to extraneous item set // adding and removing filters leads to extraneous item set
// change events from the underlying container, but the ComboBox does // change events from the underlying container, but the ComboBox does
} else { } else {
caption = caption.toLowerCase(getLocale()); caption = caption.toLowerCase(getLocale());
} }
switch (filteringMode) {
switch (getFilteringMode()) {
case CONTAINS: case CONTAINS:
if (caption.indexOf(filterstring) > -1) { if (caption.indexOf(filterstring) > -1) {
filteredOptions.add(itemId); filteredOptions.add(itemId);


@Override @Override
public void setFilteringMode(FilteringMode filteringMode) { public void setFilteringMode(FilteringMode filteringMode) {
this.filteringMode = filteringMode;
getState().filteringMode = filteringMode;
} }


@Override @Override
public FilteringMode getFilteringMode() { public FilteringMode getFilteringMode() {
return filteringMode;
return getState(false).filteringMode;
} }


@Override @Override

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

* Number of items to show per page or 0 to disable paging. * Number of items to show per page or 0 to disable paging.
*/ */
public int pageLength = 10; 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