diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/ParameterField.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/ParameterField.java index 467096418faf33cd359cfbd0416fc3672162b15f..4870020892b8b3b740a0dede3d9f70533bb14e3d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/ParameterField.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/ParameterField.java @@ -17,7 +17,6 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import com.extjs.gxt.ui.client.data.ModelData; @@ -27,12 +26,9 @@ import com.extjs.gxt.ui.client.event.SelectionChangedEvent; import com.extjs.gxt.ui.client.event.SelectionChangedListener; import com.extjs.gxt.ui.client.widget.MessageBox; import com.extjs.gxt.ui.client.widget.form.Field; -import com.extjs.gxt.ui.client.widget.form.SimpleComboBox; -import com.extjs.gxt.ui.client.widget.form.SimpleComboValue; import com.extjs.gxt.ui.client.widget.form.TriggerField; import com.google.gwt.user.client.Element; -import ch.systemsx.cisd.common.shared.basic.utils.StringUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames; @@ -61,12 +57,6 @@ public class ParameterField extends TriggerField<ModelData> implements IParamete private static String QUERY_LIST_EXPRESSION_PREFIX = "query="; - private final String parameterName; - - private final IDelegatedAction onValueChangeAction; - - private final String initialValueOrNull; - public static IParameterField create(IViewContext<?> viewContextOrNull, String parameterName, String initialValueOrNull, IDelegatedAction onValueChangeAction, IParameterValuesLoader loaderOrNull) @@ -74,40 +64,41 @@ public class ParameterField extends TriggerField<ModelData> implements IParamete String[] split = parameterName.split(PARAMETER_NAME_SEPARATOR); if (split.length == 2) { - String namePart = split[0]; - String expressionPart = split[1]; + final String namePart = split[0]; + final String expressionPart = split[1]; + final String idSuffix = parameterName.replaceAll(" ", "_"); if (expressionPart.startsWith(ENUM_LIST_EXPRESSION_PREFIX)) { String itemList = expressionPart.substring(ENUM_LIST_EXPRESSION_PREFIX.length()); String[] values = itemList.split(ENUM_LIST_SEPARATOR); - return createSelectionField(namePart, Arrays.asList(values), initialValueOrNull, - onValueChangeAction); + List<ParameterValue> parameterValues = new ArrayList<ParameterValue>(); + for (String value : values) + { + parameterValues.add(new ParameterValue(value, null)); + } + return ParameterSelectionDropDownList.createWithValues(parameterName, idSuffix, + parameterValues, initialValueOrNull, onValueChangeAction); } else if (expressionPart.startsWith(QUERY_LIST_EXPRESSION_PREFIX)) { String queryExpression = expressionPart.substring(QUERY_LIST_EXPRESSION_PREFIX.length()); - return createSelectionField(viewContextOrNull, namePart, queryExpression, - loaderOrNull, initialValueOrNull, onValueChangeAction); + return ParameterSelectionDropDownList.createWithLoader(parameterName, + queryExpression, idSuffix, viewContextOrNull, loaderOrNull, + initialValueOrNull, onValueChangeAction); } else { MessageBox.alert("Error", "Filter parameter '" + namePart + "' is not defined properly.", null); - return new ParameterField(namePart, onValueChangeAction, initialValueOrNull); } } - return new ParameterField(parameterName, onValueChangeAction, initialValueOrNull); } - private static IParameterField createSelectionField(IViewContext<?> viewContextOrNull, - String parameterName, String queryExpression, IParameterValuesLoader loaderOrNull, - String initialValueOrNull, IDelegatedAction onValueChangeAction) - { - final String idSuffix = parameterName.replaceAll(" ", "_"); - return ParameterSelectionDropDownList.create(parameterName, queryExpression, idSuffix, - parameterName, viewContextOrNull, loaderOrNull, true, initialValueOrNull, - onValueChangeAction); - } + private final String parameterName; + + private final IDelegatedAction onValueChangeAction; + + private final String initialValueOrNull; private ParameterField(String parameterName, IDelegatedAction onValueChangeAction, String initialValueOrNull) @@ -156,84 +147,7 @@ public class ParameterField extends TriggerField<ModelData> implements IParamete onValueChangeAction.execute(); } - private static ParameterSelectionField createSelectionField(String parameterName, - List<String> parameterValues, String initialValueOrNull, - IDelegatedAction onValueChangeAction) - { - return new ParameterSelectionField(parameterName, parameterValues, initialValueOrNull, - onValueChangeAction); - } - // TODO 2010-10-13, Piotr Buczek: extract common code with ParameterField - private static class ParameterSelectionField extends SimpleComboBox<String> implements - IParameterField - { - - private final String parameterName; - - private final String initialValueOrNull; - - private final IDelegatedAction onValueChangeAction; - - ParameterSelectionField(final String parameterName, final List<String> values, - String initialValueOrNull, final IDelegatedAction onValueChangeAction) - - { - this.parameterName = parameterName; - this.initialValueOrNull = initialValueOrNull; - this.onValueChangeAction = onValueChangeAction; - GWTUtils.setToolTip(this, parameterName); - GWTUtils.setupAutoWidth(this); - setEmptyText(emptyText); - setAllowBlank(false); - setAutoValidate(true); - setValidateOnBlur(true); - setWidth(100); - add(values); - getPropertyEditor().setList(store.getModels()); - - addSelectionChangedListener(new SelectionChangedListener<SimpleComboValue<String>>() - { - @Override - public void selectionChanged(SelectionChangedEvent<SimpleComboValue<String>> se) - { - onValueChangeAction.execute(); - } - }); - } - - @Override - public String getSimpleValue() - { - return StringUtils.trimToNull(super.getSimpleValue()); - } - - public Field<?> asWidget() - { - return this; - } - - public ParameterWithValue getParameterWithValue() - { - return new ParameterWithValue(parameterName, getRawValue()); - } - - @Override - protected void onRender(Element target, int index) - { - super.onRender(target, index); - setRawValue(initialValueOrNull); - } - - @Override - protected void onKeyUp(FieldEvent fe) - { - super.onKeyUp(fe); - onValueChangeAction.execute(); - } - - } - private static class ParameterSelectionDropDownList extends DropDownList<ParameterValueModel, ParameterValue> implements IParameterField { @@ -257,57 +171,50 @@ public class ParameterField extends TriggerField<ModelData> implements IParamete private final IDelegatedAction onValueChangeAction; /** - * Allows to choose one of the specified values, is able to refresh the available values by - * calling the server. - * - * @param onValueChangeAction + * Allows to choose one of the values received from server. */ - public static IParameterField create(final String parameterName, String queryExpression, - String idSuffix, String label, IViewContext<?> viewContextOrNull, - IParameterValuesLoader loader, final boolean mandatory, String initialValueOrNull, + public static IParameterField createWithLoader(final String parameterName, + String queryExpression, String idSuffix, IViewContext<?> viewContextOrNull, + IParameterValuesLoader loader, String initialValueOrNull, IDelegatedAction onValueChangeAction) { - return new ParameterSelectionDropDownList(parameterName, idSuffix, label, mandatory, - loader, queryExpression, viewContextOrNull, null, initialValueOrNull, - onValueChangeAction); + return new ParameterSelectionDropDownList(parameterName, idSuffix, viewContextOrNull, + loader, queryExpression, null, initialValueOrNull, onValueChangeAction); } /** * Allows to choose one of the specified values. */ - @SuppressWarnings("unused") - public ParameterSelectionDropDownList(final String parameterName, String idSuffix, - String label, final boolean mandatory, List<ParameterValue> initialValuesOrNull, - String initialValueOrNull) + public static IParameterField createWithValues(final String parameterName, String idSuffix, + List<ParameterValue> initialValues, String initialValueOrNull, + IDelegatedAction onValueChangeAction) { - this(parameterName, idSuffix, label, mandatory, null, null, null, initialValuesOrNull, - initialValueOrNull, null); + return new ParameterSelectionDropDownList(parameterName, idSuffix, null, null, null, + initialValues, initialValueOrNull, onValueChangeAction); } protected ParameterSelectionDropDownList(final String parameterName, String idSuffix, - String label, boolean mandatory, IParameterValuesLoader loaderOrNull, - String queryExpressionOrNull, IViewContext<?> viewContextOrNull, - List<ParameterValue> valuesOrNull, String initialValueOrNull, - final IDelegatedAction onValueChangeAction) + IViewContext<?> viewContextOrNull, IParameterValuesLoader loaderOrNull, + String queryExpressionOrNull, List<ParameterValue> valuesOrNull, + String initialValueOrNull, final IDelegatedAction onValueChangeAction) { - super(idSuffix, ModelDataPropertyNames.CODE, label, CHOOSE_MSG, EMPTY_MSG, - VALUE_NOT_IN_LIST_MSG, mandatory, viewContextOrNull, valuesOrNull == null); + super(idSuffix, ModelDataPropertyNames.CODE, parameterName, CHOOSE_MSG, EMPTY_MSG, + VALUE_NOT_IN_LIST_MSG, true, viewContextOrNull, valuesOrNull == null); this.parameterName = parameterName; this.queryExpressionOrNull = queryExpressionOrNull; this.viewContextOrNull = viewContextOrNull; this.loaderOrNull = loaderOrNull; this.initialValueOrNull = initialValueOrNull; this.onValueChangeAction = onValueChangeAction; - FieldUtil.setMandatoryFlag(this, mandatory); - setAllowBlank(mandatory == false); if (valuesOrNull != null) { setValues(valuesOrNull); } setTemplate(GWTUtils.getTooltipTemplate(ModelDataPropertyNames.CODE, ModelDataPropertyNames.TOOLTIP)); - setWidth(100); + FieldUtil.setMandatoryFlag(this, true); setAllowValueNotFromList(true); + setWidth(100); addSelectionChangedListener(new SelectionChangedListener<ParameterValueModel>() {