summaryrefslogtreecommitdiff
path: root/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/ErrorState.java
diff options
context:
space:
mode:
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.java29
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)