What about something like this?
Code:
private Command2 timeoutCommand = new Command2();
public SomethingCommandGroup() {
addSequential(new Command1());
addSequential(timeoutCommand, 5);
addSequential(new Command3());
}
protected boolean isFinished() {
return super.isFinished()
|| timeoutCommand.isTimedOut();
}
Since a CommandGroup is still a Command you can override isFinished() to finish if a certain command or several have timed out.
I am unsure if the timed out command will need reinitialized or not. My gut says no.