Skip to content
Snippets Groups Projects
Commit 685ee78c authored by anttil's avatar anttil
Browse files

SSDM-772: Link to navigate to a specific sub-tab in the generic web UI

SVN: 32392
parent a94212d4
No related branches found
No related tags found
No related merge requests found
package ch.systemsx.cisd.openbis.generic.client.web.client.application.locator; package ch.systemsx.cisd.openbis.generic.client.web.client.application.locator;
import java.util.HashMap;
import java.util.Map;
import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.rpc.AsyncCallback;
import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync;
...@@ -62,10 +65,26 @@ public class PermlinkLocatorResolver extends AbstractViewLocatorResolver ...@@ -62,10 +65,26 @@ public class PermlinkLocatorResolver extends AbstractViewLocatorResolver
checkRequiredParameter(entityKindValueOrNull, checkRequiredParameter(entityKindValueOrNull,
PermlinkUtilities.ENTITY_KIND_PARAMETER_KEY); PermlinkUtilities.ENTITY_KIND_PARAMETER_KEY);
checkRequiredParameter(permIdValueOrNull, PermlinkUtilities.PERM_ID_PARAMETER_KEY); checkRequiredParameter(permIdValueOrNull, PermlinkUtilities.PERM_ID_PARAMETER_KEY);
openInitialEntityViewer(entityKindValueOrNull, permIdValueOrNull);
String subtab = parseHistoryToken(locator.getHistoryToken()).get(PermlinkUtilities.SUBTAB_PARAMETER_KEY);
openInitialEntityViewer(entityKindValueOrNull, permIdValueOrNull, subtab);
} }
} }
private Map<String, String> parseHistoryToken(String token) {
Map<String, String> map = new HashMap<String,String>();
for (String parameter : token.split("&")) {
String[] keyval = parameter.split("=", 2);
if (keyval.length == 2) {
map.put(keyval[0], keyval[1]);
}
}
return map;
}
protected String tryGetEntityKind(ViewLocator locator) protected String tryGetEntityKind(ViewLocator locator)
{ {
return locator.tryGetEntity(); return locator.tryGetEntity();
...@@ -93,8 +112,14 @@ public class PermlinkLocatorResolver extends AbstractViewLocatorResolver ...@@ -93,8 +112,14 @@ public class PermlinkLocatorResolver extends AbstractViewLocatorResolver
protected void openInitialEntityViewer(String entityKindValue, String permIdValue) protected void openInitialEntityViewer(String entityKindValue, String permIdValue)
throws UserFailureException throws UserFailureException
{ {
EntityKind entityKind = getEntityKind(entityKindValue); openInitialEntityViewer(entityKindValue, permIdValue, "");
OpenEntityDetailsTabHelper.open(viewContext, entityKind, permIdValue, false);
} }
protected void openInitialEntityViewer(String entityKindValue, String permIdValue, String subtab)
throws UserFailureException
{
EntityKind entityKind = getEntityKind(entityKindValue);
OpenEntityDetailsTabHelper.open(viewContext, entityKind, permIdValue, false, subtab);
}
} }
\ No newline at end of file
...@@ -112,9 +112,11 @@ public class SearchLocatorResolver extends AbstractViewLocatorResolver ...@@ -112,9 +112,11 @@ public class SearchLocatorResolver extends AbstractViewLocatorResolver
} }
} else } else
{ {
DetailedSearchCriterion searchCriterion = if (key.startsWith("ui-") == false) {
getSearchCriterionForKeyValueAndEntityKind(key, value); DetailedSearchCriterion searchCriterion =
criterionList.add(searchCriterion); getSearchCriterionForKeyValueAndEntityKind(key, value);
criterionList.add(searchCriterion);
}
} }
} }
......
...@@ -19,6 +19,7 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.listen ...@@ -19,6 +19,7 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.listen
import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; 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.AbstractTabItemFactory;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPlugin; import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPlugin;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPluginFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPluginFactory;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction;
...@@ -38,6 +39,8 @@ public final class OpenEntityDetailsTabAction implements IDelegatedAction ...@@ -38,6 +39,8 @@ public final class OpenEntityDetailsTabAction implements IDelegatedAction
private final IViewContext<?> viewContext; private final IViewContext<?> viewContext;
private final boolean keyPressed; private final boolean keyPressed;
private final String subtab;
public OpenEntityDetailsTabAction(IEntityInformationHolderWithPermId entity, public OpenEntityDetailsTabAction(IEntityInformationHolderWithPermId entity,
final IViewContext<?> viewContext) final IViewContext<?> viewContext)
...@@ -47,12 +50,20 @@ public final class OpenEntityDetailsTabAction implements IDelegatedAction ...@@ -47,12 +50,20 @@ public final class OpenEntityDetailsTabAction implements IDelegatedAction
public OpenEntityDetailsTabAction(IEntityInformationHolderWithPermId entity, public OpenEntityDetailsTabAction(IEntityInformationHolderWithPermId entity,
final IViewContext<?> viewContext, boolean keyPressed) final IViewContext<?> viewContext, boolean keyPressed)
{
this(entity, viewContext, keyPressed, "");
}
public OpenEntityDetailsTabAction(IEntityInformationHolderWithPermId entity,
final IViewContext<?> viewContext, boolean keyPressed, String subtab)
{ {
this.entity = entity; this.entity = entity;
this.viewContext = viewContext; this.viewContext = viewContext;
this.keyPressed = keyPressed; this.keyPressed = keyPressed;
this.subtab = subtab;
} }
@Override @Override
public void execute() public void execute()
{ {
...@@ -64,6 +75,33 @@ public final class OpenEntityDetailsTabAction implements IDelegatedAction ...@@ -64,6 +75,33 @@ public final class OpenEntityDetailsTabAction implements IDelegatedAction
final IClientPlugin<BasicEntityType, IEntityInformationHolderWithPermId> createClientPlugin = final IClientPlugin<BasicEntityType, IEntityInformationHolderWithPermId> createClientPlugin =
clientPluginFactory.createClientPlugin(entityKind); clientPluginFactory.createClientPlugin(entityKind);
final AbstractTabItemFactory tabView = createClientPlugin.createEntityViewer(entity); final AbstractTabItemFactory tabView = createClientPlugin.createEntityViewer(entity);
String tabGroupDisplayId = null;
switch (entityKind) {
case DATA_SET:
tabGroupDisplayId = DisplayTypeIDGenerator.GENERIC_DATASET_VIEWER.createID(entityType.getCode());
break;
case EXPERIMENT:
tabGroupDisplayId = DisplayTypeIDGenerator.GENERIC_EXPERIMENT_VIEWER.createID(entityType.getCode());
break;
case MATERIAL:
tabGroupDisplayId = DisplayTypeIDGenerator.GENERIC_MATERIAL_VIEWER.createID(entityType.getCode());
break;
case SAMPLE:
tabGroupDisplayId = DisplayTypeIDGenerator.GENERIC_SAMPLE_VIEWER.createID(entityType.getCode());
break;
default:
break;
}
if (subtab != null && subtab.length() > 0 && tabGroupDisplayId != null) {
viewContext.getDisplaySettingsManager().storeActiveTabSettings(
tabGroupDisplayId,
subtab, null);
tabView.setForceReopen(true);
}
tabView.setInBackground(keyPressed); tabView.setInBackground(keyPressed);
DispatcherHelper.dispatchNaviEvent(tabView); DispatcherHelper.dispatchNaviEvent(tabView);
......
...@@ -50,9 +50,15 @@ public class OpenEntityDetailsTabHelper ...@@ -50,9 +50,15 @@ public class OpenEntityDetailsTabHelper
public static void open(IViewContext<?> viewContext, EntityKind entityKind, String permId, public static void open(IViewContext<?> viewContext, EntityKind entityKind, String permId,
boolean keyPressed) boolean keyPressed)
{ {
viewContext.getCommonService().getEntityInformationHolder(entityKind, permId, open(viewContext, entityKind, permId, keyPressed, "");
new OpenEntityDetailsTabCallback(viewContext, keyPressed));
} }
public static void open(IViewContext<?> viewContext, EntityKind entityKind, String permId,
boolean keyPressed, String subtab)
{
viewContext.getCommonService().getEntityInformationHolder(entityKind, permId,
new OpenEntityDetailsTabCallback(viewContext, keyPressed, subtab));
}
public static void open(IViewContext<?> viewContext, BasicEntityDescription description, public static void open(IViewContext<?> viewContext, BasicEntityDescription description,
boolean keyPressed) boolean keyPressed)
...@@ -74,14 +80,24 @@ public class OpenEntityDetailsTabHelper ...@@ -74,14 +80,24 @@ public class OpenEntityDetailsTabHelper
{ {
private final boolean keyPressed; private final boolean keyPressed;
private final String subtab;
private OpenEntityDetailsTabCallback(final IViewContext<?> viewContext, private OpenEntityDetailsTabCallback(final IViewContext<?> viewContext,
final boolean keyPressed) final boolean keyPressed, final String subtab)
{ {
super(viewContext); super(viewContext);
this.keyPressed = keyPressed; this.keyPressed = keyPressed;
this.subtab = subtab;
}
private OpenEntityDetailsTabCallback(final IViewContext<?> viewContext,
final boolean keyPressed)
{
this(viewContext, keyPressed, "");
} }
private OpenEntityDetailsTabCallback(final IViewContext<?> viewContext) private OpenEntityDetailsTabCallback(final IViewContext<?> viewContext)
{ {
this(viewContext, false); this(viewContext, false);
...@@ -97,7 +113,7 @@ public class OpenEntityDetailsTabHelper ...@@ -97,7 +113,7 @@ public class OpenEntityDetailsTabHelper
@Override @Override
protected final void process(final IEntityInformationHolderWithPermId result) protected final void process(final IEntityInformationHolderWithPermId result)
{ {
new OpenEntityDetailsTabAction(result, viewContext, keyPressed).execute(); new OpenEntityDetailsTabAction(result, viewContext, keyPressed, subtab).execute();
} }
} }
......
...@@ -34,6 +34,9 @@ public class PermlinkUtilities ...@@ -34,6 +34,9 @@ public class PermlinkUtilities
/** The HTTP URL parameter used to specify the entity kind. */ /** The HTTP URL parameter used to specify the entity kind. */
public static final String ENTITY_KIND_PARAMETER_KEY = "entity"; public static final String ENTITY_KIND_PARAMETER_KEY = "entity";
/** The optional HTTP URL parameter used to specify the subtab that should be opened. */
public static final String SUBTAB_PARAMETER_KEY = "ui-subtab";
public final static String createPermlinkURL(final String baseIndexURL, public final static String createPermlinkURL(final String baseIndexURL,
final EntityKind entityKind, final String permId) final EntityKind entityKind, final String permId)
{ {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment