diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractViewer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractViewer.java index 66b9f6491027a286aab1723d98933198b1c2b72a..1d6337896384f47393a9d563419e7616c1001ee0 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractViewer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractViewer.java @@ -16,24 +16,25 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui; -import com.extjs.gxt.ui.client.widget.LayoutContainer; +import com.extjs.gxt.ui.client.widget.ContentPanel; import ch.systemsx.cisd.openbis.generic.client.web.client.IClientServiceAsync; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; /** - * - * * @author Franz-Josef Elmer */ -public abstract class AbstractViewer<T extends IClientServiceAsync> extends LayoutContainer +public abstract class AbstractViewer<T extends IClientServiceAsync> extends ContentPanel { protected final IViewContext<T> viewContext; public AbstractViewer(final IViewContext<T> viewContext) { this.viewContext = viewContext; + setHeaderVisible(false); + setBodyBorder(false); + setBorders(false); } - + public abstract void loadData(); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBO.java index 6a131248e6d66704a4627d93ed76ed52c1a59077..998a217c48fe416feded497654ee0422da446e1e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExperimentBO.java @@ -34,9 +34,11 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.EntityTypePE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPropertyPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentTypePE; +import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentTypePropertyTypePE; import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE; import ch.systemsx.cisd.openbis.generic.shared.dto.Session; +import ch.systemsx.cisd.openbis.generic.shared.dto.VocabularyPE; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifierFactory; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier; @@ -328,4 +330,19 @@ public final class ExperimentBO extends AbstractBusinessObject implements IExper newProperties, registrator)); } + public void enrichWithTypeDetails() + { + if (experiment != null) + { + for (ExperimentTypePropertyTypePE etpt : experiment.getExperimentType() + .getExperimentTypePropertyTypes()) + { + final VocabularyPE vocabulary = etpt.getPropertyType().getVocabulary(); + if (vocabulary != null) + { + HibernateUtils.initialize(vocabulary.getTerms()); + } + } + } + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IExperimentBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IExperimentBO.java index 0cbef8d614a9edef26e01a4d29a7c778f3a75587..4aef133dee3b7f08b356ee19f443a88ce1a72062 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IExperimentBO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IExperimentBO.java @@ -66,4 +66,10 @@ public interface IExperimentBO extends IBusinessObject */ public void edit(ExperimentIdentifier identifier, List<ExperimentProperty> properties, List<AttachmentPE> attachments, ProjectIdentifier newProjectIdentifier); + + /** + * Adds experiment type details. + */ + public void enrichWithTypeDetails(); + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentViewer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentViewer.java index cb6b0d52bf11876588b1d2414875da7d49fd90e0..eaf9b4990bdaea334374cafc4faf2d8bff9ad880 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentViewer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentViewer.java @@ -17,16 +17,32 @@ package ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.experiment; import com.extjs.gxt.ui.client.Style.Scroll; +import com.extjs.gxt.ui.client.event.SelectionListener; +import com.extjs.gxt.ui.client.event.ToolBarEvent; import com.extjs.gxt.ui.client.util.Margins; import com.extjs.gxt.ui.client.widget.LayoutContainer; import com.extjs.gxt.ui.client.widget.layout.RowData; +import com.extjs.gxt.ui.client.widget.toolbar.FillToolItem; +import com.extjs.gxt.ui.client.widget.toolbar.TextToolItem; +import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; import com.google.gwt.user.client.ui.Widget; import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPlugin; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IClientPluginFactory; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.AbstractViewer; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Experiment; +import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifierHolder; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EditableExperiment; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentProperty; +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.plugin.generic.client.web.client.IGenericClientServiceAsync; /** @@ -42,12 +58,43 @@ public final class GenericExperimentViewer extends AbstractViewer<IGenericClient private final String experimentIdentifier; + private TextToolItem editButton; + public GenericExperimentViewer(final IViewContext<IGenericClientServiceAsync> viewContext, final String experimentIdentifier) { super(viewContext); setId(createId(experimentIdentifier)); this.experimentIdentifier = experimentIdentifier; + final ToolBar toolBar = new ToolBar(); + setTopComponent(toolBar); + toolBar.add(new FillToolItem()); + editButton = new TextToolItem(viewContext.getMessage(Dict.BUTTON_EDIT)); + toolBar.add(editButton); + } + + private SelectionListener<ToolBarEvent> createEditListener(final Experiment experiment) + { + return new SelectionListener<ToolBarEvent>() + { + @Override + public void componentSelected(ToolBarEvent ce) + { + final IClientPluginFactory clientPluginFactory = + viewContext.getClientPluginFactoryProvider().getClientPluginFactory( + EntityKind.EXPERIMENT, experiment.getExperimentType()); + final IClientPlugin<ExperimentType, ExperimentTypePropertyType, ExperimentProperty, IIdentifierHolder, EditableExperiment> createClientPlugin = + clientPluginFactory.createClientPlugin(EntityKind.EXPERIMENT); + final ITabItemFactory tabView = + createClientPlugin.createEntityEditor(new EditableExperiment(experiment + .getExperimentType().getExperimentTypePropertyTypes(), + experiment.getProperties(), experiment.getExperimentType(), + experiment.getIdentifier(), experiment.getId(), experiment + .getModificationDate(), experiment.getProject() + .getIdentifier(), experiment.getCode())); + DispatcherHelper.dispatchNaviEvent(tabView); + } + }; } public static String createId(String experimentIdentifier) @@ -70,7 +117,7 @@ public final class GenericExperimentViewer extends AbstractViewer<IGenericClient new ExperimentInfoCallback(viewContext, this)); } - public static final class ExperimentInfoCallback extends AbstractAsyncCallback<Experiment> + public final class ExperimentInfoCallback extends AbstractAsyncCallback<Experiment> { private final GenericExperimentViewer genericExperimentViewer; @@ -94,6 +141,7 @@ public final class GenericExperimentViewer extends AbstractViewer<IGenericClient @Override protected final void process(final Experiment result) { + editButton.addSelectionListener(createEditListener(result)); genericExperimentViewer.removeAll(); genericExperimentViewer.setScrollMode(Scroll.AUTO); addSection(genericExperimentViewer, diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java index 93f31166502050cb42e795ea12115760749cf841..102ca106976126a21d4f9806eaafc8f93882ff6e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java @@ -138,6 +138,7 @@ public final class GenericServer extends AbstractPluginServer<IGenericServer> im experimentBO.loadByExperimentIdentifier(identifier); experimentBO.enrichWithProperties(); experimentBO.enrichWithAttachments(); + experimentBO.enrichWithTypeDetails(); final ExperimentPE experiment = experimentBO.getExperiment(); return experiment; } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerTest.java index be472bcf8a1f869fe811fa51a2e4275bbd204708..6e5ecb1a22e3517e59877a078150a150248b8f34 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerTest.java @@ -158,6 +158,7 @@ public final class GenericServerTest extends AbstractServerTestCase one(experimentBO).loadByExperimentIdentifier(experimentIdentifier); one(experimentBO).enrichWithProperties(); one(experimentBO).enrichWithAttachments(); + one(experimentBO).enrichWithTypeDetails(); one(experimentBO).getExperiment(); will(returnValue(experimentPE));