From ccc3d5358ccc4c698c73d780d28415e131224fc0 Mon Sep 17 00:00:00 2001 From: tkellner Date: Fri, 24 Aug 2012 17:04:51 +0000 Subject: StateMachine cleanup JumpToState stuff git-svn-id: https://svn.iaik.tugraz.at/svn/egiz/prj/current/12PDF-OVER-4.0@12389 3a0b52a2-8410-0410-bc02-ff6273a87459 --- .../gui/workflow/states/BKUSelectionState.java | 27 ++++++++-- .../pdfover/gui/workflow/states/LocalBKUState.java | 8 +++ .../gui/workflow/states/MobileBKUState.java | 8 +++ .../pdfover/gui/workflow/states/OpenState.java | 34 +++++++++--- .../pdfover/gui/workflow/states/OutputState.java | 10 +++- .../gui/workflow/states/PositioningState.java | 26 +++++++-- .../workflow/states/PrepareConfigurationState.java | 8 +++ .../gui/workflow/states/PrepareSigningState.java | 61 +++++++++++++++++++--- .../pdfover/gui/workflow/states/SigningState.java | 10 +++- .../at/asit/pdfover/gui/workflow/states/State.java | 6 ++- 10 files changed, 172 insertions(+), 26 deletions(-) (limited to 'trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states') diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/BKUSelectionState.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/BKUSelectionState.java index 86bd50c9..fe79c460 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/BKUSelectionState.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/BKUSelectionState.java @@ -23,7 +23,9 @@ import org.slf4j.LoggerFactory; import at.asit.pdfover.gui.MainWindowBehavior; import at.asit.pdfover.gui.MainWindow.Buttons; import at.asit.pdfover.gui.composites.BKUSelectionComposite; +import at.asit.pdfover.gui.workflow.ConfigProvider; import at.asit.pdfover.gui.workflow.StateMachine; +import at.asit.pdfover.gui.workflow.Status; /** * Decides which BKU to use (preconfigured or let user choose) @@ -76,23 +78,38 @@ public class BKUSelectionState extends State { @Override public void run() { - - if(this.stateMachine.getStatus().getBKU() == BKUs.NONE) { + Status status = this.stateMachine.getStatus(); + if (!(status.getPreviousState() instanceof BKUSelectionState)) + { + ConfigProvider config = this.stateMachine.getConfigProvider(); + status.setBKU(config.getDefaultBKU()); + } + + if(status.getBKU() == BKUs.NONE) { BKUSelectionComposite selection = this .getSelectionComposite(); this.stateMachine.getGUIProvider().display(selection); selection.layout(); - this.stateMachine.getStatus().setBKU(selection.getSelected()); + status.setBKU(selection.getSelected()); - if(this.stateMachine.getStatus().getBKU() == BKUs.NONE) { + if(status.getBKU() == BKUs.NONE) { return; } } this.setNextState(new PrepareSigningState(this.stateMachine)); } - + + /* (non-Javadoc) + * @see at.asit.pdfover.gui.workflow.states.State#cleanUp() + */ + @Override + public void cleanUp() { + if (this.selectionComposite != null) + this.selectionComposite.dispose(); + } + /* (non-Javadoc) * @see at.asit.pdfover.gui.workflow.states.State#setMainWindowBehavior() */ diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/LocalBKUState.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/LocalBKUState.java index 2d3a31ec..795090e7 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/LocalBKUState.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/LocalBKUState.java @@ -50,6 +50,14 @@ public class LocalBKUState extends State { this.setNextState(new SigningState(this.stateMachine)); } + + /* (non-Javadoc) + * @see at.asit.pdfover.gui.workflow.states.State#cleanUp() + */ + @Override + public void cleanUp() { + // No composite - no cleanup necessary + } /* (non-Javadoc) * @see at.asit.pdfover.gui.workflow.states.State#setMainWindowBehavior() diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/MobileBKUState.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/MobileBKUState.java index c160a524..3e1eb21a 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/MobileBKUState.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/MobileBKUState.java @@ -51,6 +51,14 @@ public class MobileBKUState extends State { this.setNextState(new SigningState(this.stateMachine)); } + /* (non-Javadoc) + * @see at.asit.pdfover.gui.workflow.states.State#cleanUp() + */ + @Override + public void cleanUp() { + // No composite - no cleanup necessary + } + /* (non-Javadoc) * @see at.asit.pdfover.gui.workflow.states.State#setMainWindowBehavior() */ diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/OpenState.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/OpenState.java index ee90a69b..1d2b94a8 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/OpenState.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/OpenState.java @@ -23,7 +23,9 @@ import org.slf4j.LoggerFactory; import at.asit.pdfover.gui.MainWindowBehavior; import at.asit.pdfover.gui.MainWindow.Buttons; import at.asit.pdfover.gui.composites.DataSourceSelectComposite; +import at.asit.pdfover.gui.workflow.ConfigProvider; import at.asit.pdfover.gui.workflow.StateMachine; +import at.asit.pdfover.gui.workflow.Status; /** * Selects the data source for the signature process. @@ -47,8 +49,10 @@ public class OpenState extends State { private DataSourceSelectComposite getSelectionComposite() { if (this.selectionComposite == null) { - this.selectionComposite = new DataSourceSelectComposite( - this.stateMachine.getGUIProvider().getComposite(), SWT.RESIZE, this); + this.selectionComposite = + this.stateMachine.getGUIProvider().createComposite(DataSourceSelectComposite.class, SWT.RESIZE, this); + //this.selectionComposite = new DataSourceSelectComposite( + // this.stateMachine.getGUIProvider().getComposite(), SWT.RESIZE, this); } return this.selectionComposite; @@ -56,25 +60,43 @@ public class OpenState extends State { @Override public void run() { + Status status = this.stateMachine.getStatus(); + if (!(status.getPreviousState() instanceof PrepareConfigurationState) && + !(status.getPreviousState() instanceof OpenState)) + { + ConfigProvider config = this.stateMachine.getConfigProvider(); + status.setBKU(config.getDefaultBKU()); + status.setDocument(null); + status.setSignaturePosition(config.getDefaultSignaturePosition()); + } - if (this.stateMachine.getStatus().getDocument() == null) { + if (status.getDocument() == null) { DataSourceSelectComposite selection = this .getSelectionComposite(); this.stateMachine.getGUIProvider().display(selection); selection.layout(); - this.stateMachine.getStatus().setDocument(selection.getSelected()); + status.setDocument(selection.getSelected()); - if (this.stateMachine.getStatus().getDocument() == null) { + if (status.getDocument() == null) { // Not selected yet return; } } - log.debug("Got Datasource: " + this.stateMachine.getStatus().getDocument().getAbsolutePath()); + log.debug("Got Datasource: " + this.stateMachine.getStatus().getDocument().getAbsolutePath()); //$NON-NLS-1$ this.setNextState(new PositioningState(this.stateMachine)); } + /* (non-Javadoc) + * @see at.asit.pdfover.gui.workflow.states.State#cleanUp() + */ + @Override + public void cleanUp() { + if (this.selectionComposite != null) + this.selectionComposite.dispose(); + } + /* (non-Javadoc) * @see at.asit.pdfover.gui.workflow.states.State#setMainWindowBehavior() */ diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/OutputState.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/OutputState.java index 8a04dd3f..7c16d559 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/OutputState.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/OutputState.java @@ -47,7 +47,15 @@ public class OutputState extends State { this.stateMachine.exit(); } - + + /* (non-Javadoc) + * @see at.asit.pdfover.gui.workflow.states.State#cleanUp() + */ + @Override + public void cleanUp() { + // TODO + } + /* (non-Javadoc) * @see at.asit.pdfover.gui.workflow.states.State#setMainWindowBehavior() */ diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PositioningState.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PositioningState.java index c7c92a89..2809bd25 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PositioningState.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PositioningState.java @@ -23,7 +23,9 @@ import org.slf4j.LoggerFactory; import at.asit.pdfover.gui.MainWindowBehavior; import at.asit.pdfover.gui.MainWindow.Buttons; import at.asit.pdfover.gui.composites.PositioningComposite; +import at.asit.pdfover.gui.workflow.ConfigProvider; import at.asit.pdfover.gui.workflow.StateMachine; +import at.asit.pdfover.gui.workflow.Status; /** * Decides where to position the signature block @@ -57,21 +59,37 @@ public class PositioningState extends State { @Override public void run() { - - if(this.stateMachine.getStatus().getSignaturePosition() == null) { + Status status = this.stateMachine.getStatus(); + if (!(status.getPreviousState() instanceof PositioningState) && + !(status.getPreviousState() instanceof OpenState)) + { + status.setSignaturePosition(null); + } + + + if(status.getSignaturePosition() == null) { PositioningComposite position = this.getPositioningComosite(); this.stateMachine.getGUIProvider().display(position); - this.stateMachine.getStatus().setSignaturePosition(position.getPosition()); + status.setSignaturePosition(position.getPosition()); - if(this.stateMachine.getStatus().getSignaturePosition() == null) { + if(status.getSignaturePosition() == null) { return; } } this.setNextState(new BKUSelectionState(this.stateMachine)); } + /* (non-Javadoc) + * @see at.asit.pdfover.gui.workflow.states.State#cleanUp() + */ + @Override + public void cleanUp() { + if (this.positionComposite != null) + this.positionComposite.dispose(); + } + /* (non-Javadoc) * @see at.asit.pdfover.gui.workflow.states.State#setMainWindowBehavior() */ diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareConfigurationState.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareConfigurationState.java index 4fa9e362..2a71890d 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareConfigurationState.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareConfigurationState.java @@ -58,6 +58,14 @@ public class PrepareConfigurationState extends State { this.setNextState(new OpenState(this.stateMachine)); } + /* (non-Javadoc) + * @see at.asit.pdfover.gui.workflow.states.State#cleanUp() + */ + @Override + public void cleanUp() { + // No composite - no cleanup necessary + } + /* (non-Javadoc) * @see at.asit.pdfover.gui.workflow.states.State#setMainWindowBehavior() */ diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java index 061869c1..186bf447 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java @@ -25,6 +25,8 @@ import at.asit.pdfover.gui.MainWindow.Buttons; import at.asit.pdfover.gui.composites.WaitingComposite; import at.asit.pdfover.gui.workflow.StateMachine; import at.asit.pdfover.gui.workflow.states.BKUSelectionState.BKUs; +import at.asit.pdfover.signator.SignatureParameter; +import at.asit.pdfover.signator.Signer; /** * User waiting state, wait for PDF Signator library to prepare document for signing. @@ -61,24 +63,52 @@ public class PrepareSigningState extends State { // TODO Auto-generated catch block e.printStackTrace(); } - this.workflow.InvokeUpdate(); + this.workflow.invokeUpdate(); } } + private final class PrepareDocumentThread implements Runnable { + + private PrepareSigningState state; + + /** + * Default constructor + * @param state + */ + public PrepareDocumentThread(PrepareSigningState state) { + this.state = state; + } + + @Override + public void run() { + try { + + + } catch (Exception e) { + log.error("PrepareDocumentThread: ", e); + } + finally { + this.state.stateMachine.invokeUpdate(); + } + } + } + /** * SFL4J Logger instance **/ private static final Logger log = LoggerFactory.getLogger(PrepareSigningState.class); - private WaitingComposite selectionComposite = null; + private SignatureParameter signatureParameter; + + private WaitingComposite waitingComposite = null; private WaitingComposite getSelectionComposite() { - if (this.selectionComposite == null) { - this.selectionComposite = new WaitingComposite( + if (this.waitingComposite == null) { + this.waitingComposite = new WaitingComposite( this.stateMachine.getGUIProvider().getComposite(), SWT.RESIZE, this); } - return this.selectionComposite; + return this.waitingComposite; } private boolean run = false; @@ -87,11 +117,17 @@ public class PrepareSigningState extends State { public void run() { // TODO SHOW BACKGROUND ACTIVITY .... WaitingComposite waiting = this.getSelectionComposite(); - + this.stateMachine.getGUIProvider().display(waiting); + Signer signer = this.stateMachine.getPDFSigner().getPDFSigner(); + + if(signatureParameter == null) { +// signatureParameter = + } + if(!this.run) { - Thread t = new Thread(new DebugSleeperThread(this.stateMachine)); + Thread t = new Thread(new PrepareDocumentThread(this)); this.run = true; t.start(); return; @@ -108,7 +144,16 @@ public class PrepareSigningState extends State { this.setNextState(new BKUSelectionState(this.stateMachine)); } } - + + /* (non-Javadoc) + * @see at.asit.pdfover.gui.workflow.states.State#cleanUp() + */ + @Override + public void cleanUp() { + if (this.waitingComposite != null) + this.waitingComposite.dispose(); + } + /* (non-Javadoc) * @see at.asit.pdfover.gui.workflow.states.State#setMainWindowBehavior() */ diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java index 3447fc4c..6b453d33 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java @@ -45,7 +45,15 @@ public class SigningState extends State { this.setNextState(new OutputState(this.stateMachine)); } - + + /* (non-Javadoc) + * @see at.asit.pdfover.gui.workflow.states.State#cleanUp() + */ + @Override + public void cleanUp() { + // No composite - no cleanup necessary + } + /* (non-Javadoc) * @see at.asit.pdfover.gui.workflow.states.State#setMainWindowBehavior() */ diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/State.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/State.java index 8b9a3ebb..95c7c5bd 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/State.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/State.java @@ -19,7 +19,6 @@ package at.asit.pdfover.gui.workflow.states; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import at.asit.pdfover.gui.MainWindowBehavior; import at.asit.pdfover.gui.workflow.StateMachine; /** @@ -70,6 +69,11 @@ public abstract class State { */ public abstract void run(); + /** + * Perform status cleanup + */ + public abstract void cleanUp(); + /** * Update the state machine */ -- cgit v1.2.3