All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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