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 c03e8fe8e35203394217536288f4d50bdfc29585..406bc0dc0fb7db7473c42462cbf5ababb7434623 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 2566bfdd81661978df23ec3069eeec15def20da2..09f65b199ffc413a52f031513fa411048d9b5ffe 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 5043d784b1ca131f694324a70f39010447b1443c..f294ec0653249351ddd03b5509954b238793e156 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 ea8fd086d5821aca5c0af68dd2de1b18b1b274a7..3c886a56b2da4fa536b634b36a556a36de41450d 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 0666c37dd9168da6d1ae0de4941a552afd020e2d..57b295c8ccb10d786b4ab8749dfed95e0a44d601 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 8cbeaded0e384be86963ddd510ceed195c6d6ff5..8f56181f032c8fa53acb04247857e6dabbd4c2ab 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 dad0ccd151b772779199cd35a60ad566ac18a82f..e7a2f2062a3c1669a6b2949c13a86deccc1be69e 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 b3152659ed9e57f228708ece386b12931250e962..3c9a1674d8e503e726e939b0769230535f0a05c8 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 8463a84c16d1ba9bd9ac680638a672047043a439..f27fb18f353f73e5a036fedaf282247983cb379f 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 9eb03872e21721b33b6678fd6b8d5bfb2fa6e057..e871e6619300b1bb8a64a20fa7b5159eb897848b 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 cf4259c486d259b6f36bc777e0a512f7276d12a9..90dd9fb1962667bf5c4d93e174c82bae9b698908 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 b1053e0b8de895e5ad898af55c13a26a220c491a..ad865252e5c6c22c9959a489d2ba84d442e660cd 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 b6a98ca3d75fd619f7ffaf2067e936de6c2badc5..74c5c44343f973cb0d611129f2bbc9982bd8373c 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 639e1d5f33e809f8cb57e5d5f85e519567ed6623..c273ecd504a9f4b33251e8f9e68e76a45edda2b7 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 0d0dde340f6d5592d069a5ec7e496cb228aed30f..bd76942dff75c1c2e4816c1401657fd2bbd045ea 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 add53c3c446a55f007bb8dd55e8a6c4894ad3b62..5ccaf55064f8064c391f84c1f8a529d340dc48c3 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 6604337e5ccc7569ad05bfafa14d609e608b49c3..d08e0afa441cf0d246c4939f9848877bcf845fb8 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); }