diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/filter/FilterToolbar.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/filter/FilterToolbar.java index 1164dbc003994bf889e5528954400cca785e67a9..b3ea172fb96541e3a9445779a199bc8c85529455 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/filter/FilterToolbar.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/filter/FilterToolbar.java @@ -28,6 +28,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewConte import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDatabaseModificationObserver; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisplayTypeIDProvider; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.PagingColumnFilter; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.IDataRefreshCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.CustomFilterInfo; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ParameterWithValue; @@ -91,6 +92,14 @@ public class FilterToolbar<T> extends ToolBar implements IDatabaseModificationOb } }); + filterSelectionWidget.addPostRefreshCallback(new IDataRefreshCallback() + { + public void postRefresh(boolean wasSuccessful) + { + updateFilterFields(); + apply(); + } + }); applyTool.addSelectionListener(new SelectionListener<ComponentEvent>() { @Override 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 e076f0873e2548249e14e58bbd2854d10ff1d2af..6c2d59802dd4afa1013b8a286f2f48e4030f5df9 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 @@ -72,6 +72,8 @@ abstract public class DropDownList<M extends ModelData, E> extends ComboBox<M> i public String callbackIdOrNull; + private final List<IDataRefreshCallback> dataRefreshCallbacks; + public DropDownList(final IViewContext<?> viewContext, String idSuffix, String labelDictCode, String displayField, String chooseSuffix, String nothingFoundSuffix) { @@ -92,6 +94,7 @@ abstract public class DropDownList<M extends ModelData, E> extends ComboBox<M> i this.mandatory = mandatory; this.reloadWhenRendering = reloadWhenRendering; this.viewContextOrNull = viewContextOrNull; + this.dataRefreshCallbacks = new ArrayList<IDataRefreshCallback>(); setId(createId(idSuffix)); setEnabled(true); @@ -222,6 +225,10 @@ abstract public class DropDownList<M extends ModelData, E> extends ComboBox<M> i { List<M> convertedItems = convertItems(result); updateStore(convertedItems); + for (IDataRefreshCallback c : dataRefreshCallbacks) + { + c.postRefresh(true); + } } @Override @@ -435,4 +442,9 @@ abstract public class DropDownList<M extends ModelData, E> extends ComboBox<M> i } } + public void addPostRefreshCallback(IDataRefreshCallback callback) + { + dataRefreshCallbacks.add(callback); + } + }