package lang;
public class ArgumentClosureToggle<T> implements ArgumentClosure<T>{
public static <T> ArgumentClosureToggle<T> toggleAround(ArgumentClosure<T> closure) {
return new ArgumentClosureToggle<>(closure);
}
private final ArgumentClosure<T> closure;
private boolean activated;
public ArgumentClosureToggle(ArgumentClosure<T> closure) {
this.closure = closure;
activate();
}
@Override
public void execute(T t) {
if(activated){
closure.execute(t);
}
}
public void suspend() {
activated = false;
}
public void activate() {
activated = true;
}
}