package ch.akuhn.values;
import java.util.EventObject;
public abstract class ActionValue<V> extends ReferenceValue<V> {
private final Value<?>[] arguments;
public ActionValue(Value<?>... arguments) {
this.arguments = arguments;
for (Value<?> each: arguments) each.addDependent(this);
this.value = performAction(new Arguments(arguments));
}
protected abstract V performAction(Arguments args);
@Override
public void setValue(V value) {
throw new UnsupportedOperationException();
}
public void resetValue() {
value = performAction(new Arguments(arguments));
this.changed();
}
@Override
public void valueChanged(EventObject event) {
this.resetValue();
}
}