diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ClientPluginFactory.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ClientPluginFactory.java index 4ac26fd3d01e700dd530636b9db792a94da90f58..13804de777483673884b3634045c4cbd2c5d9fb9 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ClientPluginFactory.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ClientPluginFactory.java @@ -67,6 +67,7 @@ import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.d import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.sample.LibrarySampleBatchRegistrationForm; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.ui.columns.specific.ScreeningLinkExtractor; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.ScreeningConstants; +import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.AnalysisProcedureCriteria; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.ExperimentSearchByProjectCriteria; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.ExperimentSearchCriteria; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.SingleExperimentSearchCriteria; @@ -228,6 +229,7 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree public static final void openImagingMaterialViewer( final IEntityInformationHolderWithPermId material, final ExperimentSearchCriteria experimentCriteriaOrNull, + final AnalysisProcedureCriteria analysisProcedureCriteria, final IViewContext<IScreeningClientServiceAsync> viewContext) { if (viewContext.getModel().isEmbeddedMode()) @@ -238,7 +240,7 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree if (multipleExperimentsScope != null) { MaterialFeaturesFromAllExperimentsViewer.openTab(viewContext, materialIdentifier, - multipleExperimentsScope); + multipleExperimentsScope, analysisProcedureCriteria); } else { assert experimentCriteriaOrNull != null; @@ -248,7 +250,7 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree MaterialReplicaSummaryViewer.openTab(viewContext, experiment.getExperimentPermId(), experimentCriteriaOrNull.getRestrictGlobalSearchLinkToProject(), - materialIdentifier); + materialIdentifier, analysisProcedureCriteria); } } else @@ -304,9 +306,11 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree public ITabItem create() { TechId materialTechId = TechId.create(material); + // TODO KE, TPK: Finish me final DatabaseModificationAwareComponent viewer = ImagingMaterialViewer.create(viewContext, materialTechId, - experimentCriteriaOrNull); + experimentCriteriaOrNull, + AnalysisProcedureCriteria.createAllProcedures()); return createViewerTab(viewer, getTabTitle(), viewContext); } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentAnalysisSummaryGrid.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentAnalysisSummaryGrid.java index ffd55ad5258061dcd025300ae53ffd3ae2d2ba44..f04f3e8f2fcffa4ee421f00522b6104fd9133a39 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentAnalysisSummaryGrid.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentAnalysisSummaryGrid.java @@ -103,8 +103,10 @@ public class ExperimentAnalysisSummaryGrid extends TypedTableGrid<MaterialFeatur private void openMaterialDetailViewer(IEntityInformationHolderWithPermId material) { + assert analysisProcedureCriteria != null : "analysisProcedureCriteria is not set yet, " + + "it should not happen because this field is set before the grid refreshes"; ClientPluginFactory.openImagingMaterialViewer(material, getExperimentAsSearchCriteria(), - screeningViewContext); + analysisProcedureCriteria, screeningViewContext); } private ExperimentSearchCriteria getExperimentAsSearchCriteria() diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentWellMaterialBrowserGrid.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentWellMaterialBrowserGrid.java index ba4eea1bd2970cdad9c3cc6ec0205eda998a5fc3..2968220be003b128b2af3836e4bec5f5c3ae1e5b 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentWellMaterialBrowserGrid.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentWellMaterialBrowserGrid.java @@ -35,6 +35,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Material; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.IScreeningClientServiceAsync; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.ClientPluginFactory; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.ui.columns.specific.ScreeningLinkExtractor; +import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.AnalysisProcedureCriteria; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.ExperimentSearchCriteria; /** @@ -108,9 +109,9 @@ public class ExperimentWellMaterialBrowserGrid extends MaterialBrowserGrid { if (editMode == false) { - // TODO KE: pass AnalysisProcedure.ANY ClientPluginFactory.openImagingMaterialViewer(material, - createExperimentSearchCriteria(), screeningViewContext); + createExperimentSearchCriteria(), + AnalysisProcedureCriteria.createAllProcedures(), screeningViewContext); } else { super.showEntityViewer(material, editMode, active); diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ImagingMaterialViewer.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ImagingMaterialViewer.java index c780aa034435f1f853c5bb88ceb3a850defee4eb..fe5dca31ff7ae07220cc2a5819c5ad4abda9db3a 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ImagingMaterialViewer.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ImagingMaterialViewer.java @@ -45,10 +45,12 @@ public class ImagingMaterialViewer extends GenericMaterialViewer */ public static DatabaseModificationAwareComponent create( IViewContext<IScreeningClientServiceAsync> viewContext, TechId materialId, - ExperimentSearchCriteria experimentCriteriaOrNull) + ExperimentSearchCriteria experimentCriteriaOrNull, + AnalysisProcedureCriteria analysisProcedureCriteria) { ImagingMaterialViewer viewer = - new ImagingMaterialViewer(viewContext, materialId, experimentCriteriaOrNull); + new ImagingMaterialViewer(viewContext, materialId, experimentCriteriaOrNull, + analysisProcedureCriteria); viewer.reloadAllData(); return new DatabaseModificationAwareComponent(viewer, viewer); } @@ -57,8 +59,10 @@ public class ImagingMaterialViewer extends GenericMaterialViewer private final ExperimentSearchCriteria initialExperimentCriteriaOrNull; + // TODO KE, TPK: finish me private ImagingMaterialViewer(IViewContext<IScreeningClientServiceAsync> viewContext, - TechId materialTechId, ExperimentSearchCriteria experimentCriteriaOrNull) + TechId materialTechId, ExperimentSearchCriteria experimentCriteriaOrNull, + AnalysisProcedureCriteria analysisProcedureCriteria) { super(viewContext, materialTechId); this.screeningViewContext = viewContext; @@ -89,9 +93,11 @@ public class ImagingMaterialViewer extends GenericMaterialViewer restrictGlobalScopeLinkToProject); sections.add(wellSearchSection); + // TODO KE, TPK: finish me MaterialMergedSummarySection summarySection = new MaterialMergedSummarySection(screeningViewContext, material, - initialExperimentCriteriaOrNull, restrictGlobalScopeLinkToProject); + initialExperimentCriteriaOrNull, + restrictGlobalScopeLinkToProject); sections.add(summarySection); return sections; } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialDisambiguationGrid.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialDisambiguationGrid.java index 56eb70b957fd47caf2918a8cb6db3ebc2a0e8eaa..2b977dbe71d6188249c2a4e6935a00c1f28701d9 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialDisambiguationGrid.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialDisambiguationGrid.java @@ -251,7 +251,8 @@ public class MaterialDisambiguationGrid extends TypedTableGrid<Material> private void openMaterialDetailViewer(Material material) { ClientPluginFactory.openImagingMaterialViewer(material, - searchCriteria.getExperimentCriteria(), screeningViewContext); + searchCriteria.getExperimentCriteria(), + searchCriteria.getAnalysisProcedureCriteria(), screeningViewContext); } @Override diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialFeaturesFromAllExperimentsComponent.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialFeaturesFromAllExperimentsComponent.java index 511c400c5a747a87701e62063a075f88d573df12..b0f99ab3f62e753701604aaedde1244737a2928e 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialFeaturesFromAllExperimentsComponent.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialFeaturesFromAllExperimentsComponent.java @@ -22,6 +22,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Material; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.IScreeningClientServiceAsync; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.Dict; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.utils.MaterialComponentUtils; +import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.AnalysisProcedureCriteria; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.ExperimentSearchByProjectCriteria; /** @@ -43,6 +44,19 @@ public class MaterialFeaturesFromAllExperimentsComponent analysisProcedureListenerHolder); } + public static IDisposableComponent createComponent( + IViewContext<IScreeningClientServiceAsync> screeningViewContext, Material material, + ExperimentSearchByProjectCriteria experimentCriteria, + AnalysisProcedureCriteria analysisProcedureCriteria) + { + AnalysisProcedureListenerHolder listenerHolder = new AnalysisProcedureListenerHolder(); + IDisposableComponent component = + createComponent(screeningViewContext, material, experimentCriteria, listenerHolder); + listenerHolder.getAnalysisProcedureListener().analysisProcedureSelected( + analysisProcedureCriteria); + return component; + } + private final IViewContext<IScreeningClientServiceAsync> screeningViewContext; private MaterialFeaturesFromAllExperimentsComponent( diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialFeaturesFromAllExperimentsGrid.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialFeaturesFromAllExperimentsGrid.java index edc3fb04f7359082db2a82f526d559cb289b0ce0..4802cfa7a4798cc53831286f6dc9006b9508688d 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialFeaturesFromAllExperimentsGrid.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialFeaturesFromAllExperimentsGrid.java @@ -154,6 +154,9 @@ public class MaterialFeaturesFromAllExperimentsGrid extends } String experimentPermId = summaryOrNull.getExperiment().getPermId(); + assert analysisProcedureCriteria != null : "analysisProcedureCriteria is not set yet, " + + "it should not happen because this field is set before the grid refreshes"; + // NOTE: even in not-embedded mode we open specific standalone summary // view instead of material detail view (which contains the summary view // as one of its tabs). The reason is that in such a case we are already @@ -161,7 +164,7 @@ public class MaterialFeaturesFromAllExperimentsGrid extends // implemented there. MaterialReplicaSummaryViewer.openTab(screeningViewContext, experimentPermId, getRestrictGlobalScopeLinkToProject(), - new MaterialIdentifier(material)); + new MaterialIdentifier(material), analysisProcedureCriteria); } public String tryGetLink(MaterialSimpleFeatureVectorSummary entity, diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialFeaturesFromAllExperimentsViewer.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialFeaturesFromAllExperimentsViewer.java index 26540c5f43f78396d8d3b62a8310bff84165ea2b..ae4be7d5bef95f3b8518f64d56c30db2a59f17ba 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialFeaturesFromAllExperimentsViewer.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialFeaturesFromAllExperimentsViewer.java @@ -30,6 +30,7 @@ import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.IScreeningCli import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.ScreeningModule; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.utils.MaterialComponentUtils; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.ui.columns.specific.ScreeningLinkExtractor; +import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.AnalysisProcedureCriteria; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.ExperimentSearchByProjectCriteria; /** @@ -41,13 +42,17 @@ public class MaterialFeaturesFromAllExperimentsViewer { /** * Fetches material and opens a tab with {@link MaterialReplicaSummaryComponent}. + * + * @param analysisProcedureCriteria */ public static void openTab(IViewContext<IScreeningClientServiceAsync> screeningViewContext, MaterialIdentifier materialIdentifier, - final ExperimentSearchByProjectCriteria experimentCriteria) + final ExperimentSearchByProjectCriteria experimentCriteria, + AnalysisProcedureCriteria analysisProcedureCriteria) { final MaterialFeaturesFromAllExperimentsViewer viewer = - new MaterialFeaturesFromAllExperimentsViewer(screeningViewContext); + new MaterialFeaturesFromAllExperimentsViewer(screeningViewContext, + analysisProcedureCriteria); screeningViewContext.getCommonService().getMaterialInfo(materialIdentifier, new AbstractAsyncCallback<Material>(screeningViewContext) @@ -63,10 +68,14 @@ public class MaterialFeaturesFromAllExperimentsViewer private final IViewContext<IScreeningClientServiceAsync> screeningViewContext; + private final AnalysisProcedureCriteria analysisProcedureCriteria; + private MaterialFeaturesFromAllExperimentsViewer( - IViewContext<IScreeningClientServiceAsync> screeningViewContext) + IViewContext<IScreeningClientServiceAsync> screeningViewContext, + AnalysisProcedureCriteria analysisProcedureCriteria) { this.screeningViewContext = screeningViewContext; + this.analysisProcedureCriteria = analysisProcedureCriteria; } private void openTab(Material material, ExperimentSearchByProjectCriteria experimentCriteria) @@ -91,11 +100,11 @@ public class MaterialFeaturesFromAllExperimentsViewer @Override public ITabItem create() { - // TODO KE: FIXMe what sort of analysis***holder do we have here ? IDisposableComponent tabComponent = MaterialFeaturesFromAllExperimentsComponent.createComponent( screeningViewContext, material, experimentCriteria, - new AnalysisProcedureListenerHolder()); + analysisProcedureCriteria); + return DefaultTabItem.create(getTabTitle(), tabComponent, screeningViewContext); } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialReplicaSummaryComponent.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialReplicaSummaryComponent.java index 0b9f6b9cdb6090e11a093b11a85d5743529fa228..0d572bd1c21a014c65e9fd41c366fe2305151fdf 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialReplicaSummaryComponent.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialReplicaSummaryComponent.java @@ -61,6 +61,7 @@ import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.u import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.ImageDatasetParameters; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellImage; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellReplicaImage; +import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.AnalysisProcedureCriteria; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.ExperimentSearchCriteria; /** @@ -87,23 +88,37 @@ public class MaterialReplicaSummaryComponent AnalysisProcedureListenerHolder analysisProcedureListenerHolder) { return new MaterialReplicaSummaryComponent(screeningViewContext, - restrictGlobalScopeLinkToProject, experiment).createViewer(material, + restrictGlobalScopeLinkToProject, experiment, null).createViewer(material, analysisProcedureListenerHolder); } + public static IDisposableComponent createViewer( + IViewContext<IScreeningClientServiceAsync> screeningViewContext, Experiment experiment, + Material material, boolean restrictGlobalScopeLinkToProject, + AnalysisProcedureCriteria analysisProcedureCriteria) + { + return new MaterialReplicaSummaryComponent(screeningViewContext, + restrictGlobalScopeLinkToProject, experiment, analysisProcedureCriteria) + .createViewer(material); + } + private final IViewContext<IScreeningClientServiceAsync> screeningViewContext; private final boolean restrictGlobalScopeLinkToProject; private final Experiment experiment; + private final AnalysisProcedureCriteria initialAnalysisProcedureCriteriaOrNull; + private MaterialReplicaSummaryComponent( IViewContext<IScreeningClientServiceAsync> screeningViewContext, - boolean restrictGlobalScopeLinkToProject, Experiment experiment) + boolean restrictGlobalScopeLinkToProject, Experiment experiment, + AnalysisProcedureCriteria initialAnalysisProcedureCriteriaOrNull) { this.screeningViewContext = screeningViewContext; this.restrictGlobalScopeLinkToProject = restrictGlobalScopeLinkToProject; this.experiment = experiment; + this.initialAnalysisProcedureCriteriaOrNull = initialAnalysisProcedureCriteriaOrNull; } private class ImagesFoundCallback extends AbstractAsyncCallback<List<WellReplicaImage>> @@ -343,6 +358,18 @@ public class MaterialReplicaSummaryComponent return widgetWithListener.asWidget(); } + private IDisposableComponent createViewer(Material material) + { + AnalysisProcedureListenerHolder holder = new AnalysisProcedureListenerHolder(); + IDisposableComponent view = createViewer(material, holder); + if (initialAnalysisProcedureCriteriaOrNull != null) + { + holder.getAnalysisProcedureListener().analysisProcedureSelected( + initialAnalysisProcedureCriteriaOrNull); + } + return view; + } + private IDisposableComponent createViewer(Material material, AnalysisProcedureListenerHolder analysisProcedureListenerHolder) { @@ -420,9 +447,12 @@ public class MaterialReplicaSummaryComponent // in non-embedded mode there is a separate tab in material detail view with all assays // information, so we do not display this link there - if (screeningViewContext.getModel().isEmbeddedMode()) + if (screeningViewContext.getModel().isEmbeddedMode() + && initialAnalysisProcedureCriteriaOrNull != null) { - Widget materialInAllAssaysSummaryLink = createMaterialInAllAssaysSummaryLink(material); + Widget materialInAllAssaysSummaryLink = + createMaterialInAllAssaysSummaryLink(material, + initialAnalysisProcedureCriteriaOrNull); rightLinksPanel.add(materialInAllAssaysSummaryLink, linkMargins); } @@ -433,7 +463,8 @@ public class MaterialReplicaSummaryComponent return headerPanel; } - private Widget createMaterialInAllAssaysSummaryLink(final Material material) + private Widget createMaterialInAllAssaysSummaryLink(final Material material, + final AnalysisProcedureCriteria analysisProcedureCriteria) { final ExperimentSearchCriteria experimentCriteria = createAllAssaysExperimentCriteria(); String linkUrl = @@ -446,7 +477,7 @@ public class MaterialReplicaSummaryComponent public void onClick(ClickEvent event) { ClientPluginFactory.openImagingMaterialViewer(material, experimentCriteria, - screeningViewContext); + analysisProcedureCriteria, screeningViewContext); } }, linkUrl); return linkWidget; diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialReplicaSummaryViewer.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialReplicaSummaryViewer.java index 9a5cfcc10c7f37130fbfa2e360d43d74c411a433..b656ded63771cf9002be784b3ea590be891d3bff 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialReplicaSummaryViewer.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialReplicaSummaryViewer.java @@ -33,6 +33,7 @@ import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.IScreeningCli import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.ScreeningModule; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.utils.MaterialComponentUtils; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.ui.columns.specific.ScreeningLinkExtractor; +import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.AnalysisProcedureCriteria; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.ExperimentSearchCriteria; /** @@ -47,11 +48,12 @@ public class MaterialReplicaSummaryViewer */ public static void openTab(IViewContext<IScreeningClientServiceAsync> screeningViewContext, String experimentPermId, boolean restrictGlobalScopeLinkToProject, - MaterialIdentifier materialIdentifier) + MaterialIdentifier materialIdentifier, + AnalysisProcedureCriteria analysisProcedureCriteria) { MaterialReplicaSummaryViewer viewer = new MaterialReplicaSummaryViewer(screeningViewContext, - restrictGlobalScopeLinkToProject); + restrictGlobalScopeLinkToProject, analysisProcedureCriteria); AbstractAsyncCallback<Experiment> experimentFoundCallback = viewer.createExperimentFoundCallback(materialIdentifier); viewer.fetchExperimentByPermId(experimentPermId, experimentFoundCallback); @@ -61,12 +63,16 @@ public class MaterialReplicaSummaryViewer private final boolean restrictGlobalScopeLinkToProject; + private final AnalysisProcedureCriteria analysisProcedureCriteria; + private MaterialReplicaSummaryViewer( IViewContext<IScreeningClientServiceAsync> screeningViewContext, - boolean restrictGlobalScopeLinkToProject) + boolean restrictGlobalScopeLinkToProject, + AnalysisProcedureCriteria analysisProcedureCriteria) { this.screeningViewContext = screeningViewContext; this.restrictGlobalScopeLinkToProject = restrictGlobalScopeLinkToProject; + this.analysisProcedureCriteria = analysisProcedureCriteria; } private void fetchExperimentByPermId(String experimentPermId, @@ -138,11 +144,10 @@ public class MaterialReplicaSummaryViewer @Override public ITabItem create() { - // TODO KE: FIXME - what sort of analysis***holder do we have here ? IDisposableComponent tabComponent = MaterialReplicaSummaryComponent.createViewer(screeningViewContext, experiment, material, restrictGlobalScopeLinkToProject, - new AnalysisProcedureListenerHolder()); + analysisProcedureCriteria); return DefaultTabItem.create(getTabTitle(), tabComponent, screeningViewContext); } 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 d04ca32fe9585dca14a46d29bda8cff01d8fc402..3a42e93014a8ee2899f039b05f0ab78042f24fbc 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 @@ -66,6 +66,7 @@ import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.ScreeningConst import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellImage; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellLocation; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellMetadata; +import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.AnalysisProcedureCriteria; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.ExperimentSearchCriteria; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.SingleExperimentSearchCriteria; @@ -434,6 +435,7 @@ public class WellContentDialog extends Dialog // TODO KE: pass analysis procedure from plate layout to material detail view ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.ClientPluginFactory .openImagingMaterialViewer(material, getExperimentCriteria(), + AnalysisProcedureCriteria.createAllProcedures(), viewContext); } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellSearchGrid.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellSearchGrid.java index ecc6b0fa1ffb9619686a2ab3e8a68c9acd061637..ca6a7092ea7fbaba492124228e1268e1dbf456de 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellSearchGrid.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellSearchGrid.java @@ -404,7 +404,7 @@ public class WellSearchGrid extends TypedTableGrid<WellContent> implements private void openImagingMaterialViewer(WellContent wellContent, Material material) { ClientPluginFactory.openImagingMaterialViewer(material, getExperimentCriteria(wellContent), - viewContext); + analysisProcedureCriteria, viewContext); } private void linkExperiment() diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/ImagingMaterialLocatorResolver.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/ImagingMaterialLocatorResolver.java index 47852aec2110b905a98736758e887504e19183f6..276caa3d33ae26a4b1eda998f19a29442abee164 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/ImagingMaterialLocatorResolver.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/ImagingMaterialLocatorResolver.java @@ -15,6 +15,7 @@ import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.IScreeningCli import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.ClientPluginFactory; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.ui.columns.specific.ScreeningLinkExtractor; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.dto.ExperimentIdentifierSearchCriteria; +import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.AnalysisProcedureCriteria; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.ExperimentSearchCriteria; /** @@ -41,7 +42,10 @@ public class ImagingMaterialLocatorResolver extends MaterialLocatorResolver ExperimentIdentifierSearchCriteria experimentCriteriaOrNull = tryGetExperimentIdentifierSearchCriteria(locator); - openInitialMaterialViewer(extractMaterialIdentifier(locator), experimentCriteriaOrNull); + AnalysisProcedureCriteria analysisProcedureCriteria = + extractAnalysisProcedureCriteria(locator); + openInitialMaterialViewer(extractMaterialIdentifier(locator), experimentCriteriaOrNull, + analysisProcedureCriteria); } private static ExperimentIdentifierSearchCriteria tryGetExperimentIdentifierSearchCriteria( @@ -80,16 +84,30 @@ public class ImagingMaterialLocatorResolver extends MaterialLocatorResolver return null; } + private AnalysisProcedureCriteria extractAnalysisProcedureCriteria(ViewLocator locator) + { + String analysisProcedureCode = + getOptionalParameter(locator, ScreeningLinkExtractor.ANALYSIS_PROCEDURE_KEY); + + return StringUtils.isBlank(analysisProcedureCode) ? AnalysisProcedureCriteria + .createAllProcedures() : AnalysisProcedureCriteria + .createFromCode(analysisProcedureCode); + } + /** * Open the gene material details tab for the specified identifier. Optionally select experiment * in the viewer. + * + * @param analysisProcedureCriteria */ protected void openInitialMaterialViewer(MaterialIdentifier identifier, - ExperimentIdentifierSearchCriteria experimentCriteriaOrNull) + ExperimentIdentifierSearchCriteria experimentCriteriaOrNull, + AnalysisProcedureCriteria analysisProcedureCriteria) throws UserFailureException { viewContext.getCommonService().getMaterialInformationHolder(identifier, - new OpenEntityDetailsTabCallback(viewContext, experimentCriteriaOrNull)); + new OpenEntityDetailsTabCallback(viewContext, experimentCriteriaOrNull, + analysisProcedureCriteria)); } private static class OpenEntityDetailsTabCallback extends @@ -99,13 +117,17 @@ public class ImagingMaterialLocatorResolver extends MaterialLocatorResolver private final ExperimentIdentifierSearchCriteria scopeOrNull; + private final AnalysisProcedureCriteria analysisProcedureCriteria; + private OpenEntityDetailsTabCallback( final IViewContext<IScreeningClientServiceAsync> viewContext, - ExperimentIdentifierSearchCriteria scopeOrNull) + ExperimentIdentifierSearchCriteria scopeOrNull, + AnalysisProcedureCriteria analysisProcedureCriteria) { super(viewContext); this.viewContext = viewContext; this.scopeOrNull = scopeOrNull; + this.analysisProcedureCriteria = analysisProcedureCriteria; } // @@ -165,7 +187,7 @@ public class ImagingMaterialLocatorResolver extends MaterialLocatorResolver final ExperimentSearchCriteria experimentSearchCriteriaOrNull) { ClientPluginFactory.openImagingMaterialViewer(material, experimentSearchCriteriaOrNull, - viewContext); + analysisProcedureCriteria, viewContext); } }