From e5fb11837fa10658530e97cacedf64049e917d82 Mon Sep 17 00:00:00 2001
From: buczekp <buczekp>
Date: Tue, 27 Jul 2010 20:19:53 +0000
Subject: [PATCH] [LMS-1630] fixed sample registration issued from Derived and
 Components section; use ActionContext to fill experiment type and project in
 experiment registration issued from experiment browser

SVN: 17247
---
 .../web/client/application/ActionContext.java | 28 ++++++++++++++++--
 .../framework/ComponentProvider.java          | 11 +++++--
 .../ui/experiment/ExperimentBrowserGrid.java  | 22 ++++++++++++--
 .../experiment/ExperimentBrowserToolbar.java  |  3 +-
 .../ExperimentRegistrationPanel.java          |  3 +-
 .../ExperimentTypeSelectionWidget.java        |  4 +--
 .../PropertyTypeAssignmentForm.java           |  2 +-
 .../ui/sample/SampleBrowserGrid.java          | 29 +++++++------------
 .../client/dto/ListExperimentsCriteria.java   | 19 ++++++------
 .../generic/shared/basic/dto/Project.java     |  6 ++++
 .../application/ClientPluginFactory.java      |  2 +-
 ...ractGenericExperimentRegisterEditForm.java | 19 +++++++++---
 .../experiment/GenericExperimentEditForm.java |  3 +-
 .../GenericExperimentRegistrationForm.java    |  5 ++--
 14 files changed, 107 insertions(+), 49 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ActionContext.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ActionContext.java
index b791ca04aa5..40738d32b37 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ActionContext.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ActionContext.java
@@ -17,6 +17,7 @@
 package ch.systemsx.cisd.openbis.generic.client.web.client.application;
 
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Project;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType;
 
@@ -35,6 +36,8 @@ public class ActionContext
 
     private SampleType sampleTypeOrNull;
 
+    private ExperimentType experimentTypeOrNull;
+
     public ActionContext()
     {
     }
@@ -43,7 +46,6 @@ public class ActionContext
     {
         this.experimentOrNull = experiment;
         this.projectOrNull = experiment.getProject();
-        // this.spaceOrNull = projectOrNull.getSpace();
         this.spaceCodeOrNull = projectOrNull.getSpace().getCode();
     }
 
@@ -62,6 +64,11 @@ public class ActionContext
         return projectOrNull;
     }
 
+    public String tryGetProjectIdentifier()
+    {
+        return projectOrNull == null ? null : projectOrNull.getIdentifier();
+    }
+
     public void setProject(Project project)
     {
         this.projectOrNull = project;
@@ -74,7 +81,8 @@ public class ActionContext
 
     public String tryGetSampleTypeCode()
     {
-        return sampleTypeOrNull == null ? null : sampleTypeOrNull.getCode();
+        return (sampleTypeOrNull == null || sampleTypeOrNull.isAllTypesCode()) ? null
+                : sampleTypeOrNull.getCode();
     }
 
     public void setSampleType(SampleType sampleType)
@@ -82,6 +90,22 @@ public class ActionContext
         this.sampleTypeOrNull = sampleType;
     }
 
+    public ExperimentType tryGetExperimentType()
+    {
+        return experimentTypeOrNull;
+    }
+
+    public String tryGetExperimentTypeCode()
+    {
+        return (experimentTypeOrNull == null || experimentTypeOrNull.isAllTypesCode()) ? null
+                : experimentTypeOrNull.getCode();
+    }
+
+    public void setExperimentType(ExperimentType experimentType)
+    {
+        this.experimentTypeOrNull = experimentType;
+    }
+
     public String tryGetSpaceCode()
     {
         return spaceCodeOrNull;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java
index b6e09de5486..3e8961aa2da 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/ComponentProvider.java
@@ -19,9 +19,9 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.framework
 import com.extjs.gxt.ui.client.widget.Component;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ActionContext;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ActionContext;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageAction;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier.HelpPageDomain;
@@ -297,7 +297,7 @@ public final class ComponentProvider
         return getSampleRegistration(new ActionContext());
     }
 
