From 0df8bb10302989f41ed420ec0ff29b2fc2005471 Mon Sep 17 00:00:00 2001 From: wbauer Date: Mon, 15 Sep 2008 14:18:53 +0000 Subject: Migrated BKULocal to BKUCommonGUI and minor bug fixes git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@37 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4 --- .../at/gv/egiz/bku/local/stal/BKUGuiProxy.java | 130 ++++++++++ .../bku/local/stal/LocalSignRequestHandler.java | 84 +++++++ .../java/at/gv/egiz/bku/local/stal/PINDialog.java | 214 ----------------- .../gv/egiz/bku/local/stal/QuitRequestHandler.java | 41 ---- .../java/at/gv/egiz/bku/local/stal/SMCCSTAL.java | 100 ++------ .../at/gv/egiz/bku/local/stal/SMCCSTALFactory.java | 100 ++++++-- .../egiz/bku/local/stal/SwingInsertCardDialog.java | 147 ------------ .../gv/egiz/bku/local/stal/SwingPINProvider.java | 57 ----- .../at/gv/egiz/bku/local/stal/SwingPinDialog.java | 265 --------------------- 9 files changed, 307 insertions(+), 831 deletions(-) create mode 100644 BKULocal/src/main/java/at/gv/egiz/bku/local/stal/BKUGuiProxy.java create mode 100644 BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSignRequestHandler.java delete mode 100644 BKULocal/src/main/java/at/gv/egiz/bku/local/stal/PINDialog.java delete mode 100644 BKULocal/src/main/java/at/gv/egiz/bku/local/stal/QuitRequestHandler.java delete mode 100644 BKULocal/src/main/java/at/gv/egiz/bku/local/stal/SwingInsertCardDialog.java delete mode 100644 BKULocal/src/main/java/at/gv/egiz/bku/local/stal/SwingPINProvider.java delete mode 100644 BKULocal/src/main/java/at/gv/egiz/bku/local/stal/SwingPinDialog.java (limited to 'BKULocal/src/main/java/at/gv/egiz') 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 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 = 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 getHashDataInputs( + List dsigReferences) throws Exception { + ArrayList result = new ArrayList(); + 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 handleRequest(List requestList) { + signatureCard = null; + List 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); - } - } - } - } - -} -- cgit v1.2.3