From f27a8b42e511776985bac033a8b65715095ddcd4 Mon Sep 17 00:00:00 2001 From: izabel <izabel> Date: Wed, 1 Dec 2010 16:29:44 +0000 Subject: [PATCH] [LMS-1903] script tester: update entity link without the need to use entity chooser SVN: 18980 --- .../ui/script/ScriptExecutionFramework.java | 127 ++++++++++-------- 1 file changed, 71 insertions(+), 56 deletions(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/script/ScriptExecutionFramework.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/script/ScriptExecutionFramework.java index 0b7dec96153..539c8f52b52 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/script/ScriptExecutionFramework.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/script/ScriptExecutionFramework.java @@ -25,12 +25,16 @@ import com.extjs.gxt.ui.client.event.SelectionChangedEvent; import com.extjs.gxt.ui.client.event.SelectionChangedListener; import com.extjs.gxt.ui.client.event.SelectionListener; import com.extjs.gxt.ui.client.widget.Html; +import com.extjs.gxt.ui.client.widget.MessageBox; import com.extjs.gxt.ui.client.widget.button.Button; import com.extjs.gxt.ui.client.widget.form.AdapterField; import com.extjs.gxt.ui.client.widget.form.Field; 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.form.SimpleComboValue; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Widget; import ch.systemsx.cisd.common.shared.basic.utils.StringUtils; @@ -41,19 +45,18 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewConte import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.SampleTypeDisplayID; import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.LinkRenderer; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.AbstractRegistrationForm; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.ChosenEntitySetter; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.DataSetChooserField; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.ExperimentChooserField; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.ExperimentChooserField.ExperimentChooserFieldAdaptor; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.IChosenEntityListener; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.MaterialChooserField; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.SampleChooserField; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.SampleChooserField.SampleChooserFieldAdaptor; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.listener.OpenEntityDetailsTabClickListener; +import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.listener.OpenEntityDetailsTabAction; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.FieldUtil; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.MultilineHTML; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.WidgetUtils; import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithPermId; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityDescription; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DynamicPropertyEvaluationInfo; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; @@ -91,8 +94,6 @@ public class ScriptExecutionFramework { private String script; - private IEntityInformationHolderWithPermId chosenEntity; - public String getScript() { return script; @@ -103,16 +104,6 @@ public class ScriptExecutionFramework this.script = script; } - public IEntityInformationHolderWithPermId getChosenEntity() - { - return chosenEntity; - } - - public void setChosenEntity(IEntityInformationHolderWithPermId chosenEntity) - { - this.chosenEntity = chosenEntity; - } - } public ScriptExecutionFramework(IViewContext<ICommonClientServiceAsync> viewContext, @@ -141,7 +132,7 @@ public class ScriptExecutionFramework entityLink = createEntityLink(); html = new MultilineHTML(""); evaluationResultPanel = createResultField(html); - updateVisibleEntityChooser(map, entityKindChooser); + updateVisibleEntityChooser(map, entityKindChooser, entityLink); entityKindChooser .addSelectionChangedListener(new SelectionChangedListener<SimpleComboValue<String>>() { @@ -149,16 +140,10 @@ public class ScriptExecutionFramework public void selectionChanged( SelectionChangedEvent<SimpleComboValue<String>> se) { - state.setChosenEntity(null); - updateVisibleEntityChooser(map, entityKindChooser); - updateVisibleEntityLink(state, entityLink); + updateVisibleEntityChooser(map, entityKindChooser, entityLink); evaluationResultPanel.setVisible(false); } }); - setChosenEntityListener(sampleChooser.getChooserField(), state, entityLink); - setChosenEntityListener(experimentChooser.getChooserField(), state, entityLink); - setChosenEntityListener(materialChooser, state, entityLink); - setChosenEntityListener(datasetChooser, state, entityLink); panel = createPanel(); panel.add(entityKindChooser); @@ -169,23 +154,6 @@ public class ScriptExecutionFramework panel.add(entityLink); panel.add(createButtonsField()); panel.add(evaluationResultPanel); - updateVisibleEntityLink(state, entityLink); - } - - private static <T extends IEntityInformationHolderWithPermId> void setChosenEntityListener( - ChosenEntitySetter<T> setter, final State state, final Field<?> entityLink) - { - setter.addChosenEntityListener(new IChosenEntityListener<T>() - { - public void entityChosen(T entity) - { - if (entity != null) - { - state.setChosenEntity(entity); - updateVisibleEntityLink(state, entityLink); - } - } - }); } private AdapterField createButtonsField() @@ -205,8 +173,6 @@ public class ScriptExecutionFramework private void reset() { panel.reset(); - state.setChosenEntity(null); - updateVisibleEntityLink(state, entityLink); html.setHTML(""); evaluationResultPanel.setVisible(false); } @@ -255,19 +221,65 @@ public class ScriptExecutionFramework return fieldSet; } + private BasicEntityDescription tryGetSelectedEntity() + { + + if (StringUtils.isBlank(sampleChooser.getValue()) == false) + { + return new BasicEntityDescription(EntityKind.SAMPLE, sampleChooser.getValue()); + } + if (experimentChooser.tryToGetValue() != null + && StringUtils.isBlank(experimentChooser.tryToGetValue().getIdentifier()) == false) + { + return new BasicEntityDescription(EntityKind.EXPERIMENT, experimentChooser + .tryToGetValue().getIdentifier()); + } + if (StringUtils.isBlank(materialChooser.getValue()) == false) + { + return new BasicEntityDescription(EntityKind.MATERIAL, materialChooser.getValue()); + } + if (StringUtils.isBlank(datasetChooser.getValue()) == false) + { + return new BasicEntityDescription(EntityKind.DATA_SET, datasetChooser.getValue()); + } + return null; + } + private AdapterField createEntityLink() { - AdapterField field = - new AdapterField(LinkRenderer.getLinkWidget( - viewContext.getMessage(Dict.SHOW_DETAILS), - new OpenEntityDetailsTabClickListener(null, viewContext) - { - @Override - protected IEntityInformationHolderWithPermId getEntity() - { - return state.getChosenEntity(); - } - })); + ClickHandler listener = new ClickHandler() + { + + public void onClick(final ClickEvent event) + { + final boolean ifSpecialKeyPressed = + WidgetUtils.ifSpecialKeyPressed(event.getNativeEvent()); + BasicEntityDescription entity = tryGetSelectedEntity(); + if (entity != null) + { + AsyncCallback<IEntityInformationHolderWithPermId> callback = + new AbstractAsyncCallback<IEntityInformationHolderWithPermId>( + viewContext) + { + @Override + protected void process( + IEntityInformationHolderWithPermId result) + { + new OpenEntityDetailsTabAction(result, viewContext, + ifSpecialKeyPressed).execute(); + } + }; + viewContext.getCommonService().getEntityInformationHolder( + tryGetSelectedEntity(), callback); + } else + { + MessageBox.info("Entity not selected", "Please choose the entity", null); + } + } + }; + Widget linkWidget = + LinkRenderer.getLinkWidget(viewContext.getMessage(Dict.SHOW_DETAILS), listener); + AdapterField field = new AdapterField(linkWidget); field.setFieldLabel(viewContext.getMessage(Dict.ENTITY_DETAILS)); return field; @@ -348,21 +360,24 @@ public class ScriptExecutionFramework html.setHTML(result == null ? "(null)" : result); } - private static void updateVisibleEntityLink(State state, Field<?> entityLink) + private static void updateVisibleEntityLink(boolean visible, Field<?> entityLink) { - FieldUtil.setVisibility(state.getChosenEntity() != null, entityLink); + FieldUtil.setVisibility(visible, entityLink); } private static void updateVisibleEntityChooser(Map<EntityKind, Field<?>> map, - EntityKindSelectionWidget entityKindChooser) + EntityKindSelectionWidget entityKindChooser, Field<?> entityLink) { + boolean atLeastOneEntityChooserVisible = false; for (Field<?> w : map.values()) { w.reset(); EntityKind kind = entityKindChooser.tryGetEntityKind(); boolean visible = kind != null && w == map.get(kind); + atLeastOneEntityChooserVisible = atLeastOneEntityChooserVisible || visible; FieldUtil.setVisibility(visible, w); } + updateVisibleEntityLink(atLeastOneEntityChooserVisible, entityLink); } private static FormPanel createPanel() -- GitLab