summaryrefslogtreecommitdiff
path: root/BKULocal/src/main/java/at/gv
diff options
context:
space:
mode:
Diffstat (limited to 'BKULocal/src/main/java/at/gv')
-rw-r--r--BKULocal/src/main/java/at/gv/egiz/bku/local/stal/BKUGuiProxy.java130
-rw-r--r--BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSignRequestHandler.java84
-rw-r--r--BKULocal/src/main/java/at/gv/egiz/bku/local/stal/PINDialog.java214
-rw-r--r--BKULocal/src/main/java/at/gv/egiz/bku/local/stal/QuitRequestHandler.java41
-rw-r--r--BKULocal/src/main/java/at/gv/egiz/bku/local/stal/SMCCSTAL.java100
-rw-r--r--BKULocal/src/main/java/at/gv/egiz/bku/local/stal/SMCCSTALFactory.java100
-rw-r--r--BKULocal/src/main/java/at/gv/egiz/bku/local/stal/SwingInsertCardDialog.java147
-rw-r--r--BKULocal/src/main/java/at/gv/egiz/bku/local/stal/SwingPINProvider.java57
-rw-r--r--BKULocal/src/main/java/at/gv/egiz/bku/local/stal/SwingPinDialog.java265
9 files changed, 307 insertions, 831 deletions
diff --git a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/BKUGuiProxy.java b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/BKUGuiProxy.java
new file mode 100644
index 00000000..0bed928d
--- /dev/null
+++ b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/BKUGuiProxy.java
@@ -0,0 +1,130 @@
+package at.gv.egiz.bku.local.stal;
+
+import java.awt.Container;
+import java.awt.event.ActionListener;
+import java.util.List;
+
+import javax.swing.JDialog;
+
+import at.gv.egiz.bku.gui.BKUGUIFacade;
+import at.gv.egiz.smcc.PINSpec;
+import at.gv.egiz.stal.HashDataInput;
+
+public class BKUGuiProxy implements BKUGUIFacade {
+
+ private BKUGUIFacade delegate;
+ private JDialog dialog;
+
+ public BKUGuiProxy(JDialog dialog, BKUGUIFacade delegate) {
+ this.delegate = delegate;
+ this.dialog = dialog;
+ }
+
+ private void showDialog() {
+ dialog.setVisible(true);
+ dialog.setAlwaysOnTop(true);
+ }
+
+ @Override
+ public char[] getPin() {
+ return delegate.getPin();
+ }
+
+ @Override
+ public void init(Container contentPane, String localeString) {
+ delegate.init(contentPane, localeString);
+ }
+
+ @Override
+ public void showCardNotSupportedDialog(ActionListener cancelListener,
+ String actionCommand) {
+ showDialog();
+ delegate.showCardNotSupportedDialog(cancelListener, actionCommand);
+ }
+
+ @Override
+ public void showCardPINDialog(PINSpec pinSpec, ActionListener okListener,
+ String okCommand, ActionListener cancelListener, String cancelCommand) {
+ showDialog();
+ delegate.showCardPINDialog(pinSpec, okListener, okCommand, cancelListener,
+ cancelCommand);
+ }
+
+ @Override
+ public void showCardPINRetryDialog(PINSpec pinSpec, int numRetries,
+ ActionListener okListener, String okCommand,
+ ActionListener cancelListener, String cancelCommand) {
+ showDialog();
+ delegate.showCardPINRetryDialog(pinSpec, numRetries, okListener, okCommand,
+ cancelListener, cancelCommand);
+ }
+
+ @Override
+ public void showErrorDialog(String errorMsg, ActionListener okListener,
+ String actionCommand) {
+ showDialog();
+ delegate.showErrorDialog(errorMsg, okListener, actionCommand);
+ }
+
+ @Override
+ public void showErrorDialog(String errorMsg) {
+ showDialog();
+ delegate.showErrorDialog(errorMsg);
+ }
+
+ @Override
+ public void showHashDataInputDialog(List<HashDataInput> signedReferences,
+ ActionListener okListener, String actionCommand) {
+ showDialog();
+ delegate.showHashDataInputDialog(signedReferences, okListener,
+ actionCommand);
+ }
+
+ @Override
+ public void showInsertCardDialog(ActionListener cancelListener,
+ String actionCommand) {
+ showDialog();
+ delegate.showInsertCardDialog(cancelListener, actionCommand);
+ }
+
+ @Override
+ public void showLoginDialog(ActionListener loginListener, String actionCommand) {
+ showDialog();
+
+ delegate.showLoginDialog(loginListener, actionCommand);
+ }
+
+ @Override
+ public void showSignaturePINDialog(PINSpec pinSpec,
+ ActionListener signListener, String signCommand,
+ ActionListener cancelListener, String cancelCommand,
+ ActionListener hashdataListener, String hashdataCommand) {
+ showDialog();
+ delegate.showSignaturePINDialog(pinSpec, signListener, signCommand,
+ cancelListener, cancelCommand, hashdataListener, hashdataCommand);
+ }
+
+ @Override
+ public void showSignaturePINRetryDialog(PINSpec pinSpec, int numRetries,
+ ActionListener okListener, String okCommand,
+ ActionListener cancelListener, String cancelCommand,
+ ActionListener hashdataListener, String hashdataCommand) {
+ showDialog();
+ delegate.showSignaturePINRetryDialog(pinSpec, numRetries, okListener,
+ okCommand, cancelListener, cancelCommand, hashdataListener,
+ hashdataCommand);
+ }
+
+ @Override
+ public void showWaitDialog(String waitMessage) {
+ showDialog();
+ delegate.showWaitDialog(waitMessage);
+ }
+
+ @Override
+ public void showWelcomeDialog() {
+ showDialog();
+ delegate.showWelcomeDialog();
+ }
+
+}
diff --git a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSignRequestHandler.java b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSignRequestHandler.java
new file mode 100644
index 00000000..f8546e49
--- /dev/null
+++ b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSignRequestHandler.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2008 Federal Chancellery Austria and
+ * Graz University of Technology
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package at.gv.egiz.bku.local.stal;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.bku.smccstal.SMCCSTALRequestHandler;
+import at.gv.egiz.bku.smccstal.SignRequestHandler;
+import at.gv.egiz.stal.HashDataInput;
+import at.gv.egiz.stal.STALRequest;
+import at.gv.egiz.stal.STALResponse;
+import at.gv.egiz.stal.SignRequest;
+import at.gv.egiz.stal.signedinfo.ReferenceType;
+
+/**
+ *
+ * @author clemens
+ */
+public class LocalSignRequestHandler extends SignRequestHandler {
+
+ private static final Log log = LogFactory
+ .getLog(LocalSignRequestHandler.class);
+ private List<HashDataInput> hashDataInput = Collections.EMPTY_LIST;
+
+ public LocalSignRequestHandler() {
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public STALResponse handleRequest(STALRequest request) {
+ if (request instanceof SignRequest) {
+ SignRequest signReq = (SignRequest) request;
+ hashDataInput = signReq.getHashDataInput();
+ }
+ return super.handleRequest(request);
+ }
+
+ @Override
+ protected List<HashDataInput> getHashDataInputs(
+ List<ReferenceType> dsigReferences) throws Exception {
+ ArrayList<HashDataInput> result = new ArrayList<HashDataInput>();
+ for (ReferenceType dsigRef : dsigReferences) {
+ // don't get Manifest, QualifyingProperties, ...
+ if (dsigRef.getType() == null) {
+ String dsigRefId = dsigRef.getId();
+ if (dsigRefId != null) {
+ for (HashDataInput hdi : hashDataInput) {
+ if (hdi.getReferenceId().equals(dsigRefId)) {
+ result.add(hdi);
+ }
+ }
+ } else {
+ throw new Exception(
+ "Cannot get HashDataInput for dsig:Reference without Id attribute");
+ }
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public SMCCSTALRequestHandler newInstance() {
+ return new LocalSignRequestHandler();
+ }
+}
diff --git a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/PINDialog.java b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/PINDialog.java
deleted file mode 100644
index 5bc6bab5..00000000
--- a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/PINDialog.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
-* Copyright 2008 Federal Chancellery Austria and
-* Graz University of Technology
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package at.gv.egiz.bku.local.stal;
-
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.swing.JButton;
-import javax.swing.JPasswordField;
-import javax.swing.text.AttributeSet;
-import javax.swing.text.BadLocationException;
-import javax.swing.text.PlainDocument;
-
-import at.gv.egiz.smcc.PINSpec;
-
-public class PINDialog extends javax.swing.JDialog implements ActionListener {
-
- // Variables declaration - do not modify
- private javax.swing.JButton okButton;
- private javax.swing.JButton cancelButton;
- private javax.swing.JLabel label;
- private javax.swing.JPasswordField password;
- // End of variables declaration
-
- private PINSpec pinSpec;
- private String pinString;
- private boolean finished = false;
-
- class PinDocument extends PlainDocument {
- private Pattern pattern;
-
- public PinDocument() {
- pattern = Pattern.compile(pinSpec.getRexepPattern());
- }
-
- public void insertString(int offs, String str, AttributeSet a)
- throws BadLocationException {
- if (pinSpec.getMaxLength() >= (getLength() + str.length())) {
- Matcher matcher = pattern.matcher(str);
- if (matcher.matches()) {
- super.insertString(offs, str, a);
- }
- }
- okButton.setEnabled(getLength() >= pinSpec.getMinLength());
- }
-
- @Override
- public void remove(int offs, int len) throws BadLocationException {
- super.remove(offs, len);
- okButton.setEnabled(getLength() >= pinSpec.getMinLength());
- }
- }
-
- public PINDialog() {
- }
-
- private synchronized void finished(boolean ok) {
- if (ok) {
- pinString = password.getText();
- } else {
- pinString = null;
- }
- finished = true;
- notifyAll();
- }
-
- public synchronized void waitFinished() {
- while (!finished) {
- try {
- wait();
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
-
- public String getPIN() {
- return pinString;
- }
-
- /** Creates new form NewJDialog */
- public PINDialog(java.awt.Frame parent, boolean modal, PINSpec pinSpec,
- int retries) {
- super(parent, modal);
- this.pinSpec = pinSpec;
- initComponents();
- }
-
- private void initComponents() {
- okButton = new javax.swing.JButton();
- cancelButton = new javax.swing.JButton();
- password = new javax.swing.JPasswordField();
- label = new javax.swing.JLabel();
- setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
-
- setTitle("PIN Dialog"); // NOI18N
- setName("Form"); // NOI18N
-
- okButton.setText("OK"); // NOI18N
- okButton.setName("okButton"); // NOI18N
- okButton.setEnabled(false);
- okButton.addActionListener(this);
-
- cancelButton.setText("Cancel"); // NOI18N
- cancelButton.setName("cancelButton"); // NOI18N
- cancelButton.addActionListener(this);
-
- password.setText(""); // NOI18N
- password.setName("password"); // NOI18N
- password.addActionListener(this);
- password.setDocument(new PinDocument());
-
- label.setText("PIN: "); // NOI18N
- label.setName("jLabel1"); // NOI18N
-
- javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
- getContentPane());
- getContentPane().setLayout(layout);
- layout.setHorizontalGroup(layout.createParallelGroup(
- javax.swing.GroupLayout.Alignment.LEADING).addGroup(
- layout.createSequentialGroup().addContainerGap().addGroup(
- layout.createParallelGroup(
- javax.swing.GroupLayout.Alignment.LEADING).addGroup(
- layout.createSequentialGroup().addComponent(label,
- javax.swing.GroupLayout.PREFERRED_SIZE, 61,
- javax.swing.GroupLayout.PREFERRED_SIZE).addPreferredGap(
- javax.swing.LayoutStyle.ComponentPlacement.RELATED,
- javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(password,
- javax.swing.GroupLayout.PREFERRED_SIZE, 127,
- javax.swing.GroupLayout.PREFERRED_SIZE)).addGroup(
- javax.swing.GroupLayout.Alignment.TRAILING,
- layout.createSequentialGroup().addComponent(cancelButton)
- .addPreferredGap(
- javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(okButton))).addContainerGap()));
- layout.setVerticalGroup(layout.createParallelGroup(
- javax.swing.GroupLayout.Alignment.LEADING).addGroup(
- layout.createSequentialGroup().addContainerGap().addGroup(
- layout.createParallelGroup(
- javax.swing.GroupLayout.Alignment.BASELINE).addComponent(label,
- javax.swing.GroupLayout.PREFERRED_SIZE, 33,
- javax.swing.GroupLayout.PREFERRED_SIZE).addComponent(password,
- javax.swing.GroupLayout.PREFERRED_SIZE,
- javax.swing.GroupLayout.DEFAULT_SIZE,
- javax.swing.GroupLayout.PREFERRED_SIZE)).addPreferredGap(
- javax.swing.LayoutStyle.ComponentPlacement.RELATED, 14,
- Short.MAX_VALUE).addGroup(
- layout.createParallelGroup(
- javax.swing.GroupLayout.Alignment.BASELINE).addComponent(
- okButton).addComponent(cancelButton)).addContainerGap()));
-
- pack();
- }
-
- /**
- * @param args
- * the command line arguments
- */
- public static void main(String args[]) {
- java.awt.EventQueue.invokeLater(new Runnable() {
- public void run() {
- PINDialog dialog = new PINDialog(new javax.swing.JFrame(), true,
- new PINSpec(1, 5, "[0-9]*", "Hansi"), 10);
- dialog.setResizable(false);
- dialog.addWindowListener(new java.awt.event.WindowAdapter() {
- public void windowClosing(java.awt.event.WindowEvent e) {
- System.exit(0);
- }
- });
- dialog.setVisible(true);
- }
- });
- }
-
- @Override
- public void actionPerformed(ActionEvent e) {
- if (e.getSource() instanceof JButton) {
- JButton pressed = (JButton) e.getSource();
- if (pressed.getName().equals("okButton")) {
- finished(true);
- } else if (pressed.getName().equals("cancelButton")) {
- finished(false);
- }
- } else if (e.getSource() instanceof JPasswordField) {
- JPasswordField pwf = (JPasswordField) e.getSource();
- if (pwf.getName().equals("password")) {
- if (password.getPassword().length >= pinSpec.getMinLength()) {
- finished(true);
- }
- }
- }
- }
-
-}
diff --git a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/QuitRequestHandler.java b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/QuitRequestHandler.java
deleted file mode 100644
index 5596b7bb..00000000
--- a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/QuitRequestHandler.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-* Copyright 2008 Federal Chancellery Austria and
-* Graz University of Technology
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package at.gv.egiz.bku.local.stal;
-
-import at.gv.egiz.bku.smccstal.AbstractRequestHandler;
-import at.gv.egiz.bku.smccstal.SMCCSTALRequestHandler;
-import at.gv.egiz.stal.STALRequest;
-import at.gv.egiz.stal.STALResponse;
-
-public class QuitRequestHandler extends AbstractRequestHandler {
-
- @Override
- public STALResponse handleRequest(STALRequest request) {
- return null;
- }
-
- @Override
- public boolean requireCard() {
- return false;
- }
-
- @Override
- public SMCCSTALRequestHandler newInstance() {
- return this;
- }
-
-}
diff --git a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/SMCCSTAL.java b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/SMCCSTAL.java
index 26ec2aa8..6f9e72c5 100644
--- a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/SMCCSTAL.java
+++ b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/SMCCSTAL.java
@@ -1,95 +1,33 @@
-/*
-* Copyright 2008 Federal Chancellery Austria and
-* Graz University of Technology
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
package at.gv.egiz.bku.local.stal;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.Locale;
+import java.util.List;
+import java.util.ResourceBundle;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import javax.swing.JDialog;
import at.gv.egiz.bku.gui.BKUGUIFacade;
-import at.gv.egiz.bku.local.ui.TrayIconDialog;
-import at.gv.egiz.bku.smccstal.AbstractRequestHandler;
-import at.gv.egiz.bku.smccstal.AbstractSMCCSTAL;
-import at.gv.egiz.bku.smccstal.STALMessageConsumer;
-import at.gv.egiz.smcc.PINProvider;
-import at.gv.egiz.smcc.util.SMCCHelper;
-import at.gv.egiz.stal.QuitRequest;
+import at.gv.egiz.bku.online.applet.BKUWorker;
+import at.gv.egiz.stal.STALRequest;
+import at.gv.egiz.stal.STALResponse;
+import at.gv.egiz.stal.SignRequest;
-public class SMCCSTAL extends AbstractSMCCSTAL implements STALMessageConsumer {
- private static Log log = LogFactory.getLog(SMCCSTAL.class);
+public class SMCCSTAL extends BKUWorker {
- protected PINProvider pinProvider = new SwingPINProvider();
- protected SwingInsertCardDialog insertCard = new SwingInsertCardDialog();
- private boolean canceled = false;
+ private JDialog container;
- static {
- addRequestHandler(QuitRequest.class, new QuitRequestHandler());
- }
-
- public SMCCSTAL() {
- AbstractRequestHandler.setMessageConsumer(this);
- }
-
- /**
- *
- * @return if the user canceled
- */
- protected boolean waitForCard() {
- canceled = false;
- while ((smccHelper.getResultCode() != SMCCHelper.CARD_FOUND) && (!canceled)) {
- insertCard.setVisible(true);
- insertCard.setAlwaysOnTop(true);
- insertCard.addCanceledListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- canceled = true;
- }
- });
- try {
- smccHelper.update(1000);
- } catch (Exception ex) {
- log.info(ex);
- }
- }
- insertCard.setVisible(false);
- signatureCard = smccHelper.getSignatureCard(locale);
- return canceled;
+ public SMCCSTAL(BKUGUIFacade gui, JDialog container,
+ ResourceBundle errorMessageBundle) {
+ super(gui, errorMessageBundle);
+ this.container = container;
+ addRequestHandler(SignRequest.class, new LocalSignRequestHandler());
}
@Override
- public void setLocale(Locale locale) {
- super.setLocale(locale);
- if (pinProvider instanceof SwingPINProvider) {
- ((SwingPINProvider) pinProvider).setLocale(locale);
- }
+ public List<STALResponse> handleRequest(List<STALRequest> requestList) {
+ signatureCard = null;
+ List<STALResponse> responses = super.handleRequest(requestList);
+ container.setVisible(false);
+ return responses;
}
- @Override
- public void consumeNewSTALMessage(String captionId, String messageId) {
- TrayIconDialog.getInstance().displayInfo(captionId, messageId);
- }
-
- @Override
- protected BKUGUIFacade getGUI() {
- // TODO Auto-generated method stub
- //FIXME
- return null;
- }
}
diff --git a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/SMCCSTALFactory.java b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/SMCCSTALFactory.java
index 014d884a..97646d09 100644
--- a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/SMCCSTALFactory.java
+++ b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/SMCCSTALFactory.java
@@ -1,27 +1,75 @@
/*
-* Copyright 2008 Federal Chancellery Austria and
-* Graz University of Technology
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package at.gv.egiz.bku.local.stal;
-
-import at.gv.egiz.stal.STAL;
-import at.gv.egiz.stal.STALFactory;
-
-public class SMCCSTALFactory implements STALFactory {
- @Override
- public STAL createSTAL() {
- return new SMCCSTAL();
- }
-}
+ * Copyright 2008 Federal Chancellery Austria and
+ * Graz University of Technology
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package at.gv.egiz.bku.local.stal;
+
+import java.awt.Dimension;
+import java.awt.Toolkit;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+import javax.swing.JDialog;
+import javax.swing.WindowConstants;
+
+import at.gv.egiz.bku.gui.BKUGUIFacade;
+import at.gv.egiz.bku.gui.BKUGUIFactory;
+import at.gv.egiz.bku.online.applet.BKUApplet;
+import at.gv.egiz.stal.STAL;
+import at.gv.egiz.stal.STALFactory;
+
+public class SMCCSTALFactory implements STALFactory {
+
+ private Locale locale;
+ private SMCCSTAL stal;
+ private JDialog dialog;
+
+ @Override
+ public STAL createSTAL() {
+ if (stal == null) {
+ ResourceBundle resourceBundle;
+ if (locale != null) {
+ resourceBundle = ResourceBundle.getBundle(
+ BKUApplet.RESOURCE_BUNDLE_BASE, locale);
+ } else {
+ resourceBundle = ResourceBundle
+ .getBundle(BKUApplet.RESOURCE_BUNDLE_BASE);
+ }
+ dialog = new JDialog();
+ BKUGUIFacade gui = BKUGUIFactory.createGUI();
+ gui.init(dialog.getContentPane(), locale.toString());
+ stal = new SMCCSTAL(new BKUGuiProxy(dialog, gui), dialog, resourceBundle);
+ dialog.setPreferredSize(new Dimension(400, 200));
+ dialog.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
+ Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+ Dimension frameSize = dialog.getSize();
+ if (frameSize.height > screenSize.height) {
+ frameSize.height = screenSize.height;
+ }
+ if (frameSize.width > screenSize.width) {
+ frameSize.width = screenSize.width;
+ }
+ dialog.setLocation((screenSize.width - frameSize.width) / 2,
+ (screenSize.height - frameSize.height) / 2);
+ dialog.pack();
+ }
+ return stal;
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ this.locale = locale;
+ }
+}
diff --git a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/SwingInsertCardDialog.java b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/SwingInsertCardDialog.java
deleted file mode 100644
index eb76f2f2..00000000
--- a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/SwingInsertCardDialog.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
-* Copyright 2008 Federal Chancellery Austria and
-* Graz University of Technology
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package at.gv.egiz.bku.local.stal;
-
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.Toolkit;
-import java.awt.event.ActionListener;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-import java.awt.event.WindowListener;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Locale;
-import java.util.ResourceBundle;
-
-import javax.swing.ImageIcon;
-import javax.swing.JDialog;
-
-import at.gv.egiz.bku.utils.StreamUtil;
-
-public class SwingInsertCardDialog extends JDialog {
-
- private javax.swing.JButton cancelButton;
- private javax.swing.JLabel jLabel1;
- private javax.swing.JLabel jLabel2;
- private Locale locale = Locale.getDefault();
-
- public SwingInsertCardDialog() {
- super((java.awt.Frame) null, false);
- initComponents();
- }
-
- public void setLocale(Locale locale) {
- this.locale = locale;
- }
-
- private void initComponents() {
- ResourceBundle rb = ResourceBundle.getBundle(
- "at/gv/egiz/bku/local/Userdialog", locale);
- setTitle(rb.getString("Insert.Header"));
- jLabel1 = new javax.swing.JLabel();
- jLabel2 = new javax.swing.JLabel();
- cancelButton = new javax.swing.JButton();
-
- setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
- setName("Form"); // NOI18N
- setUndecorated(true);
-
- jLabel1.setFont(new Font("Tahoma", Font.BOLD, 14));
- jLabel1.setText(rb.getString("Insert.Text")); // NOI18N
- jLabel1.setName("text"); // NOI18N
-
- ByteArrayOutputStream os = new ByteArrayOutputStream();
- InputStream is = getClass().getClassLoader().getResourceAsStream(
- "at/gv/egiz/bku/local/logo.png");
- try {
- StreamUtil.copyStream(is, os);
- jLabel2.setIcon(new ImageIcon(os.toByteArray())); // NOI18N
- } catch (IOException e) {
- jLabel2.setText("Chipperling image missing"); // NOI18N
- }
- jLabel2.setName("jLabel2"); // NOI18N
- cancelButton.setText(rb.getString("Insert.Button.Cancel")); // NOI18N
- cancelButton.setName("jButton1"); // NOI18N
-
- javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
- getContentPane());
- getContentPane().setLayout(layout);
- layout.setHorizontalGroup(layout.createParallelGroup(
- javax.swing.GroupLayout.Alignment.LEADING).addGroup(
- layout.createSequentialGroup().addContainerGap().addComponent(jLabel2)
- .addGroup(
- layout.createParallelGroup(
- javax.swing.GroupLayout.Alignment.TRAILING).addGroup(
- layout.createSequentialGroup().addGap(35, 35, 35)
- .addComponent(jLabel1,
- javax.swing.GroupLayout.DEFAULT_SIZE,
- javax.swing.GroupLayout.DEFAULT_SIZE,
- Short.MAX_VALUE)).addGroup(
- layout.createSequentialGroup().addPreferredGap(
- javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(cancelButton))).addGap(29, 29, 29)));
- layout.setVerticalGroup(layout.createParallelGroup(
- javax.swing.GroupLayout.Alignment.LEADING).addGroup(
- javax.swing.GroupLayout.Alignment.TRAILING,
- layout.createSequentialGroup().addContainerGap().addGroup(
- layout.createParallelGroup(
- javax.swing.GroupLayout.Alignment.TRAILING).addComponent(
- jLabel2).addGroup(
- layout.createSequentialGroup().addComponent(jLabel1,
- javax.swing.GroupLayout.DEFAULT_SIZE, 53, Short.MAX_VALUE)
- .addGap(35, 35, 35).addComponent(cancelButton).addGap(9, 9,
- 9))).addContainerGap()));
-
- Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
- Dimension frameSize = getSize();
- if (frameSize.height > screenSize.height) {
- frameSize.height = screenSize.height;
- }
- if (frameSize.width > screenSize.width) {
- frameSize.width = screenSize.width;
- }
- setLocation((screenSize.width - frameSize.width) / 2,
- (screenSize.height - frameSize.height) / 2);
- setUndecorated(false);
- pack();
- }
-
- public void addCanceledListener(ActionListener al) {
- cancelButton.addActionListener(al);
- }
-
- /**
- * @param args
- * the command line arguments
- */
- public static void main(String args[]) {
- java.awt.EventQueue.invokeLater(new Runnable() {
- public void run() {
- SwingInsertCardDialog dialog = new SwingInsertCardDialog();
- dialog.addWindowListener(new java.awt.event.WindowAdapter() {
- public void windowClosing(java.awt.event.WindowEvent e) {
- System.exit(0);
- }
- });
- //
- }
- });
- }
-
-}
diff --git a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/SwingPINProvider.java b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/SwingPINProvider.java
deleted file mode 100644
index 7d36e68e..00000000
--- a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/SwingPINProvider.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-* Copyright 2008 Federal Chancellery Austria and
-* Graz University of Technology
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package at.gv.egiz.bku.local.stal;
-
-import java.util.Locale;
-
-import at.gv.egiz.smcc.PINProvider;
-import at.gv.egiz.smcc.PINSpec;
-
-public class SwingPINProvider implements PINProvider {
-
- private Locale locale = Locale.getDefault();
- SwingPinDialog dialog;
-
- public SwingPINProvider() {
- this.locale = Locale.getDefault();
-
- }
-
- public Locale getLocale() {
- return locale;
- }
-
- public void setLocale(Locale locale) {
- this.locale = locale;
- }
-
- @Override
- public String providePIN(PINSpec pinSpec, int retries) {
- dialog = new SwingPinDialog(null, false);
- dialog.setResizable(false);
- dialog.setRetries(retries);
- dialog.setPinSpec(pinSpec);
- dialog.initComponents();
- dialog.setVisible(true);
- dialog.requestFocus();
- dialog.setAlwaysOnTop(true);
- dialog.waitFinished();
- dialog.dispose();
- return dialog.getPIN();
- }
-
-}
diff --git a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/SwingPinDialog.java b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/SwingPinDialog.java
deleted file mode 100644
index 3e91972c..00000000
--- a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/SwingPinDialog.java
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
-* Copyright 2008 Federal Chancellery Austria and
-* Graz University of Technology
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package at.gv.egiz.bku.local.stal;
-
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.Toolkit;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
-import java.text.MessageFormat;
-import java.util.Locale;
-import java.util.ResourceBundle;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.swing.ImageIcon;
-import javax.swing.JButton;
-import javax.swing.JPasswordField;
-import javax.swing.text.AttributeSet;
-import javax.swing.text.BadLocationException;
-import javax.swing.text.PlainDocument;
-
-import at.gv.egiz.bku.utils.StreamUtil;
-import at.gv.egiz.smcc.PINSpec;
-
-public class SwingPinDialog extends javax.swing.JDialog implements
- ActionListener {
-
- private javax.swing.JButton okButton;
- private javax.swing.JButton cancelButton;
- private javax.swing.JLabel jLabel1;
- private javax.swing.JLabel jLabel2;
- private javax.swing.JPasswordField password;
-
- private PINSpec pinSpec;
- private String pinString;
- private boolean finished = false;
- private int retries = -1;
- private Locale locale = Locale.getDefault();
- private boolean setUp = false;
-
- class PinDocument extends PlainDocument {
- private Pattern pattern;
-
- public PinDocument() {
- if ((pinSpec != null) && (pinSpec.getRexepPattern() != null)) {
- pattern = Pattern.compile(pinSpec.getRexepPattern());
- } else {
- pattern = Pattern.compile(".");
- }
- }
-
- public void insertString(int offs, String str, AttributeSet a)
- throws BadLocationException {
- if (pinSpec.getMaxLength() >= (getLength() + str.length())) {
- Matcher matcher = pattern.matcher(str);
- if (matcher.matches()) {
- super.insertString(offs, str, a);
- }
- }
- okButton.setEnabled(getLength() >= pinSpec.getMinLength());
- }
-
- @Override
- public void remove(int offs, int len) throws BadLocationException {
- super.remove(offs, len);
- okButton.setEnabled(getLength() >= pinSpec.getMinLength());
- }
- }
-
- /**
- * Make sure to call initComponents
- *
- * @param parent
- * @param modal
- */
- public SwingPinDialog(java.awt.Frame parent, boolean modal) {
- super(parent, modal);
- }
-
- public void setLocale(Locale locale) {
- this.locale = locale;
- }
-
- public void setPinSpec(PINSpec pinSpec) {
- this.pinSpec = pinSpec;
- }
-
- public void setRetries(int retries) {
- this.retries = retries;
- }
-
- public void initComponents() {
- ResourceBundle rb = ResourceBundle.getBundle(
- "at/gv/egiz/bku/local/Userdialog", locale);
- okButton = new javax.swing.JButton();
- cancelButton = new javax.swing.JButton();
- password = new javax.swing.JPasswordField();
- jLabel1 = new javax.swing.JLabel();
- jLabel2 = new javax.swing.JLabel();
-
- setTitle(rb.getString("Pin.Header"));
- setName("Form");
- setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
-
- okButton.setText(rb.getString("Pin.Button.OK"));
- okButton.setName("okButton");
- okButton.setEnabled(false);
- okButton.addActionListener(this);
-
- cancelButton.setText(rb.getString("Pin.Button.Cancel"));
- cancelButton.setName("cancelButton");
- cancelButton.addActionListener(this);
-
- password.setText("");
- password.setDocument(new PinDocument());
- password.setName("password");
- password.addActionListener(this);
- password.setDocument(new PinDocument());
- password.setRequestFocusEnabled(true);
- password.requestFocus();
-
- jLabel1.setFont(new Font("Tahoma", Font.BOLD, 14));
- String text = null;
- Object[] args;
- if (retries > 0) {
- text = rb.getString("Pin.Text.Retries");
- args = new Object[2];
- args[0] = pinSpec.getLocalizedName();
- args[1] = new Integer(retries);
- } else {
- text = rb.getString("Pin.Text.NoRetries");
- args = new Object[1];
- args[0] = pinSpec.getLocalizedName();
- }
- text = MessageFormat.format(text, args);
- jLabel1.setText(text); // NOI18N
- jLabel1.setName("jLabel1"); // NOI18N
-
- ByteArrayOutputStream os = new ByteArrayOutputStream();
- InputStream is = getClass().getClassLoader().getResourceAsStream(
- "at/gv/egiz/bku/local/logo.png");
- try {
- StreamUtil.copyStream(is, os);
- jLabel2.setIcon(new ImageIcon(os.toByteArray())); // NOI18N
- } catch (Exception e) {
- jLabel2.setText("Chipperling image missing"); // NOI18N
- }
- jLabel2.setName("jLabel2"); // NOI18N
-
- javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
- getContentPane());
- getContentPane().setLayout(layout);
- layout.setHorizontalGroup(layout.createParallelGroup(
- javax.swing.GroupLayout.Alignment.LEADING).addGroup(
- layout.createSequentialGroup().addContainerGap().addComponent(jLabel2)
- .addGap(73, 73, 73).addGroup(
- layout.createParallelGroup(
- javax.swing.GroupLayout.Alignment.LEADING).addComponent(
- jLabel1).addGroup(
- layout.createParallelGroup(
- javax.swing.GroupLayout.Alignment.TRAILING, false)
- .addComponent(password,
- javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(
- javax.swing.GroupLayout.Alignment.LEADING,
- layout.createSequentialGroup().addComponent(
- cancelButton).addGap(18, 18, 18).addComponent(
- okButton)))).addContainerGap(31,
- Short.MAX_VALUE)));
- layout.setVerticalGroup(layout.createParallelGroup(
- javax.swing.GroupLayout.Alignment.LEADING).addGroup(
- layout.createSequentialGroup().addContainerGap().addGroup(
- layout.createParallelGroup(
- javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(jLabel2).addGroup(
- layout.createSequentialGroup().addPreferredGap(
- javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jLabel1,
- javax.swing.GroupLayout.PREFERRED_SIZE, 33,
- javax.swing.GroupLayout.PREFERRED_SIZE).addGap(18,
- 18, 18).addComponent(password,
- javax.swing.GroupLayout.PREFERRED_SIZE,
- javax.swing.GroupLayout.DEFAULT_SIZE,
- javax.swing.GroupLayout.PREFERRED_SIZE).addGap(20,
- 20, 20).addGroup(
- layout.createParallelGroup(
- javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(cancelButton).addComponent(
- okButton)))).addGap(36, 36, 36)));
- Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
- Dimension frameSize = getSize();
- if (frameSize.height > screenSize.height) {
- frameSize.height = screenSize.height;
- }
- if (frameSize.width > screenSize.width) {
- frameSize.width = screenSize.width;
- }
- setLocation((screenSize.width - frameSize.width) / 2,
- (screenSize.height - frameSize.height) / 2);
- setUndecorated(false);
- pack();
- }
-
- public String getPIN() {
- return pinString;
- }
-
- private synchronized void finished(boolean ok) {
- if (ok) {
- pinString = password.getText();
- } else {
- pinString = null;
- }
- finished = true;
- notifyAll();
- }
-
- public synchronized void waitFinished() {
- while (!finished) {
- try {
- wait();
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
-
- @Override
- public void actionPerformed(ActionEvent e) {
- if (e.getSource() instanceof JButton) {
- JButton pressed = (JButton) e.getSource();
- if (pressed.getName().equals("okButton")) {
- finished(true);
- } else if (pressed.getName().equals("cancelButton")) {
- finished(false);
- }
- } else if (e.getSource() instanceof JPasswordField) {
- JPasswordField pwf = (JPasswordField) e.getSource();
- if (pwf.getName().equals("password")) {
- if (password.getPassword().length >= pinSpec.getMinLength()) {
- finished(true);
- }
- }
- }
- }
-
-}