diff options
Diffstat (limited to 'pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/ErrorState.java')
-rw-r--r-- | pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/ErrorState.java | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/ErrorState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/ErrorState.java index e444fbf9..47485a0c 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/ErrorState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/ErrorState.java @@ -37,9 +37,16 @@ public class ErrorState extends State { private Exception exception; - private boolean userInformed = false; + private State recoverState = null; /** + * @param recoverState the recoverState to set + */ + public void setRecoverState(State recoverState) { + this.recoverState = recoverState; + } + + /** * SLF4J Logger instance **/ static final Logger log = LoggerFactory.getLogger(ErrorState.class); @@ -62,22 +69,24 @@ public class ErrorState extends State { public void run() { Status status = this.stateMachine.getStatus(); - if(this.errorComposite != null) { - this.userInformed = this.errorComposite.isUserOk(); - } + ErrorComposite errorComposite = this.getComposite(); - if(this.exception != null && !this.userInformed) { + if(this.exception != null && !errorComposite.isUserOk()) { // Display Exception .... - ErrorComposite errorComposite = this.getComposite(); this.errorComposite.setException(this.exception); - this.userInformed = this.errorComposite.isUserOk(); - this.stateMachine.getGUIProvider().display(errorComposite); + return; } - // TODO: Think should we do this? (possible infinity loop with exception ...) - this.setNextState(status.getPreviousState()); + // User was informed! + if(this.recoverState != null) { + // see if we can recover! + this.setNextState(this.recoverState); + } else { + // we cannot recover exit! + this.stateMachine.exit(); + } } /* (non-Javadoc) |