http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/NewEditPasswordEntryDialog.java ---------------------------------------------------------------------- diff --git a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/NewEditPasswordEntryDialog.java b/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/NewEditPasswordEntryDialog.java deleted file mode 100644 index 4bb62e0..0000000 --- a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/NewEditPasswordEntryDialog.java +++ /dev/null @@ -1,397 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.ui.credentialmanager; - -import static java.awt.BorderLayout.CENTER; -import static java.awt.BorderLayout.SOUTH; -import static java.awt.GridBagConstraints.HORIZONTAL; -import static java.awt.GridBagConstraints.NONE; -import static java.awt.GridBagConstraints.WEST; -import static javax.swing.JOptionPane.ERROR_MESSAGE; -import static javax.swing.JOptionPane.WARNING_MESSAGE; -import static javax.swing.JOptionPane.showMessageDialog; -import static net.sf.taverna.t2.workbench.ui.credentialmanager.CMStrings.ALERT_TITLE; -import static net.sf.taverna.t2.workbench.ui.credentialmanager.CMStrings.ERROR_TITLE; -import static net.sf.taverna.t2.workbench.ui.credentialmanager.CMStrings.WARN_TITLE; - -import java.awt.BorderLayout; -import java.awt.FlowLayout; -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; -import java.awt.Insets; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.List; - -import javax.swing.JButton; -import javax.swing.JDialog; -import javax.swing.JFrame; -import javax.swing.JLabel; -import javax.swing.JPasswordField; -import javax.swing.JTextField; -import javax.swing.JPanel; -import javax.swing.border.CompoundBorder; -import javax.swing.border.EmptyBorder; -import javax.swing.border.EtchedBorder; - -import org.apache.log4j.Logger; - -import org.apache.taverna.security.credentialmanager.CMException; -import org.apache.taverna.security.credentialmanager.CredentialManager; -import net.sf.taverna.t2.workbench.helper.NonBlockedHelpEnabledDialog; - -/** - * Dialog used for editing or entering new service URI, username or password for - * a password entry. - * - * @author Alex Nenadic - */ -@SuppressWarnings("serial") -public class NewEditPasswordEntryDialog extends NonBlockedHelpEnabledDialog -{ - private static final Logger logger = Logger - .getLogger(NewEditPasswordEntryDialog.class); - /** 'Edit' mode constant - the dialog is in the 'edit' entry mode */ - private static final String EDIT_MODE = "EDIT"; - /** 'New' mode constant - the dialog is in the 'new' entry mode */ - private static final String NEW_MODE = "NEW"; - - /** - * Mode of this dialog - {@link #NEW_MODE} for entering new password entry - * and {@link #EDIT_MODE} for editting an existing password entry - */ - String mode; - /** Service URI field */ - private JTextField serviceURIField; - /** Username field */ - private JTextField usernameField; - /** First password entry field */ - private JPasswordField passwordField; - /** Password confirmation entry field */ - private JPasswordField passwordConfirmField; - /** Stores service URI entered */ - private URI serviceURI; - /** Stores previous service URI for {@link #EDIT_MODE} */ - private URI serviceURIOld; - /** Stores username entered */ - private String username; - /** Stores password entered*/ - private String password; - private CredentialManager credentialManager; - - public NewEditPasswordEntryDialog(JFrame parent, String title, - boolean modal, URI currentURI, String currentUsername, - String currentPassword, CredentialManager credentialManager) { - super(parent, title, modal); - serviceURI = currentURI; - username = currentUsername; - password = currentPassword; - this.credentialManager = credentialManager; - if (serviceURI == null && username == null && password == null) { - // if passed values are all null - mode = NEW_MODE; // dialog is for entering a new password entry - } else { - mode = EDIT_MODE; // dialog is for editing an existing entry - serviceURIOld = currentURI; - } - initComponents(); - } - - public NewEditPasswordEntryDialog(JDialog parent, String title, - boolean modal, URI currentURI, String currentUsername, - String currentPassword, CredentialManager credentialManager) { - super(parent, title, modal); - serviceURI = currentURI; - username = currentUsername; - password = currentPassword; - this.credentialManager = credentialManager; - if (serviceURI == null && username == null && password == null) { - // if passed values are all null - mode = NEW_MODE; // dialog is for entering new password entry - } else { - mode = EDIT_MODE; // dialog is for editing existing entry - serviceURIOld = currentURI; - } - initComponents(); - } - - private void initComponents() { - getContentPane().setLayout(new BorderLayout()); - - JLabel serviceURILabel = new JLabel("Service URI"); - serviceURILabel.setBorder(new EmptyBorder(0,5,0,0)); - - JLabel usernameLabel = new JLabel("Username"); - usernameLabel.setBorder(new EmptyBorder(0,5,0,0)); - - JLabel passwordLabel = new JLabel("Password"); - passwordLabel.setBorder(new EmptyBorder(0,5,0,0)); - - JLabel passwordConfirmLabel = new JLabel("Confirm password"); - passwordConfirmLabel.setBorder(new EmptyBorder(0,5,0,0)); - - serviceURIField = new JTextField(); - //jtfServiceURI.setBorder(new EmptyBorder(0,0,0,5)); - - usernameField = new JTextField(15); - //jtfUsername.setBorder(new EmptyBorder(0,0,0,5)); - - passwordField = new JPasswordField(15); - //jpfFirstPassword.setBorder(new EmptyBorder(0,0,0,5)); - - passwordConfirmField = new JPasswordField(15); - //jpfConfirmPassword.setBorder(new EmptyBorder(0,0,0,5)); - - //If in EDIT_MODE - populate the fields with current values - if (mode.equals(EDIT_MODE)) { - serviceURIField.setText(serviceURI.toASCIIString()); - usernameField.setText(username); - passwordField.setText(password); - passwordConfirmField.setText(password); - } - - JButton okButton = new JButton("OK"); - okButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent evt) { - okPressed(); - } - }); - - JButton cancelButton = new JButton("Cancel"); - cancelButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent evt) { - cancelPressed(); - } - }); - - JPanel passwordPanel = new JPanel(new GridBagLayout()); - - GridBagConstraints gbc = new GridBagConstraints(); - gbc.weighty = 0.0; - - gbc.weightx = 0.0; - gbc.gridx = 0; - gbc.gridy = 0; - gbc.fill = NONE; - gbc.anchor = WEST; - gbc.insets = new Insets(5, 10, 0, 0); - passwordPanel.add(serviceURILabel, gbc); - - gbc.weightx = 1.0; - gbc.gridx = 1; - gbc.gridy = 0; - gbc.fill = HORIZONTAL; - gbc.anchor = WEST; - gbc.insets = new Insets(5, 10, 0, 5); - passwordPanel.add(serviceURIField, gbc); - - gbc.weightx = 0.0; - gbc.gridx = 0; - gbc.gridy = 1; - gbc.fill = NONE; - gbc.anchor = WEST; - gbc.insets = new Insets(5, 10, 0, 0); - passwordPanel.add(usernameLabel, gbc); - - gbc.weightx = 1.0; - gbc.gridx = 1; - gbc.gridy = 1; - gbc.fill = HORIZONTAL; - gbc.anchor = WEST; - gbc.insets = new Insets(5, 10, 0, 5); - passwordPanel.add(usernameField, gbc); - - gbc.weightx = 0.0; - gbc.gridx = 0; - gbc.gridy = 2; - gbc.fill = NONE; - gbc.anchor = WEST; - gbc.insets = new Insets(5, 10, 0, 0); - passwordPanel.add(passwordLabel, gbc); - - gbc.weightx = 1.0; - gbc.gridx = 1; - gbc.gridy = 2; - gbc.fill = HORIZONTAL; - gbc.anchor = WEST; - gbc.insets = new Insets(5, 10, 0, 5); - passwordPanel.add(passwordField, gbc); - - gbc.weightx = 0.0; - gbc.gridx = 0; - gbc.gridy = 3; - gbc.fill = NONE; - gbc.anchor = WEST; - gbc.insets = new Insets(5, 10, 0, 0); - passwordPanel.add(passwordConfirmLabel, gbc); - - gbc.weightx = 1.0; - gbc.gridx = 1; - gbc.gridy = 3; - gbc.fill = HORIZONTAL; - gbc.anchor = WEST; - gbc.insets = new Insets(5, 10, 0, 5); - passwordPanel.add(passwordConfirmField, gbc); - - passwordPanel.setBorder(new CompoundBorder(new EmptyBorder(10, 10, 10, - 10), new EtchedBorder())); - - JPanel buttonsPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); - buttonsPanel.add(okButton); - buttonsPanel.add(cancelButton); - - getContentPane().add(passwordPanel, CENTER); - getContentPane().add(buttonsPanel, SOUTH); - - addWindowListener(new WindowAdapter() { - @Override - public void windowClosing(WindowEvent evt) { - closeDialog(); - } - }); - - //setResizable(false); - getRootPane().setDefaultButton(okButton); - pack(); - } - - /** - * Get the username entered in the dialog. - */ - public String getUsername() { - return username; - } - - /** - * Get the service URI entered in the dialog. - */ - public URI getServiceURI() { - return serviceURI; - } - - /** - * Get the password entered in the dialog. - */ - public String getPassword() { - return password; - } - - /** - * Checks that the user has entered a non-empty service URI, a non-empty - * username, a non-empty password and that an entry with the same URI - * already does not already exist in the Keystore. Store the new password. - */ - private boolean checkControls() { - String serviceURIString = new String(serviceURIField.getText()); - if (serviceURIString.isEmpty()) { - showMessageDialog(this, "Service URI cannot be empty", - WARN_TITLE, WARNING_MESSAGE); - return false; - } - try { - serviceURI = new URI(serviceURIString); - } catch (URISyntaxException e) { - showMessageDialog(this, "Service URI is not a valid URI", - WARN_TITLE, WARNING_MESSAGE); - return false; - } - - username = new String(usernameField.getText()); - if (username.isEmpty()) { - showMessageDialog(this, "Username cannot be empty", WARN_TITLE, - WARNING_MESSAGE); - return false; - } - - String firstPassword = new String(passwordField.getPassword()); - String confirmPassword = new String(passwordConfirmField.getPassword()); - - if (!firstPassword.equals(confirmPassword)) { - // passwords do not match - showMessageDialog(this, "Passwords do not match", WARN_TITLE, - WARNING_MESSAGE); - return false; - } - if (firstPassword.isEmpty()) { - // passwords match but are empty - showMessageDialog(this, "Password cannot be empty", WARN_TITLE, - WARNING_MESSAGE); - return false; - } - - // passwords the same and non-empty - password = firstPassword; - - // Check if the entered service URL is already associated with another password entry in the Keystore - List<URI> uriList = null; - try { - uriList = credentialManager.getServiceURIsForAllUsernameAndPasswordPairs(); - } catch (CMException cme) { - // Failed to instantiate Credential Manager - warn the user and exit - String exMessage = "Failed to instantiate Credential Manager to check for duplicate service URIs."; - logger.error(exMessage, cme); - showMessageDialog(new JFrame(), exMessage, ERROR_TITLE, - ERROR_MESSAGE); - return false; - } - - if (uriList != null) { // should not be null really (although can be empty). Check anyway. - if (mode.equals(EDIT_MODE)) // edit mode - // Remove the current entry's service URI from the list - uriList.remove(serviceURIOld); - - if (uriList.contains(serviceURI)) { // found another entry for this service URI - // Warn the user and exit - showMessageDialog( - this, - "The entered service URI is already associated with another password entry", - ALERT_TITLE, WARNING_MESSAGE); - return false; - } - } - - return true; - } - - private void okPressed() { - if (checkControls()) - closeDialog(); - } - - private void cancelPressed() { - // Set all fields to null to indicate that cancel button was pressed - serviceURI = null; - username = null; - password = null; - closeDialog(); - } - - private void closeDialog() { - setVisible(false); - dispose(); - } -}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/NewKeyPairEntryDialog.java ---------------------------------------------------------------------- diff --git a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/NewKeyPairEntryDialog.java b/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/NewKeyPairEntryDialog.java deleted file mode 100644 index 2915f65..0000000 --- a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/NewKeyPairEntryDialog.java +++ /dev/null @@ -1,304 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.ui.credentialmanager; - -import static java.awt.BorderLayout.CENTER; -import static java.awt.BorderLayout.SOUTH; -import static java.awt.BorderLayout.WEST; -import static java.awt.Font.PLAIN; -import static javax.swing.BoxLayout.Y_AXIS; -import static javax.swing.JOptionPane.ERROR_MESSAGE; -import static javax.swing.JOptionPane.WARNING_MESSAGE; -import static javax.swing.JOptionPane.showMessageDialog; -import static javax.swing.ListSelectionModel.SINGLE_SELECTION; -import static javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED; -import static javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED; -import static net.sf.taverna.t2.workbench.ui.credentialmanager.CMStrings.ALERT_TITLE; -import static net.sf.taverna.t2.workbench.ui.credentialmanager.CMStrings.ERROR_TITLE; - -import java.awt.BorderLayout; -import java.awt.FlowLayout; -import java.awt.Font; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.security.GeneralSecurityException; -import java.security.Key; -import java.security.KeyStore; -import java.security.cert.Certificate; -import java.security.cert.X509Certificate; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.List; - -import javax.swing.BoxLayout; -import javax.swing.JButton; -import javax.swing.JDialog; -import javax.swing.JFrame; -import javax.swing.JLabel; -import javax.swing.JList; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.border.EmptyBorder; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; - -import org.apache.taverna.security.credentialmanager.CMException; -import org.apache.taverna.security.credentialmanager.DistinguishedNameParser; -import net.sf.taverna.t2.workbench.helper.NonBlockedHelpEnabledDialog; - -/** - * Allows the user import a key pair from a PKCS #12 file (keystore). - */ -@SuppressWarnings("serial") -class NewKeyPairEntryDialog extends NonBlockedHelpEnabledDialog { - //private static final Logger logger = Logger.getLogger(NewKeyPairEntryDialog.class); - - /** List of key pairs available for import */ - private JList<String> keyPairsJList; - /** PKCS #12 keystore */ - private KeyStore pkcs12KeyStore; - /** Private key part of the key pair chosen by the user for import */ - private Key privateKey; - /** Certificate chain part of the key pair chosen by the user for import */ - private Certificate[] certificateChain; - /** Key pair alias to be used for this entry in the Keystore */ - private String alias; - private final DistinguishedNameParser dnParser; - - public NewKeyPairEntryDialog(JFrame parent, String title, boolean modal, - KeyStore pkcs12KeyStore, DistinguishedNameParser dnParser) - throws CMException { - super(parent, title, modal); - this.pkcs12KeyStore = pkcs12KeyStore; - this.dnParser = dnParser; - initComponents(); - } - - public NewKeyPairEntryDialog(JDialog parent, String title, boolean modal, - KeyStore pkcs12KeyStore, DistinguishedNameParser dnParser) - throws CMException { - super(parent, title, modal); - this.pkcs12KeyStore = pkcs12KeyStore; - this.dnParser = dnParser; - initComponents(); - } - - /** - * Get the private part of the key pair. - */ - public Key getPrivateKey() { - return privateKey; - } - - /** - * Get the certificate chain part of the key pair. - */ - public Certificate[] getCertificateChain() { - return certificateChain; - } - - /** - * Get the keystore alias of the key pair. - */ - public String getAlias() { - return alias; - } - - private void initComponents() throws CMException { - // Instructions - JLabel instructionsLabel = new JLabel("Select a key pair to import:"); - instructionsLabel.setFont(new Font(null, PLAIN, 11)); - instructionsLabel.setBorder(new EmptyBorder(5, 5, 5, 5)); - JPanel instructionsPanel = new JPanel(new BorderLayout()); - instructionsPanel.add(instructionsLabel, WEST); - - // Import button - final JButton importButton = new JButton("Import"); - importButton.setEnabled(false); - importButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent evt) { - importPressed(); - } - }); - - // Certificate details button - final JButton certificateDetailsButton = new JButton("Details"); - certificateDetailsButton.setEnabled(false); - certificateDetailsButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent evt) { - certificateDetailsPressed(); - } - }); - - // List to hold keystore's key pairs - keyPairsJList = new JList<>(); - keyPairsJList.setSelectionMode(SINGLE_SELECTION); - keyPairsJList.addListSelectionListener(new ListSelectionListener() { - @Override - public void valueChanged(ListSelectionEvent evt) { - boolean enabled = keyPairsJList.getSelectedIndex() >= 0; - importButton.setEnabled(enabled); - certificateDetailsButton.setEnabled(enabled); - } - }); - - // Put the key list into a scroll pane - JScrollPane keyPairsScrollPane = new JScrollPane(keyPairsJList, - VERTICAL_SCROLLBAR_AS_NEEDED, HORIZONTAL_SCROLLBAR_AS_NEEDED); - keyPairsScrollPane.getViewport().setBackground( - keyPairsJList.getBackground()); - - JPanel keyPairsPanel = new JPanel(); - keyPairsPanel.setLayout(new BoxLayout(keyPairsPanel, Y_AXIS)); - keyPairsPanel.setBorder(new EmptyBorder(10, 10, 10, 10)); - - instructionsPanel.setAlignmentY(LEFT_ALIGNMENT); - keyPairsPanel.add(instructionsPanel); - keyPairsScrollPane.setAlignmentY(LEFT_ALIGNMENT); - keyPairsPanel.add(keyPairsScrollPane); - - // Cancel button - final JButton cancelButton = new JButton("Cancel"); - cancelButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent evt) { - cancelPressed(); - } - }); - - JPanel buttonsPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); - buttonsPanel.add(certificateDetailsButton); - buttonsPanel.add(importButton); - buttonsPanel.add(cancelButton); - - getContentPane().setLayout(new BorderLayout()); - getContentPane().add(keyPairsPanel, CENTER); - getContentPane().add(buttonsPanel, SOUTH); - - // Populate the list - populateKeyPairList(); - - addWindowListener(new WindowAdapter() { - @Override - public void windowClosing(WindowEvent evt) { - closeDialog(); - } - }); - - setResizable(false); - getRootPane().setDefaultButton(importButton); - pack(); - } - - /** - * Populate the key pair list with the PKCS #12 keystore's key pair aliases. - */ - private void populateKeyPairList() throws CMException { - try { - List<String> keyPairAliases = new ArrayList<>(); - - Enumeration<String> aliases = pkcs12KeyStore.aliases(); - while (aliases.hasMoreElements()) { - String alias = aliases.nextElement(); - - if (pkcs12KeyStore.isKeyEntry(alias)) { - pkcs12KeyStore.getKey(alias, new char[] {}); - Certificate[] certs = pkcs12KeyStore - .getCertificateChain(alias); - if (certs != null && certs.length != 0) - keyPairAliases.add(alias); - } - } - - if (!keyPairAliases.isEmpty()) { - keyPairsJList.setListData(keyPairAliases.toArray(new String[0])); - keyPairsJList.setSelectedIndex(0); - } else - // No key pairs were found - warn the user - showMessageDialog(this, - "No private key pairs were found in the file", - ALERT_TITLE, WARNING_MESSAGE); - } catch (GeneralSecurityException ex) { - throw new CMException("Problem occured while reading the PKCS #12 file.", - ex); - } - } - - /** - * Display the selected key pair's certificate. - */ - private void certificateDetailsPressed() { - try { - String alias = (String) keyPairsJList.getSelectedValue(); - - // Convert the certificate object into an X509Certificate object. - X509Certificate cert = dnParser.convertCertificate(pkcs12KeyStore - .getCertificate(alias)); - - ViewCertDetailsDialog viewCertificateDialog = new ViewCertDetailsDialog( - this, "Certificate details", true, (X509Certificate) cert, - null, dnParser); - viewCertificateDialog.setLocationRelativeTo(this); - viewCertificateDialog.setVisible(true); - } catch (Exception ex) { - showMessageDialog(this, - "Failed to obtain certificate details to show", - ALERT_TITLE, WARNING_MESSAGE); - closeDialog(); - } - } - - public void importPressed() { - String alias = (String) keyPairsJList.getSelectedValue(); - try { - privateKey = pkcs12KeyStore.getKey(alias, new char[] {}); - certificateChain = pkcs12KeyStore.getCertificateChain(alias); - this.alias = alias; - } catch (Exception ex) { - showMessageDialog( - this, - "Failed to load the private key and certificate chain from the PKCS #12 file.", - ERROR_TITLE, ERROR_MESSAGE); - } - - closeDialog(); - } - - public void cancelPressed() { - /* - * Set everything to null, just in case some of the values have been set - * previously and the user pressed 'cancel' after that. - */ - privateKey = null; - certificateChain = null; - closeDialog(); - } - - private void closeDialog() { - setVisible(false); - dispose(); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/NewTrustCertsDialog.java ---------------------------------------------------------------------- diff --git a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/NewTrustCertsDialog.java b/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/NewTrustCertsDialog.java deleted file mode 100644 index 7841f1c..0000000 --- a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/NewTrustCertsDialog.java +++ /dev/null @@ -1,248 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.ui.credentialmanager; - -import static java.awt.BorderLayout.CENTER; -import static java.awt.BorderLayout.SOUTH; -import static java.awt.BorderLayout.WEST; -import static java.awt.Font.PLAIN; -import static javax.security.auth.x500.X500Principal.RFC2253; -import static javax.swing.BoxLayout.Y_AXIS; -import static javax.swing.JOptionPane.WARNING_MESSAGE; -import static javax.swing.JOptionPane.showMessageDialog; -import static javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION; -import static javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED; -import static javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED; -import static net.sf.taverna.t2.workbench.ui.credentialmanager.CMStrings.ALERT_TITLE; - -import java.awt.BorderLayout; -import java.awt.FlowLayout; -import java.awt.Font; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.security.cert.X509Certificate; -import java.util.ArrayList; - -import javax.swing.BoxLayout; -import javax.swing.JButton; -import javax.swing.JDialog; -import javax.swing.JFrame; -import javax.swing.JLabel; -import javax.swing.JList; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.border.CompoundBorder; -import javax.swing.border.EmptyBorder; -import javax.swing.border.EtchedBorder; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; - -import org.apache.taverna.security.credentialmanager.DistinguishedNameParser; -import org.apache.taverna.security.credentialmanager.ParsedDistinguishedName; -import net.sf.taverna.t2.workbench.helper.NonBlockedHelpEnabledDialog; - -/** - * Allows the user to import one or more trusted certificates from a file. - */ -@SuppressWarnings("serial") -public class NewTrustCertsDialog extends NonBlockedHelpEnabledDialog { - private JList<String> trustedCertsJList; - /** List of trusted certs read from the file and available for import */ - private ArrayList<X509Certificate> availableTrustedCerts = new ArrayList<>(); - /** List of trusted certs selected for import */ - private ArrayList<X509Certificate> selectedTrustedCerts; - private final DistinguishedNameParser dnParser; - - public NewTrustCertsDialog(JFrame parent, String title, boolean modal, - ArrayList<X509Certificate> lCerts, DistinguishedNameParser dnParser) { - super(parent, title, modal); - availableTrustedCerts = lCerts; - this.dnParser = dnParser; - initComponents(); - } - - public NewTrustCertsDialog(JDialog parent, String title, boolean modal, - ArrayList<X509Certificate> lCerts, DistinguishedNameParser dnParser) { - super(parent, title, modal); - availableTrustedCerts = lCerts; - this.dnParser = dnParser; - initComponents(); - } - - private void initComponents() { - // Instructions - JLabel instructionsLabel = new JLabel( - "Select one or more certificates for import:"); - instructionsLabel.setFont(new Font(null, PLAIN, 11)); - instructionsLabel.setBorder(new EmptyBorder(5, 5, 5, 5)); - JPanel instructionsPanel = new JPanel(new BorderLayout()); - instructionsPanel.add(instructionsLabel, WEST); - - // Import button - final JButton importButton = new JButton("Import"); - importButton.setEnabled(false); - importButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent evt) { - importPressed(); - } - }); - - // Certificate details button - final JButton certificateDetailsButton = new JButton( - "Certificate Details"); - certificateDetailsButton.setEnabled(false); - certificateDetailsButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent evt) { - certificateDetailsPressed(); - } - }); - - // List with trusted certs' aliases - trustedCertsJList = new JList<>(); - trustedCertsJList.setSelectionMode(MULTIPLE_INTERVAL_SELECTION); - trustedCertsJList.addListSelectionListener(new ListSelectionListener() { - @Override - public void valueChanged(ListSelectionEvent evt) { - boolean enabled = trustedCertsJList.getSelectedIndex() >= 0; - importButton.setEnabled(enabled); - certificateDetailsButton.setEnabled(enabled); - } - }); - // Populate the list - get the certificate subjects' CNs - ArrayList<String> cns = new ArrayList<>(); - for (int i = 0; i < availableTrustedCerts.size(); i++) { - String subjectDN = ((X509Certificate) availableTrustedCerts.get(i)) - .getSubjectX500Principal().getName(RFC2253); - ParsedDistinguishedName parsedDN = dnParser.parseDN(subjectDN); - String subjectCN = parsedDN.getCN(); - cns.add(i, subjectCN); - } - trustedCertsJList.setListData(cns.toArray(new String[0])); - trustedCertsJList.setSelectedIndex(0); - - // Put the list into a scroll pane - JScrollPane trustedCertsScrollPanel = new JScrollPane( - trustedCertsJList, VERTICAL_SCROLLBAR_AS_NEEDED, - HORIZONTAL_SCROLLBAR_AS_NEEDED); - trustedCertsScrollPanel.getViewport().setBackground( - trustedCertsJList.getBackground()); - - JPanel trustedCertsPanel = new JPanel(); - trustedCertsPanel.setLayout(new BoxLayout(trustedCertsPanel, Y_AXIS)); - trustedCertsPanel.setBorder(new CompoundBorder(new CompoundBorder( - new EmptyBorder(5, 5, 5, 5), new EtchedBorder()), - new EmptyBorder(5, 5, 5, 5))); - - instructionsPanel.setAlignmentY(LEFT_ALIGNMENT); - trustedCertsPanel.add(instructionsPanel); - trustedCertsScrollPanel.setAlignmentY(LEFT_ALIGNMENT); - trustedCertsPanel.add(trustedCertsScrollPanel); - certificateDetailsButton.setAlignmentY(RIGHT_ALIGNMENT); - trustedCertsPanel.add(certificateDetailsButton); - - // Cancel button - final JButton cancelButton = new JButton("Cancel"); - cancelButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent evt) { - cancelPressed(); - } - }); - - JPanel jpButtons = new JPanel(new FlowLayout(FlowLayout.CENTER)); - jpButtons.add(importButton); - jpButtons.add(cancelButton); - - getContentPane().setLayout(new BorderLayout()); - getContentPane().add(trustedCertsPanel, CENTER); - getContentPane().add(jpButtons, SOUTH); - - addWindowListener(new WindowAdapter() { - @Override - public void windowClosing(WindowEvent evt) { - closeDialog(); - } - }); - - setResizable(false); - getRootPane().setDefaultButton(importButton); - pack(); - } - - /** - * Shows the selected key pair's certificate. - */ - private void certificateDetailsPressed() { - try { - int i = trustedCertsJList.getSelectedIndex(); - - X509Certificate cert = (X509Certificate) availableTrustedCerts - .get(i); - - ViewCertDetailsDialog viewCertificateDialog = new ViewCertDetailsDialog( - this, "Certificate details", true, cert, null, dnParser); - viewCertificateDialog.setLocationRelativeTo(this); - viewCertificateDialog.setVisible(true); - } catch (Exception ex) { - showMessageDialog(this, - "Failed to obtain certificate details to show", - ALERT_TITLE, WARNING_MESSAGE); - closeDialog(); - } - } - - /** - * Get the trusted certificates selected for import. - */ - public ArrayList<X509Certificate> getTrustedCertificates() { - return selectedTrustedCerts; - } - - /** - * Store the selected trusted certs. - */ - public void importPressed() { - int[] selectedValues = trustedCertsJList.getSelectedIndices(); - selectedTrustedCerts = new ArrayList<>(); - for (int i = 0; i < selectedValues.length; i++) - selectedTrustedCerts.add(availableTrustedCerts - .get(selectedValues[i])); - closeDialog(); - } - - public void cancelPressed() { - /* - * Set selectedTrustCerts to null to indicate that user has cancelled - * the import - */ - selectedTrustedCerts = null; - closeDialog(); - } - - private void closeDialog() { - setVisible(false); - dispose(); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/PasswordsTableModel.java ---------------------------------------------------------------------- diff --git a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/PasswordsTableModel.java b/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/PasswordsTableModel.java deleted file mode 100644 index a069c73..0000000 --- a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/PasswordsTableModel.java +++ /dev/null @@ -1,227 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.ui.credentialmanager; - -import static javax.swing.JOptionPane.ERROR_MESSAGE; -import static javax.swing.JOptionPane.showMessageDialog; -import static org.apache.taverna.security.credentialmanager.CredentialManager.KeystoreType.KEYSTORE; -import static net.sf.taverna.t2.workbench.ui.credentialmanager.CMStrings.ERROR_TITLE; -import static net.sf.taverna.t2.workbench.ui.credentialmanager.CredentialManagerUI.PASSWORD_ENTRY_TYPE; - -import java.net.URI; -import java.util.TreeMap; - -import javax.swing.JFrame; -import javax.swing.table.AbstractTableModel; - -import org.apache.taverna.lang.observer.Observable; -import org.apache.taverna.lang.observer.Observer; -import org.apache.taverna.security.credentialmanager.CMException; -import org.apache.taverna.security.credentialmanager.CredentialManager; -import org.apache.taverna.security.credentialmanager.KeystoreChangedEvent; -import org.apache.taverna.security.credentialmanager.UsernamePassword; - -import org.apache.log4j.Logger; - -/** - * The table model used to display the Keystore's username/password pair - * entries. - * - * @author Alex Nenadic - */ -@SuppressWarnings("serial") -public class PasswordsTableModel extends AbstractTableModel implements - Observer<KeystoreChangedEvent> { - private static final Logger logger = Logger - .getLogger(PasswordsTableModel.class); - - // Column names - private String[] columnNames; - // Table data - private Object[][] data; - private CredentialManager credManager; - - public PasswordsTableModel(CredentialManager credentialManager) { - credManager = credentialManager; - if (credentialManager == null) { - // Failed to instantiate Credential Manager - warn the user and exit - String sMessage = "Failed to instantiate Credential Manager. "; - logger.error("CM GUI: " + sMessage); - showMessageDialog(new JFrame(), sMessage, ERROR_TITLE, - ERROR_MESSAGE); - return; - } - - data = new Object[0][0]; - columnNames = new String[] { "Entry Type", // type of the Keystore entry - "Service URL", // the service url, part of the actual alias in - // the Keystore - "Username", // username for the service, part of the password - // entry in the Keystore - "Last Modified", // last modified date of the entry - "Password", // the invisible column holding the password value - // of the password entry in the Keystore - "Alias" // the invisible column holding the Keystore alias of - // the entry - }; - - try { - load(); - } catch (CMException cme) { - String sMessage = "Failed to load username and password pairs"; - logger.error(sMessage); - showMessageDialog(new JFrame(), sMessage, ERROR_TITLE, - ERROR_MESSAGE); - return; - } - - // Start observing changes to the Keystore - credManager.addObserver(this); - } - - /** - * Load the PasswordsTableModel with the password entries from the Keystore. - */ - public void load() throws CMException { - // Place password entries' aliases in a tree map to sort them - TreeMap<String, String> aliases = new TreeMap<>(); - - for (String alias : credManager.getAliases(KEYSTORE)) - /* - * We are only interested in username/password entries here. Alias - * for such entries is constructed as "password#"<SERVICE_URL> where - * service URL is the service this username/password pair is to be - * used for. - */ - if (alias.startsWith("password#")) - aliases.put(alias, alias); - - // Create one table row for each password entry - data = new Object[aliases.size()][6]; - - /* - * Iterate through the sorted aliases, retrieving the password entries - * and populating the table model - */ - int iCnt = 0; - for (String alias : aliases.values()) { - /* - * Populate the type column - it is set with an integer but a custom - * cell renderer will cause a suitable icon to be displayed - */ - data[iCnt][0] = PASSWORD_ENTRY_TYPE; - - /* - * Populate the service URL column as a substring of alias from the - * first occurrence of '#' till the end of the string - */ - String serviceURL = alias.substring(alias.indexOf('#') + 1); - data[iCnt][1] = serviceURL; - - /* - * Get the username and password pair from the Keystore. They are - * returned in a single string in format - * <USERNAME><SEPARATOR_CHARACTER><PASSWORD> - */ - UsernamePassword usernamePassword = credManager - .getUsernameAndPasswordForService(URI.create(serviceURL), - false, ""); - String username = usernamePassword.getUsername(); - String password = usernamePassword.getPasswordAsString(); - - // Populate the username column - data[iCnt][2] = username; - - // Populate the last modified date column ("UBER" keystore type - // supports creation date) - // data[iCnt][3] = - // credManager.getEntryCreationDate(CredentialManager.KEYSTORE, - // alias); - - // Populate the invisible password column - data[iCnt][4] = password; - - // Populate the invisible alias column - data[iCnt][5] = alias; - - iCnt++; - } - - fireTableDataChanged(); - } - - /** - * Get the number of columns in the table. - */ - @Override - public int getColumnCount() { - return columnNames.length; - } - - /** - * Get the number of rows in the table. - */ - @Override - public int getRowCount() { - return data.length; - } - - /** - * Get the name of the column at the given position. - */ - @Override - public String getColumnName(int iCol) { - return columnNames[iCol]; - } - - /** - * Get the cell value at the given row and column position. - */ - @Override - public Object getValueAt(int iRow, int iCol) { - return data[iRow][iCol]; - } - - /** - * Get the class at of the cells at the given column position. - */ - @Override - public Class<? extends Object> getColumnClass(int iCol) { - return getValueAt(0, iCol).getClass(); - } - - /** - * Is the cell at the given row and column position editable? - */ - @Override - public boolean isCellEditable(int iRow, int iCol) { - // The table is always read-only - return false; - } - - @Override - public void notify(Observable<KeystoreChangedEvent> sender, - KeystoreChangedEvent message) throws Exception { - // reload the table - if (message.keystoreType.equals(KEYSTORE)) - load(); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/SetMasterPasswordDialog.java ---------------------------------------------------------------------- diff --git a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/SetMasterPasswordDialog.java b/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/SetMasterPasswordDialog.java deleted file mode 100644 index bae6068..0000000 --- a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/SetMasterPasswordDialog.java +++ /dev/null @@ -1,189 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.ui.credentialmanager; - -import static java.awt.BorderLayout.CENTER; -import static java.awt.BorderLayout.NORTH; -import static java.awt.BorderLayout.SOUTH; -import static java.awt.Font.PLAIN; -import static javax.swing.BoxLayout.Y_AXIS; -import static javax.swing.JOptionPane.WARNING_MESSAGE; -import static javax.swing.JOptionPane.showMessageDialog; -import static net.sf.taverna.t2.workbench.ui.credentialmanager.CMStrings.WARN_TITLE; - -import java.awt.BorderLayout; -import java.awt.FlowLayout; -import java.awt.Font; -import java.awt.GridLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; - -import javax.swing.BoxLayout; -import javax.swing.JButton; -import javax.swing.JFrame; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JPasswordField; -import javax.swing.border.CompoundBorder; -import javax.swing.border.EmptyBorder; -import javax.swing.border.EtchedBorder; - -import net.sf.taverna.t2.workbench.helper.NonBlockedHelpEnabledDialog; - -/** - * Dialog used for user to set a master password for Credential Manager. - * - * @author Alex Nenadic - */ -@SuppressWarnings("serial") -public class SetMasterPasswordDialog extends NonBlockedHelpEnabledDialog { - /** Password entry field */ - private JPasswordField passwordField; - /** Password confirmation entry field */ - private JPasswordField passwordConfirmField; - /** The entered password */ - private String password = null; - /** Instructions for the user */ - private String instructions; - - public SetMasterPasswordDialog(JFrame parent, String title, boolean modal, - String instructions) { - super(parent, title, modal); - this.instructions = instructions; - initComponents(); - } - - private void initComponents() { - getContentPane().setLayout(new BorderLayout()); - - JLabel instructionsLabel = new JLabel(instructions); - instructionsLabel.setFont(new Font(null, PLAIN, 11)); - - JPanel instructionsPanel = new JPanel(); - instructionsPanel.setLayout(new BoxLayout(instructionsPanel, Y_AXIS)); - instructionsPanel.add(instructionsLabel); - instructionsPanel.setBorder(new EmptyBorder(10, 5, 10, 0)); - - JLabel passwordLabel = new JLabel("Master password"); - passwordLabel.setBorder(new EmptyBorder(0, 5, 0, 0)); - - JLabel passwordConfirmLabel = new JLabel("Confirm master password"); - passwordConfirmLabel.setBorder(new EmptyBorder(0, 5, 0, 0)); - - passwordField = new JPasswordField(15); - passwordConfirmField = new JPasswordField(15); - - JPanel passwordPanel = new JPanel(new GridLayout(2, 2, 5, 5)); - passwordPanel.add(passwordLabel); - passwordPanel.add(passwordField); - passwordPanel.add(passwordConfirmLabel); - passwordPanel.add(passwordConfirmField); - - JPanel mainPanel = new JPanel(new BorderLayout()); - mainPanel.setBorder(new CompoundBorder(new EmptyBorder(10, 10, 10, 10), - new EtchedBorder())); - mainPanel.add(instructionsPanel, NORTH); - mainPanel.add(passwordPanel, CENTER); - - JButton okButton = new JButton("OK"); - okButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent evt) { - okPressed(); - } - }); - - JButton cancelButton = new JButton("Cancel"); - cancelButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent evt) { - cancelPressed(); - } - }); - JPanel buttonsPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); - buttonsPanel.add(okButton); - buttonsPanel.add(cancelButton); - - getContentPane().add(mainPanel, CENTER); - getContentPane().add(buttonsPanel, SOUTH); - - addWindowListener(new WindowAdapter() { - @Override - public void windowClosing(WindowEvent evt) { - closeDialog(); - } - }); - - setResizable(false); - getRootPane().setDefaultButton(okButton); - pack(); - } - - public String getPassword() { - return password; - } - - /** - * Check that the user has entered a non-empty password and store the new - * password. - */ - private boolean checkPassword() { - String firstPassword = new String(passwordField.getPassword()); - String confirmPassword = new String(passwordConfirmField.getPassword()); - - if (!firstPassword.equals(confirmPassword)) { - showMessageDialog(this, "The passwords do not match", WARN_TITLE, - WARNING_MESSAGE); - return false; - } - if (firstPassword.isEmpty()) { - // passwords match but are empty - showMessageDialog(this, "The password cannot be empty", WARN_TITLE, - WARNING_MESSAGE); - return false; - } - - // passwords match and not empty - password = firstPassword; - return true; - } - - private void okPressed() { - if (checkPassword()) - closeDialog(); - } - - private void cancelPressed() { - /* - * Set the password to null as it might have changed in the meantime if - * user entered something then cancelled. - */ - password = null; - closeDialog(); - } - - private void closeDialog() { - setVisible(false); - dispose(); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/TableCellRenderer.java ---------------------------------------------------------------------- diff --git a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/TableCellRenderer.java b/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/TableCellRenderer.java deleted file mode 100644 index 0eaae99..0000000 --- a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/TableCellRenderer.java +++ /dev/null @@ -1,113 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.ui.credentialmanager; - -import static net.sf.taverna.t2.workbench.ui.credentialmanager.CredentialManagerUI.KEY_PAIR_ENTRY_TYPE; -import static net.sf.taverna.t2.workbench.ui.credentialmanager.CredentialManagerUI.PASSWORD_ENTRY_TYPE; -import static net.sf.taverna.t2.workbench.ui.credentialmanager.CredentialManagerUI.TRUST_CERT_ENTRY_TYPE; - -import java.awt.Component; -//import java.text.DateFormat; -//import java.util.Date; - -import javax.swing.ImageIcon; -import javax.swing.JLabel; -import javax.swing.JTable; -import javax.swing.border.EmptyBorder; -import javax.swing.table.DefaultTableCellRenderer; -//import net.sf.taverna.t2.workbench.ui.credentialmanager.KeyPairsTableModel; -//import net.sf.taverna.t2.workbench.ui.credentialmanager.PasswordsTableModel; -//import net.sf.taverna.t2.workbench.ui.credentialmanager.TrustedCertsTableModel; - -/** - * Custom cell renderer for the cells of the tables displaying - * Keystore/Truststore contents. - * - * @author Alex Nenadic - */ -public class TableCellRenderer extends DefaultTableCellRenderer { - private static final long serialVersionUID = -3983986682794010259L; - - private final ImageIcon passwordEntryIcon = new ImageIcon( - TableCellRenderer.class.getResource("/images/table/key_entry.png")); - private final ImageIcon keypairEntryIcon = new ImageIcon( - TableCellRenderer.class - .getResource("/images/table/keypair_entry.png")); - private final ImageIcon trustcertEntryIcon = new ImageIcon( - TableCellRenderer.class - .getResource("/images/table/trustcert_entry.png")); - - /** - * Get the rendered cell for the supplied value and column. - */ - @Override - public Component getTableCellRendererComponent(JTable keyStoreTable, - Object value, boolean bIsSelected, boolean bHasFocus, int iRow, - int iCol) { - JLabel cell = (JLabel) super.getTableCellRendererComponent( - keyStoreTable, value, bIsSelected, bHasFocus, iRow, iCol); - - if (value != null) { - // Type column - display an icon representing the type - if (iCol == 0) - configureTypeColumn(value, cell); - // Last Modified column - format date (if date supplied) - /*else if (((keyStoreTable.getModel() instanceof PasswordsTableModel) && (iCol == 3)) || - ((keyStoreTable.getModel() instanceof KeyPairsTableModel) && (iCol == 4))|| - ((keyStoreTable.getModel() instanceof TrustedCertsTableModel) && (iCol == 4))){ - if (value instanceof Date) { - // Include timezone - cell.setText(DateFormat.getDateTimeInstance(DateFormat.MEDIUM, - DateFormat.LONG).format((Date) value)); - } else { - cell.setText(value.toString()); - } - }*/ - // Other columns - just use their text values - else - cell.setText(value.toString()); - } - - cell.setBorder(new EmptyBorder(0, 5, 0, 5)); - return cell; - } - - private void configureTypeColumn(Object value, JLabel cell) { - ImageIcon icon = null; - // The cell is in the first column of Passwords table - if (PASSWORD_ENTRY_TYPE.equals(value)) { - icon = passwordEntryIcon; // key (i.e. password) entry image - } - // The cell is in the first column of Key Pairs table - else if (KEY_PAIR_ENTRY_TYPE.equals(value)) { - icon = keypairEntryIcon; // key pair entry image - } - // The cell is in the first column of Trusted Certificates table - else if (TRUST_CERT_ENTRY_TYPE.equals(value)) { - icon = trustcertEntryIcon; // trust. certificate entry image - } - - cell.setIcon(icon); - cell.setText(""); - cell.setVerticalAlignment(CENTER); - cell.setHorizontalAlignment(CENTER); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/TableHeaderRenderer.java ---------------------------------------------------------------------- diff --git a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/TableHeaderRenderer.java b/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/TableHeaderRenderer.java deleted file mode 100644 index 8070b98..0000000 --- a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/TableHeaderRenderer.java +++ /dev/null @@ -1,100 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.ui.credentialmanager; - -import static javax.swing.border.BevelBorder.RAISED; - -import java.awt.Component; - -import javax.swing.ImageIcon; -import javax.swing.JLabel; -import javax.swing.JTable; -import javax.swing.border.BevelBorder; -import javax.swing.border.CompoundBorder; -import javax.swing.border.EmptyBorder; -import javax.swing.table.DefaultTableCellRenderer; - -import net.sf.taverna.t2.workbench.ui.credentialmanager.KeyPairsTableModel; -import net.sf.taverna.t2.workbench.ui.credentialmanager.PasswordsTableModel; -import net.sf.taverna.t2.workbench.ui.credentialmanager.TableHeaderRenderer; -import net.sf.taverna.t2.workbench.ui.credentialmanager.TrustedCertsTableModel; - -/** - * Custom cell renderer for the headers of the tables displaying - * the Keystore/Truststore contents. - */ -@SuppressWarnings("serial") -public class TableHeaderRenderer extends DefaultTableCellRenderer { - private final ImageIcon entryTypeIcon = new ImageIcon( - TableHeaderRenderer.class - .getResource("/images/table/entry_heading.png")); - - @Override - public Component getTableCellRendererComponent(JTable jtKeyStoreTable, - Object value, boolean bIsSelected, boolean bHasFocus, int iRow, - int iCol) { - // Get header renderer - JLabel header = (JLabel) jtKeyStoreTable.getColumnModel().getColumn(iCol).getHeaderRenderer(); - - // The entry type header contains an icon for every table - if (iCol == 0) { - header.setText(""); - header.setIcon(entryTypeIcon); // entry type icon (header for the first column of the table) - header.setHorizontalAlignment(CENTER); - header.setVerticalAlignment(CENTER); - header.setToolTipText("Entry type"); - } - // All other headers contain text - else { - header.setText((String) value); - header.setHorizontalAlignment(LEFT); - - // Passwords table - if (jtKeyStoreTable.getModel() instanceof PasswordsTableModel){ - if (iCol == 1) //Service URL column - header.setToolTipText("URL of the service username and password will be used for"); - else if (iCol == 2) // Username column - header.setToolTipText("Username for the service"); - } - // Key pairs table - else if (jtKeyStoreTable.getModel() instanceof KeyPairsTableModel) { - if (iCol == 1) // Owner - header.setToolTipText("Certificate's owner"); - else if (iCol == 2) // Issuer - header.setToolTipText("Certificate's issuer"); - else if (iCol == 3) // Serial number - header.setToolTipText("Certificate's serial number"); - } - // Trusted certs table - else if (jtKeyStoreTable.getModel() instanceof TrustedCertsTableModel) { - if (iCol == 1) // Owner - header.setToolTipText("Certificate's owner"); - else if (iCol == 2) // Issuer - header.setToolTipText("Certificate's issuer"); - else if (iCol == 3) // Serial number - header.setToolTipText("Certificate's serial number"); - } - } - header.setBorder(new CompoundBorder(new BevelBorder(RAISED), - new EmptyBorder(0, 5, 0, 5))); - return header; - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/TrustedCertsTableModel.java ---------------------------------------------------------------------- diff --git a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/TrustedCertsTableModel.java b/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/TrustedCertsTableModel.java deleted file mode 100644 index 28faf23..0000000 --- a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/TrustedCertsTableModel.java +++ /dev/null @@ -1,216 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.ui.credentialmanager; - -import static javax.swing.JOptionPane.ERROR_MESSAGE; -import static javax.swing.JOptionPane.showMessageDialog; -import static org.apache.taverna.security.credentialmanager.CredentialManager.KeystoreType.TRUSTSTORE; -import static net.sf.taverna.t2.workbench.ui.credentialmanager.CMStrings.ERROR_TITLE; -import static net.sf.taverna.t2.workbench.ui.credentialmanager.CredentialManagerUI.TRUST_CERT_ENTRY_TYPE; - -import java.util.Set; -import java.util.TreeSet; - -import javax.swing.JFrame; -import javax.swing.table.AbstractTableModel; - -import org.apache.taverna.lang.observer.Observable; -import org.apache.taverna.lang.observer.Observer; -import org.apache.taverna.security.credentialmanager.CMException; -import org.apache.taverna.security.credentialmanager.CredentialManager; -import org.apache.taverna.security.credentialmanager.KeystoreChangedEvent; - -import org.apache.log4j.Logger; - -/** - * The table model used to display the Keystore's trusted certificate entries. - * - * @author Alex Nenadic - */ -@SuppressWarnings("serial") -public class TrustedCertsTableModel extends AbstractTableModel implements - Observer<KeystoreChangedEvent> { - private static final Logger logger = Logger - .getLogger(TrustedCertsTableModel.class); - - // Column names - private String[] columnNames; - // Table data - private Object[][] data; - private CredentialManager credManager; - - public TrustedCertsTableModel(CredentialManager credentialManager) { - credManager = credentialManager; - if (credentialManager == null) { - // Failed to instantiate Credential Manager - warn the user and exit - String sMessage = "Failed to instantiate Credential Manager. "; - logger.error("CM GUI: "+ sMessage); - showMessageDialog(new JFrame(), sMessage, ERROR_TITLE, - ERROR_MESSAGE); - return; - } - - data = new Object[0][0]; - columnNames = new String[] { - "Entry Type", // type of the Keystore entry - "Owner", // owner's common name - "Issuer", // issuer's common name - "Serial Number", // public key certificate's serial number - "Last Modified", // last modified date of the entry - "Alias" // the invisible column holding the actual alias in the Keystore - }; - - try { - load(); - } catch (CMException cme) { - String sMessage = "Failed to load trusted certificates"; - logger.error(sMessage); - showMessageDialog(new JFrame(), sMessage, ERROR_TITLE, - ERROR_MESSAGE); - return; - } - - // Start observing changes to the Keystore - credManager.addObserver(this); - } - - /** - * Load the TrustCertsTableModel with trusted certificate entries from the Keystore. - */ - public void load() throws CMException { - /* - * Place trusted certificate entries' aliases in a tree map to sort them - */ - Set<String> aliases = new TreeSet<>(); - for (String alias : credManager.getAliases(TRUSTSTORE)) - /* - * We are only interested in trusted certificate entries here. Alias - * for such entries is constructed as - * "trustedcert#<CERT_SERIAL_NUMBER>#<CERT_COMMON_NAME>" - */ - if (alias.startsWith("trustedcert#")) - aliases.add(alias); - - /* - * Create one table row for each trusted certificate entry Each row has - * 4 fields - type, owner name, last modified data and the invisible - * alias - */ - data = new Object[aliases.size()][6]; - - /* - * Iterate through the sorted aliases, retrieving the trusted - * certificate entries and populating the table model - */ - int i = 0; - for (String alias : aliases) { - /* - * Populate the type column - it is set with an integer but a custom - * cell renderer will cause a suitable icon to be displayed - */ - data[i][0] = TRUST_CERT_ENTRY_TYPE; - - /* - * Split the alias string to extract owner, issuer and serial number - * alias = - * "trustedcert#<CERT_SUBJECT_COMMON_NAME>"#"<CERT_ISSUER_COMMON_NAME>" - * #"<CERT_SERIAL_NUMBER> - */ - String[] aliasComponents = alias.split("#"); - - // Populate the owner column extracted from the alias - data[i][1] = aliasComponents[1]; - - // Populate the issuer column extracted from the alias - data[i][2] = aliasComponents[2]; - - // Populate the serial number column extracted from the alias - data[i][3] = aliasComponents[3]; - - // Populate the modified date column - //data[iCnt][4] = credManager.getEntryCreationDate(CredentialManager.TRUSTSTORE, alias); - - // Populate the invisible alias column - data[i][5] = alias; - - i++; - } - - fireTableDataChanged(); - } - - /** - * Get the number of columns in the table. - */ - @Override - public int getColumnCount() { - return columnNames.length; - } - - /** - * Get the number of rows in the table. - */ - @Override - public int getRowCount() { - return data.length; - } - - /** - * Get the name of the column at the given position. - */ - @Override - public String getColumnName(int iCol) { - return columnNames[iCol]; - } - - /** - * Get the cell value at the given row and column position. - */ - @Override - public Object getValueAt(int iRow, int iCol) { - return data[iRow][iCol]; - } - - /** - * Get the class at of the cells at the given column position. - */ - @Override - public Class<? extends Object> getColumnClass(int iCol) { - return getValueAt(0, iCol).getClass(); - } - - /** - * Is the cell at the given row and column position editable? - */ - @Override - public boolean isCellEditable(int iRow, int iCol) { - // The table is always read-only - return false; - } - - @Override - public void notify(Observable<KeystoreChangedEvent> sender, - KeystoreChangedEvent message) throws Exception { - // reload the table - if (message.keystoreType.equals(TRUSTSTORE)) - load(); - } -}
