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 13006aa047b70ee966014fc5357f156bcec4d21b..98ed64301bc0594b6c0d71dc3ef8f6f6ec1af3f7 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 @@ -21,6 +21,7 @@ import com.extjs.gxt.ui.client.widget.MessageBox; import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DefaultTabItem; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItem; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier; import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageAction; @@ -34,11 +35,34 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SearchableEntity; public class GlobalSearchTabItemFactory { - public static AbstractTabItemFactory create( + + /** + * opens a new tab if there are search results. + */ + public static void openTabIfEntitiesFound( + final IViewContext<ICommonClientServiceAsync> viewContext, + final SearchableEntity searchableEntity, final String queryText) + { + + openTab(viewContext, searchableEntity, queryText, false); + } + + /** + * 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) { + openTab(viewContext, searchableEntity, queryText, true); + } + + private static void openTab(final IViewContext<ICommonClientServiceAsync> viewContext, + final SearchableEntity searchableEntity, final String queryText, + final boolean openIfNoEntitiesFound) + { + final boolean useWildcardSearchMode = viewContext.getDisplaySettingsManager().isUseWildcardSearchMode(); @@ -56,10 +80,6 @@ public class GlobalSearchTabItemFactory { public void postRefresh(boolean wasSuccessful) { - if (wasSuccessful == false) - { - return; - } if (matchingEntitiesGrid.getRowNumber() == 0) { Object[] msgParameters = (useWildcardSearchMode == true) ? new String[] @@ -67,15 +87,20 @@ public class GlobalSearchTabItemFactory { queryText, "not", "on" }; MessageBox.alert(viewContext.getMessage(Dict.MESSAGEBOX_WARNING), viewContext.getMessage(Dict.NO_MATCH, msgParameters), null); - return; + + if (openIfNoEntitiesFound == false) + { + return; + } } - } - }); - return tabFactory; + DispatcherHelper.dispatchNaviEvent(tabFactory); + } + }); } + private static String createTabTitle(IViewContext<ICommonClientServiceAsync> viewContext, String chosenEntity, String queryText) { 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 cedd481bf00394b005c2be8061d279562e32e001..34f568988be3841d93cb8d101eb04c81931bce57 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,8 +24,6 @@ import com.google.gwt.user.client.History; import ch.systemsx.cisd.common.shared.basic.utils.StringUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper; 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; @@ -143,17 +141,13 @@ public final class SearchWidget extends LayoutContainer if (viewContext.isSimpleMode()) { // redirect to another URL - String entityDescription = - (selectedEntity != null) ? selectedEntity.getName() : null; + String entityDescription = (selectedEntity != null) ? selectedEntity.getName() : null; String url = createGlobalSearchLink(entityDescription, queryText); History.newItem(url); } else { - - AbstractTabItemFactory tabItemFactory = - GlobalSearchTabItemFactory.create(viewContext, selectedEntity, queryText); - - DispatcherHelper.dispatchNaviEvent(tabItemFactory); + GlobalSearchTabItemFactory.openTabIfEntitiesFound(viewContext, selectedEntity, + 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 77e4ca1624065686b0c28e5cd24972b80b533d42..87ff512707c6834b7d58fbfed5db04d0e553b751 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 @@ -3,8 +3,6 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.locator; import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; import ch.systemsx.cisd.openbis.generic.client.web.client.application.GlobalSearchTabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SearchableEntity; import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException; @@ -37,10 +35,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); - AbstractTabItemFactory tabItemFactory = - GlobalSearchTabItemFactory.create(viewContext, selectedSearchableEntity, queryText); - - DispatcherHelper.dispatchNaviEvent(tabItemFactory); + GlobalSearchTabItemFactory.openTab(viewContext, selectedSearchableEntity, queryText); }