diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/DisposableTabContent.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/DisposableTabContent.java index 35319a32152bbbe46cd363298e7fa6c66082cd39..f7e2160abd2a2fa03589507869ae8e18efa83fbf 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/DisposableTabContent.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/DisposableTabContent.java @@ -37,9 +37,9 @@ abstract public class DisposableTabContent extends TabContent /** * Creates section with specified header. */ - public DisposableTabContent(String header, IViewContext<?> viewContext, IIdHolder ownerId) + public DisposableTabContent(String header, IViewContext<?> viewContext, IIdHolder ownerIdOrNull) { - super(header, viewContext, ownerId); + super(header, viewContext, ownerIdOrNull); } public IDatabaseModificationObserver tryGetDatabaseModificationObserver() diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/ProcessingPluginSelectionWidget.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/ProcessingPluginSelectionWidget.java index 99948e7afd6b505010c5df77e917c335087b3880..7432176c7fa8d7dce77eedfa0364b4b9cf918cd9 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/ProcessingPluginSelectionWidget.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/ProcessingPluginSelectionWidget.java @@ -44,10 +44,12 @@ public class ProcessingPluginSelectionWidget extends private final IViewContext<?> viewContext; public ProcessingPluginSelectionWidget(final IViewContext<?> viewContext, - final IIdHolder ownerId) + final IIdHolder ownerIdOrNull) { - super(viewContext, (ownerId.getId() + "_data-set_processing-plugins"), Dict.BUTTON_PROCESS, - ModelDataPropertyNames.LABEL, "action", "actions"); + super( + viewContext, + (((ownerIdOrNull != null) ? ownerIdOrNull.getId().toString() : "") + "_data-set_processing-plugins"), + Dict.BUTTON_PROCESS, ModelDataPropertyNames.LABEL, "action", "actions"); this.viewContext = viewContext; addPostRefreshCallback(createHideOnNoServicesAction()); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/ReportingPluginSelectionWidget.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/ReportingPluginSelectionWidget.java index 009d3e2e022bbc67fb6dc27059aec892f224c082..217ae2ca1161461c10b8cebec58cb64cf06354dd 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/ReportingPluginSelectionWidget.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/ReportingPluginSelectionWidget.java @@ -45,10 +45,13 @@ public class ReportingPluginSelectionWidget extends private final IViewContext<?> viewContext; - public ReportingPluginSelectionWidget(final IViewContext<?> viewContext, final IIdHolder ownerId) + public ReportingPluginSelectionWidget(final IViewContext<?> viewContext, + final IIdHolder ownerIdOrNull) { - super(viewContext, (ownerId.getId() + "_data-set_reporting-plugins"), Dict.BUTTON_PROCESS, - ModelDataPropertyNames.LABEL, "report", "reports"); + super( + viewContext, + (((ownerIdOrNull != null) ? ownerIdOrNull.getId().toString() : "") + "_data-set_reporting-plugins"), + Dict.BUTTON_PROCESS, ModelDataPropertyNames.LABEL, "report", "reports"); setAutoSelectFirst(true); this.viewContext = viewContext; addPostRefreshCallback(createHideOnNoServicesAction()); 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 ff2e12a18a3a0ed082a3cea1da0b0b1f79dd4581..4ea4f5ce0074ef852e3368379d159dab43b1d045 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 @@ -1047,7 +1047,7 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod /** * Returns all models of selected items or an empty list if nothing selected. */ - protected final List<M> getSelectedItems() + public final List<M> getSelectedItems() { return grid.getSelectionModel().getSelectedItems(); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/AbstractDataSetsSection.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/AbstractDataSetsSection.java new file mode 100644 index 0000000000000000000000000000000000000000..0165d77b222aeaa7b4639c8281103a29be81cced --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/AbstractDataSetsSection.java @@ -0,0 +1,188 @@ +/* + * Copyright 2010 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.generic.client.web.client.application.dataset; + +import com.extjs.gxt.ui.client.event.SelectionChangedEvent; +import com.extjs.gxt.ui.client.event.SelectionChangedListener; + +import ch.systemsx.cisd.openbis.generic.client.web.client.application.DisposableTabContent; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.AbstractExternalDataGrid; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.AbstractExternalDataGrid.SelectedAndDisplayedItems; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.DataSetComputeUtils; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.DataSetReportGenerator; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.DatastoreServiceDescriptionModel; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.ProcessingPluginSelectionWidget; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.ReportingPluginSelectionWidget; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.report.ReportGeneratedCallback.IOnReportComponentGeneratedAction; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.DropDownList; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DisplayedOrSelectedDatasetCriteria; +import ch.systemsx.cisd.openbis.generic.shared.basic.IIdHolder; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatastoreServiceDescription; + +/** + * @author Piotr Buczek + */ +public abstract class AbstractDataSetsSection extends DisposableTabContent +{ + protected final DropDownList<DatastoreServiceDescriptionModel, DatastoreServiceDescription> reportSelectionWidget; + + protected final DropDownList<DatastoreServiceDescriptionModel, DatastoreServiceDescription> processingSelectionWidget; + + protected final IOnReportComponentGeneratedAction reportGeneratedAction; + + private IDisposableComponent metadataComponent; + + public AbstractDataSetsSection(final String header, final IViewContext<?> viewContext, + IIdHolder ownerIdOrNull) + { + super(header, viewContext, ownerIdOrNull); + this.reportSelectionWidget = new ReportingPluginSelectionWidget(viewContext, ownerIdOrNull); + this.processingSelectionWidget = + new ProcessingPluginSelectionWidget(viewContext, ownerIdOrNull); + this.reportGeneratedAction = new IOnReportComponentGeneratedAction() + { + public void execute(IDisposableComponent gridComponent) + { + replaceContent(gridComponent); + } + }; + setIds(DisplayTypeIDGenerator.DATA_SETS_SECTION); + } + + protected abstract IDisposableComponent createDatasetBrowserComponent(); + + protected void initWidgets() + { + getHeader().addTool(reportSelectionWidget); + getHeader().addTool(processingSelectionWidget); + } + + @Override + protected final IDisposableComponent createDisposableContent() + { + initWidgets(); + metadataComponent = createDatasetBrowserComponent(); + + SelectionChangedListener<DatastoreServiceDescriptionModel> serviceChangedListener = + createServiceSelectionChangedListener(viewContext, metadataComponent, + reportGeneratedAction); + reportSelectionWidget.addSelectionChangedListener(serviceChangedListener); + processingSelectionWidget.addSelectionChangedListener(serviceChangedListener); + return metadataComponent; + } + + @Override + protected final void replaceContent(IDisposableComponent content) + { + if (content != null) + { + removeAll(); + if (disposableComponentOrNull != null + && disposableComponentOrNull.getComponent().equals( + metadataComponent.getComponent()) == false) + { + super.disposeComponents(); // don't dispose metadata component + } + updateContent(content, true); + } + } + + @Override + public final void disposeComponents() + { + // when tab is closed dispose also the metadata component + super.disposeComponents(); + metadataComponent.dispose(); // NOTE: second dispose on a grid does nothing + } + + private static SelectionChangedListener<DatastoreServiceDescriptionModel> createServiceSelectionChangedListener( + final IViewContext<?> viewContext, final IDisposableComponent metadataComponent, + final IOnReportComponentGeneratedAction reportGeneratedAction) + { + final AbstractExternalDataGrid browser = + (AbstractExternalDataGrid) metadataComponent.getComponent(); + return new SelectionChangedListener<DatastoreServiceDescriptionModel>() + { + + @Override + public void selectionChanged( + SelectionChangedEvent<DatastoreServiceDescriptionModel> se) + { + final DatastoreServiceDescriptionModel selectedItem = se.getSelectedItem(); + if (selectedItem != null) + { + DatastoreServiceDescription service = selectedItem.getBaseObject(); + + if (service.getLabel().equals(ReportingPluginSelectionWidget.METADATA)) + { + showMetadataView(); + } else + { + switch (service.getServiceKind()) + { + case PROCESSING: + process(service); + break; + case QUERIES: + showGeneratedReportComponentView(service); + break; + } + } + } + + } + + private void process(DatastoreServiceDescription service) + { + SelectedAndDisplayedItems items = + browser.getSelectedAndDisplayedItemsAction().execute(); + DataSetComputeUtils.createComputeAction(viewContext.getCommonViewContext(), + items, service, service.getServiceKind(), reportGeneratedAction) + .execute(); + } + + private void showMetadataView() + { + reportGeneratedAction.execute(metadataComponent); + } + + private void showGeneratedReportComponentView(DatastoreServiceDescription service) + { + SelectedAndDisplayedItems items = + browser.getSelectedAndDisplayedItemsAction().execute(); + + if (browser.getSelectedItems().isEmpty()) + { + // when no data sets were selected perform query without asking + DisplayedOrSelectedDatasetCriteria criteria = items.createCriteria(false); + DataSetReportGenerator.generateAndInvoke( + viewContext.getCommonViewContext(), service, criteria, + reportGeneratedAction); + } else + { + DataSetComputeUtils.createComputeAction(viewContext.getCommonViewContext(), + items, service, service.getServiceKind(), reportGeneratedAction) + .execute(); + } + } + }; + + } +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/DataSetChildrenSection.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/DataSetChildrenSection.java index 91f28c01b573f0c65ff7332067ad7af2e59e0c8c..370116b75b2d499c92df0b87f4fcd7b1faef3bda 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/DataSetChildrenSection.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/DataSetChildrenSection.java @@ -16,7 +16,6 @@ package ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.dataset; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.DisposableTabContent; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; @@ -27,7 +26,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; /** * @author Piotr Buczek */ -class DataSetChildrenSection extends DisposableTabContent +class DataSetChildrenSection extends AbstractDataSetsSection { private final ExternalData dataset; @@ -39,7 +38,7 @@ class DataSetChildrenSection extends DisposableTabContent } @Override - protected IDisposableComponent createDisposableContent() + protected IDisposableComponent createDatasetBrowserComponent() { return DataSetRelationshipBrowser.create(viewContext, TechId.create(dataset), DataSetRelationshipRole.PARENT, dataset.getDataSetType()); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/DataSetParentsSection.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/DataSetParentsSection.java index db770c9ea49e2f25a48cd0c868dbd2ff733a82d1..26592ba9aa0b5be58132c774e9b66809b8574374 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/DataSetParentsSection.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/DataSetParentsSection.java @@ -16,7 +16,6 @@ package ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.dataset; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.DisposableTabContent; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; @@ -27,7 +26,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; /** * @author Piotr Buczek */ -class DataSetParentsSection extends DisposableTabContent +class DataSetParentsSection extends AbstractDataSetsSection { private final ExternalData dataset; @@ -39,7 +38,7 @@ class DataSetParentsSection extends DisposableTabContent } @Override - protected IDisposableComponent createDisposableContent() + protected IDisposableComponent createDatasetBrowserComponent() { return DataSetRelationshipBrowser.create(viewContext, TechId.create(dataset), DataSetRelationshipRole.CHILD, dataset.getDataSetType()); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentViewer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentViewer.java index 84019eda56a300774a957d60fd321d5cc98f21ec..0a187a28ef5c67a031bce6f5d7b7106d6af90a4b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentViewer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentViewer.java @@ -49,6 +49,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.IGenericClientServiceAsync; +import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.dataset.AbstractDataSetsSection; /** * The <i>generic</i> experiment viewer. @@ -237,10 +238,10 @@ public class GenericExperimentViewer extends AbstractViewerWithVerticalSplit<Exp private DisposableTabContent createExperimentDataSetSection() { - return new DisposableTabContent("Data Sets", viewContext, experimentId) + return new AbstractDataSetsSection("Data Sets", viewContext, experimentId) { @Override - protected IDisposableComponent createDisposableContent() + protected IDisposableComponent createDatasetBrowserComponent() { return ExperimentDataSetBrowser.create(viewContext, new TechId(experimentId), experimentType); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/SampleDataSetBrowser.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/SampleDataSetBrowser.java index e6251a840383b82e03ec57a71996c71b866751c7..060c51e16707b770cd1d292892106b4c4a1e0712 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/SampleDataSetBrowser.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/SampleDataSetBrowser.java @@ -16,28 +16,17 @@ package ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.sample; -import com.extjs.gxt.ui.client.event.SelectionChangedEvent; -import com.extjs.gxt.ui.client.event.SelectionChangedListener; - import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; 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.framework.DisplayTypeIDGenerator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.AbstractExternalDataGrid; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.DataSetComputeUtils; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.DataSetReportGenerator; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.DatastoreServiceDescriptionModel; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.ReportingPluginSelectionWidget; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.report.ReportGeneratedCallback.IOnReportComponentGeneratedAction; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.DropDownList; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; -import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DisplayedOrSelectedDatasetCriteria; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSetWithEntityTypes; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatastoreServiceDescription; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.sample.GenericSampleViewer.DataSetConnectionTypeProvider; @@ -53,14 +42,8 @@ class SampleDataSetBrowser extends AbstractExternalDataGrid private final DataSetConnectionTypeProvider connectionTypeProvider; - public static IDisposableComponent create( - IViewContext<?> viewContext, - TechId sampleId, - final SampleType sampleType, - final DataSetConnectionTypeProvider connectionTypeProvider, - DropDownList<DatastoreServiceDescriptionModel, DatastoreServiceDescription> reportSelectionWidget, - DropDownList<DatastoreServiceDescriptionModel, DatastoreServiceDescription> processingSelectionWidget, - IOnReportComponentGeneratedAction reportGeneratedAction) + public static IDisposableComponent create(IViewContext<?> viewContext, TechId sampleId, + final SampleType sampleType, final DataSetConnectionTypeProvider connectionTypeProvider) { IViewContext<ICommonClientServiceAsync> commonViewContext = viewContext.getCommonViewContext(); @@ -75,10 +58,6 @@ class SampleDataSetBrowser extends AbstractExternalDataGrid } }; - SelectionChangedListener<DatastoreServiceDescriptionModel> serviceChangedListener = - createServiceSelectionChangedListener(viewContext, browser, reportGeneratedAction); - reportSelectionWidget.addSelectionChangedListener(serviceChangedListener); - processingSelectionWidget.addSelectionChangedListener(serviceChangedListener); return browser.asDisposableWithoutToolbar(); } @@ -101,78 +80,6 @@ class SampleDataSetBrowser extends AbstractExternalDataGrid }); } - private static SelectionChangedListener<DatastoreServiceDescriptionModel> createServiceSelectionChangedListener( - final IViewContext<?> viewContext, final SampleDataSetBrowser browser, - final IOnReportComponentGeneratedAction reportGeneratedAction) - { - return new SelectionChangedListener<DatastoreServiceDescriptionModel>() - { - - @Override - public void selectionChanged( - SelectionChangedEvent<DatastoreServiceDescriptionModel> se) - { - final DatastoreServiceDescriptionModel selectedItem = se.getSelectedItem(); - if (selectedItem != null) - { - DatastoreServiceDescription service = selectedItem.getBaseObject(); - - if (service.getLabel().equals(ReportingPluginSelectionWidget.METADATA)) - { - showMetadataView(); - } else - { - switch (service.getServiceKind()) - { - case PROCESSING: - process(service); - break; - case QUERIES: - showGeneratedReportComponentView(service); - break; - } - } - } - - } - - private void process(DatastoreServiceDescription service) - { - SelectedAndDisplayedItems items = - browser.getSelectedAndDisplayedItemsAction().execute(); - DataSetComputeUtils.createComputeAction(viewContext.getCommonViewContext(), - items, service, service.getServiceKind(), reportGeneratedAction) - .execute(); - } - - private void showMetadataView() - { - reportGeneratedAction.execute(browser.asDisposableWithoutToolbar()); - } - - private void showGeneratedReportComponentView(DatastoreServiceDescription service) - { - SelectedAndDisplayedItems items = - browser.getSelectedAndDisplayedItemsAction().execute(); - - if (browser.getSelectedItems().isEmpty()) - { - // when no data sets were selected perform query without asking - DisplayedOrSelectedDatasetCriteria criteria = items.createCriteria(false); - DataSetReportGenerator.generateAndInvoke( - viewContext.getCommonViewContext(), service, criteria, - reportGeneratedAction); - } else - { - DataSetComputeUtils.createComputeAction(viewContext.getCommonViewContext(), - items, service, service.getServiceKind(), reportGeneratedAction) - .execute(); - } - } - }; - - } - public static final String createGridId(TechId sampleId) { return createBrowserId(sampleId) + "-grid"; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/SampleDataSetsSection.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/SampleDataSetsSection.java index d5b45b32ad3c65d266a49737748d57e908292e5c..0afa3811c45eca72116efc6eddfc5cae23707148 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/SampleDataSetsSection.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/SampleDataSetsSection.java @@ -21,54 +21,41 @@ import com.extjs.gxt.ui.client.event.SelectionChangedListener; import com.extjs.gxt.ui.client.widget.form.CheckBox; import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.DisposableTabContent; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.DatastoreServiceDescriptionModel; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.ProcessingPluginSelectionWidget; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data.ReportingPluginSelectionWidget; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.report.ReportGeneratedCallback.IOnReportComponentGeneratedAction; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.DropDownList; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatastoreServiceDescription; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; +import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.dataset.AbstractDataSetsSection; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.sample.GenericSampleViewer.DataSetConnectionTypeProvider; /** * @author Chandrasekhar Ramakrishnan */ -public class SampleDataSetsSection extends DisposableTabContent +public class SampleDataSetsSection extends AbstractDataSetsSection { private final CheckBox showOnlyDirectlyConnectedCheckBox; - private final DropDownList<DatastoreServiceDescriptionModel, DatastoreServiceDescription> reportSelectionWidget; - - private final DropDownList<DatastoreServiceDescriptionModel, DatastoreServiceDescription> processingSelectionWidget; - private final TechId sampleId; private final SampleType sampleType; - private IDisposableComponent metadataComponent; - public SampleDataSetsSection(final IViewContext<?> viewContext, - CheckBox showOnlyDirectlyConnectedCheckBox, TechId sampleId, SampleType sampleType) + final CheckBox showOnlyDirectlyConnectedCheckBox, TechId sampleId, SampleType sampleType) { super(viewContext.getMessage(Dict.EXTERNAL_DATA_HEADING), viewContext, sampleId); this.showOnlyDirectlyConnectedCheckBox = showOnlyDirectlyConnectedCheckBox; - this.reportSelectionWidget = new ReportingPluginSelectionWidget(viewContext, sampleId); - this.processingSelectionWidget = new ProcessingPluginSelectionWidget(viewContext, sampleId); this.sampleId = sampleId; this.sampleType = sampleType; - setIds(DisplayTypeIDGenerator.DATA_SETS_SECTION); } @Override - protected IDisposableComponent createDisposableContent() + protected void initWidgets() { + // first add check box getHeader().addTool(showOnlyDirectlyConnectedCheckBox); - getHeader().addTool(reportSelectionWidget); reportSelectionWidget .addSelectionChangedListener(new SelectionChangedListener<DatastoreServiceDescriptionModel>() { @@ -93,43 +80,14 @@ public class SampleDataSetsSection extends DisposableTabContent } } }); - getHeader().addTool(processingSelectionWidget); - final IOnReportComponentGeneratedAction gridGeneratedAction = - new IOnReportComponentGeneratedAction() - { - public void execute(IDisposableComponent gridComponent) - { - replaceContent(gridComponent); - } - }; - metadataComponent = - SampleDataSetBrowser.create(viewContext, sampleId, sampleType, - new DataSetConnectionTypeProvider(showOnlyDirectlyConnectedCheckBox), - reportSelectionWidget, processingSelectionWidget, gridGeneratedAction); - return metadataComponent; + super.initWidgets(); } @Override - protected void replaceContent(IDisposableComponent content) + protected IDisposableComponent createDatasetBrowserComponent() { - if (content != null) - { - removeAll(); - if (disposableComponentOrNull != null - && disposableComponentOrNull.getComponent().equals( - metadataComponent.getComponent()) == false) - { - super.disposeComponents(); // don't dispose metadata component - } - updateContent(content, true); - } + return SampleDataSetBrowser.create(viewContext, sampleId, sampleType, + new DataSetConnectionTypeProvider(showOnlyDirectlyConnectedCheckBox)); } - @Override - public void disposeComponents() - { - // when tab is closed dispose also the metadata component - super.disposeComponents(); - metadataComponent.dispose(); // NOTE: second dispose on a grid does nothing - } }