From a32a487bf6dceaf3a870f03ac6c3b33a04b9e464 Mon Sep 17 00:00:00 2001 From: izabel <izabel> Date: Mon, 31 Aug 2009 14:40:06 +0000 Subject: [PATCH] [LMS-1111] store settings per container/experiment type; don't remove components (to keep the order of sections) SVN: 12330 --- .../ui/sample/SampleBrowserGrid.java | 7 +- .../application/ui/widget/SectionsPanel.java | 12 +++- .../experiment/GenericExperimentViewer.java | 15 ++-- .../sample/ContainerSamplesSection.java | 7 +- .../sample/GenericSampleViewer.java | 71 ++++--------------- .../sample/GenericSampleRegistrationTest.java | 4 +- 6 files changed, 37 insertions(+), 79 deletions(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java index a528601d720..ff08d0d3986 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java @@ -52,7 +52,6 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.en import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.entity.PropertyTypesCriteriaProvider; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.entity.PropertyTypesFilterUtil; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.listener.OpenEntityDetailsTabAction; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.AbstractGridDataRefreshCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.IDataRefreshCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ListSampleDisplayCriteria; @@ -130,17 +129,13 @@ public class SampleBrowserGrid extends public static IDisposableComponent createGridForContainerSamples( final IViewContext<ICommonClientServiceAsync> viewContext, - final TechId containerSampleId, final String gridId, - final AbstractGridDataRefreshCallback<Sample> refreshCallback, - final SampleType sampleType) + final TechId containerSampleId, final String gridId, final SampleType sampleType) { final ListSampleDisplayCriteria criteria = ListSampleDisplayCriteria.createForContainer(containerSampleId, getBaseIndexURL()); final String entityTypeCode = sampleType.getCode(); final SampleBrowserGrid browserGrid = createGridAsComponent(viewContext, gridId, criteria, entityTypeCode); - refreshCallback.setGrid(browserGrid); - browserGrid.setExternalRefreshCallback(refreshCallback); browserGrid.updateCriteriaProviderAndRefresh(); browserGrid.setDisplayTypeIDGenerator(DisplayTypeIDGenerator.SAMPLE_DETAILS_GRID); browserGrid.extendBottomToolbar(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/SectionsPanel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/SectionsPanel.java index 8c9fd0db235..ac3adcb572e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/SectionsPanel.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/SectionsPanel.java @@ -48,7 +48,13 @@ public class SectionsPanel extends ContentPanel public void addPanel(final SingleSectionPanel panel) { - final SectionElement element = new SectionElement(panel, withShowHide, viewContext); + addPanel(panel, true); + } + + public void addPanel(final SingleSectionPanel panel, boolean pressByDeafult) + { + final SectionElement element = + new SectionElement(panel, withShowHide, viewContext, pressByDeafult); element.getButton().addSelectionListener(new SelectionListener<ComponentEvent>() { @Override @@ -125,7 +131,7 @@ public class SectionsPanel extends ContentPanel private SingleSectionPanel panel; public SectionElement(SingleSectionPanel panel, boolean withShowHide, - IViewContext<ICommonClientServiceAsync> viewContext) + IViewContext<ICommonClientServiceAsync> viewContext, boolean defaultPressedValue) { panel.setCollapsible(false); this.setPanel(panel); @@ -133,7 +139,7 @@ public class SectionsPanel extends ContentPanel Boolean sectionSetting = viewContext.getModel().getSessionContext().getDisplaySettings() .getSectionSettings().get(panel.getDisplayID()); - boolean pressed = sectionSetting != null ? sectionSetting : true; + boolean pressed = sectionSetting != null ? sectionSetting : defaultPressedValue; button = createButton(heading, withShowHide, pressed, panel.getDisplayID(), viewContext); } 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 f67d1889020..a57ff51e596 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 @@ -178,29 +178,32 @@ public final class GenericExperimentViewer extends } } + private static final String getDisplayIdSuffix(String suffix) + { + return GENERIC_EXPERIMENT_VIEWER + "-" + suffix; + } + public Component createRightPanel(Experiment result, CompositeDatabaseModificationObserverWithMainObserver observer) { final SectionsPanel container = new SectionsPanel(viewContext.getCommonViewContext()); + final String displayIdSuffix = getDisplayIdSuffix(result.getExperimentType().getCode()); final ExperimentSamplesSection sampleSection = new ExperimentSamplesSection(viewContext, result); - sampleSection - .setDisplayID(DisplayTypeIDGenerator.SAMPLE_SECTION, GENERIC_EXPERIMENT_VIEWER); + sampleSection.setDisplayID(DisplayTypeIDGenerator.SAMPLE_SECTION, displayIdSuffix); container.addPanel(sampleSection); observer.addObserver(sampleSection.getDatabaseModificationObserver()); final ExperimentDataSetSection dataSection = new ExperimentDataSetSection(result, viewContext); - dataSection - .setDisplayID(DisplayTypeIDGenerator.DATA_SET_SECTION, GENERIC_EXPERIMENT_VIEWER); + dataSection.setDisplayID(DisplayTypeIDGenerator.DATA_SET_SECTION, displayIdSuffix); container.addPanel(dataSection); observer.addObserver(dataSection.getDatabaseModificationObserver()); final AttachmentVersionsSection<Experiment> attachmentsSection = createAttachmentsSection(result); - attachmentsSection.setDisplayID(DisplayTypeIDGenerator.ATTACHMENT_SECTION, - GENERIC_EXPERIMENT_VIEWER); + attachmentsSection.setDisplayID(DisplayTypeIDGenerator.ATTACHMENT_SECTION, displayIdSuffix); container.addPanel(attachmentsSection); observer.addObserver(attachmentsSection.getDatabaseModificationObserver()); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/ContainerSamplesSection.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/ContainerSamplesSection.java index 9d625d22438..9561c532267 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/ContainerSamplesSection.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/ContainerSamplesSection.java @@ -23,7 +23,6 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.SingleSect import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDatabaseModificationObserver; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleBrowserGrid; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.AbstractGridDataRefreshCallback; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; @@ -48,14 +47,12 @@ public class ContainerSamplesSection extends SingleSectionPanel this.viewContext = viewContext; } - public void addSamplesGrid(final Sample container, - final AbstractGridDataRefreshCallback<Sample> refreshCallback) + public void addSamplesGrid(final Sample container) { TechId containerId = TechId.create(container); sampleDisposableGrid = SampleBrowserGrid.createGridForContainerSamples(viewContext.getCommonViewContext(), - containerId, createGridId(containerId), refreshCallback, container - .getSampleType()); + containerId, createGridId(containerId), container.getSampleType()); add(sampleDisposableGrid.getComponent()); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewer.java index 32fac0e3625..a2dd434ae51 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleViewer.java @@ -46,7 +46,6 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ID import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property.IPropertyValueRenderer; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property.PropertyGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleListDeletionConfirmationDialog; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.AbstractGridDataRefreshCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.SectionsPanel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.EntityPropertyUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction; @@ -143,50 +142,36 @@ public final class GenericSampleViewer extends AbstractViewer<IGenericClientServ return ID_PREFIX + sampleId; } + private static final String getDisplayIdSuffix(String suffix) + { + return GENERIC_SAMPLE_VIEWER + "-" + suffix; + } + private final Component createRightPanel(SampleParentWithDerived sampleGeneration) { final Sample generator = sampleGeneration.getParent(); + String displayIdSuffix = getDisplayIdSuffix(generator.getSampleType().getCode()); final SectionsPanel container = new SectionsPanel(viewContext.getCommonViewContext()); // 'Part of' samples containerSamplesSection = new ContainerSamplesSection(viewContext); - containerSamplesSection.setDisplayID(DisplayTypeIDGenerator.SAMPLE_SECTION, - GENERIC_SAMPLE_VIEWER); - IDelegatedAction showContainerSamplesSectionAction = new IDelegatedAction() - { - public void execute() - { - container.addPanel(containerSamplesSection); - } - }; - IDelegatedAction hideContainerSamplesSectionAction = new IDelegatedAction() - { - public void execute() - { - if (container.getItemByItemId(containerSamplesSection.getId()) != null) - { - container.removePanel(containerSamplesSection); - } - } - }; - containerSamplesSection.addSamplesGrid(generator, - new ContainerSamplesGridDataRefreshCallback(showContainerSamplesSectionAction, - hideContainerSamplesSectionAction)); + containerSamplesSection + .setDisplayID(DisplayTypeIDGenerator.SAMPLE_SECTION, displayIdSuffix); + containerSamplesSection.addSamplesGrid(generator); + container.addPanel(containerSamplesSection); // Data Sets final SingleSectionPanel externalDataPanel = createContentPanel(viewContext.getMessage(Dict.EXTERNAL_DATA_HEADING)); dataSetBrowser = SampleDataSetBrowser.create(viewContext, sampleId, generator.getSampleType()); externalDataPanel.add(dataSetBrowser.getComponent()); - externalDataPanel.setDisplayID(DisplayTypeIDGenerator.DATA_SET_SECTION, - GENERIC_SAMPLE_VIEWER); + externalDataPanel.setDisplayID(DisplayTypeIDGenerator.DATA_SET_SECTION, displayIdSuffix); container.addPanel(externalDataPanel); // Attachments attachmentsSection = createAttachmentsSection(generator); - attachmentsSection.setDisplayID(DisplayTypeIDGenerator.ATTACHMENT_SECTION, - GENERIC_SAMPLE_VIEWER); + attachmentsSection.setDisplayID(DisplayTypeIDGenerator.ATTACHMENT_SECTION, displayIdSuffix); container.addPanel(attachmentsSection); container.setLayoutOnChange(true); @@ -322,7 +307,8 @@ public final class GenericSampleViewer extends AbstractViewer<IGenericClientServ /** * Load the {@link SampleParentWithDerived} information. */ - protected void reloadSampleGenerationData(AbstractAsyncCallback<SampleParentWithDerived> callback) + protected void reloadSampleGenerationData( + AbstractAsyncCallback<SampleParentWithDerived> callback) { viewContext.getService().getSampleGenerationInfo(sampleId, getBaseIndexURL(), callback); } @@ -457,33 +443,4 @@ public final class GenericSampleViewer extends AbstractViewer<IGenericClientServ } - public final class ContainerSamplesGridDataRefreshCallback extends - AbstractGridDataRefreshCallback<Sample> - { - - private final IDelegatedAction showContainerSamplesSectionAction; - - private final IDelegatedAction hideContainerSamplesSectionAction; - - public ContainerSamplesGridDataRefreshCallback( - IDelegatedAction showContainerSamplesSectionAction, - IDelegatedAction hideContainerSamplesSectionAction) - { - this.showContainerSamplesSectionAction = showContainerSamplesSectionAction; - this.hideContainerSamplesSectionAction = hideContainerSamplesSectionAction; - } - - public void postRefresh(boolean wasSuccessful) - { - if (getGrid().getRowNumber() > 0) - { - showContainerSamplesSectionAction.execute(); - } else - { - hideContainerSamplesSectionAction.execute(); - } - } - - } - } \ No newline at end of file diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleRegistrationTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleRegistrationTest.java index 0618f38b229..e2d2ae6f06c 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleRegistrationTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/GenericSampleRegistrationTest.java @@ -16,7 +16,7 @@ package ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.sample; -import java.util.List; +import java.util.Collection; import ch.systemsx.cisd.openbis.generic.client.web.client.application.menu.TopMenu; import ch.systemsx.cisd.openbis.generic.client.web.client.application.menu.TopMenu.ActionMenuKind; @@ -81,7 +81,7 @@ public class GenericSampleRegistrationTest extends AbstractGWTTestCase /** * Tests that authorization annotations of - * {@link IPluginCommonServer#registerSample(String, NewSample, List)} are obeyed. + * {@link IPluginCommonServer#registerSample(String, NewSample, Collection)} are obeyed. */ public final void testRegisterSampleByAnUnauthorizedUser() { -- GitLab