From 3cd2a919bc1513e5ac08b2f5f44dc77316b24f90 Mon Sep 17 00:00:00 2001 From: buczekp <buczekp> Date: Mon, 20 Sep 2010 07:55:25 +0000 Subject: [PATCH] [LMS-1757] fixed links to materials in simple view mode SVN: 17908 --- .../ui/columns/framework/LinkExtractor.java | 15 ++++-- .../detailviewers/PlateMaterialReviewer.java | 2 +- .../detailviewers/WellContentDialog.java | 54 ++++++++++++------- 3 files changed, 46 insertions(+), 25 deletions(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/LinkExtractor.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/LinkExtractor.java index 9b56546cfd0..07c14b525db 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/LinkExtractor.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/LinkExtractor.java @@ -40,10 +40,17 @@ public class LinkExtractor { return null; } - URLMethodWithParameters url = new URLMethodWithParameters(""); - url.addParameter(PermlinkUtilities.ENTITY_KIND_PARAMETER_KEY, entityOrNull.getEntityKind().name()); - url.addParameter(PermlinkUtilities.PERM_ID_PARAMETER_KEY, entityOrNull.getPermId()); - return print(url); + if (entityOrNull.getEntityKind() == EntityKind.MATERIAL) + { + return tryExtractMaterial(entityOrNull); + } else + { + URLMethodWithParameters url = new URLMethodWithParameters(""); + url.addParameter(PermlinkUtilities.ENTITY_KIND_PARAMETER_KEY, entityOrNull + .getEntityKind().name()); + url.addParameter(PermlinkUtilities.PERM_ID_PARAMETER_KEY, entityOrNull.getPermId()); + return print(url); + } } public static final String tryExtract(Project p) diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateMaterialReviewer.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateMaterialReviewer.java index a79959057d6..1e6896a31ac 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateMaterialReviewer.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateMaterialReviewer.java @@ -365,7 +365,7 @@ public class PlateMaterialReviewer extends AbstractSimpleBrowserGrid<WellContent { ColumnDefsAndConfigs<WellContent> schema = super.createColumnsDefinition(); setLinksRenderer(schema, new PlateMaterialReviewerColDefKind[] - { PlateMaterialReviewerColDefKind.WELL_CONTENT_MATERIAL, + { PlateMaterialReviewerColDefKind.WELL_CONTENT_MATERIAL, PlateMaterialReviewerColDefKind.PLATE, PlateMaterialReviewerColDefKind.WELL, PlateMaterialReviewerColDefKind.DATASET, diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellContentDialog.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellContentDialog.java index c622d3b159e..411ee35d5f5 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellContentDialog.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellContentDialog.java @@ -34,12 +34,14 @@ import com.extjs.gxt.ui.client.widget.layout.TableData; import com.extjs.gxt.ui.client.widget.layout.TableLayout; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Widget; import ch.systemsx.cisd.common.shared.basic.utils.StringUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.LinkRenderer; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.LinkExtractor; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.listener.OpenEntityDetailsTabClickListener; import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; @@ -162,8 +164,8 @@ public class WellContentDialog extends Dialog WellContent wellContent, WellImages wellImages) { WellContentDialog contentDialog = - new WellContentDialog(wellContent.getWell(), null, - getExperiment(wellContent.getExperiment()), viewContext); + new WellContentDialog(wellContent.getWell(), null, getExperiment(wellContent + .getExperiment()), viewContext); // NOTE: channel chooser state will be not reused among different dialogs DefaultChannelState channelState = new DefaultChannelState(); @@ -196,8 +198,8 @@ public class WellContentDialog extends Dialog return createTilesGrid(images, channel, sessionId); } }; - return ChannelChooser.createViewerWithChannelChooser(viewerFactory, channelState, - images.getChannelsCodes()); + return ChannelChooser.createViewerWithChannelChooser(viewerFactory, channelState, images + .getChannelsCodes()); } private static LayoutContainer createTilesGrid(final WellImages images, String channel, @@ -265,8 +267,8 @@ public class WellContentDialog extends Dialog getImageHeight(images)); } }; - return ChannelChooser.createViewerWithChannelChooser(viewerFactory, channelState, - images.getChannelsCodes()); + return ChannelChooser.createViewerWithChannelChooser(viewerFactory, channelState, images + .getChannelsCodes()); } // ---------------- STATIC METHODS ------------------- @@ -285,15 +287,15 @@ public class WellContentDialog extends Dialog private static SingleExperimentSearchCriteria getExperiment(WellData wellData) { - return new SingleExperimentSearchCriteria(wellData.getExperimentId().getId(), - wellData.getExperimentDisplayIdentifier()); + return new SingleExperimentSearchCriteria(wellData.getExperimentId().getId(), wellData + .getExperimentDisplayIdentifier()); } private static SingleExperimentSearchCriteria getExperiment( ExperimentReference experimentReference) { - return new SingleExperimentSearchCriteria(experimentReference.getId(), - experimentReference.getExperimentIdentifier()); + return new SingleExperimentSearchCriteria(experimentReference.getId(), experimentReference + .getExperimentIdentifier()); } private static float getImageSizeMultiplyFactor(WellImages images) @@ -348,7 +350,7 @@ public class WellContentDialog extends Dialog } }); } - + private void addComponent(LayoutContainer component) { add(component); @@ -408,8 +410,8 @@ public class WellContentDialog extends Dialog if (material != null) { - if (material.getMaterialType().getCode() - .equalsIgnoreCase(ScreeningConstants.GENE_PLUGIN_TYPE_CODE)) + if (material.getMaterialType().getCode().equalsIgnoreCase( + ScreeningConstants.GENE_PLUGIN_TYPE_CODE)) { container.add(createEntityExternalLink(material)); } else @@ -458,8 +460,8 @@ public class WellContentDialog extends Dialog } } else { - container.add(new Html(LinkRenderer.renderAsLinkWithAnchor("gene database", - viewContext.getMessage(Dict.GENE_LIBRARY_SEARCH_URL, gene.getCode()), true))); + container.add(new Html(LinkRenderer.renderAsLinkWithAnchor("gene database", viewContext + .getMessage(Dict.GENE_LIBRARY_SEARCH_URL, gene.getCode()), true))); } container.add(new Text("]")); return container; @@ -467,17 +469,29 @@ public class WellContentDialog extends Dialog private Widget createPlateLocationsMaterialViewerLink(final IEntityInformationHolder material) { - return LinkRenderer.getLinkWidget(material.getCode(), new ClickHandler() + final String href = LinkExtractor.tryExtractMaterial(material); + final ClickHandler listener = new ClickHandler() { public void onClick(ClickEvent event) { WellContentDialog.this.hide(); ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.ClientPluginFactory - .openPlateLocationsMaterialViewer(material, - ExperimentSearchCriteria.createExperiment(experiment), - viewContext); + .openPlateLocationsMaterialViewer(material, ExperimentSearchCriteria + .createExperiment(experiment), viewContext); } - }); + }; + Anchor link = (Anchor) LinkRenderer.getLinkWidget(material.getCode(), listener, href); + if (viewContext.isSimpleMode()) + { + link.addClickHandler(new ClickHandler() + { + public void onClick(ClickEvent event) + { + WellContentDialog.this.hide(); + } + }); + } + return link; } private Widget createEntityLink(IEntityInformationHolder entity) -- GitLab