package org.openflexo.foundation.viewpoint.binding; import java.lang.reflect.Type; import java.util.Vector; 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.foundation.view.action.EditionSchemeAction; import org.openflexo.foundation.viewpoint.EditionPatternParameter; import org.openflexo.foundation.viewpoint.EditionScheme; import org.openflexo.foundation.viewpoint.EditionSchemeParameter; import org.openflexo.foundation.viewpoint.ListParameter; import org.openflexo.localization.FlexoLocalization; public class EditionSchemeParameterListPathElement implements SimplePathElement<EditionSchemeAction<?>>, BindingVariable<EditionSchemeAction<?>> { private static final Logger logger = Logger.getLogger(EditionSchemeParameterListPathElement.class.getPackage().getName()); private EditionScheme editionScheme; private EditionSchemePathElement parent; private Vector<BindingPathElement> allProperties; public EditionSchemeParameterListPathElement(EditionScheme editionScheme, EditionSchemePathElement aParent) { super(); parent = aParent; this.editionScheme = editionScheme; allProperties = new Vector<BindingPathElement>(); for (EditionSchemeParameter p : editionScheme.getParameters()) { if (p instanceof EditionPatternParameter) { allProperties.add(new EditionPatternParameterPathElement(p.getName(), (EditionPatternParameter) p, p)); } else { allProperties.add(new EditionSchemeParameterPathElement(this, p)); if (p instanceof ListParameter) { allProperties.add(new ListValueForListParameterPathElement(this, (ListParameter) p)); } } } } public Vector<BindingPathElement> getAllProperties() { return allProperties; } @Override public Class<EditionScheme> getDeclaringClass() { return EditionScheme.class; } @Override public String getSerializationRepresentation() { return getLabel(); } @Override public boolean isBindingValid() { return true; } @Override public Type getType() { return EditionSchemeAction.class; } @Override public String getLabel() { return "parameters"; } @Override public String getTooltipText(Type resultingType) { return FlexoLocalization.localizedForKey("instanciation_parameters_of_edition_scheme"); } @Override public boolean isSettable() { return false; } @Override public EditionSchemeAction<?> getBindingValue(Object target, BindingEvaluationContext context) { if (target instanceof EditionSchemeAction) { return (EditionSchemeAction<?>) target; } logger.warning("Unexpected " + target); return null; } @Override public void setBindingValue(EditionSchemeAction<?> value, Object target, BindingEvaluationContext context) { // Not relevant because not settable } @Override public EditionScheme getContainer() { return editionScheme; } @Override public String getVariableName() { return getLabel(); } }