package org.openflexo.foundation.viewpoint.binding; import java.lang.reflect.Type; import java.util.logging.Logger; import org.openflexo.antar.binding.AbstractBinding.BindingEvaluationContext; import org.openflexo.antar.binding.BindingPathElement; import org.openflexo.antar.binding.BindingVariable; import org.openflexo.antar.binding.SimplePathElement; import org.openflexo.antar.binding.TypeUtils; import org.openflexo.foundation.view.action.EditionSchemeAction; import org.openflexo.foundation.viewpoint.EditionScheme; import org.openflexo.foundation.viewpoint.EditionSchemeParameter; public class EditionSchemeParameterPathElement<T> implements SimplePathElement<T>, BindingVariable<T> { private static final Logger logger = Logger.getLogger(EditionSchemeParameterPathElement.class.getPackage().getName()); private BindingPathElement parent; private EditionSchemeParameter parameter; public EditionSchemeParameterPathElement(BindingPathElement aParent, EditionSchemeParameter parameter) { super(); parent = aParent; this.parameter = parameter; } @Override public Class getDeclaringClass() { return TypeUtils.getBaseClass(parent.getType()); } @Override public String getSerializationRepresentation() { return getLabel(); } @Override public boolean isBindingValid() { return true; } @Override public Type getType() { return parameter.getType(); } @Override public String getLabel() { return parameter.getName(); } @Override public String getTooltipText(Type resultingType) { return parameter.getDescription(); } @Override public boolean isSettable() { return true; } @Override public T getBindingValue(Object target, BindingEvaluationContext context) { if (target instanceof EditionSchemeAction<?>) { return (T) ((EditionSchemeAction<?>) target).getParameterValue(parameter); } else { logger.warning("Unexpected: " + target); return null; } } @Override public void setBindingValue(T value, Object target, BindingEvaluationContext context) { if (target instanceof EditionSchemeAction<?>) { ((EditionSchemeAction<?>) target).setParameterValue(parameter, value); } else { logger.warning("Unexpected: " + target); } } @Override public EditionScheme getContainer() { return parameter.getScheme(); } @Override public String getVariableName() { return parameter.getName(); } public EditionSchemeParameter getParameter() { return parameter; } }