@Howard
Thanks for your reply. I know that it was possible with Java code, but i
tried to avoid to write extra methods for such simple tasks.
@Michael
WOW! Thats really nice. Exactly what I was looking for. I improved it a
bit to make the false value optional.
// constructor without falseBinding
public CondBinding(Binding conditionBinding, Binding trueBinding,
TypeCoercer resolver) {
this(conditionBinding, trueBinding, null, resolver);
}
// just check if valueFalse is set
@Override
public Object get() {
String valueTrue = resolver.coerce(trueBinding.get(),
String.class);
String valueFalse = falseBinding != null ?
resolver.coerce(falseBinding.get(), String.class) : null;
Boolean condition = resolver.coerce(conditionBinding.get(),
Boolean.class);
return condition != null && condition ? valueTrue : valueFalse;
}
// in BindingFactory
@Override
public Binding newBinding(String description, ComponentResources
container, ComponentResources component, String expression,
Location location) {
String[] parts = expression.split(DELIMETER, 3);
// well i'm not sure what happens here if parts < 2
if (parts.length < 2) {
return bindingSource.newBinding(description, container,
component, "prop", expression, location);
}
String condition = parts[0];
String valueTrue = parts[1];
Binding conditionBinding = makeBinding(condition,
DEFAULT_CONDITION_PREFIX, container, description);
Binding trueBinding = makeBinding(valueTrue,
DEFAULT_VALUE_PREFIX, container, description);
if (parts.length == 3) {
String valueFalse = parts[2];
Binding falseBinding = makeBinding(valueFalse,
DEFAULT_VALUE_PREFIX, container, description);
return new CondBinding(conditionBinding, trueBinding,
falseBinding, resolver);
}
return new CondBinding(conditionBinding, trueBinding, resolver);
}
// Usage
class="${cond:selected, selected}"
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org