diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/AppView.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/AppView.java index efd59d415f53c7a5f3439b15f80e9e4dca3bfbd6..0838d51022307979db8b26f65b82f125327b1251 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/AppView.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/AppView.java @@ -86,7 +86,7 @@ final class AppView extends View } else if (viewMode == ViewMode.NORMAL) { north = new TopMenu(viewContext, componentProvider); - } else if (viewMode == ViewMode.SIMPLE_EMBEDDED) + } else if (viewMode == ViewMode.EMBEDDED) { north = null; } else @@ -115,7 +115,7 @@ final class AppView extends View private final void createSouth() { - if (getViewMode() != ViewMode.SIMPLE_EMBEDDED) + if (getViewMode() != ViewMode.EMBEDDED) { final Footer footer = new Footer(viewContext); final BorderLayoutData data = new BorderLayoutData(LayoutRegion.SOUTH, 20); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java index c44505059ee5a258e7b29b76f8efc1dbf41edf15..2db04b7e09e25d86b5a9bc90bb83bde5a7133e34 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java @@ -89,6 +89,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.Compone import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionUI; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.GridCustomColumnDefinition; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.BrowserGridPagingToolBar.PagingToolBarButtonKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.expressions.filter.FilterToolbar; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.IDataRefreshCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction; @@ -106,6 +107,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.GridRowModel; import ch.systemsx.cisd.openbis.generic.shared.basic.IColumnDefinition; import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithPermId; import ch.systemsx.cisd.openbis.generic.shared.basic.URLMethodWithParameters; +import ch.systemsx.cisd.openbis.generic.shared.basic.ViewMode; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ColumnSetting; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode; @@ -285,18 +287,18 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod } } }); + if (viewContext.getModel().getViewMode() == ViewMode.EMBEDDED) + { + removeButtons(PagingToolBarButtonKind.CONFIG, PagingToolBarButtonKind.FILTERS, + PagingToolBarButtonKind.REFRESH); + } } - public void removeConfigAndExportButtons() - { - pagingToolbar.removeConfigAndExportButtons(); - } - - public void removeFiltersButtons() + public void removeButtons(PagingToolBarButtonKind... buttonKinds) { - pagingToolbar.removeFiltersButtons(); + pagingToolbar.removeButtons(buttonKinds); } - + private ICellListener<T> createShowEntityViewerLinkClickListener() { return new ICellListener<T>() @@ -735,7 +737,7 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod throw new IllegalStateException("unknown sort dir: " + sortDir); } } - + /** @return number of rows in the grid */ public final int getRowNumber() { @@ -808,7 +810,9 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod loadConfig.setSortDir(translate(sortInfo.getSortDir())); } } - resultSetConfig = createPagingConfig(loadConfig, filterToolbar.getFilters(), resultSetConfig.tryGetGridDisplayId()); + resultSetConfig = + createPagingConfig(loadConfig, filterToolbar.getFilters(), + resultSetConfig.tryGetGridDisplayId()); resultSetConfig.setCacheConfig(ResultSetFetchConfig .createFetchFromCacheAndRecompute(key)); // this.reuse(); // FIXME PTR has to be done? diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/BrowserGridPagingToolBar.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/BrowserGridPagingToolBar.java index da645626fad3a5374cf4f878dbf8e96eb74727d1..b90242b8d902263bc8786b6289d3bce695caaaa0 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/BrowserGridPagingToolBar.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/BrowserGridPagingToolBar.java @@ -18,7 +18,9 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashSet; import java.util.List; +import java.util.Set; import com.extjs.gxt.ui.client.data.LoadEvent; import com.extjs.gxt.ui.client.event.ButtonEvent; @@ -69,6 +71,11 @@ public final class BrowserGridPagingToolBar extends PagingToolBar private int nextTableButtonIndex; + public static enum PagingToolBarButtonKind + { + REFRESH, CONFIG, EXPORT, FILTERS + } + void setPagingComponentsHidden(boolean hide) { // WORKAROUND GXT2.1: to access all the elements of the paging toolbar @@ -138,18 +145,33 @@ public final class BrowserGridPagingToolBar extends PagingToolBar viewContext.logStop(logID); setPagingComponentsHidden(true); } - - public void removeConfigAndExportButtons() - { - configButton.removeFromParent(); - exportButton.removeFromParent(); - } - public void removeFiltersButtons() + public void removeButtons(PagingToolBarButtonKind... buttonKinds) { - showFiltersButton.removeFromParent(); + Set<PagingToolBarButtonKind> buttonSet = + new HashSet<PagingToolBarButtonKind>(Arrays.asList(buttonKinds)); + for (PagingToolBarButtonKind buttonKind : buttonSet) + { + switch (buttonKind) + { + case CONFIG: + configButton.removeFromParent(); + break; + case REFRESH: + refreshButton.removeFromParent(); + break; + case FILTERS: + showFiltersButton.removeFromParent(); + break; + case EXPORT: + exportButton.removeFromParent(); + break; + default: + throw new IllegalStateException("Unhandled button " + buttonKind); + } + } } - + @Override protected void onLoad(LoadEvent event) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/ViewMode.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/ViewMode.java index 0ac26951d04bb7b0a4a1eb9ef8560d9a2d83a47b..9e4b1f464e30a58c94848df0405fbaf94997d162 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/ViewMode.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/ViewMode.java @@ -24,11 +24,13 @@ import com.google.gwt.user.client.rpc.IsSerializable; public enum ViewMode implements IsSerializable { SIMPLE, + /** - * Embedded mode is a simple view mode which has less widgets (e.g. top toolbar and footer are - * invisible) to allow embedding the application on other web sites. + * Embedded mode inherits most of the SIMPLE mode behaviors. But it has less widgets (e.g. top + * toolbar and footer are invisible, grids have only "Export" button) to allow embedding the + * application on other web sites. */ - SIMPLE_EMBEDDED, + EMBEDDED, NORMAL; } diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/wizard/BiologicalSampleGrid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/wizard/BiologicalSampleGrid.java index 05e13d3acab0732641d378afc71445a183450e98..6a24ec5ef6a99f210a32ffb9c6dbdaf41c2ee508 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/wizard/BiologicalSampleGrid.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/wizard/BiologicalSampleGrid.java @@ -25,6 +25,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAs import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.TypedTableGrid; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.BrowserGridPagingToolBar.PagingToolBarButtonKind; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; @@ -35,14 +36,11 @@ import ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.application import ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.dto.BiologicalSampleGridColumnIDs; /** - * - * * @author Franz-Josef Elmer */ public class BiologicalSampleGrid extends TypedTableGrid<Sample> { - private static final String PREFIX = GenericConstants.ID_PREFIX - + "biological_sample"; + private static final String PREFIX = GenericConstants.ID_PREFIX + "biological_sample"; public static final String BROWSER_ID = PREFIX + "_main"; @@ -55,8 +53,8 @@ public class BiologicalSampleGrid extends TypedTableGrid<Sample> super(viewContext.getCommonViewContext(), BROWSER_ID, true, PhosphoNetXDisplayTypeIDGenerator.BIOLOGICAL_SAMPLE_BROWSER_GRID); specificViewContext = viewContext; - removeConfigAndExportButtons(); - removeFiltersButtons(); + removeButtons(PagingToolBarButtonKind.CONFIG, PagingToolBarButtonKind.EXPORT, + PagingToolBarButtonKind.FILTERS); showFiltersBar(); setBorders(true); } @@ -82,7 +80,7 @@ public class BiologicalSampleGrid extends TypedTableGrid<Sample> AbstractAsyncCallback<String> callback) { } - + public void dispose() { asDisposableWithoutToolbar().dispose(); diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/wizard/ParentlessMsInjectionSampleGrid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/wizard/ParentlessMsInjectionSampleGrid.java index b66527acd8548a0642a3f2a5c8ac0cca214c7b7d..14f66e50539cc3cc99dce85faf06ab609aba0a08 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/wizard/ParentlessMsInjectionSampleGrid.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/wizard/ParentlessMsInjectionSampleGrid.java @@ -25,6 +25,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAs import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.TypedTableGrid; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.BrowserGridPagingToolBar.PagingToolBarButtonKind; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet; @@ -35,8 +36,6 @@ import ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.application import ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.dto.ParentlessMsInjectionSampleGridColumnIDs; /** - * - * * @author Franz-Josef Elmer */ public class ParentlessMsInjectionSampleGrid extends TypedTableGrid<Sample> @@ -55,19 +54,20 @@ public class ParentlessMsInjectionSampleGrid extends TypedTableGrid<Sample> super(viewContext.getCommonViewContext(), BROWSER_ID, true, PhosphoNetXDisplayTypeIDGenerator.PARENT_LESS_MS_INJECTION_SAMPLE_BROWSER_GRID); specificViewContext = viewContext; - removeConfigAndExportButtons(); - removeFiltersButtons(); + removeButtons(PagingToolBarButtonKind.CONFIG, PagingToolBarButtonKind.EXPORT, + PagingToolBarButtonKind.FILTERS); allowMultipleSelection(); showFiltersBar(); setBorders(true); } - + @Override protected void listTableRows( DefaultResultSetConfig<String, TableModelRowWithObject<Sample>> resultSetConfig, AsyncCallback<TypedTableResultSet<Sample>> callback) { - specificViewContext.getService().listParentlessMsInjectionSamples(resultSetConfig, callback); + specificViewContext.getService() + .listParentlessMsInjectionSamples(resultSetConfig, callback); } @Override @@ -83,7 +83,7 @@ public class ParentlessMsInjectionSampleGrid extends TypedTableGrid<Sample> AbstractAsyncCallback<String> callback) { } - + public void dispose() { asDisposableWithoutToolbar().dispose(); 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 f3bd4e3f4a6fd6091b3e9be3b85994a8dc9b0b9b..755242ec77e45a7370d2191f6c64cfcfb87801d2 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 @@ -40,12 +40,14 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.ICl import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IModule; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.AbstractViewer; 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.grid.IDisposableComponent; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider; import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException; import ch.systemsx.cisd.openbis.generic.shared.basic.ICodeHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithPermId; import ch.systemsx.cisd.openbis.generic.shared.basic.IIdAndCodeHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; +import ch.systemsx.cisd.openbis.generic.shared.basic.ViewMode; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; @@ -54,10 +56,11 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.sample.GenericSampleViewer; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.IScreeningClientServiceAsync; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.ImageSampleViewer; +import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.MaterialDetailsComponent; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.MicroscopyDatasetViewer; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.PlateDatasetViewer; -import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.PlateLocationsMaterialViewer; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.PlateSampleViewer; +import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.ImagingMaterialViewer; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.sample.LibrarySampleBatchRegistrationForm; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.ScreeningConstants; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.ExperimentSearchCriteria; @@ -167,7 +170,7 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree public final AbstractTabItemFactory createEntityViewer( final IEntityInformationHolderWithPermId entity) { - return createPlateLocationsMaterialViewerTabFactory(entity, null, getViewContext()); + return createImagingMaterialViewerTabFactory(entity, null, getViewContext()); } } @@ -175,18 +178,18 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree * opens material viewer showing wells in which the material is contained, with a selected * experiment */ - public static final void openPlateLocationsMaterialViewer( + public static final void openImagingMaterialViewer( final IEntityInformationHolderWithPermId material, final ExperimentSearchCriteria experimentCriteriaOrNull, final IViewContext<IScreeningClientServiceAsync> viewContext) { AbstractTabItemFactory tab = - createPlateLocationsMaterialViewerTabFactory(material, experimentCriteriaOrNull, + createImagingMaterialViewerTabFactory(material, experimentCriteriaOrNull, viewContext); DispatcherHelper.dispatchNaviEvent(tab); } - private static final AbstractTabItemFactory createPlateLocationsMaterialViewerTabFactory( + private static final AbstractTabItemFactory createImagingMaterialViewerTabFactory( final IEntityInformationHolderWithPermId material, final ExperimentSearchCriteria experimentCriteriaOrNull, final IViewContext<IScreeningClientServiceAsync> viewContext) @@ -196,22 +199,32 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree @Override public ITabItem create() { - final DatabaseModificationAwareComponent viewer = - PlateLocationsMaterialViewer.create(viewContext, - TechId.create(material), experimentCriteriaOrNull); - return createViewerTab(viewer, getTabTitle(), viewContext); + TechId materialTechId = TechId.create(material); + if (viewContext.getModel().getViewMode() == ViewMode.EMBEDDED) + { + IDisposableComponent viewer = + MaterialDetailsComponent.create(viewContext, materialTechId, + experimentCriteriaOrNull); + return DefaultTabItem.create(getTabTitle(), viewer, viewContext); + } else + { + final DatabaseModificationAwareComponent viewer = + ImagingMaterialViewer.create(viewContext, materialTechId, + experimentCriteriaOrNull); + return createViewerTab(viewer, getTabTitle(), viewContext); + } } @Override public String getId() { - return PlateLocationsMaterialViewer.createId(TechId.create(material)); + return ImagingMaterialViewer.createId(TechId.create(material)); } @Override public HelpPageIdentifier getHelpPageIdentifier() { - return PlateLocationsMaterialViewer.getHelpPageIdentifier(); + return ImagingMaterialViewer.getHelpPageIdentifier(); } @Override diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ScreeningViewContext.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ScreeningViewContext.java index bc7a7c9810714dfb409b2399363baa9d9f172573..2e6a6f9fcb835d7ce6b1bd5fb131988f9a362a95 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ScreeningViewContext.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ScreeningViewContext.java @@ -8,8 +8,8 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewConte import ch.systemsx.cisd.openbis.generic.client.web.client.application.locator.ViewLocatorResolverRegistry; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.IScreeningClientService; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.IScreeningClientServiceAsync; -import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.locator.PlateLocationsMaterialLocatorResolver; -import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.locator.PlateMaterialReviewerLocatorResolver; +import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.locator.ImagingMaterialLocatorResolver; +import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.locator.WellSearchLocatorResolver; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.locator.PlateMetadataBrowserLocatorResolver; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.locator.GlobalWellSearchLocatorResolver; @@ -44,9 +44,9 @@ public final class ScreeningViewContext extends { super.initializeLocatorHandlerRegistry(handlerRegistry); - handlerRegistry.registerHandler(new PlateLocationsMaterialLocatorResolver(this)); + handlerRegistry.registerHandler(new ImagingMaterialLocatorResolver(this)); handlerRegistry.registerHandler(new PlateMetadataBrowserLocatorResolver(this)); - handlerRegistry.registerHandler(new PlateMaterialReviewerLocatorResolver(this)); + handlerRegistry.registerHandler(new WellSearchLocatorResolver(this)); handlerRegistry.registerHandler(new GlobalWellSearchLocatorResolver(this)); } 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 f14bf05535d7be7eaf67c084bb9d040f63ba5f73..f8a4a724e39dce73dd64fa8182a2a0abe5f61e40 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 @@ -109,7 +109,7 @@ public class ExperimentWellMaterialBrowserGrid extends MaterialBrowserGrid ExperimentSearchCriteria experimentCriteria = ExperimentSearchCriteria.createExperiment(experiment.getId(), experiment.getPermId(), experiment.getIdentifier()); - ClientPluginFactory.openPlateLocationsMaterialViewer(material, experimentCriteria, + ClientPluginFactory.openImagingMaterialViewer(material, experimentCriteria, screeningViewContext); } else { diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateLocationsMaterialViewer.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ImagingMaterialViewer.java similarity index 88% rename from screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateLocationsMaterialViewer.java rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ImagingMaterialViewer.java index 732cfe47daf8d2f244203dbafc7d75f6001260b1..a8bdb63df19ea092efd2911dc170098ef2b12035 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateLocationsMaterialViewer.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ImagingMaterialViewer.java @@ -37,7 +37,7 @@ import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCrit * * @author Tomasz Pylak */ -public class PlateLocationsMaterialViewer extends GenericMaterialViewer +public class ImagingMaterialViewer extends GenericMaterialViewer { /** @@ -48,8 +48,8 @@ public class PlateLocationsMaterialViewer extends GenericMaterialViewer IViewContext<IScreeningClientServiceAsync> viewContext, TechId materialId, ExperimentSearchCriteria experimentCriteriaOrNull) { - PlateLocationsMaterialViewer viewer = - new PlateLocationsMaterialViewer(viewContext, materialId, experimentCriteriaOrNull); + ImagingMaterialViewer viewer = + new ImagingMaterialViewer(viewContext, materialId, experimentCriteriaOrNull); viewer.reloadAllData(); return new DatabaseModificationAwareComponent(viewer, viewer); } @@ -58,9 +58,8 @@ public class PlateLocationsMaterialViewer extends GenericMaterialViewer private final ExperimentSearchCriteria experimentCriteriaOrNull; - private PlateLocationsMaterialViewer( - final IViewContext<IScreeningClientServiceAsync> viewContext, - final TechId materialTechId, ExperimentSearchCriteria experimentCriteriaOrNull) + private ImagingMaterialViewer(IViewContext<IScreeningClientServiceAsync> viewContext, + TechId materialTechId, ExperimentSearchCriteria experimentCriteriaOrNull) { super(viewContext, materialTechId); this.screeningViewContext = viewContext; diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialDetailsComponent.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialDetailsComponent.java new file mode 100644 index 0000000000000000000000000000000000000000..f7da90df827b23ff5cb2ca26e267e1f45608d133 --- /dev/null +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialDetailsComponent.java @@ -0,0 +1,111 @@ +/* + * Copyright 2011 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers; + +import java.util.Set; + +import com.extjs.gxt.ui.client.widget.Component; +import com.extjs.gxt.ui.client.widget.ContentPanel; +import com.extjs.gxt.ui.client.widget.layout.RowLayout; + +import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; +import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; +import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.IScreeningClientServiceAsync; +import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.ExperimentSearchCriteria; + +/** + * Shows details about one material (across all plates in one or all experiments). <br> + * Can be used as a tab in {@link ImagingMaterialViewer} or independently. + * + * @author Tomasz Pylak + */ +// TODO 2011-03-23, Tomasz Pylak: this class will replace the Plate Locations tab on the material +// detail view in future. +// For now it is a prototype accessible only in embedded mode. +public class MaterialDetailsComponent extends ContentPanel +{ + private final IViewContext<IScreeningClientServiceAsync> screeningViewContext; + + private final ExperimentSearchCriteria experimentCriteriaOrNull; + + private final TechId materialId; + + public MaterialDetailsComponent(IViewContext<IScreeningClientServiceAsync> viewContext, + TechId materialId, ExperimentSearchCriteria experimentCriteriaOrNull) + { + this.screeningViewContext = viewContext; + this.materialId = materialId; + this.experimentCriteriaOrNull = experimentCriteriaOrNull; + } + + private IDisposableComponent createWellSearchGrid() + { + return WellSearchGrid.create(screeningViewContext, experimentCriteriaOrNull, materialId); + } + + public static IDisposableComponent create( + IViewContext<IScreeningClientServiceAsync> viewContext, TechId materialId, + ExperimentSearchCriteria experimentCriteriaOrNull) + { + MaterialDetailsComponent materialDetailsComponent = + new MaterialDetailsComponent(viewContext, materialId, experimentCriteriaOrNull); + ContentPanel view = new ContentPanel(); + view.setLayout(new RowLayout()); + view.setHeading("Gene ID: " + materialId); + IDisposableComponent wellSearchGrid = materialDetailsComponent.createWellSearchGrid(); + view.add(wellSearchGrid.getComponent()); + return new DisposableComponentWrapper(view, wellSearchGrid); + } + + private static class DisposableComponentWrapper implements IDisposableComponent + { + private final Component component; + + private final IDisposableComponent delegator; + + public DisposableComponentWrapper(Component component, IDisposableComponent delegator) + { + this.component = component; + this.delegator = delegator; + } + + public Component getComponent() + { + return component; + } + + // --- delegate + + public void update(Set<DatabaseModificationKind> observedModifications) + { + delegator.update(observedModifications); + } + + public DatabaseModificationKind[] getRelevantModifications() + { + return delegator.getRelevantModifications(); + } + + public void dispose() + { + delegator.dispose(); + } + + } +} 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 d5b52ef4b0bfe98b3ad45cae1029a826216a3175..f6f4021dd909586acbb8994f92e7d1750da0933d 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 @@ -434,7 +434,7 @@ public class WellContentDialog extends Dialog { WellContentDialog.this.hide(); ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.ClientPluginFactory - .openPlateLocationsMaterialViewer(material, + .openImagingMaterialViewer(material, ExperimentSearchCriteria.createExperiment(experimentCriteria), 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 4bb0d6180fd303961407e3085a3783f9599e2c5b..49f3de124854b7c9191f38e550465bfe7c983067 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 @@ -315,7 +315,7 @@ public class WellSearchGrid extends TypedTableGrid<WellContent> experiment.getPermId(), experiment.getExperimentIdentifier()); - ClientPluginFactory.openPlateLocationsMaterialViewer(contentMaterial, + ClientPluginFactory.openImagingMaterialViewer(contentMaterial, experimentCriteria, viewContext); } }); diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/PlateLocationsMaterialLocatorResolver.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/ImagingMaterialLocatorResolver.java similarity index 86% rename from screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/PlateLocationsMaterialLocatorResolver.java rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/ImagingMaterialLocatorResolver.java index 5dab77b0b26b70f72796c56ebaf5c5fd4d6f69e3..7c23b7923a80dd48b5bd00abce33f45fdbe9cc15 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/PlateLocationsMaterialLocatorResolver.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/ImagingMaterialLocatorResolver.java @@ -16,16 +16,15 @@ import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.u import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.ExperimentSearchCriteria; /** - * {@link MaterialLocatorResolver} for screening materials. + * Material detail view for screening materials. Overrides {@link MaterialLocatorResolver}. * * @author Piotr Buczek */ -public class PlateLocationsMaterialLocatorResolver extends MaterialLocatorResolver +public class ImagingMaterialLocatorResolver extends MaterialLocatorResolver { private final IViewContext<IScreeningClientServiceAsync> viewContext; - public PlateLocationsMaterialLocatorResolver( - IViewContext<IScreeningClientServiceAsync> viewContext) + public ImagingMaterialLocatorResolver(IViewContext<IScreeningClientServiceAsync> viewContext) { super(viewContext.getCommonViewContext()); this.viewContext = viewContext; @@ -84,7 +83,7 @@ public class PlateLocationsMaterialLocatorResolver extends MaterialLocatorResolv { if (experimentIdentifierOrNull == null) { - ClientPluginFactory.openPlateLocationsMaterialViewer(material, null, viewContext); + openImagingMaterialViewer(material, null); } else { fetchExperimentAndShowLocations(material, experimentIdentifierOrNull); @@ -105,13 +104,19 @@ public class PlateLocationsMaterialLocatorResolver extends MaterialLocatorResolv ExperimentSearchCriteria.createExperiment( experiment.getId(), experiment.getPermId(), experiment.getIdentifier()); - ClientPluginFactory.openPlateLocationsMaterialViewer(material, - experimentCriteria, - OpenEntityDetailsTabCallback.this.viewContext); + openImagingMaterialViewer(material, experimentCriteria); } }); } + + private final void openImagingMaterialViewer( + final IEntityInformationHolderWithPermId material, + final ExperimentSearchCriteria experimentCriteriaOrNull) + { + ClientPluginFactory.openImagingMaterialViewer(material, experimentCriteriaOrNull, + viewContext); + } } } \ No newline at end of file diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/PlateMaterialReviewerLocatorResolver.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/WellSearchLocatorResolver.java similarity index 91% rename from screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/PlateMaterialReviewerLocatorResolver.java rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/WellSearchLocatorResolver.java index 6da3753cf80ab9ab2d18a31989da92f5c7d5a87c..9b3f64de6dd0cfa3344f8e3128d164f10cabbcde 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/PlateMaterialReviewerLocatorResolver.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/WellSearchLocatorResolver.java @@ -14,16 +14,16 @@ import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCrit import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.MaterialSearchCriteria; /** - * Locator resolver for plate metadata browser. + * Locator resolver for Well Search which displays wells containing specified materials optionally + * restricted to one experiment. * * @author Tomasz Pylak */ -public class PlateMaterialReviewerLocatorResolver extends AbstractViewLocatorResolver +public class WellSearchLocatorResolver extends AbstractViewLocatorResolver { private final IViewContext<IScreeningClientServiceAsync> viewContext; - public PlateMaterialReviewerLocatorResolver( - IViewContext<IScreeningClientServiceAsync> viewContext) + public WellSearchLocatorResolver(IViewContext<IScreeningClientServiceAsync> viewContext) { super(ScreeningLinkExtractor.WELL_SEARCH_ACTION); this.viewContext = viewContext;