diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GlobalSearchTabItemFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GlobalSearchTabItemFactory.java index 396c6a9a6f39b09f415b74c0ccfd46037f93cb09..83d21db2691b2b72915bbc44e97033dc80485b14 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GlobalSearchTabItemFactory.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GlobalSearchTabItemFactory.java @@ -35,30 +35,35 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SearchableEntity; public class GlobalSearchTabItemFactory { + static class ActionFinish { + public void finish() {} + } + /** * opens a new tab if there are search results. */ public static void openTabIfEntitiesFound( final IViewContext<ICommonClientServiceAsync> viewContext, - final SearchableEntity searchableEntity, final String queryText) + final SearchableEntity searchableEntity, final String queryText, final ActionFinish actionFinish) { - openTab(viewContext, searchableEntity, queryText, false); + openTab(viewContext, searchableEntity, queryText, false, actionFinish); } /** * always opens a new tab, regardless if there were any search entities found. */ public static void openTab(final IViewContext<ICommonClientServiceAsync> viewContext, - final SearchableEntity searchableEntity, final String queryText) + final SearchableEntity searchableEntity, final String queryText, final ActionFinish actionFinish) { - openTab(viewContext, searchableEntity, queryText, true); + openTab(viewContext, searchableEntity, queryText, true, actionFinish); } private static void openTab(final IViewContext<ICommonClientServiceAsync> viewContext, final SearchableEntity searchableEntity, final String queryText, - final boolean openIfNoEntitiesFound) + final boolean openIfNoEntitiesFound, + final ActionFinish actionFinish) { final boolean useWildcardSearchMode = @@ -82,6 +87,10 @@ public class GlobalSearchTabItemFactory @Override public void postRefresh(boolean wasSuccessful) { + if(actionFinish != null) { + actionFinish.finish(); + } + if (firstCall == false) { return; @@ -102,7 +111,6 @@ public class GlobalSearchTabItemFactory } DispatcherHelper.dispatchNaviEvent(tabFactory); - } }); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SearchWidget.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SearchWidget.java index a4e31b05beb8aa9b8ddde675d184a3fed7b75c5a..b1e8fc34f02e79429e8719f3ef5c1a7040d6410f 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SearchWidget.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SearchWidget.java @@ -24,6 +24,7 @@ import com.google.gwt.user.client.History; import ch.systemsx.cisd.common.shared.basic.string.StringUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.GlobalSearchTabItemFactory.ActionFinish; import ch.systemsx.cisd.openbis.generic.client.web.client.application.locator.GlobalSearchLocatorResolver; import ch.systemsx.cisd.openbis.generic.client.web.client.application.locator.ViewLocator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.EnterKeyListener; @@ -63,7 +64,7 @@ public final class SearchWidget extends LayoutContainer private final ButtonWithLoadingMask searchButton; private final EnterKeyListener enterKeyListener; - + public SearchWidget(final IViewContext<ICommonClientServiceAsync> viewContext) { final TableRowLayout tableRowLayout = createLayout(); @@ -136,8 +137,9 @@ public final class SearchWidget extends LayoutContainer // reset the text field textField.setValue(""); - + searchButton.setEnabled(false); SearchableEntity selectedEntity = entityChooser.getSelectedSearchableEntity(); + if (viewContext.isSimpleOrEmbeddedMode()) { // redirect to another URL @@ -146,10 +148,15 @@ public final class SearchWidget extends LayoutContainer History.newItem(url); } else { + ActionFinish searchFinish = new ActionFinish() { + public void finish() { + searchButton.setEnabled(true); + }; + }; + GlobalSearchTabItemFactory.openTabIfEntitiesFound(viewContext, selectedEntity, - queryText); + queryText, searchFinish); } - } private static boolean hasOnlyWildcards(final String queryText) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/GlobalSearchLocatorResolver.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/GlobalSearchLocatorResolver.java index f5348074d2df679b39aa77605725127898a9cd82..0612140791f893d63246bf4b2d5c0248107d7c16 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/GlobalSearchLocatorResolver.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/locator/GlobalSearchLocatorResolver.java @@ -36,7 +36,7 @@ public class GlobalSearchLocatorResolver extends AbstractViewLocatorResolver // TODO KE: 2011-02-16 we should parse queries that can contain spaces final String queryText = getMandatoryParameter(locator, QUERY_PARAMETER_KEY); - GlobalSearchTabItemFactory.openTab(viewContext, selectedSearchableEntity, queryText); + GlobalSearchTabItemFactory.openTab(viewContext, selectedSearchableEntity, queryText, null); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/ButtonWithLoadingMask.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/ButtonWithLoadingMask.java index 24dcbbe5075da24a3d3acb999d733d50dd69f179..6b81a6b59a62c30dba4382ae4a7ae51cefd8a4fe 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/ButtonWithLoadingMask.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/ButtonWithLoadingMask.java @@ -124,6 +124,7 @@ public abstract class ButtonWithLoadingMask extends LayoutContainer private final static Image createLoadingImage() { final Image image = new Image(LOADING_IMAGE_URL); + image.setSize("19px", "19px"); image.setVisible(false); return image; }