summaryrefslogtreecommitdiff
path: root/pdf-over-gui/src/main
diff options
context:
space:
mode:
authortkellner <tkellner@174cde9d-5d70-4d2a-aa98-46368bc2aaf7>2013-04-10 18:53:11 +0000
committertkellner <tkellner@174cde9d-5d70-4d2a-aa98-46368bc2aaf7>2013-04-10 18:53:11 +0000
commitb2968bef5d56723826cfe38f1fe5ab1d60aa79f3 (patch)
tree8bf68cf3b7c8a6d80d3338046110a6decd60fce2 /pdf-over-gui/src/main
parent2e533b04ae8b232a50a83101692e20cda53696fb (diff)
downloadpdf-over-b2968bef5d56723826cfe38f1fe5ab1d60aa79f3.tar.gz
pdf-over-b2968bef5d56723826cfe38f1fe5ab1d60aa79f3.tar.bz2
pdf-over-b2968bef5d56723826cfe38f1fe5ab1d60aa79f3.zip
State Machine refactoring
git-svn-id: https://joinup.ec.europa.eu/svn/pdf-over/trunk@23 174cde9d-5d70-4d2a-aa98-46368bc2aaf7
Diffstat (limited to 'pdf-over-gui/src/main')
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/MainWindow.java (renamed from pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/MainWindow.java)201
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/MainWindowBehavior.java74
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/BKUSelectionComposite.java167
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/DataSourceSelectComposite.java296
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/PositioningComposite.java120
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/WaitingComposite.java66
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/main_behavior/ConfigOpenEnabled.java45
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/main_behavior/ConfigOpenPositionEnabled.java45
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/main_behavior/MainWindowAllDisabled.java46
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/main_behavior/OnlyConfigEnabled.java45
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProvider.java19
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProviderImpl.java (renamed from pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/main_behavior/MainWindowAllEnable.java)30
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/GUIProvider.java (renamed from pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/StateComposite.java)30
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/PDFSigner.java (renamed from pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/main_behavior/MainWindowBehavior.java)26
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/PDFSignerImpl.java72
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/StateMachine.java44
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/StateMachineImpl.java286
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/Status.java43
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/StatusImpl.java124
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/BKUSelectionState.java36
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/LocalBKUState.java29
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/MobileBKUState.java30
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/OpenState.java (renamed from pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/DataSourceSelectionState.java)56
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/OutputState.java34
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PositioningState.java47
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareConfigurationState.java67
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java57
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/SigningState.java22
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/State.java (renamed from pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/State.java)17
29 files changed, 868 insertions, 1306 deletions
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/MainWindow.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/MainWindow.java
index 96195780..706064bd 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/MainWindow.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/MainWindow.java
@@ -13,10 +13,10 @@
* See the Licence for the specific language governing permissions and
* limitations under the Licence.
*/
-package at.asit.pdfover.gui.components;
+package at.asit.pdfover.gui;
// Imports
-import java.util.HashMap;
+import java.util.EnumMap;
import java.util.Map;
import org.eclipse.swt.SWT;
@@ -35,23 +35,10 @@ import org.eclipse.swt.widgets.Shell;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import at.asit.pdfover.gui.components.main_behavior.ConfigOpenEnabled;
-import at.asit.pdfover.gui.components.main_behavior.ConfigOpenPositionEnabled;
-import at.asit.pdfover.gui.components.main_behavior.MainWindowAllDisabled;
-import at.asit.pdfover.gui.components.main_behavior.MainWindowBehavior;
-import at.asit.pdfover.gui.components.main_behavior.OnlyConfigEnabled;
-import at.asit.pdfover.gui.workflow.State;
+import at.asit.pdfover.gui.composites.StateComposite;
import at.asit.pdfover.gui.workflow.StateMachine;
-import at.asit.pdfover.gui.workflow.StateMachineImpl;
-import at.asit.pdfover.gui.workflow.states.BKUSelectionState;
-import at.asit.pdfover.gui.workflow.states.DataSourceSelectionState;
-import at.asit.pdfover.gui.workflow.states.LocalBKUState;
-import at.asit.pdfover.gui.workflow.states.MobileBKUState;
-import at.asit.pdfover.gui.workflow.states.OutputState;
+import at.asit.pdfover.gui.workflow.states.OpenState;
import at.asit.pdfover.gui.workflow.states.PositioningState;
-import at.asit.pdfover.gui.workflow.states.PrepareConfigurationState;
-import at.asit.pdfover.gui.workflow.states.PrepareSigningState;
-import at.asit.pdfover.gui.workflow.states.SigningState;
/**
* The Main Window of PDFOver 4.0
@@ -59,12 +46,35 @@ import at.asit.pdfover.gui.workflow.states.SigningState;
public class MainWindow {
/**
- *
+ * Selection Listener for Position Button
+ */
+ private final class PositionSelectionListener implements SelectionListener {
+ /**
+ * Default constructor
+ */
+ public PositionSelectionListener() {
+ // Nothing to do here
+ }
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ MainWindow.this.stateMachine.jumpToState(new PositioningState(
+ MainWindow.this.stateMachine));
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ // Nothing to do here
+ }
+ }
+
+ /**
+ * Selection Listener for Open Button
*/
private final class DataSourceSelectionListener implements
SelectionListener {
/**
- *
+ * Default constructor
*/
public DataSourceSelectionListener() {
// Nothing to do here
@@ -72,7 +82,9 @@ public class MainWindow {
@Override
public void widgetSelected(SelectionEvent e) {
- MainWindow.this.stateMachine.setState(new DataSourceSelectionState());
+ MainWindow.this.stateMachine
+ .jumpToState(new OpenState(
+ MainWindow.this.stateMachine));
}
@Override
@@ -84,84 +96,45 @@ public class MainWindow {
/**
* SFL4J Logger instance
**/
- private static final Logger log = LoggerFactory.getLogger(MainWindow.class);
+ static final Logger log = LoggerFactory.getLogger(MainWindow.class);
+
private Shell shell;
private CLabel lbl_status;
private Composite container;
private StackLayout stack;
- private StateMachine stateMachine;
+ StateMachine stateMachine;
private Button btn_sign;
-
- /**
- * Gets the sign button
- * @return the sign button
- */
- public Button getBtn_sign() {
- return this.btn_sign;
- }
-
private Button btn_position;
-
- /**
- * Gets the position button
- * @return the position button
- */
- public Button getBtn_position() {
- return this.btn_position;
- }
-
private Button btn_open;
-
- /**
- * Gets the open button
- * @return the open button
- */
- public Button getBtn_open() {
- return this.btn_open;
- }
-
private Button btn_config;
-
- /**
- * Gets the config button
- * @return the config button
- */
- public Button getBtn_config() {
- return this.btn_config;
+
+ public enum Buttons {
+ CONFIG, OPEN, POSITION, SIGN, FINAL
}
- private Map<Class, MainWindowBehavior> behavior = new HashMap<Class, MainWindowBehavior>();
-
+ private Map<Buttons, Button> buttonMap;
+
/**
- * Default contsructor
- * @param stateMachine The main workflow
+ * Default constructor
+ *
+ * @param stateMachine
+ * The main workflow
*/
public MainWindow(StateMachine stateMachine) {
super();
-
- this.behavior.put(PrepareConfigurationState.class, new MainWindowAllDisabled());
- this.behavior.put(PrepareSigningState.class, new MainWindowAllDisabled());
- this.behavior.put(SigningState.class, new MainWindowAllDisabled());
- this.behavior.put(LocalBKUState.class, new MainWindowAllDisabled());
- this.behavior.put(MobileBKUState.class, new MainWindowAllDisabled());
-
- this.behavior.put(OutputState.class, new MainWindowAllDisabled());
-
- this.behavior.put(DataSourceSelectionState.class, new OnlyConfigEnabled());
-
- this.behavior.put(PositioningState.class, new ConfigOpenEnabled());
-
- this.behavior.put(BKUSelectionState.class, new ConfigOpenPositionEnabled());
-
+
this.stateMachine = stateMachine;
+
+ this.buttonMap = new EnumMap<MainWindow.Buttons, Button>(Buttons.class);
}
/**
* Set current status (may be removed in production release)
+ *
* @param value
*/
public void setStatus(String value) {
- if(this.getShell().isDisposed()) {
+ if (this.getShell().isDisposed()) {
return;
}
this.lbl_status.setText("[DEBUG]: Current workflow state: " + value);
@@ -169,6 +142,7 @@ public class MainWindow {
/**
* Sets top level composite for stack layout
+ *
* @param ctrl
*/
public void setTopControl(Control ctrl) {
@@ -176,7 +150,7 @@ public class MainWindow {
this.stack.topControl = ctrl;
this.doLayout();
}
-
+
/**
* Layout the Main Window
*/
@@ -185,30 +159,32 @@ public class MainWindow {
this.container.layout(true, true);
this.shell.layout(true, true);
// Note: SWT only layouts children! No grandchildren!
- if(ctrl instanceof StateComposite) {
- ((StateComposite)ctrl).doLayout();
+ if (ctrl instanceof StateComposite) {
+ ((StateComposite) ctrl).doLayout();
}
}
-
+
/**
* Gets the container composite
- * @return
+ *
+ * @return the container composite
*/
public Composite getContainer() {
return this.container;
}
-
+
/**
* Entrance point for swt designer
+ *
* @param args
*/
public static void main(String[] args) {
Display display = Display.getDefault();
-
+
MainWindow window = new MainWindow(null);
-
+
window.open();
-
+
window.getShell().open();
window.getShell().layout();
while (!window.getShell().isDisposed()) {
@@ -217,9 +193,10 @@ public class MainWindow {
}
}
}
-
+
/**
* Open the window.
+ *
* @wbp.parser.entryPoint
*/
public void open() {
@@ -232,12 +209,10 @@ public class MainWindow {
protected void createContents() {
this.shell = new Shell();
getShell().setSize(450, 329);
- getShell().setText("PDF OVER 4.0! :)");
-
+ getShell().setText("PDF-Over");
+
getShell().setLayout(new FormLayout());
-
-
-
+
Composite composite = new Composite(getShell(), SWT.NONE);
FormData fd_composite = new FormData();
fd_composite.left = new FormAttachment(0, 5);
@@ -246,7 +221,7 @@ public class MainWindow {
fd_composite.bottom = new FormAttachment(0, 40);
composite.setLayoutData(fd_composite);
composite.setLayout(new FormLayout());
-
+
this.btn_config = new Button(composite, SWT.NONE);
FormData fd_config = new FormData();
fd_config.left = new FormAttachment(0, 0);
@@ -255,7 +230,8 @@ public class MainWindow {
fd_config.bottom = new FormAttachment(100, 0);
this.btn_config.setLayoutData(fd_config);
this.btn_config.setText("Config ...");
-
+ buttonMap.put(Buttons.CONFIG, btn_config);
+
this.btn_open = new Button(composite, SWT.NONE);
FormData fd_open = new FormData();
fd_open.left = new FormAttachment(25, 0);
@@ -265,7 +241,8 @@ public class MainWindow {
this.btn_open.setLayoutData(fd_open);
this.btn_open.setText("Open ...");
this.btn_open.addSelectionListener(new DataSourceSelectionListener());
-
+ buttonMap.put(Buttons.OPEN, btn_open);
+
this.btn_position = new Button(composite, SWT.NONE);
FormData fd_position = new FormData();
fd_position.left = new FormAttachment(50, 0);
@@ -274,7 +251,9 @@ public class MainWindow {
fd_position.bottom = new FormAttachment(100, 0);
this.btn_position.setLayoutData(fd_position);
this.btn_position.setText("Positon ...");
-
+ this.btn_position.addSelectionListener(new PositionSelectionListener());
+ buttonMap.put(Buttons.POSITION, btn_position);
+
this.btn_sign = new Button(composite, SWT.NONE);
FormData fd_sign = new FormData();
fd_sign.left = new FormAttachment(75, 0);
@@ -283,7 +262,8 @@ public class MainWindow {
fd_sign.bottom = new FormAttachment(100, 0);
this.btn_sign.setLayoutData(fd_sign);
this.btn_sign.setText("Sign ...");
-
+ buttonMap.put(Buttons.SIGN, btn_sign);
+
this.container = new Composite(getShell(), SWT.BORDER | SWT.RESIZE);
FormData fd_composite_1 = new FormData();
fd_composite_1.bottom = new FormAttachment(100, -25);
@@ -293,7 +273,7 @@ public class MainWindow {
this.container.setLayoutData(fd_composite_1);
this.stack = new StackLayout();
this.container.setLayout(this.stack);
-
+
this.lbl_status = new CLabel(getShell(), SWT.NONE);
FormData fd_lblNewLabel = new FormData();
fd_lblNewLabel.right = new FormAttachment(100, -5);
@@ -308,16 +288,27 @@ public class MainWindow {
/**
* Update MainWindow to fit new status
*/
- public void UpdateNewState() {
- State state = this.stateMachine.getState();
-
- log.debug("Updating MainWindow state for : " + state.toString());
-
- if(this.behavior.containsKey(state.getClass())) {
- this.behavior.get(state.getClass()).SetState(this);
+ public void applyBehavior() {
+ MainWindowBehavior behavior = this.stateMachine.getStatus()
+ .getBehavior();
+
+ log.debug("Updating MainWindow state for : "
+ + this.stateMachine.getStatus().getCurrentState().toString());
+
+ for (Buttons button : Buttons.values()) {
+ boolean active = behavior.getActive(button);
+ boolean enabled = behavior.getEnabled(button);
+
+ Button theButton = buttonMap.get(button);
+ if (theButton != null)
+ {
+ theButton.setEnabled(enabled);
+ }
}
+
+ //TODO: Display/Hide main bar
}
-
+
/**
* @return the shell
*/
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/MainWindowBehavior.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/MainWindowBehavior.java
new file mode 100644
index 00000000..63c2dafd
--- /dev/null
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/MainWindowBehavior.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2012 by A-SIT, Secure Information Technology Center Austria
+ *
+ * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
+ * the European Commission - subsequent versions of the EUPL (the "Licence");
+ * You may not use this work except in compliance with the Licence.
+ * You may obtain a copy of the Licence at:
+ * http://joinup.ec.europa.eu/software/page/eupl
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the Licence is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the Licence for the specific language governing permissions and
+ * limitations under the Licence.
+ */
+package at.asit.pdfover.gui;
+
+import java.util.EnumMap;
+import java.util.Map;
+
+import at.asit.pdfover.gui.MainWindow.Buttons;
+
+/**
+ * Behavior manipulation for Main Window
+ */
+public class MainWindowBehavior {
+ protected Map<Buttons, Boolean> buttonsEnabled;
+ protected Map<Buttons, Boolean> buttonsActive;
+ protected boolean mainBarVisible;
+
+ public MainWindowBehavior() {
+ this.buttonsActive = new EnumMap<MainWindow.Buttons, Boolean>(MainWindow.Buttons.class);
+ this.buttonsEnabled = new EnumMap<MainWindow.Buttons, Boolean>( MainWindow.Buttons.class);
+ reset();
+ }
+
+ public void setActive(Buttons button, boolean active) {
+ this.buttonsActive.put(button, active);
+ }
+
+ public boolean getActive(Buttons button) {
+ return this.buttonsActive.get(button);
+ }
+
+ public void setEnabled(Buttons button, boolean enabled) {
+ this.buttonsEnabled.put(button, enabled);
+ }
+
+ public boolean getEnabled(Buttons button) {
+ return this.buttonsEnabled.get(button);
+ }
+
+ /**
+ * Resets all behavior to a default state
+ * All buttons are inactive
+ * All buttons are disabled
+ * Main bar is visible
+ */
+ public void reset() {
+ for (Buttons button : Buttons.values()) {
+ setActive(button, false);
+ setEnabled(button, false);
+ }
+ setMainBarVisible(true);
+ }
+
+ public void setMainBarVisible(boolean visible) {
+ this.mainBarVisible = visible;
+ }
+
+ public boolean getMainBarVisible() {
+ return this.mainBarVisible;
+ }
+}
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/BKUSelectionComposite.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/BKUSelectionComposite.java
deleted file mode 100644
index 84b38a07..00000000
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/BKUSelectionComposite.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Copyright 2012 by A-SIT, Secure Information Technology Center Austria
- *
- * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "Licence");
- * You may not use this work except in compliance with the Licence.
- * You may obtain a copy of the Licence at:
- * http://joinup.ec.europa.eu/software/page/eupl
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the Licence is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the Licence for the specific language governing permissions and
- * limitations under the Licence.
- */
-package at.asit.pdfover.gui.components;
-
-// Imports
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.layout.FormLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import at.asit.pdfover.gui.workflow.StateMachine;
-import at.asit.pdfover.gui.workflow.states.BKUSelectionState;
-import at.asit.pdfover.gui.workflow.states.BKUSelectionState.BKUs;
-
-/**
- *
- */
-public class BKUSelectionComposite extends Composite implements StateComposite {
-
-
- /**
- * Listener for local bku selection
- */
- private final class LocalSelectionListener implements SelectionListener {
-
- /**
- * Default constructor
- */
- public LocalSelectionListener() {
- // Nothing here
- }
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- log.debug("Setting BKU to LOCAL");
- setSelected(BKUs.LOCAL);
- }
-
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
- // Nothing here
- }
- }
-
- /**
- * Listener for mobile bku selection
- */
- private final class MobileSelectionListener implements SelectionListener {
-
- /**
- * Default constructor
- */
- public MobileSelectionListener() {
- // Nothing here
- }
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- log.debug("Setting BKU to MOBILE");
- setSelected(BKUs.MOBILE);
- }
-
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
- // Nothing here
- }
- }
-
- /**
- * SLF4J Logger instance
- **/
- private static final Logger log = LoggerFactory
- .getLogger(BKUSelectionComposite.class);
-
- private BKUSelectionState state;
-
- private BKUs selected = BKUs.NONE;
-
- /**
- * Gets selected BKU type
- * @return BKUS enum
- */
- public BKUs getSelected() {
- return this.selected;
- }
-
- /**
- * Sets selected BKU and updates workflow
- * @param selected
- */
- public void setSelected(final BKUs selected) {
- this.selected = selected;
- this.state.updateStateMachine();
- }
-
- /**
- * Create the composite.
- * @param parent
- * @param style
- * @param state
- */
- public BKUSelectionComposite(Composite parent, int style, BKUSelectionState state) {
- super(parent, style);
-
- this.state = state;
-
- this.setLayout(new FormLayout());
-
-
- Button btn_mobile = new Button(this, SWT.NATIVE | SWT.RESIZE);
- btn_mobile.setText("MOBILE");
- //Point mobile_size = btn_mobile.computeSize(SWT.DEFAULT, SWT.DEFAULT);
- FormData fd_btn_mobile = new FormData();
- fd_btn_mobile.left = new FormAttachment(40, 0);
- fd_btn_mobile.right = new FormAttachment(50, 0);
- fd_btn_mobile.top = new FormAttachment(45, 0);
- fd_btn_mobile.bottom = new FormAttachment(55, 0);
- btn_mobile.setLayoutData(fd_btn_mobile);
- btn_mobile.addSelectionListener(new MobileSelectionListener());
-
- Button btn_card = new Button(this, SWT.NATIVE | SWT.RESIZE);
- btn_card.setText("CARD");
- //Point card_size = btn_card.computeSize(SWT.DEFAULT, SWT.DEFAULT);
- FormData fd_btn_card = new FormData();
- fd_btn_card.left = new FormAttachment(50, 0);
- fd_btn_card.right = new FormAttachment(60, 0);
- fd_btn_card.top = new FormAttachment(45, 0);
- fd_btn_card.bottom = new FormAttachment(55, 0);
- btn_card.setLayoutData(fd_btn_card);
- btn_card.addSelectionListener(new LocalSelectionListener());
-
- this.pack();
- }
-
- @Override
- protected void checkSubclass() {
- // Disable the check that prevents subclassing of SWT components
- }
-
- /* (non-Javadoc)
- * @see at.asit.pdfover.gui.components.StateComposite#doLayout()
- */
- @Override
- public void doLayout() {
- this.layout(true, true);
- }
-
-}
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/DataSourceSelectComposite.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/DataSourceSelectComposite.java
deleted file mode 100644
index fe0cb2ee..00000000
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/DataSourceSelectComposite.java
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
- * Copyright 2012 by A-SIT, Secure Information Technology Center Austria
- *
- * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "Licence");
- * You may not use this work except in compliance with the Licence.
- * You may obtain a copy of the Licence at:
- * http://joinup.ec.europa.eu/software/page/eupl
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the Licence is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the Licence for the specific language governing permissions and
- * limitations under the Licence.
- */
-package at.asit.pdfover.gui.components;
-
-// Imports
-import java.io.File;
-
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.FileDialog;
-import org.eclipse.swt.widgets.Label;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.layout.FormLayout;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.dnd.*;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-
-import at.asit.pdfover.gui.workflow.StateMachineImpl;
-
-/**
- *
- *
- */
-public class DataSourceSelectComposite extends Composite implements
- StateComposite {
-
- /**
- *
- */
- private final class FileBrowseDialog implements SelectionListener {
- /**
- *
- */
- public FileBrowseDialog() {
- // Nothing to do here
- }
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- FileDialog dialog = new FileDialog(DataSourceSelectComposite.this.getShell(), SWT.OPEN);
- dialog.setFilterExtensions(new String[] {"*.pdf"});
- dialog.setFilterNames(new String[] {"PDF Dateien"});
- String fileName = dialog.open();
- File file = null;
- if (fileName != null) {
- file = new File(fileName);
- if(file.exists()) {
- DataSourceSelectComposite.this.setSelected(file);
- }
- }
- }
-
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
- // Nothing to do here
- }
- }
-
- /**
- * SFL4J Logger instance
- **/
- private static final Logger log = LoggerFactory
- .getLogger(DataSourceSelectComposite.class);
-
- private StateMachineImpl workflow;
-
- /**
- * Set this value through the setter method!!
- */
- private File selected = null;
-
- /**
- * Sets the selected file and calls update to the workflow
- * @param selected
- */
- protected void setSelected(File selected) {
- this.selected = selected;
- workflow.update();
- }
-
- /**
- * Gets the selected file
- *
- * @return the selected file
- */
- public File getSelected() {
- return this.selected;
- }
-
- /**
- * Create the composite.
- *
- * @param parent
- * @param style
- * @param flow
- */
- public DataSourceSelectComposite(Composite parent, int style, StateMachineImpl flow) {
- super(parent, style);
-
- this.workflow = flow;
-
- this.setLayout(new FormLayout());
-
- Color back = new Color(Display.getCurrent(), 77, 190, 250);
-
- this.drop_area = new Composite(this, SWT.RESIZE | SWT.BORDER_DASH);
- FormData fd_drop_area = new FormData();
- fd_drop_area.left = new FormAttachment(0, 0);
- fd_drop_area.right = new FormAttachment(100, 0);
- fd_drop_area.top = new FormAttachment(0, 0);
- fd_drop_area.bottom = new FormAttachment(100, 0);
- this.drop_area.setLayoutData(fd_drop_area);
- this.drop_area.setLayout(new FormLayout());
- this.drop_area.setBackground(back);
-
- DropTarget dnd_target = new DropTarget(this.drop_area, DND.DROP_DEFAULT
- | DND.DROP_COPY);
- final FileTransfer fileTransfer = FileTransfer.getInstance();
- Transfer[] types = new Transfer[] { fileTransfer };
- dnd_target.setTransfer(types);
-
- dnd_target.addDropListener(new DropTargetListener() {
-
- @Override
- public void dropAccept(DropTargetEvent event) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void drop(DropTargetEvent event) {
- if (fileTransfer.isSupportedType(event.currentDataType)){
- String[] files = (String[])event.data;
- if(files.length > 0) {
- // Only taking first file ...
- File file = new File(files[0]);
- if(!file.exists())
- {
- log.error("File: " + files[0] + " doesnot exists!");
- return;
- }
- DataSourceSelectComposite.this.setSelected(file);
- }
- }
- }
-
- @Override
- public void dragOver(DropTargetEvent event) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void dragOperationChanged(DropTargetEvent event) {
- if (event.detail == DND.DROP_DEFAULT) {
- if ((event.operations & DND.DROP_COPY) != 0) {
- event.detail = DND.DROP_COPY;
- } else {
- event.detail = DND.DROP_NONE;
- }
- }
- }
-
- @Override
- public void dragLeave(DropTargetEvent event) {
- // No need to do anything here...
- }
-
- @Override
- public void dragEnter(DropTargetEvent event) {
- if (event.detail == DND.DROP_DEFAULT) {
- if ((event.operations & DND.DROP_COPY) != 0) {
- event.detail = DND.DROP_COPY;
- } else {
- event.detail = DND.DROP_NONE;
- }
- }
- // Only drop one item!
- if(event.dataTypes.length > 1) {
- event.detail = DND.DROP_NONE;
- return;
- }
- // will accept text but prefer to have files dropped
- for (int i = 0; i < event.dataTypes.length; i++) {
- if (fileTransfer.isSupportedType(event.dataTypes[i])) {
- event.currentDataType = event.dataTypes[i];
- // files should only be copied
- if (event.detail != DND.DROP_COPY) {
- event.detail = DND.DROP_NONE;
- }
- break;
- }
- }
- }
- });
-
- final Label lbl_drag = new Label(this.drop_area, SWT.NONE | SWT.RESIZE);
- FormData fd_lbl_drag = new FormData();
- fd_lbl_drag.left = new FormAttachment(5, 5);
- fd_lbl_drag.right = new FormAttachment(100, -5);
- fd_lbl_drag.top = new FormAttachment(5, 5);
- fd_lbl_drag.bottom = new FormAttachment(55, -5);
- lbl_drag.setLayoutData(fd_lbl_drag);
- FontData[] fD = lbl_drag.getFont().getFontData();
- fD[0].setHeight(18);
- lbl_drag.setFont(new Font(Display.getCurrent(), fD[0]));
- lbl_drag.setText("Drag and Drop");
- lbl_drag.setAlignment(SWT.CENTER);
- lbl_drag.setBackground(back);
-
- Button btn_open = new Button(this.drop_area, SWT.NATIVE | SWT.RESIZE);
- btn_open.setText("Choose file ...");
- Point size = btn_open.computeSize(SWT.DEFAULT, SWT.DEFAULT);
- FormData fd_btn_open = new FormData();
- fd_btn_open.left = new FormAttachment(100, size.x * -1 - 10);
- fd_btn_open.right = new FormAttachment(100, -5);
- fd_btn_open.top = new FormAttachment(100, size.y * -1 - 10);
- fd_btn_open.bottom = new FormAttachment(100, -5);
- btn_open.setLayoutData(fd_btn_open);
- btn_open.setBackground(back);
- btn_open.addSelectionListener(new FileBrowseDialog());
- this.drop_area.pack();
-
- /*
- * Button btn = new Button(this, SWT.NATIVE); btn.setBounds(50, 20, 100,
- * 50); btn.setText("Click Me"); btn.addSelectionListener(new
- * SelectionListener() {
- *
- * @Override public void widgetSelected(SelectionEvent arg0) {
- * DataSourceSelectComposite.this.setPress(true);
- * DataSourceSelectComposite.this.workflow.update(); }
- *
- * @Override public void widgetDefaultSelected(SelectionEvent arg0) { //
- * TODO Auto-generated method stub
- *
- * } });
- */
- }
-
- private boolean press = false;
-
- private Composite drop_area;
-
- @Override
- protected void checkSubclass() {
- // Disable the check that prevents subclassing of SWT components
- }
-
- /**
- * @return the press
- */
- public boolean isPress() {
- return this.press;
- }
-
- /**
- * @param press
- * the press to set
- */
- public void setPress(boolean press) {
- this.press = press;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see at.asit.pdfover.gui.components.StateComposite#doLayout()
- */
- @Override
- public void doLayout() {
- this.layout(true, true);
- this.drop_area.layout(true, true);
- }
-}
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/PositioningComposite.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/PositioningComposite.java
deleted file mode 100644
index c924ef79..00000000
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/PositioningComposite.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright 2012 by A-SIT, Secure Information Technology Center Austria
- *
- * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "Licence");
- * You may not use this work except in compliance with the Licence.
- * You may obtain a copy of the Licence at:
- * http://joinup.ec.europa.eu/software/page/eupl
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the Licence is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the Licence for the specific language governing permissions and
- * limitations under the Licence.
- */
-package at.asit.pdfover.gui.components;
-
-// Imports
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import at.asit.pdfover.gui.workflow.StateMachineImpl;
-import at.asit.pdfover.signator.SignaturePosition;
-
-/**
- *
- *
- */
-public class PositioningComposite extends Composite implements StateComposite {
-
- /**
- * Selection listener when position was fixed
- */
- private final class PositionSelectedListener implements SelectionListener {
-
- /**
- * Default constructor
- */
- public PositionSelectedListener() {
- // Nothing to do
- }
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- // TODO: FIX to get real position
- PositioningComposite.this.setPosition(new SignaturePosition()); // Setting auto position for testing
- PositioningComposite.this.workflow.update();
- }
-
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
- // Nothing to do
- }
- }
-
- /**
- * SFL4J Logger instance
- **/
- private static final Logger log = LoggerFactory
- .getLogger(PositioningComposite.class);
-
- private StateMachineImpl workflow;
-
- private SignaturePosition position = null;
-
- /**
- * Gets the Position
- * @return
- */
- public SignaturePosition getPosition() {
- return this.position;
- }
-
- /**
- * Sets the position
- * @param position
- */
- public void setPosition(SignaturePosition position) {
- this.position = position;
- }
-
- /**
- * Create the composite.
- * @param parent
- * @param style
- */
- public PositioningComposite(Composite parent, int style, StateMachineImpl workflow) {
- super(parent, style);
-
- this.workflow = workflow;
-
- Label test = new Label(this, SWT.NATIVE);
- test.setBounds(10, 20, 100, 30);
- test.setText("POSITIONING ---- TODO!!");
-
- Button btn_position = new Button(this, SWT.NATIVE | SWT.RESIZE);
- btn_position.setBounds(10, 50, 100, 30);
- btn_position.setText("FAKE Position");
- btn_position.addSelectionListener(new PositionSelectedListener());
- }
-
- @Override
- protected void checkSubclass() {
- // Disable the check that prevents subclassing of SWT components
- }
-
- /* (non-Javadoc)
- * @see at.asit.pdfover.gui.components.StateComposite#doLayout()
- */
- @Override
- public void doLayout() {
- this.layout(true, true);
- }
-}
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/WaitingComposite.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/WaitingComposite.java
deleted file mode 100644
index 6ce53b22..00000000
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/WaitingComposite.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright 2012 by A-SIT, Secure Information Technology Center Austria
- *
- * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "Licence");
- * You may not use this work except in compliance with the Licence.
- * You may obtain a copy of the Licence at:
- * http://joinup.ec.europa.eu/software/page/eupl
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the Licence is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the Licence for the specific language governing permissions and
- * limitations under the Licence.
- */
-package at.asit.pdfover.gui.components;
-
-// Imports
-import org.eclipse.swt.widgets.Composite;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.eclipse.swt.widgets.ProgressBar;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.FormLayout;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.layout.FormAttachment;
-
-import at.asit.pdfover.gui.workflow.StateMachineImpl;
-
-/**
- *
- */
-public class WaitingComposite extends Composite {
- /**
- * SLF4J Logger instance
- **/
- private static final Logger log = LoggerFactory
- .getLogger(WaitingComposite.class);
-
- private StateMachineImpl workflow;
-
- /**
- * Create the composite.
- * @param parent
- * @param style
- */
- public WaitingComposite(Composite parent, int style, StateMachineImpl workflow) {
- super(parent, style);
- setLayout(new FormLayout());
-
- this.workflow = workflow;
-
- ProgressBar progressBar = new ProgressBar(this, SWT.HORIZONTAL | SWT.INDETERMINATE);
- FormData fd_progressBar = new FormData();
- fd_progressBar.top = new FormAttachment(50, -15);
- fd_progressBar.bottom = new FormAttachment(50, +15);
- fd_progressBar.left = new FormAttachment(50, -100);
- fd_progressBar.right = new FormAttachment(50, +100);
- progressBar.setLayoutData(fd_progressBar);
- }
-
- @Override
- protected void checkSubclass() {
- // Disable the check that prevents subclassing of SWT components
- }
-}
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/main_behavior/ConfigOpenEnabled.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/main_behavior/ConfigOpenEnabled.java
deleted file mode 100644
index a9280624..00000000
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/main_behavior/ConfigOpenEnabled.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright 2012 by A-SIT, Secure Information Technology Center Austria
- *
- * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "Licence");
- * You may not use this work except in compliance with the Licence.
- * You may obtain a copy of the Licence at:
- * http://joinup.ec.europa.eu/software/page/eupl
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the Licence is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the Licence for the specific language governing permissions and
- * limitations under the Licence.
- */
-package at.asit.pdfover.gui.components.main_behavior;
-
-// Imports
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import at.asit.pdfover.gui.components.MainWindow;
-
-/**
- *
- */
-public class ConfigOpenEnabled implements MainWindowBehavior {
- /**
- * SLF4J Logger instance
- **/
- private static final Logger log = LoggerFactory
- .getLogger(ConfigOpenEnabled.class);
-
- /* (non-Javadoc)
- * @see at.asit.pdfover.gui.components.MainWindowBehavior#SetState(at.asit.pdfover.gui.components.MainWindow)
- */
- @Override
- public void SetState(MainWindow window) {
- log.debug("ENABLING config & open");
- window.getBtn_config().setEnabled(true);
- window.getBtn_open().setEnabled(true);
- window.getBtn_position().setEnabled(false);
- window.getBtn_sign().setEnabled(false);
- }
-}
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/main_behavior/ConfigOpenPositionEnabled.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/main_behavior/ConfigOpenPositionEnabled.java
deleted file mode 100644
index 7e1af1ef..00000000
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/main_behavior/ConfigOpenPositionEnabled.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright 2012 by A-SIT, Secure Information Technology Center Austria
- *
- * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "Licence");
- * You may not use this work except in compliance with the Licence.
- * You may obtain a copy of the Licence at:
- * http://joinup.ec.europa.eu/software/page/eupl
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the Licence is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the Licence for the specific language governing permissions and
- * limitations under the Licence.
- */
-package at.asit.pdfover.gui.components.main_behavior;
-
-// Imports
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import at.asit.pdfover.gui.components.MainWindow;
-
-/**
- *
- */
-public class ConfigOpenPositionEnabled implements MainWindowBehavior {
- /**
- * SLF4J Logger instance
- **/
- private static final Logger log = LoggerFactory
- .getLogger(ConfigOpenPositionEnabled.class);
-
- /* (non-Javadoc)
- * @see at.asit.pdfover.gui.components.MainWindowBehavior#SetState(at.asit.pdfover.gui.components.MainWindow)
- */
- @Override
- public void SetState(MainWindow window) {
- log.debug("ENABLING config & open & position");
- window.getBtn_config().setEnabled(true);
- window.getBtn_open().setEnabled(true);
- window.getBtn_position().setEnabled(true);
- window.getBtn_sign().setEnabled(false);
- }
-}
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/main_behavior/MainWindowAllDisabled.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/main_behavior/MainWindowAllDisabled.java
deleted file mode 100644
index c5b70852..00000000
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/main_behavior/MainWindowAllDisabled.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2012 by A-SIT, Secure Information Technology Center Austria
- *
- * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "Licence");
- * You may not use this work except in compliance with the Licence.
- * You may obtain a copy of the Licence at:
- * http://joinup.ec.europa.eu/software/page/eupl
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the Licence is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the Licence for the specific language governing permissions and
- * limitations under the Licence.
- */
-package at.asit.pdfover.gui.components.main_behavior;
-
-// Imports
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import at.asit.pdfover.gui.components.MainWindow;
-
-/**
- *
- */
-public class MainWindowAllDisabled implements MainWindowBehavior {
- /**
- * SLF4J Logger instance
- **/
- private static final Logger log = LoggerFactory
- .getLogger(MainWindowAllDisabled.class);
-
- /* (non-Javadoc)
- * @see at.asit.pdfover.gui.components.MainWindowBehavior#SetState(at.asit.pdfover.gui.components.MainWindow)
- */
- @Override
- public void SetState(MainWindow window) {
- log.debug("DISABLING ALL");
- window.getBtn_config().setEnabled(false);
- window.getBtn_open().setEnabled(false);
- window.getBtn_position().setEnabled(false);
- window.getBtn_sign().setEnabled(false);
- }
-
-}
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/main_behavior/OnlyConfigEnabled.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/main_behavior/OnlyConfigEnabled.java
deleted file mode 100644
index 2a7e863f..00000000
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/main_behavior/OnlyConfigEnabled.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright 2012 by A-SIT, Secure Information Technology Center Austria
- *
- * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "Licence");
- * You may not use this work except in compliance with the Licence.
- * You may obtain a copy of the Licence at:
- * http://joinup.ec.europa.eu/software/page/eupl
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the Licence is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the Licence for the specific language governing permissions and
- * limitations under the Licence.
- */
-package at.asit.pdfover.gui.components.main_behavior;
-
-// Imports
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import at.asit.pdfover.gui.components.MainWindow;
-
-/**
- *
- */
-public class OnlyConfigEnabled implements MainWindowBehavior {
- /**
- * SLF4J Logger instance
- **/
- private static final Logger log = LoggerFactory
- .getLogger(OnlyConfigEnabled.class);
-
- /* (non-Javadoc)
- * @see at.asit.pdfover.gui.components.MainWindowBehavior#SetState(at.asit.pdfover.gui.components.MainWindow)
- */
- @Override
- public void SetState(MainWindow window) {
- log.debug("ENABLING ONLY config");
- window.getBtn_config().setEnabled(true);
- window.getBtn_open().setEnabled(false);
- window.getBtn_position().setEnabled(false);
- window.getBtn_sign().setEnabled(false);
- }
-}
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProvider.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProvider.java
index 1296b373..30d7aed8 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProvider.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProvider.java
@@ -15,13 +15,24 @@
*/
package at.asit.pdfover.gui.workflow;
-// Imports
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import at.asit.pdfover.gui.workflow.states.BKUSelectionState.BKUs;
+import at.asit.pdfover.signator.SignaturePosition;
/**
*
*/
public interface ConfigProvider {
-
+ //TODO: define interface for config provider ....
+
+ /**
+ * Get the default configured BKU
+ * @return the default configured BKU
+ */
+ public BKUs getDefaultBKU();
+
+ /**
+ * Get the default configured SignaturePosition
+ * @return the default configured SignaturePosition or null if not configured
+ */
+ public SignaturePosition getDefaultSignaturePosition();
}
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/main_behavior/MainWindowAllEnable.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProviderImpl.java
index 91d5237a..3787ef50 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/main_behavior/MainWindowAllEnable.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/ConfigProviderImpl.java
@@ -1,4 +1,3 @@
-package at.asit.pdfover.gui.components.main_behavior;
/*
* Copyright 2012 by A-SIT, Secure Information Technology Center Austria
*
@@ -14,33 +13,42 @@ package at.asit.pdfover.gui.components.main_behavior;
* See the Licence for the specific language governing permissions and
* limitations under the Licence.
*/
+package at.asit.pdfover.gui.workflow;
// Imports
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import at.asit.pdfover.gui.components.MainWindow;
+import at.asit.pdfover.gui.workflow.states.BKUSelectionState.BKUs;
+import at.asit.pdfover.signator.SignaturePosition;
/**
*
*/
-public class MainWindowAllEnable implements MainWindowBehavior {
+public class ConfigProviderImpl implements ConfigProvider {
/**
* SLF4J Logger instance
**/
+ @SuppressWarnings("unused")
private static final Logger log = LoggerFactory
- .getLogger(MainWindowAllEnable.class);
+ .getLogger(ConfigProviderImpl.class);
/* (non-Javadoc)
- * @see at.asit.pdfover.gui.components.MainWindowBehavior#SetState(at.asit.pdfover.gui.components.MainWindow)
+ * @see at.asit.pdfover.gui.workflow.ConfigProvider#getDefaultBKU()
*/
@Override
- public void SetState(MainWindow window) {
- log.debug("ENABLING ALL");
- window.getBtn_config().setEnabled(true);
- window.getBtn_open().setEnabled(true);
- window.getBtn_position().setEnabled(true);
- window.getBtn_sign().setEnabled(true);
+ public BKUs getDefaultBKU() {
+ // TODO Read Config
+ return BKUs.NONE;
+ }
+
+ /* (non-Javadoc)
+ * @see at.asit.pdfover.gui.workflow.ConfigProvider#getDefaultSignaturePosition()
+ */
+ @Override
+ public SignaturePosition getDefaultSignaturePosition() {
+ // TODO Read Config
+ return null;
}
}
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/StateComposite.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/GUIProvider.java
index 0bfd7b87..4e7955fd 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/StateComposite.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/GUIProvider.java
@@ -13,20 +13,32 @@
* See the Licence for the specific language governing permissions and
* limitations under the Licence.
*/
-package at.asit.pdfover.gui.components;
+package at.asit.pdfover.gui.workflow;
+
+import org.eclipse.swt.widgets.Composite;
-// Imports
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
- * Composite interface for workflow state gui implementations
+ *
*/
-public interface StateComposite {
+public interface GUIProvider {
+ /**
+ * Get the container Composite
+ * @return the container Composite
+ */
+ public Composite getComposite();
/**
- * Performs layout for all children in composite
- * (SWT layout(...) only layouts children no grandchildren!)
+ * Create a new Composite
+ * @param compositeClass The class of the Composite to create
+ * @param style the SWT style
+ * @return the new Composite
+ */
+ public <T> T createComposite(Class<T> compositeClass, int style);
+
+ /**
+ * Display the composite as top most in main window
+ * @param composite the composite
*/
- public void doLayout();
+ public void display(final Composite composite);
}
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/main_behavior/MainWindowBehavior.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/PDFSigner.java
index b36f6b51..33e8c176 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/components/main_behavior/MainWindowBehavior.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/PDFSigner.java
@@ -13,17 +13,31 @@
* See the Licence for the specific language governing permissions and
* limitations under the Licence.
*/
-package at.asit.pdfover.gui.components.main_behavior;
+package at.asit.pdfover.gui.workflow;
-import at.asit.pdfover.gui.components.MainWindow;
+// Imports
+import at.asit.pdfover.signator.Signator;
+import at.asit.pdfover.signator.Signer;
/**
*
*/
-public interface MainWindowBehavior {
+public interface PDFSigner {
/**
- * Changes the state of the main window
- * @param window
+ * Gets the PDF Signer Type
+ * @return the signer type
*/
- public void SetState(MainWindow window);
+ public Signator.Signers getUsedPDFSignerLibrary();
+
+ /**
+ * Set PDF Signer Type
+ * @param signer the signer type
+ */
+ public void setUsedPDFSignerLibrary(Signator.Signers signer);
+
+ /**
+ * Gets the currently used PDF Signer
+ * @return the pdf signer
+ */
+ public Signer getPDFSigner();
}
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/PDFSignerImpl.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/PDFSignerImpl.java
new file mode 100644
index 00000000..812e6ba0
--- /dev/null
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/PDFSignerImpl.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2012 by A-SIT, Secure Information Technology Center Austria
+ *
+ * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
+ * the European Commission - subsequent versions of the EUPL (the "Licence");
+ * You may not use this work except in compliance with the Licence.
+ * You may obtain a copy of the Licence at:
+ * http://joinup.ec.europa.eu/software/page/eupl
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the Licence is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the Licence for the specific language governing permissions and
+ * limitations under the Licence.
+ */
+package at.asit.pdfover.gui.workflow;
+
+// Imports
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.asit.pdfover.signator.Signator;
+import at.asit.pdfover.signator.Signator.Signers;
+import at.asit.pdfover.signator.Signer;
+
+/**
+ *
+ */
+public class PDFSignerImpl implements PDFSigner {
+ /**
+ * SLF4J Logger instance
+ **/
+ @SuppressWarnings("unused")
+ private static final Logger log = LoggerFactory
+ .getLogger(PDFSignerImpl.class);
+
+ private Signers signer = Signator.Signers.PDFAS;
+
+ /* (non-Javadoc)
+ * @see at.asit.pdfover.gui.workflow.PDFSigner#getPDFSignerType()
+ */
+ @Override
+ public Signers getUsedPDFSignerLibrary() {
+ return this.signer;
+ }
+
+ /* (non-Javadoc)
+ * @see at.asit.pdfover.gui.workflow.PDFSigner#setPDFSignerType(at.asit.pdfover.signator.Signator.Signers)
+ */
+ @Override
+ public void setUsedPDFSignerLibrary(Signers signer) {
+ if(signer != this.signer) {
+ // TYPE CHANGE remove cached signer!
+ this.signerLib = null;
+ }
+ this.signer = signer;
+ }
+
+ private Signer signerLib;
+
+ /* (non-Javadoc)
+ * @see at.asit.pdfover.gui.workflow.PDFSigner#getPDFSigner()
+ */
+ @Override
+ public Signer getPDFSigner() {
+ if(this.signerLib == null) {
+ this.signerLib = Signator.getSigner(getUsedPDFSignerLibrary());
+ }
+ return this.signerLib;
+ }
+
+}
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/StateMachine.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/StateMachine.java
index 92505d19..1298bda8 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/StateMachine.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/StateMachine.java
@@ -15,7 +15,7 @@
*/
package at.asit.pdfover.gui.workflow;
-import org.eclipse.swt.widgets.Composite;
+import at.asit.pdfover.gui.workflow.states.State;
/**
*
@@ -28,30 +28,48 @@ public interface StateMachine {
public ConfigProvider getConfigProvider();
/**
- * Get the container Composite
- * @return the container Composite
+ * Get the PDF Signer
+ * @return the PDF Signer
*/
- public Composite getComposite();
-
- /**
- * Create a new Composite
- * @param compositeClass The class of the Composite to create
- * @return the new Composite
- */
- public <T> T createComposite(Class<T> compositeClass);
-
- //public void display(Composite composite)
+ public PDFSigner getPDFSigner();
+
/**
* Get the Status
* @return the Status
*/
public Status getStatus();
+
+ /**
+ * Gets the GUI provider
+ * @return the GUI provider
+ */
+ public GUIProvider getGUIProvider();
+
+ /**
+ * Jump to specific state
+ *
+ * Sets the state machine 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 the target state.
+ *
+ * Example: Usually the MainWindow allows the user to jump to the states:
+ * DataSourceSelectionState, PositioningState and BKUSelectionState
+ *
+ * @param state the state to jump to
+ */
+ public void jumpToState(State state);
/**
* Update state machine
* Calls the next state.
*/
public void update();
+
+ /**
+ * Update state machine from other thread
+ * Calls the next state within the main thread
+ */
+ public void InvokeUpdate();
/**
* Exit state machine execution
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/StateMachineImpl.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/StateMachineImpl.java
index 8549007c..bb292c74 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/StateMachineImpl.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/StateMachineImpl.java
@@ -19,38 +19,36 @@ package at.asit.pdfover.gui.workflow;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.File;
import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.util.Properties;
-
-import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
-import at.asit.pdfover.gui.components.BKUSelectionComposite;
-import at.asit.pdfover.gui.components.MainWindow;
+import at.asit.pdfover.gui.MainWindow;
import at.asit.pdfover.gui.workflow.states.BKUSelectionState;
-import at.asit.pdfover.gui.workflow.states.DataSourceSelectionState;
+import at.asit.pdfover.gui.workflow.states.OpenState;
import at.asit.pdfover.gui.workflow.states.PositioningState;
import at.asit.pdfover.gui.workflow.states.PrepareConfigurationState;
+import at.asit.pdfover.gui.workflow.states.State;
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
* logical state
*/
-public class StateMachineImpl implements StateMachine {
+public class StateMachineImpl implements StateMachine, GUIProvider {
/**
* SFL4J Logger instance
**/
- private static final Logger log = LoggerFactory.getLogger(StateMachineImpl.class);
+ private static final Logger log = LoggerFactory
+ .getLogger(StateMachineImpl.class);
+
+ private StatusImpl status;
+
+ private PDFSignerImpl pdfSigner;
+
+ private ConfigProviderImpl configProvider;
/**
* Default constructor
@@ -58,61 +56,49 @@ public class StateMachineImpl implements StateMachine {
* @param cmdLineArgs
*/
public StateMachineImpl(String[] cmdLineArgs) {
+ this.status = new StatusImpl();
+ this.status.setCurrentState(new PrepareConfigurationState(this));
+ this.pdfSigner = new PDFSignerImpl();
+ this.configProvider = new ConfigProviderImpl();
setCmdLineAargs(cmdLineArgs);
}
/**
- * @uml.property name="state"
- * @uml.associationEnd multiplicity="(1 1)" aggregation="shared"
- * inverse="workflow1:at.asit.pdfover.gui.workflow.WorkflowState"
- */
- private State state = new PrepareConfigurationState();
-
- /**
- * Getter of the property <tt>state</tt>
- *
- * @return Returns the state.
- * @uml.property name="state"
- */
- public State getState() {
- return this.state;
- }
-
- /**
- * Sets the workflow state This method should be used to let the user jump
+ * 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
*
* @param state
*/
- public void setState(State state) {
- if (this.state != state && state != null) {
- this.state = state;
+ @Override
+ public void jumpToState(State state) {
+ if (this.status.getCurrentState() != state && state != null) {
+ this.status.setCurrentState(state);
+ // TODO rewrite when Config is done ...
if (state instanceof PositioningState) {
// User jumps to positioning state !
// restore possible default for bku selection / forget BKU
// selection
- this.setSelectedBKU(PrepareConfigurationState
- .readSelectedBKU(this.getConfigurationValues()));
+ this.getStatus().setBKU(
+ this.getConfigProvider().getDefaultBKU());
// forget position
- this.getParameter().setSignaturePosition(null);
+ this.getStatus().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) {
+ this.getStatus().setBKU(BKUs.NONE);
+ } else if (state instanceof OpenState) {
// User jumps to data source selection state !
// forget bku selection / restore possible default for bku
// selection
- this.setSelectedBKU(PrepareConfigurationState
- .readSelectedBKU(this.getConfigurationValues()));
+ this.getStatus().setBKU(
+ this.getConfigProvider().getDefaultBKU());
// forget position / restore possible default for position
- this.getParameter().setSignaturePosition(
- PrepareConfigurationState.readDefinedPosition(this
- .getConfigurationValues()));
+ this.getStatus().setSignaturePosition(
+ this.getConfigProvider().getDefaultSignaturePosition());
// forget data source selection
- this.setDataSource(null);
+ this.getStatus().setDocument(null);
}
this.update();
@@ -125,24 +111,29 @@ public class StateMachineImpl implements StateMachine {
@Override
public void update() {
State next = null;
- while (this.state != null) {
- this.state.run();
- if (this.mainWindow != null && !this.mainWindow.getShell().isDisposed()) {
- log.debug("Allowing MainWindow to update its state for " + this.state.toString());
- this.mainWindow.UpdateNewState();
+ while (this.status.getCurrentState() != null) {
+ State current = this.status.getCurrentState();
+ current.run();
+ if (this.mainWindow != null
+ && !this.mainWindow.getShell().isDisposed()) {
+ log.debug("Allowing MainWindow to update its state for "
+ + current);
+ current.updateMainWindowBehavior();
+ this.mainWindow.applyBehavior();
this.mainWindow.doLayout();
}
- next = this.state.nextState();
- if (next == this.state) {
+ next = current.nextState();
+ if (next == current) {
break;
}
- // this.state.hideGUI();
- log.debug("Changing state from: " + this.state.toString() + " to "
+ log.debug("Changing state from: "
+ + current + " to "
+ next.toString());
- this.state = next;
+ this.status.setCurrentState(next);
}
- if (this.state != null) {
- this.setCurrentStateMessage(this.state.toString());
+ if (this.status.getCurrentState() != null) {
+ this.setCurrentStateMessage(this.status.getCurrentState()
+ .toString());
} else {
this.setCurrentStateMessage("");
}
@@ -151,10 +142,11 @@ public class StateMachineImpl implements StateMachine {
/**
* Invoke Update in UI (Main) Thread
*/
+ @Override
public void InvokeUpdate() {
- if(this.display != null) {
+ if (this.display != null) {
this.display.asyncExec(new Runnable() {
-
+
@Override
public void run() {
StateMachineImpl.this.update();
@@ -162,7 +154,7 @@ public class StateMachineImpl implements StateMachine {
});
}
}
-
+
private Display display = null;
private Shell shell = null;
@@ -182,13 +174,16 @@ public class StateMachineImpl implements StateMachine {
}
}
- /**
- * Used by active workflow state to show its own gui component
+ /*
+ * (non-Javadoc)
*
- * @param ctrl
+ * @see
+ * at.asit.pdfover.gui.workflow.StateMachine#display(org.eclipse.swt.widgets
+ * .Composite)
*/
- public void setTopControl(final Control ctrl) {
- this.mainWindow.setTopControl(ctrl);
+ @Override
+ public void display(Composite composite) {
+ this.mainWindow.setTopControl(composite);
}
private void createMainWindow() {
@@ -228,13 +223,16 @@ public class StateMachineImpl implements StateMachine {
}
@Override
- public <T> T createComposite(Class<T> compositeClass) {
+ public <T> T createComposite(Class<T> compositeClass, int style) {
T composite = null;
try {
- Constructor<T> constructor = compositeClass.getDeclaredConstructor(Composite.class, int.class, BKUSelectionState.class);
- composite = constructor.newInstance(getComposite(), SWT.RESIZE, this);
+ Constructor<T> constructor = compositeClass.getDeclaredConstructor(
+ Composite.class, int.class, BKUSelectionState.class);
+ composite = constructor.newInstance(getComposite(), style, this);
} catch (Exception e) {
- log.error("Could not create Composite for Class " + compositeClass.getName(), e);
+ log.error(
+ "Could not create Composite for Class "
+ + compositeClass.getName(), e);
}
return composite;
}
@@ -286,22 +284,42 @@ public class StateMachineImpl implements StateMachine {
}
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see at.asit.pdfover.gui.workflow.StateMachine#getConfigProvider()
*/
@Override
public ConfigProvider getConfigProvider() {
- // TODO Auto-generated method stub
- return null;
+ return this.configProvider;
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see at.asit.pdfover.gui.workflow.StateMachine#getStatus()
*/
@Override
public Status getStatus() {
- // TODO Auto-generated method stub
- return null;
+ return this.status;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see at.asit.pdfover.gui.workflow.StateMachine#getPDFSigner()
+ */
+ @Override
+ public PDFSigner getPDFSigner() {
+ return this.pdfSigner;
+ }
+
+ /* (non-Javadoc)
+ * @see at.asit.pdfover.gui.workflow.StateMachine#getGUIProvider()
+ */
+ @Override
+ public GUIProvider getGUIProvider() {
+ return this;
}
// Data Section
@@ -328,120 +346,4 @@ public class StateMachineImpl implements StateMachine {
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 this.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/Status.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/Status.java
index ff06286b..9af0b034 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/Status.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/Status.java
@@ -17,19 +17,60 @@ package at.asit.pdfover.gui.workflow;
import java.io.File;
+import at.asit.pdfover.gui.MainWindowBehavior;
import at.asit.pdfover.gui.workflow.states.BKUSelectionState;
+import at.asit.pdfover.gui.workflow.states.State;
import at.asit.pdfover.signator.SignaturePosition;
/**
- *
+ * Interface for persistent status of state machine
*/
public interface Status {
+ /**
+ * Sets the document
+ * @param document the document
+ */
public void setDocument(File document);
+
+ /**
+ * Gets the document
+ * @return the document
+ */
public File getDocument();
+ /**
+ * Sets the signature position
+ * @param position the position
+ */
public void setSignaturePosition(SignaturePosition position);
+
+ /**
+ * Gets the signature position
+ * @return the signature position
+ */
public SignaturePosition getSignaturePosition();
+ /**
+ * Sets the selected BKU
+ * @param bku the selected BKU
+ */
public void setBKU(BKUSelectionState.BKUs bku);
+
+ /**
+ * Gets the selected BKU
+ * @return the selected BKU
+ */
public BKUSelectionState.BKUs getBKU();
+
+ /**
+ * Gets the current state
+ * @return the current state
+ */
+ public State getCurrentState();
+
+ /**
+ * Gets the main window behavior
+ * @return the main window behavior
+ */
+ public MainWindowBehavior getBehavior();
}
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/StatusImpl.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/StatusImpl.java
new file mode 100644
index 00000000..9bc4bfec
--- /dev/null
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/StatusImpl.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2012 by A-SIT, Secure Information Technology Center Austria
+ *
+ * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
+ * the European Commission - subsequent versions of the EUPL (the "Licence");
+ * You may not use this work except in compliance with the Licence.
+ * You may obtain a copy of the Licence at:
+ * http://joinup.ec.europa.eu/software/page/eupl
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the Licence is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the Licence for the specific language governing permissions and
+ * limitations under the Licence.
+ */
+package at.asit.pdfover.gui.workflow;
+
+// Imports
+import java.io.File;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.asit.pdfover.gui.MainWindowBehavior;
+import at.asit.pdfover.gui.workflow.states.State;
+import at.asit.pdfover.gui.workflow.states.BKUSelectionState.BKUs;
+import at.asit.pdfover.signator.SignaturePosition;
+
+/**
+ *
+ */
+public class StatusImpl implements Status {
+ /**
+ * SLF4J Logger instance
+ **/
+ @SuppressWarnings("unused")
+ private static final Logger log = LoggerFactory.getLogger(StatusImpl.class);
+
+ private File document = null;
+
+ private SignaturePosition signaturePosition = null;
+
+ private BKUs bku = BKUs.NONE;
+
+ private State currentState = null;
+
+ private MainWindowBehavior behavior;
+
+ /**
+ * Constructor
+ */
+ public StatusImpl() {
+ this.behavior = new MainWindowBehavior();
+ }
+
+ @Override
+ public State getCurrentState() {
+ return this.currentState;
+ }
+
+ /**
+ * Sets the current state
+ * @param currentState
+ */
+ public void setCurrentState(State currentState) {
+ this.currentState = currentState;
+ }
+
+ /* (non-Javadoc)
+ * @see at.asit.pdfover.gui.workflow.Status#setDocument(java.io.File)
+ */
+ @Override
+ public void setDocument(File document) {
+ this.document = document;
+ }
+
+ /* (non-Javadoc)
+ * @see at.asit.pdfover.gui.workflow.Status#getDocument()
+ */
+ @Override
+ public File getDocument() {
+ return this.document;
+ }
+
+ /* (non-Javadoc)
+ * @see at.asit.pdfover.gui.workflow.Status#setSignaturePosition(at.asit.pdfover.signator.SignaturePosition)
+ */
+ @Override
+ public void setSignaturePosition(SignaturePosition position) {
+ this.signaturePosition = position;
+ }
+
+ /* (non-Javadoc)
+ * @see at.asit.pdfover.gui.workflow.Status#getSignaturePosition()
+ */
+ @Override
+ public SignaturePosition getSignaturePosition() {
+ return this.signaturePosition;
+ }
+
+ /* (non-Javadoc)
+ * @see at.asit.pdfover.gui.workflow.Status#setBKU(at.asit.pdfover.gui.workflow.states.BKUSelectionState.BKUs)
+ */
+ @Override
+ public void setBKU(BKUs bku) {
+ this.bku = bku;
+ }
+
+ /* (non-Javadoc)
+ * @see at.asit.pdfover.gui.workflow.Status#getBKU()
+ */
+ @Override
+ public BKUs getBKU() {
+ return this.bku;
+ }
+
+ /* (non-Javadoc)
+ * @see at.asit.pdfover.gui.workflow.Status#getBehavior()
+ */
+ @Override
+ public MainWindowBehavior getBehavior() {
+ return behavior;
+ }
+}
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 1d2c5524..86bd50c9 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
@@ -20,10 +20,10 @@ 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.MainWindowBehavior;
+import at.asit.pdfover.gui.MainWindow.Buttons;
+import at.asit.pdfover.gui.composites.BKUSelectionComposite;
import at.asit.pdfover.gui.workflow.StateMachine;
-import at.asit.pdfover.gui.workflow.StateMachineImpl;
-import at.asit.pdfover.gui.workflow.State;
/**
* Decides which BKU to use (preconfigured or let user choose)
@@ -67,8 +67,8 @@ public class BKUSelectionState extends State {
private BKUSelectionComposite getSelectionComposite() {
if (this.selectionComposite == null) {
- this.selectionComposite = new BKUSelectionComposite(
- this.stateMachine.getComposite(), SWT.RESIZE, this);
+ this.selectionComposite = new BKUSelectionComposite(
+ this.stateMachine.getGUIProvider().getComposite(), SWT.RESIZE, this);
}
return this.selectionComposite;
@@ -81,21 +81,35 @@ public class BKUSelectionState extends State {
BKUSelectionComposite selection = this
.getSelectionComposite();
- this.stateMachine.setTopControl(selection);
+ this.stateMachine.getGUIProvider().display(selection);
selection.layout();
- this.stateMachine.setSelectedBKU(selection.getSelected());
+ this.stateMachine.getStatus().setBKU(selection.getSelected());
- if(this.stateMachine.getSelectedBKU() == BKUs.NONE) {
- this.setNextState(this);
+ if(this.stateMachine.getStatus().getBKU() == BKUs.NONE) {
return;
}
}
- this.setNextState(new PrepareSigningState());
+ this.setNextState(new PrepareSigningState(this.stateMachine));
}
+ /* (non-Javadoc)
+ * @see at.asit.pdfover.gui.workflow.states.State#setMainWindowBehavior()
+ */
+ @Override
+ public void updateMainWindowBehavior() {
+ MainWindowBehavior behavior = this.stateMachine.getStatus().getBehavior();
+ behavior.reset();
+ behavior.setEnabled(Buttons.CONFIG, true);
+ behavior.setEnabled(Buttons.OPEN, true);
+ behavior.setEnabled(Buttons.POSITION, true);
+ behavior.setActive(Buttons.OPEN, true);
+ behavior.setActive(Buttons.POSITION, true);
+ behavior.setActive(Buttons.SIGN, true);
+ }
+
@Override
public String toString() {
- return "BKUSelectionState";
+ return this.getClass().getName();
}
}
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 2a53dcbc..2d3a31ec 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
@@ -19,16 +19,25 @@ 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.MainWindow.Buttons;
import at.asit.pdfover.gui.workflow.StateMachine;
-import at.asit.pdfover.gui.workflow.State;
/**
* Logical state for performing the BKU Request to a local BKU
*/
public class LocalBKUState extends State {
/**
+ * @param stateMachine
+ */
+ public LocalBKUState(StateMachine stateMachine) {
+ super(stateMachine);
+ }
+
+ /**
* SLF4J Logger instance
**/
+ @SuppressWarnings("unused")
private static final Logger log = LoggerFactory
.getLogger(LocalBKUState.class);
@@ -36,14 +45,26 @@ public class LocalBKUState extends State {
* @see at.asit.pdfover.gui.workflow.WorkflowState#update(at.asit.pdfover.gui.workflow.Workflow)
*/
@Override
- public void run(StateMachine stateMachine) {
+ public void run() {
// TODO Process SL Request and set SL Response
- this.setNextState(new SigningState());
+ this.setNextState(new SigningState(this.stateMachine));
}
+ /* (non-Javadoc)
+ * @see at.asit.pdfover.gui.workflow.states.State#setMainWindowBehavior()
+ */
+ @Override
+ public void updateMainWindowBehavior() {
+ MainWindowBehavior behavior = this.stateMachine.getStatus().getBehavior();
+ behavior.reset();
+ behavior.setActive(Buttons.OPEN, true);
+ behavior.setActive(Buttons.POSITION, true);
+ behavior.setActive(Buttons.SIGN, true);
+ }
+
@Override
public String toString() {
- return "LocalBKUState";
+ return this.getClass().getName();
}
}
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 169e9e59..c160a524 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
@@ -19,16 +19,25 @@ package at.asit.pdfover.gui.workflow.states;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import at.asit.pdfover.gui.MainWindow.Buttons;
+import at.asit.pdfover.gui.MainWindowBehavior;
import at.asit.pdfover.gui.workflow.StateMachine;
-import at.asit.pdfover.gui.workflow.State;
/**
* Logical state for performing the BKU Request to the A-Trust Mobile BKU
*/
public class MobileBKUState extends State {
/**
+ * @param stateMachine
+ */
+ public MobileBKUState(StateMachine stateMachine) {
+ super(stateMachine);
+ }
+
+ /**
* SLF4J Logger instance
**/
+ @SuppressWarnings("unused")
private static final Logger log = LoggerFactory
.getLogger(MobileBKUState.class);
@@ -36,15 +45,26 @@ public class MobileBKUState extends State {
* @see at.asit.pdfover.gui.workflow.WorkflowState#update(at.asit.pdfover.gui.workflow.Workflow)
*/
@Override
- public void run(StateMachine stateMachine) {
+ public void run() {
// TODO Process SL Request and set SL Response
-
- this.setNextState(new SigningState());
+ this.setNextState(new SigningState(this.stateMachine));
+ }
+
+ /* (non-Javadoc)
+ * @see at.asit.pdfover.gui.workflow.states.State#setMainWindowBehavior()
+ */
+ @Override
+ public void updateMainWindowBehavior() {
+ MainWindowBehavior behavior = this.stateMachine.getStatus().getBehavior();
+ behavior.reset();
+ behavior.setActive(Buttons.OPEN, true);
+ behavior.setActive(Buttons.POSITION, true);
+ behavior.setActive(Buttons.SIGN, true);
}
@Override
public String toString() {
- return "MobileBKUState";
+ return this.getClass().getName();
}
}
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/OpenState.java
index 6b69947a..ee90a69b 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/OpenState.java
@@ -16,66 +16,78 @@
package at.asit.pdfover.gui.workflow.states;
//Imports
-import java.io.File;
-
import org.eclipse.swt.SWT;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import at.asit.pdfover.gui.components.DataSourceSelectComposite;
+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.StateMachine;
-import at.asit.pdfover.gui.workflow.StateMachineImpl;
-import at.asit.pdfover.gui.workflow.State;
/**
* Selects the data source for the signature process.
*/
-public class DataSourceSelectionState extends State {
+public class OpenState extends State {
+
+ /**
+ * @param stateMachine
+ */
+ public OpenState(StateMachine stateMachine) {
+ super(stateMachine);
+ }
/**
* SFL4J Logger instance
**/
private static final Logger log = LoggerFactory
- .getLogger(DataSourceSelectionState.class);
+ .getLogger(OpenState.class);
private DataSourceSelectComposite selectionComposite = null;
- private DataSourceSelectComposite getSelectionComposite(StateMachineImpl workflow) {
+ private DataSourceSelectComposite getSelectionComposite() {
if (this.selectionComposite == null) {
this.selectionComposite = new DataSourceSelectComposite(
- workflow.getComposite(), SWT.RESIZE, workflow);
+ this.stateMachine.getGUIProvider().getComposite(), SWT.RESIZE, this);
}
return this.selectionComposite;
}
@Override
- public void run(StateMachine stateMachine) {
+ public void run() {
- if (workflow.getDataSource() == null) {
+ if (this.stateMachine.getStatus().getDocument() == null) {
DataSourceSelectComposite selection = this
- .getSelectionComposite(workflow);
+ .getSelectionComposite();
- workflow.setTopControl(selection);
+ this.stateMachine.getGUIProvider().display(selection);
selection.layout();
- File source = selection.getSelected();
- if(source != null) {
- workflow.setDataSource(source);
- }
+ this.stateMachine.getStatus().setDocument(selection.getSelected());
- if (workflow.getDataSource() == null) {
+ if (this.stateMachine.getStatus().getDocument() == null) {
// Not selected yet
- this.setNextState(this);
return;
}
}
- log.debug("Got Datasource: " + workflow.getDataSource().getAbsolutePath());
- this.setNextState(new PositioningState());
+ log.debug("Got Datasource: " + this.stateMachine.getStatus().getDocument().getAbsolutePath());
+ this.setNextState(new PositioningState(this.stateMachine));
}
+ /* (non-Javadoc)
+ * @see at.asit.pdfover.gui.workflow.states.State#setMainWindowBehavior()
+ */
+ @Override
+ public void updateMainWindowBehavior() {
+ MainWindowBehavior behavior = this.stateMachine.getStatus().getBehavior();
+ behavior.reset();
+ behavior.setEnabled(Buttons.CONFIG, true);
+ behavior.setActive(Buttons.OPEN, true);
+ }
+
@Override
public String toString() {
- return "DataSourceSelectionState";
+ return this.getClass().getName();
}
}
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 933dd559..8a04dd3f 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
@@ -19,8 +19,9 @@ package at.asit.pdfover.gui.workflow.states;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import at.asit.pdfover.gui.MainWindow.Buttons;
+import at.asit.pdfover.gui.MainWindowBehavior;
import at.asit.pdfover.gui.workflow.StateMachine;
-import at.asit.pdfover.gui.workflow.State;
/**
* Procduces the output of the signature process. (save file, open file)
@@ -28,21 +29,44 @@ import at.asit.pdfover.gui.workflow.State;
public class OutputState extends State {
/**
+ * @param stateMachine
+ */
+ public OutputState(StateMachine stateMachine) {
+ super(stateMachine);
+ }
+
+ /**
* SFL4J Logger instance
**/
@SuppressWarnings("unused")
private static final Logger log = LoggerFactory.getLogger(OutputState.class);
@Override
- public void run(StateMachine stateMachine) {
+ public void run() {
// TODO Preform output operations ... end workflow
- stateMachine.exit();
+ this.stateMachine.exit();
}
+ /* (non-Javadoc)
+ * @see at.asit.pdfover.gui.workflow.states.State#setMainWindowBehavior()
+ */
@Override
- public String toString() {
- return "OutputState";
+ public void updateMainWindowBehavior() {
+ MainWindowBehavior behavior = this.stateMachine.getStatus().getBehavior();
+ behavior.reset();
+ behavior.setEnabled(Buttons.CONFIG, true);
+ behavior.setEnabled(Buttons.OPEN, true);
+ behavior.setEnabled(Buttons.POSITION, true);
+ behavior.setEnabled(Buttons.SIGN, true);
+ behavior.setActive(Buttons.OPEN, true);
+ behavior.setActive(Buttons.POSITION, true);
+ behavior.setActive(Buttons.SIGN, true);
+ behavior.setActive(Buttons.FINAL, true);
}
+ @Override
+ public String toString() {
+ return this.getClass().getName();
+ }
}
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 5b764084..c7c92a89 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
@@ -20,10 +20,10 @@ import org.eclipse.swt.SWT;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import at.asit.pdfover.gui.components.PositioningComposite;
+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.StateMachine;
-import at.asit.pdfover.gui.workflow.StateMachineImpl;
-import at.asit.pdfover.gui.workflow.State;
/**
* Decides where to position the signature block
@@ -31,6 +31,13 @@ import at.asit.pdfover.gui.workflow.State;
public class PositioningState extends State {
/**
+ * @param stateMachine
+ */
+ public PositioningState(StateMachine stateMachine) {
+ super(stateMachine);
+ }
+
+ /**
* SFL4J Logger instance
**/
@SuppressWarnings("unused")
@@ -39,35 +46,47 @@ public class PositioningState extends State {
private PositioningComposite positionComposite = null;
- private PositioningComposite getPositioningComosite(StateMachineImpl workflow) {
+ private PositioningComposite getPositioningComosite() {
if (this.positionComposite == null) {
this.positionComposite = new PositioningComposite(
- workflow.getComposite(), SWT.NONE, workflow);
+ this.stateMachine.getGUIProvider().getComposite(), SWT.NONE, this);
}
return this.positionComposite;
}
@Override
- public void run(StateMachine stateMachine) {
+ public void run() {
- if(workflow.getParameter().getSignaturePosition() == null) {
- PositioningComposite position = this.getPositioningComosite(workflow);
+ if(this.stateMachine.getStatus().getSignaturePosition() == null) {
+ PositioningComposite position = this.getPositioningComosite();
- workflow.setTopControl(position);
+ this.stateMachine.getGUIProvider().display(position);
- workflow.getParameter().setSignaturePosition(position.getPosition());
+ this.stateMachine.getStatus().setSignaturePosition(position.getPosition());
- if(workflow.getParameter().getSignaturePosition() == null) {
- this.setNextState(this);
+ if(this.stateMachine.getStatus().getSignaturePosition() == null) {
return;
}
}
- this.setNextState(new BKUSelectionState());
+ this.setNextState(new BKUSelectionState(this.stateMachine));
+ }
+
+ /* (non-Javadoc)
+ * @see at.asit.pdfover.gui.workflow.states.State#setMainWindowBehavior()
+ */
+ @Override
+ public void updateMainWindowBehavior() {
+ MainWindowBehavior behavior = this.stateMachine.getStatus().getBehavior();
+ behavior.reset();
+ behavior.setEnabled(Buttons.CONFIG, true);
+ behavior.setEnabled(Buttons.OPEN, true);
+ behavior.setActive(Buttons.OPEN, true);
+ behavior.setActive(Buttons.POSITION, true);
}
@Override
public String toString() {
- return "PositioningState";
+ return this.getClass().getName();
}
}
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 45e04dfd..4fa9e362 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,16 +16,12 @@
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.StateMachine;
-import at.asit.pdfover.gui.workflow.State;
-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
@@ -34,7 +30,12 @@ import at.asit.pdfover.signator.SignaturePosition;
*/
public class PrepareConfigurationState extends State {
- public final static String BKU_SELECTION_CONFIG = "DEFAULT_BKU";
+ /**
+ * @param stateMachine
+ */
+ public PrepareConfigurationState(StateMachine stateMachine) {
+ super(stateMachine);
+ }
/**
* SFL4J Logger instance
@@ -44,55 +45,29 @@ public class PrepareConfigurationState extends State {
.getLogger(PrepareConfigurationState.class);
@Override
- public void run(StateMachine stateMachine) {
+ public void run() {
// TODO: Read config file and command line arguments
// Set usedSignerLib ...
-
+ this.stateMachine.getPDFSigner().setUsedPDFSignerLibrary(Signator.Signers.PDFAS);
+
// Create PDF Signer
- workflow.setPdfSigner(Signator.getSigner(workflow.getUsedSignerLib()));
-
- workflow.setParameter(workflow.getPdfSigner().newParameter());
-
- workflow.setSelectedBKU(PrepareConfigurationState.readSelectedBKU(workflow.getConfigurationValues()));
+ this.stateMachine.getStatus().setBKU(this.stateMachine.getConfigProvider().getDefaultBKU());
- workflow.getParameter().setSignaturePosition(readDefinedPosition(workflow.getConfigurationValues()));
+ this.stateMachine.getStatus().setSignaturePosition(this.stateMachine.getConfigProvider().getDefaultSignaturePosition());
- this.setNextState(new DataSourceSelectionState());
+ this.setNextState(new OpenState(this.stateMachine));
}
+ /* (non-Javadoc)
+ * @see at.asit.pdfover.gui.workflow.states.State#setMainWindowBehavior()
+ */
@Override
- public String toString() {
- return "PrepareConfigurationState";
+ public void updateMainWindowBehavior() {
+ //no behavior necessary yet
}
- /**
- * 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;
+ @Override
+ public String toString() {
+ return this.getClass().getName();
}
}
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 efccc5de..061869c1 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
@@ -20,10 +20,10 @@ 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.MainWindowBehavior;
+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.StateMachineImpl;
-import at.asit.pdfover.gui.workflow.State;
import at.asit.pdfover.gui.workflow.states.BKUSelectionState.BKUs;
/**
@@ -32,17 +32,24 @@ import at.asit.pdfover.gui.workflow.states.BKUSelectionState.BKUs;
public class PrepareSigningState extends State {
/**
+ * @param stateMachine
+ */
+ public PrepareSigningState(StateMachine stateMachine) {
+ super(stateMachine);
+ }
+
+ /**
* Debug background thread
*/
private final class DebugSleeperThread implements Runnable {
- private StateMachineImpl workflow;
+ private StateMachine workflow;
/**
* Default constructor
* @param work
*/
- public DebugSleeperThread(StateMachineImpl work) {
+ public DebugSleeperThread(final StateMachine work) {
this.workflow = work;
}
@@ -65,10 +72,10 @@ public class PrepareSigningState extends State {
private WaitingComposite selectionComposite = null;
- private WaitingComposite getSelectionComposite(StateMachineImpl workflow) {
+ private WaitingComposite getSelectionComposite() {
if (this.selectionComposite == null) {
this.selectionComposite = new WaitingComposite(
- workflow.getComposite(), SWT.RESIZE, workflow);
+ this.stateMachine.getGUIProvider().getComposite(), SWT.RESIZE, this);
}
return this.selectionComposite;
@@ -77,14 +84,14 @@ public class PrepareSigningState extends State {
private boolean run = false;
@Override
- public void run(StateMachine stateMachine) {
+ public void run() {
// TODO SHOW BACKGROUND ACTIVITY ....
- WaitingComposite waiting = this.getSelectionComposite(workflow);
+ WaitingComposite waiting = this.getSelectionComposite();
- workflow.setTopControl(waiting);
+ this.stateMachine.getGUIProvider().display(waiting);
if(!this.run) {
- Thread t = new Thread(new DebugSleeperThread(workflow));
+ Thread t = new Thread(new DebugSleeperThread(this.stateMachine));
this.run = true;
t.start();
return;
@@ -92,20 +99,30 @@ public class PrepareSigningState extends State {
// 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());
+ if(this.stateMachine.getStatus().getBKU() == BKUs.LOCAL) {
+ this.setNextState(new LocalBKUState(this.stateMachine));
+ } else if(this.stateMachine.getStatus().getBKU() == BKUs.MOBILE) {
+ this.setNextState(new MobileBKUState(this.stateMachine));
} else {
- log.error("Invalid selected BKU Value \"NONE\" in PrepareSigningState!");
- this.setNextState(new BKUSelectionState());
+ log.error("Invalid selected BKU Value \"NONE\" in PrepareSigningState!"); //$NON-NLS-1$
+ this.setNextState(new BKUSelectionState(this.stateMachine));
}
}
+ /* (non-Javadoc)
+ * @see at.asit.pdfover.gui.workflow.states.State#setMainWindowBehavior()
+ */
+ @Override
+ public void updateMainWindowBehavior() {
+ MainWindowBehavior behavior = this.stateMachine.getStatus().getBehavior();
+ behavior.reset();
+ behavior.setActive(Buttons.OPEN, true);
+ behavior.setActive(Buttons.POSITION, true);
+ behavior.setActive(Buttons.SIGN, true);
+ }
+
@Override
public String toString() {
- return "PrepareSigningState";
+ return this.getClass().getName();
}
-
-
}
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 27dd7420..3447fc4c 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
@@ -20,7 +20,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import at.asit.pdfover.gui.workflow.StateMachine;
-import at.asit.pdfover.gui.workflow.State;
/**
* Logical state for signing process, usually show BKU Dialog during this state.
@@ -28,20 +27,35 @@ import at.asit.pdfover.gui.workflow.State;
public class SigningState extends State {
/**
+ * @param stateMachine
+ */
+ public SigningState(StateMachine stateMachine) {
+ super(stateMachine);
+ }
+
+ /**
* SFL4J Logger instance
**/
@SuppressWarnings("unused")
private static final Logger log = LoggerFactory.getLogger(SigningState.class);
@Override
- public void run(StateMachine stateMachine) {
+ public void run() {
// TODO Wait until output ready and set output
- this.setNextState(new OutputState());
+ this.setNextState(new OutputState(this.stateMachine));
}
+ /* (non-Javadoc)
+ * @see at.asit.pdfover.gui.workflow.states.State#setMainWindowBehavior()
+ */
+ @Override
+ public void updateMainWindowBehavior() {
+ //no change of behavior necessary
+ }
+
@Override
public String toString() {
- return "SigningState";
+ return this.getClass().getName();
}
}
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/State.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/State.java
index 305c5033..8b9a3ebb 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/State.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/State.java
@@ -13,12 +13,15 @@
* See the Licence for the specific language governing permissions and
* limitations under the Licence.
*/
-package at.asit.pdfover.gui.workflow;
+package at.asit.pdfover.gui.workflow.states;
//Imports
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import at.asit.pdfover.gui.MainWindowBehavior;
+import at.asit.pdfover.gui.workflow.StateMachine;
+
/**
* Base state class
*/
@@ -36,9 +39,10 @@ public abstract class State {
private static final Logger log = LoggerFactory.getLogger(State.class);
private State nextState = null;
-
+
/**
* Default Workflow State constructor
+ * @param stateMachine the State Machine
*/
public State(StateMachine stateMachine) {
this.stateMachine = stateMachine;
@@ -63,7 +67,6 @@ public abstract class State {
/**
* Perform main logic for this state
- * @param stateMachine the state machine
*/
public abstract void run();
@@ -72,6 +75,12 @@ public abstract class State {
*/
public void updateStateMachine()
{
- stateMachine.update();
+ this.stateMachine.update();
}
+
+ /**
+ * Update the main window behavior of this state if necessary
+ * Should update this.stateMachine.getStatus().getBehavior()
+ */
+ public abstract void updateMainWindowBehavior();
}