From f71cc4538891b8a65edf5ef4c2087dfb8f1a5e74 Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Tue, 2 Oct 2012 06:14:39 +0000 Subject: [PATCH] SP-298, BIS-210: Extending ICommonServer and ICommonClientService with methods to retrieve IManagedInputWidgetDescription objects for managed properties. Simple implementation in CommonServer. Extending IClientPlugin to use IManagedInputWidgetDescription objects. EntityRegistrationPanel: Show registration panel after IManagedInputWidgetDescription objects have been received. No GUI changes. SVN: 26926 --- .../web/client/ICommonClientService.java | 4 ++ .../web/client/ICommonClientServiceAsync.java | 5 ++ .../plugin/ClientPluginAdapter.java | 5 ++ .../application/plugin/IClientPlugin.java | 5 ++ .../ui/widget/EntityRegistrationPanel.java | 32 ++++++++++--- .../web/server/CommonClientService.java | 9 ++++ .../openbis/generic/server/CommonServer.java | 48 ++++++++++++++++++- .../generic/server/CommonServerLogger.java | 10 ++++ .../openbis/generic/shared/ICommonServer.java | 5 ++ .../application/ClientPluginFactory.java | 7 ++- .../application/ClientPluginFactory.java | 23 ++++++--- .../application/DelegatedClientPlugin.java | 15 ++++-- ...ractGenericExperimentRegisterEditForm.java | 16 +++++-- .../experiment/GenericExperimentEditForm.java | 5 +- .../GenericExperimentRegistrationForm.java | 5 +- .../experiment/PropertiesEditor.java | 9 ++-- .../application/ClientPluginFactory.java | 11 +++-- 17 files changed, 181 insertions(+), 33 deletions(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java index c03e8fe8e35..406bc0dc0fb 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java @@ -111,6 +111,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTermReplacement; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTermWithStats; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedInputWidgetDescription; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedUiAction; @@ -247,6 +248,9 @@ public interface ICommonClientService extends IClientService */ public List<SampleType> listSampleTypes() throws UserFailureException; + public Map<String, List<IManagedInputWidgetDescription>> listManagedInputWidgetDescriptions( + EntityType entityType) throws UserFailureException; + /** * Returns a list of samples matching given criteria. */ diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java index 2566bfdd816..09f65b199ff 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java @@ -113,6 +113,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTermReplacement; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTermWithStats; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedInputWidgetDescription; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedUiAction; @@ -198,6 +199,10 @@ public interface ICommonClientServiceAsync extends IClientServiceAsync /** @see ICommonClientService#listSampleTypes() */ public void listSampleTypes(AsyncCallback<List<SampleType>> asyncCallback); + /** @see ICommonClientService#listManagedInputWidgetDescriptions(EntityType) */ + public void listManagedInputWidgetDescriptions(EntityType entityType, + AsyncCallback<Map<String, List<IManagedInputWidgetDescription>>> asyncCallback); + /** @see ICommonClientService#listFileTypes() */ public void listFileTypes(AsyncCallback<List<FileFormatType>> asyncCallback); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/ClientPluginAdapter.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/ClientPluginAdapter.java index 5043d784b1c..f294ec06532 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/ClientPluginAdapter.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/ClientPluginAdapter.java @@ -16,6 +16,9 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin; +import java.util.List; +import java.util.Map; + import com.google.gwt.user.client.ui.Widget; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ActionContext; @@ -24,6 +27,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework. import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithPermId; 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.api.IManagedInputWidgetDescription; /** * A dummy {@link IClientPlugin} implementation which throws {@link UnsupportedOperationException} @@ -59,6 +63,7 @@ public class ClientPluginAdapter<E extends BasicEntityType, I extends IIdAndCode @Override public DatabaseModificationAwareWidget createRegistrationForEntityType(final E entityType, + Map<String, List<IManagedInputWidgetDescription>> inputWidgetDescriptions, final ActionContext context) { throw new UnsupportedOperationException("Not yet implemented."); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/IClientPlugin.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/IClientPlugin.java index ea8fd086d58..3c886a56b2d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/IClientPlugin.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/plugin/IClientPlugin.java @@ -16,6 +16,9 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin; +import java.util.List; +import java.util.Map; + import com.google.gwt.user.client.ui.Widget; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ActionContext; @@ -24,6 +27,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework. import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithPermId; 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.api.IManagedInputWidgetDescription; /** * The client plugin. @@ -49,6 +53,7 @@ public interface IClientPlugin<T extends BasicEntityType, I extends IIdAndCodeHo * Shows a registration form for entities of given <var>entityType</var>. */ public DatabaseModificationAwareWidget createRegistrationForEntityType(final T entityType, + Map<String, List<IManagedInputWidgetDescription>> inputWidgetDescriptions, final ActionContext context); /** diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/EntityRegistrationPanel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/EntityRegistrationPanel.java index 0666c37dd91..57b295c8ccb 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/EntityRegistrationPanel.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/EntityRegistrationPanel.java @@ -18,6 +18,7 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Set; import com.extjs.gxt.ui.client.Style.Scroll; @@ -30,6 +31,7 @@ import com.extjs.gxt.ui.client.widget.toolbar.LabelToolItem; import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; 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; @@ -45,6 +47,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.IIdAndCodeHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; 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.api.IManagedInputWidgetDescription; /** * The {@link LayoutContainer} extension for registering an entity. @@ -112,8 +115,7 @@ abstract public class EntityRegistrationPanel<T extends ModelData, S extends Dro final EntityType entityType = entityTypeModel.get(ModelDataPropertyNames.OBJECT); if (registrationWidget == null || shouldAskForCloseConfirmation() == false) { - showRegistrationForm(entityType); - previousSelection.update(entityTypeModel); + showAndUpdateRegistrationForm(entityTypeModel, entityType); } else { new ConfirmationDialog(viewContext.getMessage(Dict.CONFIRM_TITLE), @@ -122,8 +124,7 @@ abstract public class EntityRegistrationPanel<T extends ModelData, S extends Dro @Override protected void onYes() { - showRegistrationForm(entityType); - previousSelection.update(entityTypeModel); + showAndUpdateRegistrationForm(entityTypeModel, entityType); } @Override @@ -139,7 +140,25 @@ abstract public class EntityRegistrationPanel<T extends ModelData, S extends Dro } } - private void showRegistrationForm(final EntityType entityType) + private void showAndUpdateRegistrationForm(final T entityTypeModel, final EntityType entityType) + { + viewContext.getService().listManagedInputWidgetDescriptions( + entityType, + new AbstractAsyncCallback<Map<String, List<IManagedInputWidgetDescription>>>( + viewContext) + { + @Override + protected void process( + Map<String, List<IManagedInputWidgetDescription>> inputWidgetDescriptions) + { + showRegistrationForm(entityType, inputWidgetDescriptions); + previousSelection.update(entityTypeModel); + } + }); + } + + private void showRegistrationForm(final EntityType entityType, + Map<String, List<IManagedInputWidgetDescription>> inputWidgetDescriptions) { removeAll(); final IClientPlugin<EntityType, IIdAndCodeHolder> clientPlugin = @@ -147,7 +166,8 @@ abstract public class EntityRegistrationPanel<T extends ModelData, S extends Dro .getClientPluginFactory(entityKind, entityType) .createClientPlugin(entityKind); registrationWidget = - clientPlugin.createRegistrationForEntityType(entityType, actionContext); + clientPlugin.createRegistrationForEntityType(entityType, inputWidgetDescriptions, + actionContext); add(registrationWidget.get()); layout(); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java index 8cbeaded0e3..8f56181f032 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java @@ -184,6 +184,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTermBatchUpdateDetails; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTermReplacement; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTermWithStats; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedInputWidgetDescription; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedUiAction; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.ValidationException; @@ -394,6 +395,14 @@ public final class CommonClientService extends AbstractClientService implements // --------- methods preparing exported content. Note: GWT does not support // generic methods :( + @Override + public Map<String, List<IManagedInputWidgetDescription>> listManagedInputWidgetDescriptions( + EntityType entityType) + { + final String sessionToken = getSessionToken(); + return commonServer.listManagedInputWidgetDescriptions(sessionToken, entityType); + } + @Override public String prepareExportSamples(TableExportCriteria<TableModelRowWithObject<Sample>> criteria) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java index dad0ccd151b..e7a2f2062a3 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java @@ -194,6 +194,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.LinkModel; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListMaterialCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListOrSearchSampleCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListSampleCriteria; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ManagedTextInputWidgetDescription; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ManagedUiActionDescription; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MatchingEntity; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Material; @@ -229,6 +230,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.UpdatedSample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTermReplacement; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedInputWidgetDescription; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedUiAction; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IPerson; @@ -592,8 +594,50 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt checkSession(sessionToken); final List<SampleTypePE> sampleTypes = getDAOFactory().getSampleTypeDAO().listSampleTypes(); Collections.sort(sampleTypes); - return SampleTypeTranslator.translate(sampleTypes, - new HashMap<PropertyTypePE, PropertyType>()); + List<SampleType> translateSampleTypes = + SampleTypeTranslator.translate(sampleTypes, + new HashMap<PropertyTypePE, PropertyType>()); + + return translateSampleTypes; + } + + @Override + @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) + public Map<String, List<IManagedInputWidgetDescription>> listManagedInputWidgetDescriptions( + String sessionToken, EntityType entityType) + { + checkSession(sessionToken); + + List<? extends EntityTypePropertyType<?>> assignedPropertyTypes = + entityType.getAssignedPropertyTypes(); + HashMap<String, List<IManagedInputWidgetDescription>> result = + new HashMap<String, List<IManagedInputWidgetDescription>>(); + for (EntityTypePropertyType<?> entityTypePropertyType : assignedPropertyTypes) + { + String propertyTypeCode = entityTypePropertyType.getPropertyType().getCode(); + if (entityTypePropertyType.isManaged()) + { + String script = entityTypePropertyType.getScript().getScript(); + ManagedPropertyEvaluator evaluator = + ManagedPropertyEvaluatorFactory.createManagedPropertyEvaluator(script); + List<String> batchColumnNames = evaluator.getBatchColumnNames(); + if (batchColumnNames.isEmpty() == false) + { + List<IManagedInputWidgetDescription> descriptions = + new ArrayList<IManagedInputWidgetDescription>(); + for (String batchColumnName : batchColumnNames) + { + ManagedTextInputWidgetDescription description = + new ManagedTextInputWidgetDescription(); + description.setLabel(batchColumnName); + descriptions.add(description); + } + result.put(propertyTypeCode, descriptions); + } + } + + } + return result; } @Override diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java index b3152659ed9..3c9a1674d8e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java @@ -101,6 +101,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTermReplacement; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedInputWidgetDescription; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedUiAction; import ch.systemsx.cisd.openbis.generic.shared.coreplugin.ICorePluginResourceLoader; @@ -254,6 +255,15 @@ final class CommonServerLogger extends AbstractServerLogger implements ICommonSe return null; } + @Override + public Map<String, List<IManagedInputWidgetDescription>> listManagedInputWidgetDescriptions( + String sessionToken, EntityType entityType) + { + logAccess(sessionToken, "list_managed_input_widget_descriptions", "TYPE(%s)", + entityType.getCode()); + return null; + } + @Override public List<Sample> listSamples(String sessionToken, ListSampleCriteria criteria) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java index 8463a84c16d..f27fb18f353 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java @@ -98,6 +98,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTermReplacement; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedInputWidgetDescription; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedUiAction; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetUpdatesDTO; @@ -262,6 +263,10 @@ public interface ICommonServer extends IServer @Transactional(readOnly = true) public List<SampleType> listSampleTypes(String sessionToken); + @Transactional(readOnly = true) + public Map<String, List<IManagedInputWidgetDescription>> listManagedInputWidgetDescriptions( + String sessionToken, EntityType entityType); + /** * Lists samples using given configuration. * 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 9eb03872e21..e871e661930 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 @@ -17,6 +17,8 @@ package ch.systemsx.cisd.openbis.plugin.demo.client.web.client.application; import java.util.Collections; +import java.util.List; +import java.util.Map; import java.util.Set; import com.extjs.gxt.ui.client.widget.Component; @@ -46,6 +48,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedInputWidgetDescription; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.GenericViewContext; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.sample.GenericSampleRegistrationForm; @@ -161,7 +164,9 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<DemoV @Override public final DatabaseModificationAwareWidget createRegistrationForEntityType( - final SampleType sampleType, final ActionContext context) + final SampleType sampleType, + Map<String, List<IManagedInputWidgetDescription>> inputWidgetDescriptions, + final ActionContext context) { GenericSampleRegistrationForm form = new GenericSampleRegistrationForm(new GenericViewContext(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 cf4259c486d..90dd9fb1962 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 @@ -16,6 +16,8 @@ package ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application; +import java.util.List; +import java.util.Map; import java.util.Set; import com.google.gwt.user.client.ui.Widget; @@ -50,6 +52,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedInputWidgetDescription; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.dataset.GenericDataSetBatchUpdateForm; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.dataset.GenericDataSetEditForm; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.dataset.GenericDataSetViewer; @@ -215,7 +218,9 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener @Override public final DatabaseModificationAwareWidget createRegistrationForEntityType( - final SampleType sampleType, final ActionContext context) + final SampleType sampleType, + Map<String, List<IManagedInputWidgetDescription>> inputWidgetDescriptions, + final ActionContext context) { GenericSampleRegistrationForm form = new GenericSampleRegistrationForm(getViewContext(), sampleType, context); @@ -251,7 +256,8 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener @Override public String getId() { - return AbstractGenericEntityRegistrationForm.createId(identifiable, EntityKind.SAMPLE); + return AbstractGenericEntityRegistrationForm.createId(identifiable, + EntityKind.SAMPLE); } @Override @@ -352,7 +358,8 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener @Override public String getId() { - return AbstractGenericEntityRegistrationForm.createId(identifiable, EntityKind.MATERIAL); + return AbstractGenericEntityRegistrationForm.createId(identifiable, + EntityKind.MATERIAL); } @Override @@ -429,10 +436,13 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener @Override public DatabaseModificationAwareWidget createRegistrationForEntityType( - ExperimentType entityType, ActionContext context) + ExperimentType entityType, + Map<String, List<IManagedInputWidgetDescription>> inputWidgetDescriptions, + ActionContext context) { GenericExperimentRegistrationForm form = - new GenericExperimentRegistrationForm(getViewContext(), context, entityType); + new GenericExperimentRegistrationForm(getViewContext(), + inputWidgetDescriptions, context, entityType); return new DatabaseModificationAwareWidget(form, form); } @@ -553,7 +563,8 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Gener @Override public String getId() { - return AbstractGenericEntityRegistrationForm.createId(identifiable, EntityKind.DATA_SET); + return AbstractGenericEntityRegistrationForm.createId(identifiable, + EntityKind.DATA_SET); } @Override diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/DelegatedClientPlugin.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/DelegatedClientPlugin.java index b1053e0b8de..ad865252e5c 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/DelegatedClientPlugin.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/DelegatedClientPlugin.java @@ -16,6 +16,9 @@ package ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application; +import java.util.List; +import java.util.Map; + import com.google.gwt.user.client.ui.Widget; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ActionContext; @@ -27,10 +30,11 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWit 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; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedInputWidgetDescription; /** - * delegates all operations to generic plugin, should be subclasssed and the needed - * functionality can override the default behaviour + * delegates all operations to generic plugin, should be subclasssed and the needed functionality + * can override the default behaviour */ public class DelegatedClientPlugin<T extends BasicEntityType> implements IClientPlugin<T, IIdAndCodeHolder> @@ -52,8 +56,7 @@ public class DelegatedClientPlugin<T extends BasicEntityType> implements } @Override - public AbstractTabItemFactory createEntityViewer( - final IEntityInformationHolderWithPermId entity) + public AbstractTabItemFactory createEntityViewer(final IEntityInformationHolderWithPermId entity) { return delegator.createEntityViewer(entity); } @@ -78,8 +81,10 @@ public class DelegatedClientPlugin<T extends BasicEntityType> implements @Override public DatabaseModificationAwareWidget createRegistrationForEntityType(T entityType, + Map<String, List<IManagedInputWidgetDescription>> inputWidgetDescriptions, ActionContext context) { - return delegator.createRegistrationForEntityType(entityType, context); + return delegator.createRegistrationForEntityType(entityType, inputWidgetDescriptions, + context); } } \ No newline at end of file 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 b6a98ca3d75..74c5c44343f 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 @@ -20,6 +20,7 @@ import static ch.systemsx.cisd.openbis.generic.client.web.client.application.fra import java.util.ArrayList; import java.util.List; +import java.util.Map; import com.extjs.gxt.ui.client.Style.Orientation; import com.extjs.gxt.ui.client.event.BaseEvent; @@ -59,6 +60,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentTypePropertyType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedInputWidgetDescription; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.IGenericClientServiceAsync; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.AbstractGenericEntityRegistrationForm; @@ -97,18 +99,24 @@ abstract public class AbstractGenericExperimentRegisterEditForm extends private LabelField templateField; + private final Map<String, List<IManagedInputWidgetDescription>> inputWidgetDescriptions; + protected AbstractGenericExperimentRegisterEditForm( - IViewContext<IGenericClientServiceAsync> viewContext, ActionContext context) + IViewContext<IGenericClientServiceAsync> viewContext, + Map<String, List<IManagedInputWidgetDescription>> inputWidgetDescriptions, + ActionContext context) { - this(viewContext, context, null); + this(viewContext, inputWidgetDescriptions, context, null); } protected AbstractGenericExperimentRegisterEditForm( - IViewContext<IGenericClientServiceAsync> viewContext, ActionContext actionContext, - IIdAndCodeHolder identifiable) + IViewContext<IGenericClientServiceAsync> viewContext, + Map<String, List<IManagedInputWidgetDescription>> inputWidgetDescriptions, + ActionContext actionContext, IIdAndCodeHolder identifiable) { super(viewContext, identifiable, EntityKind.EXPERIMENT); + this.inputWidgetDescriptions = inputWidgetDescriptions; simpleId = createSimpleId(identifiable, EntityKind.EXPERIMENT); attachmentsSessionKey = simpleId + "_attachments"; samplesSessionKey = simpleId + "_samples"; 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 639e1d5f33e..c273ecd504a 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 @@ -16,6 +16,7 @@ package ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.experiment; +import java.util.Collections; import java.util.List; import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; @@ -32,6 +33,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentUpdateResult; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentUpdates; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedInputWidgetDescription; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.IGenericClientServiceAsync; /** @@ -53,7 +55,8 @@ public final class GenericExperimentEditForm extends AbstractGenericExperimentRe private GenericExperimentEditForm(IViewContext<IGenericClientServiceAsync> viewContext, IIdAndCodeHolder identifiable) { - super(viewContext, new ActionContext(), identifiable); + super(viewContext, Collections.<String, List<IManagedInputWidgetDescription>> emptyMap(), + new ActionContext(), identifiable); setRevertButtonVisible(true); } 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 0d0dde340f6..bd76942dff7 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 @@ -17,6 +17,7 @@ package ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.experiment; import java.util.List; +import java.util.Map; import com.extjs.gxt.ui.client.widget.form.FileUploadField; @@ -29,6 +30,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentTypePropertyT import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperiment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Project; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedInputWidgetDescription; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.IGenericClientServiceAsync; /** @@ -44,9 +46,10 @@ public final class GenericExperimentRegistrationForm extends public GenericExperimentRegistrationForm( final IViewContext<IGenericClientServiceAsync> viewContext, + Map<String, List<IManagedInputWidgetDescription>> inputWidgetDescriptions, final ActionContext context, final ExperimentType experimentType) { - super(viewContext, context); + super(viewContext, inputWidgetDescriptions, context); setResetButtonVisible(true); this.experimentType = experimentType; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/PropertiesEditor.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/PropertiesEditor.java index add53c3c446..5ccaf55064f 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/PropertiesEditor.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/PropertiesEditor.java @@ -21,6 +21,10 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import com.extjs.gxt.ui.client.widget.form.FieldSet; +import com.extjs.gxt.ui.client.widget.form.FormPanel; +import com.extjs.gxt.ui.client.widget.layout.FormLayout; + import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareField; @@ -36,10 +40,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityTypePropertyType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; -import com.extjs.gxt.ui.client.widget.form.FieldSet; -import com.extjs.gxt.ui.client.widget.form.FormPanel; -import com.extjs.gxt.ui.client.widget.layout.FormLayout; - /** * @author Izabela Adamczyk */ @@ -132,6 +132,7 @@ abstract public class PropertiesEditor<T extends EntityType, S extends EntityTyp final String label = PropertyTypeRenderer.getDisplayName(etpt.getPropertyType(), propertyTypes); final String propertyTypeCode = etpt.getPropertyType().getCode(); + boolean isManaged = etpt.isManaged(); field = PropertyFieldFactory.createField(etpt.getPropertyType(), isMandatory, label, createFormFieldId(getId(), propertyTypeCode), value, viewContext); diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ClientPluginFactory.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ClientPluginFactory.java index 6604337e5cc..d08e0afa441 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ClientPluginFactory.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/proteomics/client/web/client/application/ClientPluginFactory.java @@ -19,6 +19,8 @@ package ch.systemsx.cisd.openbis.plugin.proteomics.client.web.client.application import java.util.Arrays; import java.util.Collections; import java.util.HashSet; +import java.util.List; +import java.util.Map; import java.util.Set; import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; @@ -44,6 +46,7 @@ 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; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedInputWidgetDescription; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.IGenericClientServiceAsync; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.AbstractGenericEntityRegistrationForm; import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.DelegatedClientPlugin; @@ -165,11 +168,13 @@ public class ClientPluginFactory extends AbstractClientPluginFactory<ViewContext @Override public DatabaseModificationAwareWidget createRegistrationForEntityType( - ExperimentType entityType, ActionContext context) + ExperimentType entityType, + Map<String, List<IManagedInputWidgetDescription>> inputWidgetDescriptions, + ActionContext context) { GenericExperimentRegistrationForm form = - new GenericExperimentRegistrationForm(getGenericViewContext(), context, - entityType); + new GenericExperimentRegistrationForm(getGenericViewContext(), + inputWidgetDescriptions, context, entityType); return new DatabaseModificationAwareWidget(form, form); } -- GitLab