From a08edf84acf579a07a3eb00ee071cd2624b00a39 Mon Sep 17 00:00:00 2001 From: izabel <izabel> Date: Mon, 17 May 2010 13:26:10 +0000 Subject: [PATCH] [LMS-1528] initialize modules once SVN: 15994 --- .../AbstractClientPluginFactory.java | 8 +- .../application/menu/modules/ModulesMenu.java | 15 +-- .../DefaultClientPluginFactoryProvider.java | 15 ++- .../plugin/IClientPluginFactoryProvider.java | 6 +- .../plugin/IModuleInitializationObserver.java | 30 ++++++ .../ModuleInitializationController.java | 47 +++++++--- .../client/application/ui/AbstractViewer.java | 25 ++--- .../ui/ModulesSectionsManager.java | 91 +++++++++++++++++++ .../application/ClientPluginFactory.java | 2 +- .../application/ClientPluginFactory.java | 16 +++- .../dataset/GenericDataSetViewer.java | 12 +-- .../experiment/GenericExperimentViewer.java | 10 +- .../sample/GenericSampleViewer.java | 8 +- .../application/ClientPluginFactory.java | 2 +- .../application/ClientPluginFactory.java | 2 +- .../application/ClientPluginFactory.java | 10 +- 16 files changed, 219 insertions(+), 80 deletions(-) create mode 100644 openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/IModuleInitializationObserver.java rename openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/{menu/modules => plugin}/ModuleInitializationController.java (73%) create mode 100644 openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/ModulesSectionsManager.java diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractClientPluginFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractClientPluginFactory.java index 32d2eba41cf..e01833f9fbf 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractClientPluginFactory.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractClientPluginFactory.java @@ -31,10 +31,13 @@ public abstract class AbstractClientPluginFactory<V extends IViewContext<? exten { private final V viewContext; + private final IModule module; + protected AbstractClientPluginFactory( final IViewContext<ICommonClientServiceAsync> originalViewContext) { this.viewContext = createViewContext(originalViewContext); + this.module = maybeCreateModule(); } protected abstract V createViewContext( @@ -45,9 +48,10 @@ public abstract class AbstractClientPluginFactory<V extends IViewContext<? exten return viewContext; } - public IModule tryGetModule() + public final IModule tryGetModule() { - return null; + return module; } + protected abstract IModule maybeCreateModule(); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/modules/ModulesMenu.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/modules/ModulesMenu.java index 91e67ada918..3c75b6e6ec0 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/modules/ModulesMenu.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/modules/ModulesMenu.java @@ -26,6 +26,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.menu.TopMe import ch.systemsx.cisd.openbis.generic.client.web.client.application.menu.TopMenuItem; import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPluginFactoryProvider; import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IModule; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IModuleInitializationObserver; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider; /** @@ -33,7 +34,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMess * * @author Piotr Buczek */ -public class ModulesMenu extends TopMenuItem +public class ModulesMenu extends TopMenuItem implements IModuleInitializationObserver { public ModulesMenu(IMessageProvider messageProvider, @@ -45,12 +46,7 @@ public class ModulesMenu extends TopMenuItem Menu submenu = new Menu(); setMenu(submenu); hide(); - initialize(clientPluginFactoryProvider.getModules()); - } - - private void initialize(List<IModule> modules) - { - ModuleInitializationController.initialize(modules, this); + clientPluginFactoryProvider.addModuleInitializationObserver(this); } /** @@ -92,4 +88,9 @@ public class ModulesMenu extends TopMenuItem } } + public void notify(List<IModule> successfullyInitializedModules) + { + addModuleItems(successfullyInitializedModules); + } + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/DefaultClientPluginFactoryProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/DefaultClientPluginFactoryProvider.java index 60c53b7bad7..066baa7d3fc 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/DefaultClientPluginFactoryProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/DefaultClientPluginFactoryProvider.java @@ -42,7 +42,7 @@ public class DefaultClientPluginFactoryProvider implements IClientPluginFactoryP private final Map<EntityKindAndTypeCode, IClientPluginFactory> pluginFactoryByEntityKindAndTypeCode = new HashMap<EntityKindAndTypeCode, IClientPluginFactory>(); - private IClientPluginFactory genericPluginFactory; + private final IClientPluginFactory genericPluginFactory; public DefaultClientPluginFactoryProvider( final IViewContext<ICommonClientServiceAsync> originalViewContext) @@ -55,8 +55,10 @@ public class DefaultClientPluginFactoryProvider implements IClientPluginFactoryP final IViewContext<ICommonClientServiceAsync> originalViewContext) { // Automatically generated part - START - registerPluginFactory(new ch.systemsx.cisd.openbis.plugin.demo.client.web.client.application.ClientPluginFactory(originalViewContext)); - registerPluginFactory(new ch.systemsx.cisd.openbis.plugin.query.client.web.client.application.ClientPluginFactory(originalViewContext)); + registerPluginFactory(new ch.systemsx.cisd.openbis.plugin.demo.client.web.client.application.ClientPluginFactory( + originalViewContext)); + registerPluginFactory(new ch.systemsx.cisd.openbis.plugin.query.client.web.client.application.ClientPluginFactory( + originalViewContext)); // Automatically generated part - END } @@ -102,7 +104,7 @@ public class DefaultClientPluginFactoryProvider implements IClientPluginFactoryP return genericPluginFactory; } - public final List<IModule> getModules() + private final List<IModule> getUninitializedModules() { ArrayList<IModule> modules = new ArrayList<IModule>(); for (IClientPluginFactory factory : pluginFactories) @@ -115,4 +117,9 @@ public class DefaultClientPluginFactoryProvider implements IClientPluginFactoryP } return modules; } + + public void addModuleInitializationObserver(IModuleInitializationObserver observer) + { + ModuleInitializationController.createAndInitialize(getUninitializedModules()).addObserver(observer); + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/IClientPluginFactoryProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/IClientPluginFactoryProvider.java index 6743ecf7bc0..4543c92f184 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/IClientPluginFactoryProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/IClientPluginFactoryProvider.java @@ -16,8 +16,6 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin; -import java.util.List; - import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; @@ -34,12 +32,12 @@ public interface IClientPluginFactoryProvider * * @return never <code>null</code> but could return the <i>generic</i> implementation. */ - public IClientPluginFactory getClientPluginFactory(final EntityKind entityKind, + IClientPluginFactory getClientPluginFactory(final EntityKind entityKind, final BasicEntityType entityType); /** * Returns a list of all defined 'technology' modules. */ - public List<IModule> getModules(); + void addModuleInitializationObserver(IModuleInitializationObserver observer); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/IModuleInitializationObserver.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/IModuleInitializationObserver.java new file mode 100644 index 00000000000..faf82686a4d --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/IModuleInitializationObserver.java @@ -0,0 +1,30 @@ +/* + * 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.generic.client.web.client.application.plugin; + +import java.util.List; + + +/** + * @author Izabela Adamczyk + */ +public interface IModuleInitializationObserver +{ + + void notify(List<IModule> successfullyInitializedModules); + +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/modules/ModuleInitializationController.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/ModuleInitializationController.java similarity index 73% rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/modules/ModuleInitializationController.java rename to openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/ModuleInitializationController.java index a14d57f874a..245d4d48e75 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/modules/ModuleInitializationController.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/ModuleInitializationController.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package ch.systemsx.cisd.openbis.generic.client.web.client.application.menu.modules; +package ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin; import java.util.ArrayList; import java.util.List; @@ -22,23 +22,37 @@ import java.util.List; import com.extjs.gxt.ui.client.widget.MessageBox; import com.google.gwt.user.client.rpc.AsyncCallback; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IModule; - /** - * This class controls initialization process of all modules and creates a submenu of - * {@link ModulesMenu} when all initialization is finished. + * This class controls initialization process of all modules and notifies the + * {@link IModuleInitializationObserver}s when all initialization is finished. * * @author Piotr Buczek */ public class ModuleInitializationController -{// FIXME 2010-05-12, IA: handle initialization for detail viewers - public static void initialize(List<IModule> modules, ModulesMenu modulesMenu) +{ + private static ModuleInitializationController INSTANCE; + + public static ModuleInitializationController createAndInitialize(List<IModule> modules) + { + if (INSTANCE == null) + { + INSTANCE = new ModuleInitializationController(modules); + for (IModule module : modules) + { + module.initialize(new ModuleInitializationCallback(INSTANCE, module)); + } + } + return INSTANCE; + } + + public void addObserver(IModuleInitializationObserver observer) { - ModuleInitializationController controller = - new ModuleInitializationController(modules, modulesMenu); - for (IModule module : modules) + if (remainingModulesCounter != 0) + { + observers.add(observer); + } else { - module.initialize(new ModuleInitializationCallback(controller, module)); + observer.notify(successfullyInitializedModules); } } @@ -48,11 +62,11 @@ public class ModuleInitializationController private final List<IModule> uninitializedModules = new ArrayList<IModule>(); - private final ModulesMenu modulesMenu; + private final List<IModuleInitializationObserver> observers; - private ModuleInitializationController(List<IModule> allModules, ModulesMenu modulesMenu) + private ModuleInitializationController(List<IModule> allModules) { - this.modulesMenu = modulesMenu; + this.observers = new ArrayList<IModuleInitializationObserver>(); successfullyInitializedModules.addAll(allModules); remainingModulesCounter = allModules.size(); } @@ -74,7 +88,10 @@ public class ModuleInitializationController remainingModulesCounter--; if (remainingModulesCounter == 0) { - modulesMenu.addModuleItems(successfullyInitializedModules); + for (IModuleInitializationObserver observer : observers) + { + observer.notify(successfullyInitializedModules); + } showErrorMessageIfNecessary(); } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractViewer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractViewer.java index 438d8e2e87e..9af9fa76b7b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractViewer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractViewer.java @@ -17,7 +17,6 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui; import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.List; @@ -36,21 +35,19 @@ import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.DisposableSectionPanel; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AppEvents; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator; import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPlugin; import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPluginFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IModule; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IModuleInitializationObserver; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.GWTUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider; import ch.systemsx.cisd.openbis.generic.shared.basic.ICodeHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder; -import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithIdentifier; import ch.systemsx.cisd.openbis.generic.shared.basic.IIdAndCodeHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; @@ -59,6 +56,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; * @author Franz-Josef Elmer */ public abstract class AbstractViewer<D extends IEntityInformationHolder> extends ContentPanel + implements IModuleInitializationObserver { public static final String ID_EDIT_SUFFIX = "_edit"; @@ -75,6 +73,8 @@ public abstract class AbstractViewer<D extends IEntityInformationHolder> extends private D originalData; + protected final ModulesSectionsManager moduleSectionManager = new ModulesSectionsManager(); + public AbstractViewer(final IViewContext<?> viewContext, String id) { this(viewContext, null, id, true); // title is set later with updateTitle method @@ -98,6 +98,7 @@ public abstract class AbstractViewer<D extends IEntityInformationHolder> extends addToolBarButton(createEditButton()); } } + viewContext.getClientPluginFactoryProvider().addModuleInitializationObserver(this); } private Button createEditButton() @@ -285,21 +286,9 @@ public abstract class AbstractViewer<D extends IEntityInformationHolder> extends return viewContext.getDisplaySettingsManager().getPanelCollapsedSetting(panelId); } - protected Collection<? extends DisposableSectionPanel> createModuleSectionPanels( - String displayIdSuffix, IEntityInformationHolderWithIdentifier entity) + public void notify(List<IModule> modules) { - ArrayList<DisposableSectionPanel> result = new ArrayList<DisposableSectionPanel>(); - for (IModule module : viewContext.getClientPluginFactoryProvider().getModules()) - { - Collection<? extends DisposableSectionPanel> sections = module.getSections(entity); - for (DisposableSectionPanel panel : sections) - { - panel.setDisplayID(DisplayTypeIDGenerator.MODULE_SECTION, module.getName() + "-" - + displayIdSuffix); - } - result.addAll(sections); - } - return result; + moduleSectionManager.initialize(modules); } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/ModulesSectionsManager.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/ModulesSectionsManager.java new file mode 100644 index 00000000000..77dcc4dcaba --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/ModulesSectionsManager.java @@ -0,0 +1,91 @@ +/* + * 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.generic.client.web.client.application.ui; + +import java.util.Collection; +import java.util.List; + +import ch.systemsx.cisd.openbis.generic.client.web.client.application.DisposableSectionPanel; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IModule; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.SectionsPanel; +import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithIdentifier; + +/** + * Adds module sections the viewer after both {@link SectionsPanel} and {@link IModule}s are + * initialized. + * + * @author Izabela Adamczyk + */ +public class ModulesSectionsManager +{ + + private SectionsPanel container; + + private IEntityInformationHolderWithIdentifier entity; + + private String displayIdSuffix; + + private List<IModule> modules; + + /** + * Sets the values of chosen fields. Adds module sections to given container if called after + * {@link #initialize(List)}. + */ + @SuppressWarnings("hiding") + public void initialize(final SectionsPanel container, final String displayIdSuffix, + final IEntityInformationHolderWithIdentifier entity) + { + this.container = container; + this.displayIdSuffix = displayIdSuffix; + this.entity = entity; + if (modules != null) + { + attachModulesSections(); + } + } + + /** + * Sets the values of chosen fields. Adds module sections to given container if called after + * {@link #initialize(SectionsPanel, String, IEntityInformationHolderWithIdentifier)}. + */ + @SuppressWarnings("hiding") + public void initialize(final List<IModule> modules) + { + this.modules = modules; + if (container != null) + { + attachModulesSections(); + } + } + + private void attachModulesSections() + { + for (final IModule module : modules) + { + final Collection<? extends DisposableSectionPanel> sections = + module.getSections(entity); + for (final DisposableSectionPanel panel : sections) + { + panel.setDisplayID(DisplayTypeIDGenerator.MODULE_SECTION, module.getName() + "-" + + displayIdSuffix); + container.addPanel(panel); + } + } + container.layout(); + } +} \ No newline at end of file diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/demo/client/web/client/application/ClientPluginFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/demo/client/web/client/application/ClientPluginFactory.java index 3bbade751df..bcaca4170cc 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/demo/client/web/client/application/ClientPluginFactory.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/demo/client/web/client/application/ClientPluginFactory.java @@ -230,7 +230,7 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<DemoV } @Override - public IModule tryGetModule() + public IModule maybeCreateModule() { // uncomment to test DemoModule // return new DemoModule(getViewContext()); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/ClientPluginFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/ClientPluginFactory.java index 01c27d4302a..ac006531c7c 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/ClientPluginFactory.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/ClientPluginFactory.java @@ -35,6 +35,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpP import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.ClientPluginAdapter; import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPlugin; import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPluginFactory; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IModule; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.AbstractRegistrationForm; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.AbstractViewer; import ch.systemsx.cisd.openbis.generic.shared.basic.IIdAndCodeHolder; @@ -117,12 +118,14 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener "Generic plugin factory supports every sample type."); } - private String getViewerTitle(final String entityKindDictKey, final IIdAndCodeHolder identifiable) + private String getViewerTitle(final String entityKindDictKey, + final IIdAndCodeHolder identifiable) { return AbstractViewer.getTitle(getViewContext(), entityKindDictKey, identifiable); } - private String getEditorTitle(final String entityKindDictKey, final IIdAndCodeHolder identifiable) + private String getEditorTitle(final String entityKindDictKey, + final IIdAndCodeHolder identifiable) { return AbstractRegistrationForm.getEditTitle(getViewContext(), entityKindDictKey, identifiable); @@ -366,7 +369,8 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener } } - private final class DataSetClientPlugin extends ClientPluginAdapter<DataSetType, IIdAndCodeHolder> + private final class DataSetClientPlugin extends + ClientPluginAdapter<DataSetType, IIdAndCodeHolder> { @Override @@ -428,4 +432,10 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener } } + @Override + protected IModule maybeCreateModule() + { + return 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 15b4c9d839e..b53414a1ef3 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 @@ -18,7 +18,6 @@ package ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.da import java.util.ArrayList; import java.util.Arrays; -import java.util.Collection; import java.util.List; import java.util.Set; @@ -33,7 +32,6 @@ import com.google.gwt.user.client.rpc.AsyncCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.DisposableSectionPanel; 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.SingleSectionPanel; @@ -180,14 +178,6 @@ abstract public class GenericDataSetViewer extends AbstractViewer<ExternalData> { container.addPanel(panel); } - - Collection<? extends DisposableSectionPanel> moduleSections = - createModuleSectionPanels(displayIdSuffix, dataset); - for (DisposableSectionPanel panel : moduleSections) - { - container.addPanel(panel); - } - // parents final SingleSectionPanel parentsSection = new DataSetParentsSection(viewContext, dataset); parentsSection.setDisplayID(DisplayTypeIDGenerator.DATA_SET_PARENTS_SECTION, @@ -204,8 +194,8 @@ abstract public class GenericDataSetViewer extends AbstractViewer<ExternalData> final SingleSectionPanel dataSection = new DataViewSection(viewContext, dataset); dataSection.setDisplayID(DisplayTypeIDGenerator.DATA_SET_DATA_SECTION, displayIdSuffix); container.addPanel(dataSection); - container.layout(); + moduleSectionManager.initialize(container, displayIdSuffix, dataset); return container; } 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 de1483b606d..5185e7e766a 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 @@ -158,9 +158,11 @@ public class GenericExperimentViewer extends AbstractViewer<Experiment> implemen public void execute() { remove(loadingLabel); + String displayIdPrefix = getDisplayIdSuffix(experimentType.getCode()); GenericExperimentViewer.this.rightPanelSectionsOrNull = - createRightPanel(experiment); + createRightPanel(experiment, displayIdPrefix); SectionsPanel rightPanel = layoutSections(rightPanelSectionsOrNull); + moduleSectionManager.initialize(rightPanel, displayIdPrefix, experiment); add(rightPanel, createRightBorderLayoutData()); layout(); } @@ -231,15 +233,13 @@ public class GenericExperimentViewer extends AbstractViewer<Experiment> implemen } private List<DisposableSectionPanel> createRightPanel( - IEntityInformationHolderWithIdentifier experiment) + IEntityInformationHolderWithIdentifier experiment, final String displayIdSuffix) { - final String displayIdSuffix = getDisplayIdSuffix(experimentType.getCode()); + List<DisposableSectionPanel> allPanels = new ArrayList<DisposableSectionPanel>(); allPanels.addAll(createAdditionalBrowserSectionPanels(displayIdSuffix)); - allPanels.addAll(createModuleSectionPanels(displayIdSuffix, experiment)); - final ExperimentSamplesSection sampleSection = new ExperimentSamplesSection(viewContext, experimentType, experimentId); sampleSection.setDisplayID(DisplayTypeIDGenerator.SAMPLE_SECTION, displayIdSuffix); 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 dcc17557df4..01d548fb063 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 @@ -17,7 +17,6 @@ package ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.sample; import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; @@ -195,12 +194,6 @@ abstract public class GenericSampleViewer extends AbstractViewer<Sample> impleme { container.addPanel(panel); } - Collection<? extends DisposableSectionPanel> moduleSections = - createModuleSectionPanels(displayIdSuffix, generator); - for (DisposableSectionPanel panel : moduleSections) - { - container.addPanel(panel); - } // 'Part of' samples containerSamplesSection = new ContainerSamplesSection(viewContext, generator); containerSamplesSection @@ -220,6 +213,7 @@ abstract public class GenericSampleViewer extends AbstractViewer<Sample> impleme container.addPanel(attachmentsSection); container.layout(); + moduleSectionManager.initialize(container, displayIdSuffix, generator); return container; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/ClientPluginFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/ClientPluginFactory.java index eefc180ddd8..034e41ff0f0 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/ClientPluginFactory.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/ClientPluginFactory.java @@ -59,7 +59,7 @@ public class ClientPluginFactory extends AbstractClientPluginFactory<QueryViewCo } @Override - public IModule tryGetModule() + public IModule maybeCreateModule() { return new QueryModule(getViewContext()); } diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ClientPluginFactory.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ClientPluginFactory.java index 642932fc0d1..d7b46c71da2 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ClientPluginFactory.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ClientPluginFactory.java @@ -65,7 +65,7 @@ public class ClientPluginFactory extends AbstractClientPluginFactory<ViewContext } @Override - public IModule tryGetModule() + public IModule maybeCreateModule() { return new PhosphoNetXModule(getViewContext()); } 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 bf063dcee55..24a3f48cf05 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 @@ -33,6 +33,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework. import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier; import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPlugin; import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPluginFactory; +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.util.IMessageProvider; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExperimentIdentifier; @@ -151,7 +152,8 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree } private static final AbstractTabItemFactory createGeneMaterialViewerTabFactory( - final IIdAndCodeHolder materialId, final ExperimentIdentifier experimentIdentifierOrNull, + final IIdAndCodeHolder materialId, + final ExperimentIdentifier experimentIdentifierOrNull, final IViewContext<IScreeningClientServiceAsync> viewContext) { return new AbstractTabItemFactory() @@ -342,4 +344,10 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree return delegator.createRegistrationForEntityType(entityType); } } + + @Override + protected IModule maybeCreateModule() + { + return null; + } } -- GitLab