-    public final AbstractTabItemFactory getExperimentRegistration()
+    public final AbstractTabItemFactory getExperimentRegistration(final ActionContext context)
     {
         return new AbstractTabItemFactory()
             {
@@ -305,7 +305,7 @@ public final class ComponentProvider
                 public ITabItem create()
                 {
                     DatabaseModificationAwareComponent component =
-                            ExperimentRegistrationPanel.create(viewContext, new ActionContext());
+                            ExperimentRegistrationPanel.create(viewContext, context);
                     return createRegistrationTab(Dict.EXPERIMENT_REGISTRATION, component);
                 }
 
@@ -324,6 +324,11 @@ public final class ComponentProvider
             };
     }
 
+    public final AbstractTabItemFactory getExperimentRegistration()
+    {
+        return getExperimentRegistration(new ActionContext());
+    }
+
     public final AbstractTabItemFactory getSampleBatchRegistration()
     {
         final boolean update = false;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java
index a9f815e044e..694cc521daf 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java
@@ -28,6 +28,7 @@ import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
 
 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.ActionContext;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
@@ -58,6 +59,8 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKin
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentType;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Project;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind;
 
 /**
@@ -177,9 +180,9 @@ public class ExperimentBrowserGrid extends
                                 @Override
                                 public void componentSelected(ButtonEvent ce)
                                 {
-                                    DispatcherHelper.dispatchNaviEvent(new ComponentProvider(
-                                            viewContext).getExperimentRegistration());
+                                    openExperimentRegistrationTab();
                                 }
+
                             });
         addButton(addButton);
 
@@ -214,6 +217,21 @@ public class ExperimentBrowserGrid extends
         addEntityOperationsSeparator();
     }
 
+    private void openExperimentRegistrationTab()
+    {
+        final ActionContext context = new ActionContext();
+        ListExperimentsCriteria criteriaOrNull = getCriteriaProvider().tryGetCriteria();
+        if (criteriaOrNull != null)
+        {
+            final ExperimentType experimentType = criteriaOrNull.getExperimentType();
+            context.setExperimentType(experimentType);
+            final Project project = criteriaOrNull.getProject();
+            context.setProject(project);
+        }
+        DispatcherHelper.dispatchNaviEvent(new ComponentProvider(viewContext)
+                .getExperimentRegistration(context));
+    }
+
     private void addGridRefreshListener(ExperimentBrowserToolbar topToolbar)
     {
         topToolbar.setCriteriaChangedListeners(createGridRefreshDelegatedAction());
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserToolbar.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserToolbar.java
index 553bff09262..e8077437327 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserToolbar.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserToolbar.java
@@ -119,8 +119,7 @@ class ExperimentBrowserToolbar extends ToolBar implements
         }
         ListExperimentsCriteria criteria = new ListExperimentsCriteria();
         criteria.setExperimentType(selectedType);
-        criteria.setProjectCode(selectedProject.getCode());
-        criteria.setGroupCode(selectedProject.getSpace().getCode());
+        criteria.setProject(selectedProject);
         return criteria;
     }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentRegistrationPanel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentRegistrationPanel.java
index 27b218bad86..c5e6b7dcb88 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentRegistrationPanel.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentRegistrationPanel.java
@@ -46,6 +46,7 @@ public final class ExperimentRegistrationPanel extends
             ActionContext context)
     {
         super(viewContext, EntityKind.EXPERIMENT, new ExperimentTypeSelectionWidget(viewContext,
-                EntityRegistrationPanel.createId(EntityKind.EXPERIMENT)), context);
+                EntityRegistrationPanel.createId(EntityKind.EXPERIMENT), context
+                        .tryGetExperimentTypeCode()), context);
     }
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentTypeSelectionWidget.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentTypeSelectionWidget.java
index 232dbb3d0c8..ecb1d7f8c2b 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentTypeSelectionWidget.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentTypeSelectionWidget.java
@@ -66,9 +66,9 @@ public final class ExperimentTypeSelectionWidget extends
     }
 
     public ExperimentTypeSelectionWidget(final IViewContext<ICommonClientServiceAsync> viewContext,
-            final String idSuffix)
+            final String idSuffix, final String initialCodeOrNull)
     {
-        this(viewContext, idSuffix, false, null);
+        this(viewContext, idSuffix, false, initialCodeOrNull);
     }
 
     /**
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentForm.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentForm.java
index fe667ebdaf8..f73714d9421 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentForm.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentForm.java
@@ -198,7 +198,7 @@ public final class PropertyTypeAssignmentForm extends LayoutContainer implements
                 {
                     experimentTypeSelectionWidget =
                             new ExperimentTypeSelectionWidget(viewContext,
-                                    EXPERIMENT_TYPE_ID_SUFFIX);
+                                    EXPERIMENT_TYPE_ID_SUFFIX, null);
                     created = true;
                 }
                 result = experimentTypeSelectionWidget;
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 28d984a2862..ba367e06366 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
@@ -404,7 +404,16 @@ public class SampleBrowserGrid extends
     protected void addEntityOperationButtons()
     {
 
-        final Button addButton = createAddSampleButton();
+        final Button addButton =
+                new Button(viewContext.getMessage(Dict.BUTTON_ADD, "Sample"),
+                        new SelectionListener<ButtonEvent>()
+                            {
+                                @Override
+                                public void componentSelected(ButtonEvent ce)
+                                {
+                                    openSampleRegistrationTab();
+                                }
+                            });
         addButton(addButton);
 
         String showDetailsTitle = viewContext.getMessage(Dict.BUTTON_SHOW_DETAILS);
@@ -436,19 +445,6 @@ public class SampleBrowserGrid extends
         allowMultipleSelection(); // we allow deletion of multiple samples
     }
 
-    private Button createAddSampleButton()
-    {
-        return new Button(viewContext.getMessage(Dict.BUTTON_ADD, "Sample"),
-                new SelectionListener<ButtonEvent>()
-                    {
-                        @Override
-                        public void componentSelected(ButtonEvent ce)
-                        {
-                            openSampleRegistrationTab();
-                        }
-                    });
-    }
-
     private void openSampleRegistrationTab()
     {
         if (experimentIdOrNull != null)
@@ -464,10 +460,7 @@ public class SampleBrowserGrid extends
             {
                 final ListSampleCriteria browseCriteria = criteriaOrNull.getBrowseCriteria();
                 final SampleType sampleType = browseCriteria.getSampleType();
-                if (sampleType.isAllTypesCode() == false)
-                {
-                    context.setSampleType(sampleType);
-                }
+                context.setSampleType(sampleType);
                 final String spaceCode = browseCriteria.getSpaceCode();
                 context.setSpaceCode(spaceCode);
             }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ListExperimentsCriteria.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ListExperimentsCriteria.java
index 79ac3ef338e..2eaac57e533 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ListExperimentsCriteria.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ListExperimentsCriteria.java
@@ -20,6 +20,7 @@ import com.google.gwt.user.client.rpc.IsSerializable;
 
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentType;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Project;
 
 /**
  * Criteria for listing <i>experiments</i>.
@@ -31,9 +32,7 @@ public final class ListExperimentsCriteria extends DefaultResultSetConfig<String
 {
     private ExperimentType experimentType;
 
-    private String groupCode;
-
-    private String projectCode;
+    private Project project;
 
     public ExperimentType getExperimentType()
     {
@@ -47,22 +46,22 @@ public final class ListExperimentsCriteria extends DefaultResultSetConfig<String
 
     public String getGroupCode()
     {
-        return groupCode;
+        return project.getSpace().getCode();
     }
 
-    public void setGroupCode(final String groupCode)
+    public String getProjectCode()
     {
-        this.groupCode = groupCode;
+        return project.getCode();
     }
 
-    public String getProjectCode()
+    public Project getProject()
     {
-        return projectCode;
+        return project;
     }
 
-    public void setProjectCode(final String projectCode)
+    public void setProject(Project project)
     {
-        this.projectCode = projectCode;
+        this.project = project;
     }
 
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Project.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Project.java
index 91f71ce6834..e233694ce26 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Project.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Project.java
@@ -134,4 +134,10 @@ public class Project extends CodeWithRegistration<Project> implements IAttachmen
         this.modificationDate = modificationDate;
     }
 
+    @Override
+    public String toString()
+    {
+        return identifier;
+    }
+
 }
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 9812a66eb16..fa453092490 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
@@ -333,7 +333,7 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener
                 ExperimentType entityType, ActionContext context)
         {
             GenericExperimentRegistrationForm form =
-                    new GenericExperimentRegistrationForm(getViewContext(), entityType);
+                    new GenericExperimentRegistrationForm(getViewContext(), context, entityType);
             return new DatabaseModificationAwareWidget(form, form);
         }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/AbstractGenericExperimentRegisterEditForm.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/AbstractGenericExperimentRegisterEditForm.java
index 2c478c6db2f..02777e4bec3 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/AbstractGenericExperimentRegisterEditForm.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/AbstractGenericExperimentRegisterEditForm.java
@@ -38,6 +38,7 @@ import com.extjs.gxt.ui.client.widget.form.RadioGroup;
 import com.google.gwt.user.client.Event;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ActionContext;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.FormPanelListener;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
@@ -76,6 +77,8 @@ abstract public class AbstractGenericExperimentRegisterEditForm extends
 
     protected ProjectSelectionWidget projectChooser;
 
+    private String initialProjectIdentifierOrNull;
+
     protected ExperimentSamplesArea samplesArea;
 
     protected final String samplesSessionKey;
@@ -95,13 +98,14 @@ abstract public class AbstractGenericExperimentRegisterEditForm extends
     private LabelField templateField;
 
     protected AbstractGenericExperimentRegisterEditForm(
-            IViewContext<IGenericClientServiceAsync> viewContext)
+            IViewContext<IGenericClientServiceAsync> viewContext, ActionContext context)
     {
-        this(viewContext, null);
+        this(viewContext, context, null);
     }
 
     protected AbstractGenericExperimentRegisterEditForm(
-            IViewContext<IGenericClientServiceAsync> viewContext, IIdAndCodeHolder identifiable)
+            IViewContext<IGenericClientServiceAsync> viewContext, ActionContext actionContext,
+            IIdAndCodeHolder identifiable)
     {
         super(viewContext, identifiable, EntityKind.EXPERIMENT);
 
@@ -112,6 +116,12 @@ abstract public class AbstractGenericExperimentRegisterEditForm extends
         sesionKeys.add(attachmentsSessionKey);
         sesionKeys.add(samplesSessionKey);
         addUploadFeatures(sesionKeys);
+        extractInitialValues(actionContext);
+    }
+
+    private void extractInitialValues(ActionContext context)
+    {
+        this.initialProjectIdentifierOrNull = context.tryGetProjectIdentifier();
     }
 
     protected void updateSamples()
@@ -260,7 +270,8 @@ abstract public class AbstractGenericExperimentRegisterEditForm extends
     @Override
     protected void createEntitySpecificFormFields()
     {
-        projectChooser = new ProjectSelectionWidget(viewContext, simpleId);
+        projectChooser =
+                new ProjectSelectionWidget(viewContext, simpleId, initialProjectIdentifierOrNull);
         projectChooser.setFieldLabel(viewContext.getMessage(Dict.PROJECT));
         FieldUtil.markAsMandatory(projectChooser);
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentEditForm.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentEditForm.java
index b3d7d894d5f..6ceae1d005e 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentEditForm.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentEditForm.java
@@ -17,6 +17,7 @@
 package ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.experiment;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ActionContext;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareComponent;
@@ -50,7 +51,7 @@ public final class GenericExperimentEditForm extends AbstractGenericExperimentRe
     private GenericExperimentEditForm(IViewContext<IGenericClientServiceAsync> viewContext,
             IIdAndCodeHolder identifiable)
     {
-        super(viewContext, identifiable);
+        super(viewContext, new ActionContext(), identifiable);
     }
 
     private void loadSamplesInBackground()
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentRegistrationForm.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentRegistrationForm.java
index 7b5fc75b7fd..33882be89f8 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentRegistrationForm.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentRegistrationForm.java
@@ -21,6 +21,7 @@ import java.util.List;
 import com.extjs.gxt.ui.client.widget.form.FileUploadField;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ActionContext;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.AbstractRegistrationForm;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentType;
@@ -43,9 +44,9 @@ public final class GenericExperimentRegistrationForm extends
 
     public GenericExperimentRegistrationForm(
             final IViewContext<IGenericClientServiceAsync> viewContext,
-            final ExperimentType experimentType)
+            final ActionContext context, final ExperimentType experimentType)
     {
-        super(viewContext);
+        super(viewContext, context);
         this.experimentType = experimentType;
     }
 
-- 
GitLab