From 33e2529d8ba6bb1b48894abb4d01ae0f55755a46 Mon Sep 17 00:00:00 2001 From: izabel <izabel> Date: Tue, 29 Sep 2009 13:23:19 +0000 Subject: [PATCH] use "contains" filter in the drop down list SVN: 12766 --- .../application/ui/widget/DropDownList.java | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/DropDownList.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/DropDownList.java index e2970aa818d..43406463a62 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/DropDownList.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/DropDownList.java @@ -24,6 +24,7 @@ import java.util.Set; import com.extjs.gxt.ui.client.data.ModelData; import com.extjs.gxt.ui.client.store.ListStore; import com.extjs.gxt.ui.client.store.Store; +import com.extjs.gxt.ui.client.store.StoreFilter; import com.extjs.gxt.ui.client.widget.form.ComboBox; import com.google.gwt.user.client.Element; @@ -34,6 +35,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewConte import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareField; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDatabaseModificationObserver; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.GWTUtils; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.StringUtils; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; /** @@ -98,7 +100,40 @@ abstract public class DropDownList<M extends ModelData, E> extends ComboBox<M> i setWidth(DEFAULT_WIDTH); setDisplayField(displayField); setFieldLabel(label); - setStore(new ListStore<M>()); + setStore(createEmptyStoreWithContainsFilter()); + } + + private ListStore<M> createEmptyStoreWithContainsFilter() + { + StoreFilter<M> filter = new StoreFilter<M>() + { + + @SuppressWarnings("unchecked") + public boolean select(Store s, M parent, M item, String property) + { + String v = getRawValue(); + if (StringUtils.isBlank(v)) + { + return true; + } + if (item != null && item.get(getDisplayField()) != null) + { + return ((String) item.get(getDisplayField())).toLowerCase().indexOf( + v.toLowerCase()) >= 0; + } + return false; + } + }; + ListStore<M> newStore = new ListStore<M>() + { + @Override + public void filter(String property, String beginsWith) + { + super.filter(property); + } + }; + newStore.addFilter(filter); + return newStore; } protected void setCallbackId(String callbackId) -- GitLab