
io.imunity.console.tprofile.ExpressionActionParameterComponent Maven / Gradle / Ivy
/*
* Copyright (c) 2021 Bixbit - Krzysztof Benedyczak. All rights reserved.
* See LICENCE.txt file for licensing information.
*/
package io.imunity.console.tprofile;
import com.vaadin.flow.data.binder.Binder;
import io.imunity.vaadin.elements.CssClassNames;
import io.imunity.vaadin.endpoint.common.api.HtmlTooltipFactory;
import io.imunity.vaadin.endpoint.common.mvel.MVELExpressionField;
import pl.edu.icm.unity.base.message.MessageSource;
import pl.edu.icm.unity.base.translation.ActionParameterDefinition;
import pl.edu.icm.unity.engine.api.mvel.MVELExpressionContext;
/**
* For editing MVEL expressions. Decorates the {@link MVELExpressionField} with
* drag'n'drop support.
*/
public class ExpressionActionParameterComponent extends MVELExpressionField implements ActionParameterComponent
{
private final Binder binder;
private String caption;
public ExpressionActionParameterComponent(ActionParameterDefinition param, MessageSource msg, HtmlTooltipFactory htmlTooltipFactory)
{
super(msg, param.getName() + ":", msg.getMessage(param.getDescriptionKey()),
(MVELExpressionContext) param.getDetails()
.get(), htmlTooltipFactory);
binder = new Binder<>(StringValueBean.class);
configureBinding(binder, "value", param.isMandatory());
binder.setBean(new StringValueBean());
}
@Override
public String getActionValue()
{
return binder.getBean()
.getValue();
}
@Override
public void setActionValue(String value)
{
binder.setBean(new StringValueBean(value));
}
@Override
public boolean isValid()
{
binder.validate();
return binder.isValid();
}
@Override
public void addValueChangeCallback(Runnable callback)
{
binder.addValueChangeListener((e) -> callback.run());
}
@Override
public void setLabel(String label)
{
if(caption == null)
caption = label;
super.setLabel(label);
}
@Override
public String getCaption()
{
return caption;
}
public ExpressionActionParameterComponent applyContext(EditorContext editorContext)
{
if (editorContext.equals(EditorContext.WIZARD))
{
getElement().getStyle().setWidth("100%");
addClassNameToField(CssClassNames.WIDTH_FULL.getName());
}
return this;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy