From 66e5d4dd71018e40f0a1c57325f2cb9915debe59 Mon Sep 17 00:00:00 2001 From: izabel <izabel> Date: Wed, 18 Mar 2009 10:04:07 +0000 Subject: [PATCH] [LMS-780] add edit button in experiment viewer SVN: 10277 --- .../client/application/ui/AbstractViewer.java | 11 ++-- .../server/business/bo/ExperimentBO.java | 17 +++++++ .../server/business/bo/IExperimentBO.java | 6 +++ .../experiment/GenericExperimentViewer.java | 50 ++++++++++++++++++- .../plugin/generic/server/GenericServer.java | 1 + .../generic/server/GenericServerTest.java | 1 + 6 files changed, 80 insertions(+), 6 deletions(-) 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 66b9f649102..1d633789638 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 6a131248e6d..998a217c48f 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 0cbef8d614a..4aef133dee3 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 cb6b0d52bf1..eaf9b4990bd 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 93f31166502..102ca106976 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 be472bcf8a1..6e5ecb1a22e 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)); -- GitLab