From 8e56cd2c9a300f7f9251263d6aceb2b00453324b Mon Sep 17 00:00:00 2001 From: Tobias Kellner Date: Wed, 3 Dec 2014 18:10:46 +0100 Subject: Add cancel button to Mobile BKU dialogs --- .../asit/pdfover/gui/bku/MobileBKUConnector.java | 14 ++++-- .../composites/MobileBKUEnterNumberComposite.java | 56 +++++++++++++++++----- .../gui/composites/MobileBKUEnterTANComposite.java | 53 +++++++++++++++++--- .../gui/workflow/states/MobileBKUState.java | 16 ++++++- 4 files changed, 115 insertions(+), 24 deletions(-) (limited to 'pdf-over-gui/src/main/java') diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/MobileBKUConnector.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/MobileBKUConnector.java index f08c885e..828a23ac 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/MobileBKUConnector.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/bku/MobileBKUConnector.java @@ -76,11 +76,15 @@ public class MobileBKUConnector implements BkuSlConnector { do { // Check if credentials are available, get them from user if not this.state.checkCredentials(); - + + if (this.state.getStatus().getErrorMessage() != null && + this.state.getStatus().getErrorMessage().equals("cancel")) //$NON-NLS-1$ + throw new SignatureException(new IllegalStateException()); + // Post credentials try { String responseData = handler.postCredentials(); - + // Now we have received some data lets check it: log.debug("Response from mobile BKU: " + responseData); //$NON-NLS-1$ @@ -103,7 +107,11 @@ public class MobileBKUConnector implements BkuSlConnector { do { // Get TAN this.state.checkTAN(); - + + if (this.state.getStatus().getErrorMessage() != null && + this.state.getStatus().getErrorMessage().equals("cancel")) //$NON-NLS-1$ + throw new SignatureException(new IllegalStateException()); + // Post TAN try { String responseData = handler.postTAN(); diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/MobileBKUEnterNumberComposite.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/MobileBKUEnterNumberComposite.java index 17e82d07..d6e6a5e5 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/MobileBKUEnterNumberComposite.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/MobileBKUEnterNumberComposite.java @@ -19,6 +19,7 @@ package at.asit.pdfover.gui.composites; import org.eclipse.swt.SWT; import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintListener; +import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.graphics.Image; @@ -54,7 +55,7 @@ public class MobileBKUEnterNumberComposite extends StateComposite { /** * */ - private final SelectionListener okListener = new SelectionListener() { + private final SelectionListener okListener = new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { if(!MobileBKUEnterNumberComposite.this.btn_ok.isEnabled()) { @@ -79,7 +80,7 @@ public class MobileBKUEnterNumberComposite extends StateComposite { MobileBKUEnterNumberComposite.this.mobilePassword = password; MobileBKUEnterNumberComposite.this.setUserAck(true); - + MobileBKUEnterNumberComposite.this.btn_ok.setEnabled(false); } catch(InvalidNumberException ex) { @@ -100,19 +101,22 @@ public class MobileBKUEnterNumberComposite extends StateComposite { MobileBKUEnterNumberComposite.this.txt_number.setFocus(); return; } - + //MobileBKUEnterNumberComposite.this.state.updateStateMachine(); } + }; - /* (non-Javadoc) - * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent) - */ + /** + * + */ + private final SelectionListener cancelListener = new SelectionAdapter() { @Override - public void widgetDefaultSelected(SelectionEvent e) { - // Nothing to do here + public void widgetSelected(SelectionEvent e) { + MobileBKUEnterNumberComposite.this.setUserCancel(true); } }; + String mobileNumber; String mobilePassword; @@ -124,6 +128,7 @@ public class MobileBKUEnterNumberComposite extends StateComposite { String errorMessage = null; boolean userAck = false; + boolean userCancel = false; /** * @return the userAck @@ -140,13 +145,28 @@ public class MobileBKUEnterNumberComposite extends StateComposite { this.userAck = userAck; } - private Label lbl_error; + /** + * @return the userCancel + */ + public boolean isUserCancel() { + return this.userCancel; + } - private Label lbl_password; + /** + * @param userCancel + * the userCancel to set + */ + public void setUserCancel(boolean userCancel) { + this.userCancel = userCancel; + } + + private Label lbl_error; + private Label lbl_password; private Label lbl_number; Button btn_ok; + Button btn_cancel; /** * @return the errorMessage @@ -266,16 +286,26 @@ public class MobileBKUEnterNumberComposite extends StateComposite { //fd_btn_ok.top = new FormAttachment(87, 0); fd_btn_ok.bottom = new FormAttachment(100, -20); fd_btn_ok.right = new FormAttachment(100, -20); - fd_btn_ok.left = new FormAttachment(100, -70); + //fd_btn_ok.left = new FormAttachment(100, -70); this.btn_ok.setLayoutData(fd_btn_ok); this.btn_ok.addSelectionListener(this.okListener); - + + this.btn_cancel = new Button(containerComposite, SWT.NATIVE); + this.btn_cancel.setText(Messages.getString("common.Cancel")); //$NON-NLS-1$ + FormData fd_btn_cancel = new FormData(); + //fd_btn_cancel.top = new FormAttachment(87, 0); + fd_btn_cancel.bottom = new FormAttachment(100, -20); + fd_btn_cancel.right = new FormAttachment(this.btn_ok, -10); + //fd_btn_cancel.left = new FormAttachment(100, -70); + this.btn_cancel.setLayoutData(fd_btn_cancel); + this.btn_cancel.addSelectionListener(this.cancelListener); + this.lbl_error = new Label(containerComposite, SWT.WRAP | SWT.NATIVE); FormData fd_lbl_error = new FormData(); //fd_lbl_error.top = new FormAttachment(70, -15); fd_lbl_error.bottom = new FormAttachment(100, -20); fd_lbl_error.left = new FormAttachment(15, 0); - fd_lbl_error.right = new FormAttachment(this.btn_ok, -10); + fd_lbl_error.right = new FormAttachment(this.btn_cancel, -10); this.lbl_error.setLayoutData(fd_lbl_error); } diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/MobileBKUEnterTANComposite.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/MobileBKUEnterTANComposite.java index 28f8b65e..66063a62 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/MobileBKUEnterTANComposite.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/MobileBKUEnterTANComposite.java @@ -92,6 +92,22 @@ public class MobileBKUEnterTANComposite extends StateComposite { } } + /** + * + */ + private final class CancelSelectionListener extends SelectionAdapter { + /** + * Empty constructor + */ + public CancelSelectionListener() { + } + + @Override + public void widgetSelected(SelectionEvent e) { + MobileBKUEnterTANComposite.this.setUserCancel(true); + } + } + /** * SLF4J Logger instance **/ @@ -101,6 +117,7 @@ public class MobileBKUEnterTANComposite extends StateComposite { Text txt_tan; boolean userAck = false; + boolean userCancel = false; private Label lblRefVal; @@ -126,12 +143,11 @@ public class MobileBKUEnterTANComposite extends StateComposite { String tan; private Label lblTries; - private Label lblRefValLabel; - private Label lblTan; Button btn_ok; + Button btn_cancel; /** * @return the userAck @@ -140,6 +156,13 @@ public class MobileBKUEnterTANComposite extends StateComposite { return this.userAck; } + /** + * @return the userCancel + */ + public boolean isUserCancel() { + return this.userCancel; + } + /** * Set how many tries are left * @@ -182,6 +205,14 @@ public class MobileBKUEnterTANComposite extends StateComposite { this.userAck = userAck; } + /** + * @param userCancel + * the userCancel to set + */ + public void setUserCancel(boolean userCancel) { + this.userCancel = userCancel; + } + /** * @return the reference value */ @@ -375,8 +406,6 @@ public class MobileBKUEnterTANComposite extends StateComposite { } }); - this.btn_ok = new Button(containerComposite, SWT.NATIVE); - Link lnk_sig_data = new Link(containerComposite, SWT.NATIVE | SWT.RESIZE); FormData fd_lnk_data = new FormData(); @@ -387,11 +416,14 @@ public class MobileBKUEnterTANComposite extends StateComposite { lnk_sig_data.addSelectionListener(new ShowSignatureDataListener()); lnk_sig_data.setText(Messages.getString("mobileBKU.show")); //$NON-NLS-1$ lnk_sig_data.setToolTipText(Messages.getString("mobileBKU.show_tooltip")); //$NON-NLS-1$ - + + this.btn_ok = new Button(containerComposite, SWT.NATIVE); + this.btn_cancel = new Button(containerComposite, SWT.NATIVE); + this.lblTries = new Label(containerComposite, SWT.WRAP | SWT.NATIVE); FormData fd_lbl_tries = new FormData(); // fd_lbl_tries.left = new FormAttachment(15, 5); - fd_lbl_tries.right = new FormAttachment(this.btn_ok, -10); + fd_lbl_tries.right = new FormAttachment(this.btn_cancel, -10); // fd_lbl_tries.top = new FormAttachment(70, -15); fd_lbl_tries.bottom = new FormAttachment(100, -20); this.lblTries.setLayoutData(fd_lbl_tries); @@ -406,6 +438,15 @@ public class MobileBKUEnterTANComposite extends StateComposite { this.btn_ok.setText(Messages.getString("common.Ok")); //$NON-NLS-1$ this.btn_ok.addSelectionListener(new OkSelectionListener()); + FormData fd_btn_cancel = new FormData(); + // fd_btn_cancel.left = new FormAttachment(95, 0); + fd_btn_cancel.right = new FormAttachment(this.btn_ok, -20); + //fd_btn_cancel.left = new FormAttachment(100, -70); + fd_btn_cancel.bottom = new FormAttachment(100, -20); + + this.btn_cancel.setLayoutData(fd_btn_cancel); + this.btn_cancel.setText(Messages.getString("common.Cancel")); //$NON-NLS-1$ + this.btn_cancel.addSelectionListener(new CancelSelectionListener()); } @Override 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 4a825d17..1df8f755 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 @@ -223,13 +223,19 @@ public class MobileBKUState extends State { getStateMachine().getGUIProvider().display(ui); Display display = getStateMachine().getGUIProvider().getMainShell().getDisplay(); - while (!ui.isUserAck()) { + while (!ui.isUserAck() && !ui.isUserCancel()) { if (!display.readAndDispatch()) { display.sleep(); } } } + if (ui.isUserCancel()) { + ui.setUserCancel(false); + mobileStatus.setErrorMessage("cancel"); //$NON-NLS-1$ + return; + } + // user hit ok ui.setUserAck(false); @@ -272,13 +278,19 @@ public class MobileBKUState extends State { getStateMachine().getGUIProvider().display(tan); Display display = getStateMachine().getGUIProvider().getMainShell().getDisplay(); - while (!tan.isUserAck()) { + while (!tan.isUserAck() && !tan.isUserCancel()) { if (!display.readAndDispatch()) { display.sleep(); } } } + if (tan.isUserCancel()) { + tan.setUserCancel(false); + mobileStatus.setErrorMessage("cancel"); //$NON-NLS-1$ + return; + } + // user hit ok! tan.setUserAck(false); -- cgit v1.2.3