package org.openflexo.foundation.viewpoint.binding;
import java.util.logging.Logger;
import org.openflexo.antar.binding.AbstractBinding.BindingEvaluationContext;
import org.openflexo.antar.binding.Bindable;
import org.openflexo.foundation.ontology.EditionPatternInstance;
import org.openflexo.foundation.view.action.EditionSchemeAction;
import org.openflexo.foundation.viewpoint.EditionPatternParameter;
public class EditionPatternParameterPathElement<E extends Bindable> extends EditionPatternPathElement<E> {
static final Logger logger = Logger.getLogger(EditionPatternParameterPathElement.class.getPackage().getName());
private EditionPatternParameter parameter;
public EditionPatternParameterPathElement(EditionPatternParameter anEditionPatternParameter, E container) {
this(null, anEditionPatternParameter, container);
}
public EditionPatternParameterPathElement(String name, EditionPatternParameter anEditionPatternParameter, E container) {
super(name, anEditionPatternParameter.getEditionPatternType(), container);
parameter = anEditionPatternParameter;
}
@Override
public EditionPatternInstance getBindingValue(Object target, BindingEvaluationContext context) {
logger.warning("What to return as " + getVariableName() + " with a " + target + " ? "
+ (target != null ? "(" + target.getClass().getSimpleName() + ")" : ""));
if (target instanceof EditionSchemeAction<?>) {
return (EditionPatternInstance) ((EditionSchemeAction<?>) target).getParameterValue(parameter);
} else {
logger.warning("Unexpected: " + target);
return null;
}
}
}