package de.kroesch.clt.internal; import java.util.List; import java.util.Timer; import java.util.TimerTask; import de.kroesch.clt.Command; import de.kroesch.clt.Environment; import de.kroesch.clt.HasArguments; import de.kroesch.clt.InternalEnvironment; /** * Repeats a command periodically. * * TODO: Make the timer interval configurable. * */ public class Repeat implements Command, HasArguments { private List<String> args; private Environment env; public void setEnvironment(Environment env) { this.env = env; } public void run() { if (args.size() < 1) { env.writer().print("what?"); return; } final Runnable command = ((InternalEnvironment) env).parser().parseCommand(args.get(0)); TimerTask task = new TimerTask() { @Override public void run() { command.run(); } }; int delay = 1000; new Timer(true).schedule(task, delay); } public void setArguments(List<String> args) { this.args = args; } }