From e710a326314184f31cd50d4637959f44232a74ee Mon Sep 17 00:00:00 2001 From: tkellner Date: Wed, 10 Apr 2013 18:52:37 +0000 Subject: State Machine stuff git-svn-id: https://joinup.ec.europa.eu/svn/pdf-over/trunk@20 174cde9d-5d70-4d2a-aa98-46368bc2aaf7 --- .../at/asit/pdfover/gui/workflow/Workflow.java | 263 +++++++++++++++++---- .../asit/pdfover/gui/workflow/WorkflowState.java | 5 - .../gui/workflow/states/BKUSelectionState.java | 62 ++++- .../workflow/states/DataSourceSelectionState.java | 75 +++--- .../pdfover/gui/workflow/states/LocalBKUState.java | 14 +- .../gui/workflow/states/MobileBKUState.java | 13 +- .../pdfover/gui/workflow/states/OutputState.java | 13 +- .../gui/workflow/states/PositioningState.java | 27 ++- .../workflow/states/PrepareConfigurationState.java | 62 ++++- .../gui/workflow/states/PrepareSigningState.java | 80 ++++++- .../pdfover/gui/workflow/states/SigningState.java | 14 +- 11 files changed, 464 insertions(+), 164 deletions(-) (limited to 'pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow') diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/Workflow.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/Workflow.java index 83fca283..48e57f50 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/Workflow.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/Workflow.java @@ -18,19 +18,24 @@ package at.asit.pdfover.gui.workflow; //Imports import org.slf4j.Logger; import org.slf4j.LoggerFactory; + +import java.io.File; import java.util.Properties; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.StackLayout; -import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import at.asit.pdfover.gui.components.MainWindow; +import at.asit.pdfover.gui.workflow.states.BKUSelectionState; +import at.asit.pdfover.gui.workflow.states.DataSourceSelectionState; +import at.asit.pdfover.gui.workflow.states.PositioningState; import at.asit.pdfover.gui.workflow.states.PrepareConfigurationState; +import at.asit.pdfover.gui.workflow.states.BKUSelectionState.BKUS; +import at.asit.pdfover.signator.Signator; +import at.asit.pdfover.signator.SignatureParameter; +import at.asit.pdfover.signator.Signer; /** * Workflow holds logical state of signing process and updates the current @@ -41,7 +46,6 @@ public class Workflow { /** * SFL4J Logger instance **/ - @SuppressWarnings("unused") private static final Logger log = LoggerFactory.getLogger(Workflow.class); /** @@ -70,35 +74,45 @@ public class Workflow { return this.state; } - private String[] cmdLineArgs = new String[] {}; - - /** - * sets the command line arguments - * - * @param cmdLineArgs - */ - private void setCmdLineAargs(String[] cmdLineArgs) { - this.cmdLineArgs = cmdLineArgs; - } - /** - * Gets the command line arguments + * Sets the workflow state This method should be used to let the user jump + * around between states. This Method also resets certain properties defined + * by later states then state * - * @return the command line arguments + * @param state */ - public String[] cetCmdArgs() { - return this.cmdLineArgs; - } + public void setWorkflowState(WorkflowState state) { + if (this.state != state && state != null) { + this.state = state; - private Properties persistentState = new Properties(); + if (state instanceof PositioningState) { + // User jumps to positioning state ! + // restore possible default for bku selection / forget BKU + // selection + this.setSelectedBKU(PrepareConfigurationState + .readSelectedBKU(this.getConfigurationValues())); + // forget position + this.getParameter().setSignaturePosition(null); + } else if (state instanceof BKUSelectionState) { + // User jumps to bku selection state ! + // forget bku selection + this.setSelectedBKU(BKUS.NONE); + } else if (state instanceof DataSourceSelectionState) { + // User jumps to data source selection state ! + // forget bku selection / restore possible default for bku + // selection + this.setSelectedBKU(PrepareConfigurationState + .readSelectedBKU(this.getConfigurationValues())); + // forget position / restore possible default for position + this.getParameter().setSignaturePosition( + PrepareConfigurationState.readDefinedPosition(this + .getConfigurationValues())); + // forget data source selection + this.setDataSource(null); + } - /** - * Gets the persistent state - * - * @return the persistent state - */ - public Properties getPersistentState() { - return this.persistentState; + this.update(); + } } /** @@ -108,11 +122,18 @@ public class Workflow { WorkflowState next = null; while (this.state != null) { this.state.update(this); + if (this.mainWindow != null && !this.mainWindow.getShell().isDisposed()) { + log.debug("Allowing MainWindow to update its state for " + this.state.toString()); + this.mainWindow.UpdateNewState(); + this.mainWindow.doLayout(); + } next = this.state.nextState(); if (next == this.state) { break; } - //this.state.hideGUI(); + // this.state.hideGUI(); + log.debug("Changing state from: " + this.state.toString() + " to " + + next.toString()); this.state = next; } if (this.state != null) { @@ -122,6 +143,21 @@ public class Workflow { } } + /** + * Invoke Update in UI (Main) Thread + */ + public void InvokeUpdate() { + if(this.display != null) { + this.display.asyncExec(new Runnable() { + + @Override + public void run() { + Workflow.this.update(); + } + }); + } + } + private Display display = null; private Shell shell = null; @@ -129,21 +165,21 @@ public class Workflow { private Composite container = null; private MainWindow mainWindow = null; - - private final StackLayout stack = new StackLayout(); /** * Helper method for developing + * * @param value */ public void setCurrentStateMessage(String value) { - if(this.mainWindow != null) { + if (this.mainWindow != null) { this.mainWindow.setStatus(value); } } - + /** * Used by active workflow state to show its own gui component + * * @param ctrl */ public void setTopControl(final Control ctrl) { @@ -152,15 +188,15 @@ public class Workflow { private void createMainWindow() { this.display = Display.getDefault(); - - this.mainWindow = new MainWindow(); - + + this.mainWindow = new MainWindow(this); + this.mainWindow.open(); - + this.shell = this.mainWindow.getShell(); - + this.container = this.mainWindow.getContainer(); - + this.shell.open(); this.shell.layout(); } @@ -194,6 +230,13 @@ public class Workflow { return this.shell; } + /** + * Exists the Workflow + */ + public void exitWorkflow() { + this.shell.dispose(); + } + /** * Only returns a shell if one was already created ... * @@ -224,4 +267,144 @@ public class Workflow { } } + // Data Section + // ============================================================================= + + // Command Line Arguments + // ------------------------------------------------------- + private String[] cmdLineArgs = new String[] {}; + + /** + * sets the command line arguments + * + * @param cmdLineArgs + */ + private void setCmdLineAargs(String[] cmdLineArgs) { + this.cmdLineArgs = cmdLineArgs; + } + + /** + * Gets the command line arguments + * + * @return the command line arguments + */ + public String[] getCmdArgs() { + return this.cmdLineArgs; + } + + // Key Value String properties + // ------------------------------------------------------- + private Properties configurationValues = new Properties(); + + /** + * Gets the persistent state + * + * @return the persistent state + */ + public Properties getConfigurationValues() { + return this.configurationValues; + } + + // Data source + // ------------------------------------------------------- + private File dataSource = null; + + /** + * Gets the DataSource + * + * @return The data source file + */ + public File getDataSource() { + return this.dataSource; + } + + /** + * Sets the DataSource + * + * @param file + */ + public void setDataSource(File file) { + this.dataSource = file; + } + + // Selected BKU + // ------------------------------------------------------- + + /** + * The selected BKU + */ + private BKUS selectedBKU = BKUS.NONE; + + /** + * Gets the selected BKU + * + * @return the selectedBKU + */ + public BKUS getSelectedBKU() { + return this.selectedBKU; + } + + /** + * Sets the selected BKU + * + * @param selectedBKU + * the selectedBKU to set + */ + public void setSelectedBKU(BKUS selectedBKU) { + this.selectedBKU = selectedBKU; + } + + private Signator.Signers usedSignerLib = Signator.Signers.PDFAS; + + /** + * The PDF Signer + */ + private Signer pdfSigner = null; + + /** + * @return the pdfSigner + */ + public Signer getPdfSigner() { + return this.pdfSigner; + } + + /** + * @param pdfSigner + * the pdfSigner to set + */ + public void setPdfSigner(Signer pdfSigner) { + this.pdfSigner = pdfSigner; + } + + private SignatureParameter parameter = null; + + /** + * @return the parameter + */ + public SignatureParameter getParameter() { + return this.parameter; + } + + /** + * @param parameter + * the parameter to set + */ + public void setParameter(SignatureParameter parameter) { + this.parameter = parameter; + } + + /** + * @return the usedSignerLib + */ + public Signator.Signers getUsedSignerLib() { + return usedSignerLib; + } + + /** + * @param usedSignerLib + * the usedSignerLib to set + */ + public void setUsedSignerLib(Signator.Signers usedSignerLib) { + this.usedSignerLib = usedSignerLib; + } } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/WorkflowState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/WorkflowState.java index ed0c1fc2..831c4394 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/WorkflowState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/WorkflowState.java @@ -60,9 +60,4 @@ public abstract class WorkflowState { * @param workflow */ public abstract void update(Workflow workflow); - - /** - * Hide the GUI components created in the state - */ - public abstract void hideGUI(); } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/BKUSelectionState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/BKUSelectionState.java index fdd160ac..2bd3361d 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/BKUSelectionState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/BKUSelectionState.java @@ -16,8 +16,11 @@ package at.asit.pdfover.gui.workflow.states; //Imports +import org.eclipse.swt.SWT; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + +import at.asit.pdfover.gui.components.BKUSelectionComposite; import at.asit.pdfover.gui.workflow.Workflow; import at.asit.pdfover.gui.workflow.WorkflowState; @@ -26,26 +29,65 @@ import at.asit.pdfover.gui.workflow.WorkflowState; */ public class BKUSelectionState extends WorkflowState { + /** + * Enumeration of available BKU type + */ + public enum BKUS { + /** + * Local bku + */ + LOCAL, + + /** + * Mobile bku + */ + MOBILE, + + /** + * None bku + */ + NONE + } + /** * SFL4J Logger instance **/ @SuppressWarnings("unused") private static final Logger log = LoggerFactory.getLogger(BKUSelectionState.class); + private BKUSelectionComposite selectionComposite = null; + + private BKUSelectionComposite getSelectionComposite(Workflow workflow) { + if (this.selectionComposite == null) { + this.selectionComposite = new BKUSelectionComposite( + workflow.getComposite(), SWT.RESIZE, workflow); + } + + return this.selectionComposite; + } + @Override public void update(Workflow workflow) { - // TODO Auto-generated method stub - this.setNextState(state) - } + if(workflow.getSelectedBKU() == BKUS.NONE) { + BKUSelectionComposite selection = this + .getSelectionComposite(workflow); - /* (non-Javadoc) - * @see at.asit.pdfover.gui.workflow.WorkflowState#hideGUI() - */ - @Override - public void hideGUI() { - // TODO Auto-generated method stub + workflow.setTopControl(selection); + selection.layout(); + + workflow.setSelectedBKU(selection.getSelected()); + if(workflow.getSelectedBKU() == BKUS.NONE) { + this.setNextState(this); + return; + } + } + this.setNextState(new PrepareSigningState()); + } + + @Override + public String toString() { + return "BKUSelectionState"; } - } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/DataSourceSelectionState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/DataSourceSelectionState.java index 223ba17d..10492dfe 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/DataSourceSelectionState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/DataSourceSelectionState.java @@ -16,10 +16,9 @@ package at.asit.pdfover.gui.workflow.states; //Imports +import java.io.File; + import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Shell; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -35,59 +34,47 @@ public class DataSourceSelectionState extends WorkflowState { /** * SFL4J Logger instance **/ - @SuppressWarnings("unused") - private static final Logger log = LoggerFactory.getLogger(DataSourceSelectionState.class); - + private static final Logger log = LoggerFactory + .getLogger(DataSourceSelectionState.class); + private DataSourceSelectComposite selectionComposite = null; - + private DataSourceSelectComposite getSelectionComposite(Workflow workflow) { - if(this.selectionComposite == null) { - this.selectionComposite = new DataSourceSelectComposite(workflow.getComposite(), SWT.RESIZE, workflow); + if (this.selectionComposite == null) { + this.selectionComposite = new DataSourceSelectComposite( + workflow.getComposite(), SWT.RESIZE, workflow); } - + return this.selectionComposite; } - + @Override public void update(Workflow workflow) { - DataSourceSelectComposite selection = this.getSelectionComposite(workflow); - - workflow.setTopControl(selection); - selection.layout(); - - if(selection.isPress()) { - this.setNextState(new PositioningState()); - } else { - this.setNextState(this); - } - } - private void recursiveHide(Control ctrl) { - if(ctrl instanceof Composite) { - Composite comp = (Composite)ctrl; - Control[] childs = comp.getChildren(); - for(int i = 0; i < childs.length; i++) { - this.recursiveHide(childs[i]); + if (workflow.getDataSource() == null) { + DataSourceSelectComposite selection = this + .getSelectionComposite(workflow); + + workflow.setTopControl(selection); + selection.layout(); + + File source = selection.getSelected(); + if(source != null) { + workflow.setDataSource(source); } + + if (workflow.getDataSource() == null) { + // Not selected yet + this.setNextState(this); + return; + } } - ctrl.setVisible(false); + log.debug("Got Datasource: " + workflow.getDataSource().getAbsolutePath()); + this.setNextState(new PositioningState()); } - /* (non-Javadoc) - * @see at.asit.pdfover.gui.workflow.WorkflowState#hideGUI() - */ @Override - public void hideGUI() { - /*if(this.selectionComposite != null) { - Shell shell = this.selectionComposite.getShell(); - Composite comp = this.selectionComposite.getParent(); - recursiveHide(this.selectionComposite); - this.selectionComposite.layout(); - //this.selectionComposite.setVisible(false); - comp.layout(); - //shell.pack(true); - shell.layout(true); - }*/ + public String toString() { + return "DataSourceSelectionState"; } - } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/LocalBKUState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/LocalBKUState.java index 5f3a00d5..aa352be7 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/LocalBKUState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/LocalBKUState.java @@ -37,17 +37,13 @@ public class LocalBKUState extends WorkflowState { */ @Override public void update(Workflow workflow) { - // TODO Auto-generated method stub + // TODO Process SL Request and set SL Response + this.setNextState(new SigningState()); } - - /* (non-Javadoc) - * @see at.asit.pdfover.gui.workflow.WorkflowState#hideGUI() - */ + @Override - public void hideGUI() { - // TODO Auto-generated method stub - + public String toString() { + return "LocalBKUState"; } - } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/MobileBKUState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/MobileBKUState.java index 9d88ce0c..643abd45 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/MobileBKUState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/MobileBKUState.java @@ -37,17 +37,14 @@ public class MobileBKUState extends WorkflowState { */ @Override public void update(Workflow workflow) { - // TODO Auto-generated method stub + // TODO Process SL Request and set SL Response + + this.setNextState(new SigningState()); } - /* (non-Javadoc) - * @see at.asit.pdfover.gui.workflow.WorkflowState#hideGUI() - */ @Override - public void hideGUI() { - // TODO Auto-generated method stub - + public String toString() { + return "MobileBKUState"; } - } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/OutputState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/OutputState.java index 44d9a55f..d7df5c19 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/OutputState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/OutputState.java @@ -34,17 +34,14 @@ public class OutputState extends WorkflowState { @Override public void update(Workflow workflow) { - // TODO Auto-generated method stub + // TODO Preform output operations ... end workflow + workflow.exitWorkflow(); } - - /* (non-Javadoc) - * @see at.asit.pdfover.gui.workflow.WorkflowState#hideGUI() - */ + @Override - public void hideGUI() { - // TODO Auto-generated method stub - + public String toString() { + return "OutputState"; } } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PositioningState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PositioningState.java index 9841ffce..180b98d9 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PositioningState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PositioningState.java @@ -49,23 +49,24 @@ public class PositioningState extends WorkflowState { @Override public void update(Workflow workflow) { - // TODO Auto-generated method stub - PositioningComposite position = this.getPositioningComosite(workflow); - - workflow.setTopControl(position); + if(workflow.getParameter().getSignaturePosition() == null) { + PositioningComposite position = this.getPositioningComosite(workflow); + + workflow.setTopControl(position); + + workflow.getParameter().setSignaturePosition(position.getPosition()); + + if(workflow.getParameter().getSignaturePosition() == null) { + this.setNextState(this); + return; + } + } this.setNextState(new BKUSelectionState()); } - /* - * (non-Javadoc) - * - * @see at.asit.pdfover.gui.workflow.WorkflowState#hideGUI() - */ @Override - public void hideGUI() { - // TODO Auto-generated method stub - + public String toString() { + return "PositioningState"; } - } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareConfigurationState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareConfigurationState.java index b90f38db..91ebf01b 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareConfigurationState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareConfigurationState.java @@ -16,10 +16,15 @@ package at.asit.pdfover.gui.workflow.states; //Imports +import java.util.Properties; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import at.asit.pdfover.gui.workflow.Workflow; import at.asit.pdfover.gui.workflow.WorkflowState; +import at.asit.pdfover.gui.workflow.states.BKUSelectionState.BKUS; +import at.asit.pdfover.signator.Signator; +import at.asit.pdfover.signator.SignaturePosition; /** * Starting state of workflow proccess @@ -28,24 +33,65 @@ import at.asit.pdfover.gui.workflow.WorkflowState; */ public class PrepareConfigurationState extends WorkflowState { + public final static String BKU_SELECTION_CONFIG = "DEFAULT_BKU"; + /** * SFL4J Logger instance **/ @SuppressWarnings("unused") - private static final Logger log = LoggerFactory.getLogger(PrepareConfigurationState.class); - + private static final Logger log = LoggerFactory + .getLogger(PrepareConfigurationState.class); + @Override public void update(Workflow workflow) { + // TODO: Read config file and command line arguments + // Set usedSignerLib ... + + // Create PDF Signer + workflow.setPdfSigner(Signator.getSigner(workflow.getUsedSignerLib())); + + workflow.setParameter(workflow.getPdfSigner().newParameter()); + + workflow.setSelectedBKU(PrepareConfigurationState.readSelectedBKU(workflow.getConfigurationValues())); + + workflow.getParameter().setSignaturePosition(readDefinedPosition(workflow.getConfigurationValues())); + this.setNextState(new DataSourceSelectionState()); } - /* (non-Javadoc) - * @see at.asit.pdfover.gui.workflow.WorkflowState#hideGUI() - */ @Override - public void hideGUI() { - // TODO Auto-generated method stub - + public String toString() { + return "PrepareConfigurationState"; } + /** + * Gets BKUS value from Properties + * @param props + * @return The BKUS value + */ + public static BKUS readSelectedBKU(final Properties props) { + if (props.containsKey(BKU_SELECTION_CONFIG)) { + String value = props.getProperty(BKU_SELECTION_CONFIG); + value = value.trim().toLowerCase(); + + if (value.equals(BKUS.LOCAL.toString().trim().toLowerCase())) { + + return BKUS.LOCAL; + } else if (value + .equals(BKUS.MOBILE.toString().trim().toLowerCase())) { + return BKUS.MOBILE; + } + } + return BKUS.NONE; + } + + /** + * Gets BKUS value from Properties + * @param props + * @return The BKUS value + */ + public static SignaturePosition readDefinedPosition(final Properties props) { + // TODO + return null; + } } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java index a18dc389..f1c291f8 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java @@ -16,35 +16,95 @@ package at.asit.pdfover.gui.workflow.states; //Imports +import org.eclipse.swt.SWT; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + +import at.asit.pdfover.gui.components.WaitingComposite; import at.asit.pdfover.gui.workflow.Workflow; import at.asit.pdfover.gui.workflow.WorkflowState; +import at.asit.pdfover.gui.workflow.states.BKUSelectionState.BKUS; /** * User waiting state, wait for PDF Signator library to prepare document for signing. */ public class PrepareSigningState extends WorkflowState { + /** + * Debug background thread + */ + private final class DebugSleeperThread implements Runnable { + + private Workflow workflow; + + /** + * Default constructor + * @param work + */ + public DebugSleeperThread(Workflow work) { + this.workflow = work; + } + + @Override + public void run() { + try { + Thread.sleep(5000); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + this.workflow.InvokeUpdate(); + } + } + /** * SFL4J Logger instance **/ - @SuppressWarnings("unused") private static final Logger log = LoggerFactory.getLogger(PrepareSigningState.class); + private WaitingComposite selectionComposite = null; + + private WaitingComposite getSelectionComposite(Workflow workflow) { + if (this.selectionComposite == null) { + this.selectionComposite = new WaitingComposite( + workflow.getComposite(), SWT.RESIZE, workflow); + } + + return this.selectionComposite; + } + + private boolean run = false; + @Override public void update(Workflow workflow) { - // TODO Auto-generated method stub + // TODO SHOW BACKGROUND ACTIVITY .... + WaitingComposite waiting = this.getSelectionComposite(workflow); + + workflow.setTopControl(waiting); + + if(!this.run) { + Thread t = new Thread(new DebugSleeperThread(workflow)); + this.run = true; + t.start(); + return; + } + // WAIT FOR SLREQUEST and dispatch according to BKU selection + + if(workflow.getSelectedBKU() == BKUS.LOCAL) { + this.setNextState(new LocalBKUState()); + } else if(workflow.getSelectedBKU() == BKUS.MOBILE) { + this.setNextState(new MobileBKUState()); + } else { + log.error("Invalid selected BKU Value \"NONE\" in PrepareSigningState!"); + this.setNextState(new BKUSelectionState()); + } } - - /* (non-Javadoc) - * @see at.asit.pdfover.gui.workflow.WorkflowState#hideGUI() - */ + @Override - public void hideGUI() { - // TODO Auto-generated method stub - + public String toString() { + return "PrepareSigningState"; } - + + } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java index 2305c1c6..8b9a5475 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java @@ -34,17 +34,13 @@ public class SigningState extends WorkflowState { @Override public void update(Workflow workflow) { - // TODO Auto-generated method stub + // TODO Wait until output ready and set output + this.setNextState(new OutputState()); } - - /* (non-Javadoc) - * @see at.asit.pdfover.gui.workflow.WorkflowState#hideGUI() - */ + @Override - public void hideGUI() { - // TODO Auto-generated method stub - + public String toString() { + return "SigningState"; } - } -- cgit v1.2.3