diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/DefaultTabItem.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/DefaultTabItem.java index 2b482de78be272589a6e8474120c500be29668ed..f44ef9a00b3762c017e31bba584eb5d973ffabb0 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/DefaultTabItem.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/DefaultTabItem.java @@ -47,8 +47,8 @@ public class DefaultTabItem implements ITabItem private final boolean isCloseConfirmationNeeded; /** - * Creates a tab with the specified {@link Component}. The tab is unaware of database - * modifications and will not be automatically refreshed if changes occur. + * Creates a tab with the specified {@link Component}. The tab is unaware of database modifications and will not be automatically refreshed if + * changes occur. */ public static ITabItem createUnaware(final String title, final Component component, boolean isCloseConfirmationNeeded, IViewContext<?> viewContext) @@ -58,9 +58,8 @@ public class DefaultTabItem implements ITabItem } /** - * Creates a tab with the specified {@link Component} and updater action. The updater action - * will be invoked when this tab is selected. Note, that this tab is unaware of database - * modifications and will not be automatically refreshed if changes occur. + * Creates a tab with the specified {@link Component} and updater action. The updater action will be invoked when this tab is selected. Note, that + * this tab is unaware of database modifications and will not be automatically refreshed if changes occur. */ public static ITabItem createWithUpdater(final String title, final Component component, IDelegatedAction updater, IViewContext<?> viewContext) @@ -69,8 +68,8 @@ public class DefaultTabItem implements ITabItem } /** - * Creates a tab with the specified {@link ContentPanel}. The tab is unaware of database - * modifications and will not be automatically refreshed if changes occur. + * Creates a tab with the specified {@link ContentPanel}. The tab is unaware of database modifications and will not be automatically refreshed if + * changes occur. */ public static ITabItem createUnaware(final ContentPanel component, boolean isCloseConfirmationNeeded, IViewContext<?> viewContext) @@ -87,8 +86,8 @@ public class DefaultTabItem implements ITabItem } /** - * Creates a tab with the specified component. The tab is aware of database modifications and - * will be automatically refreshed if relevant changes take place. + * Creates a tab with the specified component. The tab is aware of database modifications and will be automatically refreshed if relevant changes + * take place. */ public static ITabItem create(final String title, final DatabaseModificationAwareComponent component, IViewContext<?> viewContext, @@ -194,6 +193,11 @@ public class DefaultTabItem implements ITabItem { lastModificationStateUpdaterOrNull.update(); } + if (component instanceof IComponentWithActivation) + { + ((IComponentWithActivation) component).activate(); + } + GWTUtils.updatePageTitle(getTabTitleUpdater().getCurrentTitle()); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/IComponentWithActivation.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/IComponentWithActivation.java new file mode 100644 index 0000000000000000000000000000000000000000..5ec7460fe83edbed86e89e1c00756c08077e7b90 --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/IComponentWithActivation.java @@ -0,0 +1,27 @@ +/* + * Copyright 2012 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.generic.client.web.client.application.framework; + +/** + * @author pkupczyk + */ +public interface IComponentWithActivation +{ + + public void activate(); + +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabAction.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabAction.java index a375d8124ec67a8235fc761e6718b01343cd555b..5e209e59d6bffb402404a0fbaf01e4b6fcd357bc 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabAction.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabAction.java @@ -39,7 +39,7 @@ public final class OpenEntityDetailsTabAction implements IDelegatedAction private final IViewContext<?> viewContext; private final boolean keyPressed; - + private final String subtab; public OpenEntityDetailsTabAction(IEntityInformationHolderWithPermId entity, @@ -62,8 +62,7 @@ public final class OpenEntityDetailsTabAction implements IDelegatedAction this.keyPressed = keyPressed; this.subtab = subtab; } - - + @Override public void execute() { @@ -77,8 +76,9 @@ public final class OpenEntityDetailsTabAction implements IDelegatedAction final AbstractTabItemFactory tabView = createClientPlugin.createEntityViewer(entity); String tabGroupDisplayId = null; - - switch (entityKind) { + + switch (entityKind) + { case DATA_SET: tabGroupDisplayId = DisplayTypeIDGenerator.GENERIC_DATASET_VIEWER.createID(entityType.getCode()); break; @@ -94,14 +94,14 @@ public final class OpenEntityDetailsTabAction implements IDelegatedAction default: break; } - - if (subtab != null && subtab.length() > 0 && tabGroupDisplayId != null) { + + if (subtab != null && subtab.length() > 0 && tabGroupDisplayId != null) + { viewContext.getDisplaySettingsManager().storeActiveTabSettings( tabGroupDisplayId, subtab, null); - tabView.setForceReopen(true); } - + tabView.setInBackground(keyPressed); DispatcherHelper.dispatchNaviEvent(tabView); 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 1e7f3782e04e2d0a94c294b646d64bb8ec2d0611..db67a11669623ae8b0e616826d702fbacb0fb75a 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 @@ -59,7 +59,7 @@ public class SectionsPanel extends LayoutContainer tryApplyDisplaySettings(); } - protected void tryApplyDisplaySettings() + public void tryApplyDisplaySettings() { if (getDisplayID() != null) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/GenericDataSetViewer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/GenericDataSetViewer.java index a3e9d5de4be7594e87ee5cb82b75c28c1a7c42e4..737f41547f49a8595ae9fc774bdf01eae37cccbd 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/GenericDataSetViewer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/GenericDataSetViewer.java @@ -41,6 +41,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewConte import ch.systemsx.cisd.openbis.generic.client.web.client.application.TabContent; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareComponent; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IComponentWithActivation; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDatabaseModificationObserver; import ch.systemsx.cisd.openbis.generic.client.web.client.application.menu.ActionMenu; import ch.systemsx.cisd.openbis.generic.client.web.client.application.menu.IActionMenuItem; @@ -75,7 +76,7 @@ import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.IGenericClientS * @author Piotr Buczek */ abstract public class GenericDataSetViewer extends AbstractViewerWithVerticalSplit<AbstractExternalData> - implements IDatabaseModificationObserver + implements IDatabaseModificationObserver, IComponentWithActivation { public static final String PREFIX = "generic-dataset-viewer_"; @@ -87,6 +88,8 @@ abstract public class GenericDataSetViewer extends AbstractViewerWithVerticalSpl private boolean toolbarInitialized; + private SectionsPanel rightPanel; + public static DatabaseModificationAwareComponent create( final IViewContext<IGenericClientServiceAsync> localViewContext, final IIdAndCodeHolder identifiable) @@ -248,7 +251,7 @@ abstract public class GenericDataSetViewer extends AbstractViewerWithVerticalSpl return new DataSetPropertiesPanel(dataset, getViewContext()); } - private final Component createRightPanel(final AbstractExternalData dataset) + private final SectionsPanel createRightPanel(final AbstractExternalData dataset) { final IViewContext<?> context = getViewContext(); final SectionsPanel container = @@ -299,7 +302,7 @@ abstract public class GenericDataSetViewer extends AbstractViewerWithVerticalSpl return container; } - private static final class DataSetInfoCallback extends AbstractAsyncCallback<AbstractExternalData> + private final class DataSetInfoCallback extends AbstractAsyncCallback<AbstractExternalData> { private final GenericDataSetViewer genericDataSetViewer; @@ -336,7 +339,7 @@ abstract public class GenericDataSetViewer extends AbstractViewerWithVerticalSpl genericDataSetViewer.add(leftPanel, genericDataSetViewer.createLeftBorderLayoutData()); genericDataSetViewer.configureLeftPanel(leftPanel); // Right panel - final Component rightPanel = genericDataSetViewer.createRightPanel(result); + rightPanel = genericDataSetViewer.createRightPanel(result); genericDataSetViewer.add(rightPanel, createRightBorderLayoutData()); genericDataSetViewer.layout(); @@ -544,4 +547,13 @@ abstract public class GenericDataSetViewer extends AbstractViewerWithVerticalSpl { return viewContext.getMessage(Dict.BUTTON_DELETE_DATA_SET); } + + @Override + public void activate() + { + if (rightPanel != null) + { + rightPanel.tryApplyDisplaySettings(); + } + } } 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 c2d5a3651676c27c048e270572ef7115085d2f46..434d83c6868c357fd5b736e4bf1d10025ac49c76 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 @@ -37,6 +37,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework. import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.CompositeDatabaseModificationObserverWithMainObserver; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareComponent; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IComponentWithActivation; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDatabaseModificationObserver; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.AbstractViewerWithVerticalSplit; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.deletion.RevertDeletionConfirmationDialog; @@ -65,7 +66,7 @@ import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.Abs * @author Izabela Adamczyk */ public class GenericExperimentViewer extends AbstractViewerWithVerticalSplit<Experiment> implements - IDatabaseModificationObserver + IDatabaseModificationObserver, IComponentWithActivation { private static final String GENERIC_EXPERIMENT_VIEWER = "generic-experiment-viewer"; @@ -85,6 +86,8 @@ public class GenericExperimentViewer extends AbstractViewerWithVerticalSplit<Exp private List<DisposableTabContent> rightPanelSectionsOrNull; + private SectionsPanel rightPanel; + public static DatabaseModificationAwareComponent create( final IViewContext<IGenericClientServiceAsync> viewContext, final BasicEntityType experimentType, final IIdAndCodeHolder identifiable) @@ -200,7 +203,7 @@ public class GenericExperimentViewer extends AbstractViewerWithVerticalSplit<Exp { remove(loadingLabel); GenericExperimentViewer.this.rightPanelSectionsOrNull = createRightPanel(); - SectionsPanel rightPanel = layoutSections(rightPanelSectionsOrNull); + rightPanel = layoutSections(rightPanelSectionsOrNull); attachManagedPropertiesSections(rightPanel, experiment); attachModuleSpecificSections(rightPanel, experiment); attachWebAppsSections(rightPanel, experiment, @@ -372,4 +375,13 @@ public class GenericExperimentViewer extends AbstractViewerWithVerticalSplit<Exp return localViewContext.getMessage(Dict.BUTTON_DELETE_EXPERIMENT); } + @Override + public void activate() + { + if (rightPanel != null) + { + rightPanel.tryApplyDisplaySettings(); + } + } + } 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 5b80c842b03ae358de0eebfb43c0f979217bc796..205b753c6b8daf3403e4a20c40ed7495f1a1ad3d 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 @@ -42,6 +42,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework. import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.CompositeDatabaseModificationObserverWithMainObserver; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareComponent; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IComponentWithActivation; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDatabaseModificationObserver; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.AbstractViewerWithVerticalSplit; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.PropertyValueRenderers; @@ -80,7 +81,7 @@ import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.Pro * @author Christian Ribeaud */ abstract public class GenericSampleViewer extends AbstractViewerWithVerticalSplit<Sample> implements - IDatabaseModificationObserver + IDatabaseModificationObserver, IComponentWithActivation { private static final String GENERIC_SAMPLE_VIEWER = "generic-sample-viewer"; @@ -105,6 +106,8 @@ abstract public class GenericSampleViewer extends AbstractViewerWithVerticalSpli private PropertyGrid propertyGrid; + private SectionsPanel rightPanel; + public static DatabaseModificationAwareComponent create( final IViewContext<IGenericClientServiceAsync> creationViewContext, final IIdAndCodeHolder identifiable) @@ -165,7 +168,7 @@ abstract public class GenericSampleViewer extends AbstractViewerWithVerticalSpli { @Override @SuppressWarnings( - { "unchecked", "rawtypes" }) + { "unchecked", "rawtypes" }) public void execute() { final AsyncCallback<Void> callback = @@ -203,7 +206,7 @@ abstract public class GenericSampleViewer extends AbstractViewerWithVerticalSpli return ID_PREFIX + sampleId; } - private final Component createRightPanel(SampleParentWithDerived sampleGeneration) + private final SectionsPanel createRightPanel(SampleParentWithDerived sampleGeneration) { final Sample generator = sampleGeneration.getParent(); @@ -248,8 +251,7 @@ abstract public class GenericSampleViewer extends AbstractViewerWithVerticalSpli } /** - * To be subclassed. Creates additional panels of the viewer in the right side section besides - * components, datasets and attachments + * To be subclassed. Creates additional panels of the viewer in the right side section besides components, datasets and attachments */ protected List<TabContent> createAdditionalSectionPanels() { @@ -403,7 +405,7 @@ abstract public class GenericSampleViewer extends AbstractViewerWithVerticalSpli // Helper classes // - private static final class SampleGenerationInfoCallback extends + private final class SampleGenerationInfoCallback extends AbstractAsyncCallback<SampleParentWithDerived> { private final GenericSampleViewer genericSampleViewer; @@ -435,7 +437,7 @@ abstract public class GenericSampleViewer extends AbstractViewerWithVerticalSpli genericSampleViewer.add(leftPanel, genericSampleViewer.createLeftBorderLayoutData()); genericSampleViewer.configureLeftPanel(leftPanel); // Right panel - final Component rightPanel = genericSampleViewer.createRightPanel(result); + rightPanel = genericSampleViewer.createRightPanel(result); genericSampleViewer.add(rightPanel, createRightBorderLayoutData()); genericSampleViewer.layout(); @@ -491,19 +493,19 @@ abstract public class GenericSampleViewer extends AbstractViewerWithVerticalSpli public DatabaseModificationKind[] getRelevantModifications() { return new DatabaseModificationKind[] - { - DatabaseModificationKind.createOrDelete(ObjectKind.SAMPLE), - DatabaseModificationKind.createOrDelete(ObjectKind.SAMPLE_TYPE), - DatabaseModificationKind.edit(ObjectKind.SAMPLE), - DatabaseModificationKind.edit(ObjectKind.SAMPLE_TYPE), - DatabaseModificationKind.createOrDelete(ObjectKind.EXPERIMENT), - DatabaseModificationKind.edit(ObjectKind.EXPERIMENT), - DatabaseModificationKind - .createOrDelete(ObjectKind.PROPERTY_TYPE_ASSIGNMENT), - DatabaseModificationKind.edit(ObjectKind.PROPERTY_TYPE_ASSIGNMENT), - DatabaseModificationKind.edit(ObjectKind.VOCABULARY_TERM), - DatabaseModificationKind.createOrDelete(ObjectKind.METAPROJECT), - DatabaseModificationKind.edit(ObjectKind.METAPROJECT) }; + { + DatabaseModificationKind.createOrDelete(ObjectKind.SAMPLE), + DatabaseModificationKind.createOrDelete(ObjectKind.SAMPLE_TYPE), + DatabaseModificationKind.edit(ObjectKind.SAMPLE), + DatabaseModificationKind.edit(ObjectKind.SAMPLE_TYPE), + DatabaseModificationKind.createOrDelete(ObjectKind.EXPERIMENT), + DatabaseModificationKind.edit(ObjectKind.EXPERIMENT), + DatabaseModificationKind + .createOrDelete(ObjectKind.PROPERTY_TYPE_ASSIGNMENT), + DatabaseModificationKind.edit(ObjectKind.PROPERTY_TYPE_ASSIGNMENT), + DatabaseModificationKind.edit(ObjectKind.VOCABULARY_TERM), + DatabaseModificationKind.createOrDelete(ObjectKind.METAPROJECT), + DatabaseModificationKind.edit(ObjectKind.METAPROJECT) }; } @Override @@ -551,4 +553,13 @@ abstract public class GenericSampleViewer extends AbstractViewerWithVerticalSpli { return viewContext.getMessage(Dict.BUTTON_DELETE_SAMPLE); } + + @Override + public void activate() + { + if (rightPanel != null) + { + rightPanel.tryApplyDisplaySettings(); + } + } }