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/CredentialManagerUI.java
----------------------------------------------------------------------
diff --git 
a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/CredentialManagerUI.java
 
b/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/CredentialManagerUI.java
deleted file mode 100644
index fb6a347..0000000
--- 
a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/CredentialManagerUI.java
+++ /dev/null
@@ -1,1512 +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.PAGE_END;
-import static java.awt.Dialog.ModalExclusionType.APPLICATION_EXCLUDE;
-import static java.awt.Toolkit.getDefaultToolkit;
-import static javax.swing.JFileChooser.APPROVE_OPTION;
-import static javax.swing.JOptionPane.ERROR_MESSAGE;
-import static javax.swing.JOptionPane.INFORMATION_MESSAGE;
-import static javax.swing.JOptionPane.NO_OPTION;
-import static javax.swing.JOptionPane.WARNING_MESSAGE;
-import static javax.swing.JOptionPane.YES_NO_OPTION;
-import static javax.swing.JOptionPane.YES_OPTION;
-import static javax.swing.JOptionPane.showConfirmDialog;
-import static javax.swing.JOptionPane.showMessageDialog;
-import static javax.swing.JTable.AUTO_RESIZE_ALL_COLUMNS;
-import static javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
-import static javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
-import static 
org.apache.taverna.security.credentialmanager.CredentialManager.KeystoreType.KEYSTORE;
-import static 
org.apache.taverna.security.credentialmanager.CredentialManager.KeystoreType.TRUSTSTORE;
-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.Dimension;
-import java.awt.FlowLayout;
-import java.awt.Image;
-import java.awt.Point;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileWriter;
-import java.io.InputStreamReader;
-import java.net.URI;
-import java.security.Key;
-import java.security.KeyStore;
-import java.security.cert.Certificate;
-import java.security.cert.CertificateFactory;
-import java.security.cert.X509Certificate;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.prefs.Preferences;
-
-import javax.swing.JButton;
-import javax.swing.JFileChooser;
-import javax.swing.JFrame;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTabbedPane;
-import javax.swing.JTable;
-import javax.swing.border.EmptyBorder;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
-import javax.swing.table.TableColumn;
-
-import org.apache.taverna.security.credentialmanager.CMException;
-import org.apache.taverna.security.credentialmanager.CredentialManager;
-import 
org.apache.taverna.security.credentialmanager.CredentialManager.KeystoreType;
-import org.apache.taverna.security.credentialmanager.DistinguishedNameParser;
-import org.apache.taverna.security.credentialmanager.UsernamePassword;
-
-import org.apache.log4j.Logger;
-import org.bouncycastle.openssl.PEMReader;
-import org.bouncycastle.openssl.PEMWriter;
-
-/**
- * Provides a UI for the Credential Manager for users to manage their
- * credentials saved by the Credential Manager in Taverna's Keystore and
- * Trustore. Credentials include username and passwords pairs, key pairs, proxy
- * key pairs and trusted certificates of CA's and s. Credentials are stored in
- * two Bouncy Castle "UBER"-type keystores: the Keystore (containing passwords
- * and (normal and proxy) key pairs) and the Truststore (containing trusted
- * certificates).
- *
- * Inspired by the Portlecle tool (http://portecle.sourceforge.net/)
- * and Firefox's Certificate Manager.
- *
- * @author Alex Nenadic
- */
-
-@SuppressWarnings("serial")
-public class CredentialManagerUI extends JFrame {
-       private static Logger logger = 
Logger.getLogger(CredentialManagerUI.class);
-       /** Default tabbed pane width */
-       private static final int DEFAULT_FRAME_WIDTH = 650;
-       /** Default tabbed pane height */
-       private static final int DEFAULT_FRAME_HEIGHT = 400;
-       /** Credential Manager icon (when frame is minimised)*/
-       private static final Image credManagerIconImage = getDefaultToolkit()
-                       .createImage(
-                                       CredentialManagerUI.class
-                                                       
.getResource("/images/cred_manager_transparent.png"));
-
-       /**
-        * Credential Manager to manage all operations on the Keystore and
-        * Truststore
-        */
-       public final CredentialManager credManager;
-       private final DistinguishedNameParser dnParser;
-       
-       ////////////// Tabs //////////////
-
-       /**
-        * Tabbed pane to hold tables containing various entries in the 
Keystore and
-        * Truststore
-        */
-       private JTabbedPane keyStoreTabbedPane;
-       /** Tab 1: holds passwords table */
-       private JPanel passwordsTab = new JPanel(new BorderLayout(10, 10));
-       /** Tab 1: name */
-       public static final String PASSWORDS = "Passwords";
-       /** Tab 2: holds key pairs (user certificates) table */
-       private JPanel keyPairsTab = new JPanel(new BorderLayout(10, 10));
-       /** Tab 2: name */
-       public static final String KEYPAIRS = "Your Certificates";
-       /** Tab 3: holds trusted certificates table */
-       private JPanel trustedCertificatesTab = new JPanel(new BorderLayout(10, 
10));
-       /** Tab 3: name */
-       public static final String TRUSTED_CERTIFICATES = "Trusted 
Certificates";
-
-       ////////////// Tables //////////////
-
-       /** Password entries' table */
-       private JTable passwordsTable;
-       /** Key pair entries' table */
-       private JTable keyPairsTable;
-       /** Trusted certificate entries' table */
-       private JTable trustedCertsTable;
-       /** Password entry column type */
-       public static final String PASSWORD_ENTRY_TYPE = "Password";
-       /** Key pair entry column type */
-       public static final String KEY_PAIR_ENTRY_TYPE = "Key Pair";
-       /** Trusted cert entry column type */
-       public static final String TRUST_CERT_ENTRY_TYPE = "Trusted 
Certificate";
-
-       /**
-        * Overrides the Object's clone method to prevent the singleton object 
to be
-        * cloned.
-        */
-       @Override
-       public Object clone() throws CloneNotSupportedException {
-               throw new CloneNotSupportedException();
-       }
-
-       /**
-        * Creates a new Credential Manager UI's frame.
-        */
-       public CredentialManagerUI(CredentialManager credentialManager,
-                       DistinguishedNameParser dnParser) {
-               credManager = credentialManager;
-               this.dnParser = dnParser;
-               setModalExclusionType(APPLICATION_EXCLUDE);
-               // Initialise the UI components
-               initComponents();
-       }
-
-       private void initComponents() {
-               /*
-                * Initialise the tabbed pane that contains the tabs with 
tabular
-                * representations of the Keystore's content.
-                */
-               keyStoreTabbedPane = new JTabbedPane();
-               /*
-                * Initialise the tab containing the table for 
username/password entries
-                * from the Keystore
-                */
-               passwordsTable = initTable(PASSWORDS, passwordsTab);
-               /*
-                * Initialise the tab containing the table for key pair entries 
from the
-                * Keystore
-                */
-               keyPairsTable = initTable(KEYPAIRS, keyPairsTab);
-               /*
-                * Initialise the tab containing the table for proxy entries 
from the
-                * Keystore
-                */
-               //proxiesTable = initTable(PROXIES, proxiesTab);
-               /*
-                * Initialise the tab containing the table for trusted 
certificate
-                * entries from the Truststore
-                */
-               trustedCertsTable = initTable(TRUSTED_CERTIFICATES,
-                               trustedCertificatesTab);
-               /*
-                * Set the size of the tabbed pane to the preferred size - the 
size of
-                * the main application frame depends on it.
-                */
-               keyStoreTabbedPane.setPreferredSize(new 
Dimension(DEFAULT_FRAME_WIDTH,
-                               DEFAULT_FRAME_HEIGHT));
-
-               JPanel globalButtons = new JPanel(new 
FlowLayout(FlowLayout.RIGHT));
-               JButton resetJavaAuthCache = new JButton("Clear HTTP 
authentication");
-               resetJavaAuthCache.addActionListener(new ActionListener() {
-                       @Override
-                       public void actionPerformed(ActionEvent e) {
-                               clearAuthenticationCache();
-                       }
-               });
-               globalButtons.add(resetJavaAuthCache);
-
-               // Button for changing Credential Manager's master password
-               JButton changeMasterPasswordButton = new JButton(
-                               "Change master password");
-               changeMasterPasswordButton.addActionListener(new 
ActionListener() {
-                       @Override
-                       public void actionPerformed(ActionEvent e) {
-                               changeMasterPassword();
-                       }
-               });
-               globalButtons.add(changeMasterPasswordButton);
-
-               // Add change master password to the main application frame
-               getContentPane().add(globalButtons, NORTH);
-               // Add tabbed pane to the main application frame
-               getContentPane().add(keyStoreTabbedPane, CENTER);
-
-               // Handle application close
-               addWindowListener(new WindowAdapter() {
-                       @Override
-                       public void windowClosing(WindowEvent evt) {
-                               closeFrame();
-                       }
-               });
-               setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
-
-               pack();
-
-               // Centre the frame in the centre of the screen
-               setLocationRelativeTo(null);
-
-               // Set the frame's icon
-               setIconImage(credManagerIconImage);
-
-               // Set the frame's title
-               setTitle("Credential Manager");
-
-               // setModal(true);
-               // setVisible(true);
-       }
-
-       protected void clearAuthenticationCache() {
-               if (!credManager.resetAuthCache())
-                       showMessageDialog(
-                                       this,
-                                       "Java's internal HTTP authentication 
cache could not be cleared. \n\n"
-                                                       + "Taverna can only 
clear the cache using an undocumented Java API \n"
-                                                       + "that might not work 
if you are using a Java VM other than \n"
-                                                       + "Java 6 from Sun. You 
can restarting Taverna to clear the cache.",
-                                       "Could not clear authentication cache", 
ERROR_MESSAGE);
-               else
-                       showMessageDialog(
-                                       this,
-                                       "Java's internal HTTP authentication 
cache has been cleared. \n\n"
-                                                       + "You might also need 
to edit or delete individual \n"
-                                                       + "password entries in 
the credential manager \n"
-                                                       + "if a relevant 
password has previously been saved.",
-                                       "Cleared authentication cache", 
INFORMATION_MESSAGE);
-       }
-
-       protected void changeMasterPassword() {
-               ChangeMasterPasswordDialog changePasswordDialog = new 
ChangeMasterPasswordDialog(
-                               this, "Change master password", true,
-                               "Change master password for Credential 
Manager", credManager);
-               changePasswordDialog.setLocationRelativeTo(null);
-               changePasswordDialog.setVisible(true);
-               String password = changePasswordDialog.getPassword();
-               if (password == null) // user cancelled
-                       return; // do nothing
-
-               try {
-                       credManager.changeMasterPassword(password);
-                       showMessageDialog(this, "Master password changed 
sucessfully",
-                                       ALERT_TITLE, INFORMATION_MESSAGE);
-               } catch (CMException cme) {
-                       /*
-                        * Failed to change the master password for Credential 
Manager -
-                        * warn the user
-                        */
-                       String exMessage = "Failed to change master password 
for Credential Manager";
-                       logger.error(exMessage);
-                       showMessageDialog(this, exMessage, ERROR_TITLE, 
ERROR_MESSAGE);
-               }
-       }
-
-       /**
-        * Initialise the tabs and tables with the content from the Keystore 
and Truststore.
-        */
-       private JTable initTable(String tableType, JPanel tab) {
-               JTable table = null;
-
-               if (tableType.equals(PASSWORDS)) { // Passwords table
-                       // The Passwords table's data model
-                       PasswordsTableModel passwordsTableModel = new 
PasswordsTableModel(credManager);
-                       // The table itself
-                       table = new JTable(passwordsTableModel);
-
-                       /*
-                        * Set the password and alias columns of the Passwords 
table to be
-                        * invisible by removing them from the column model 
(they will still
-                        * present in the table model)
-                        * 
-                        * Remove the last column first
-                        */
-                       TableColumn aliasColumn = 
table.getColumnModel().getColumn(5);
-                       table.getColumnModel().removeColumn(aliasColumn);
-                       TableColumn passwordColumn = 
table.getColumnModel().getColumn(4);
-                       table.getColumnModel().removeColumn(passwordColumn);
-                       TableColumn lastModifiedDateColumn = 
table.getColumnModel().getColumn(3);
-                       
table.getColumnModel().removeColumn(lastModifiedDateColumn);
-
-                       // Buttons
-                       JButton newPasswordButton = new JButton("New");
-                       newPasswordButton.addActionListener(new 
ActionListener() {
-                               @Override
-                               public void actionPerformed(ActionEvent e) {
-                                       newPassword();
-                               }
-                       });
-
-                       final JButton viewPasswordButton = new 
JButton("Details");
-                       viewPasswordButton.addActionListener(new 
ActionListener() {
-                               @Override
-                               public void actionPerformed(ActionEvent e) {
-                                       viewPassword();
-                               }
-                       });
-                       viewPasswordButton.setEnabled(false);
-
-                       final JButton editPasswordButton = new JButton("Edit");
-                       editPasswordButton.addActionListener(new 
ActionListener() {
-                               @Override
-                               public void actionPerformed(ActionEvent e) {
-                                       editPassword();
-                               }
-                       });
-                       editPasswordButton.setEnabled(false);
-
-                       final JButton deletePasswordButton = new 
JButton("Delete");
-                       deletePasswordButton.addActionListener(new 
ActionListener() {
-                               @Override
-                               public void actionPerformed(ActionEvent e) {
-                                       deletePassword();
-                               }
-                       });
-                       deletePasswordButton.setEnabled(false);
-
-                       /*
-                        * Selection listener for passwords table to 
enable/disable action
-                        * buttons accordingly
-                        */
-                       class PasswordsTableSelectionListner implements
-                                       ListSelectionListener {
-                               @Override
-                               public void valueChanged(ListSelectionEvent e) {
-                                       if (e.getSource() != 
passwordsTable.getSelectionModel())
-                                               return;
-                                       if (passwordsTable.getSelectedRow() == 
-1) {
-                                               // nothing is selected
-                                               
viewPasswordButton.setEnabled(false);
-                                               
editPasswordButton.setEnabled(false);
-                                               
deletePasswordButton.setEnabled(false);
-                                       } else {
-                                               if 
(!viewPasswordButton.isEnabled())
-                                                       
viewPasswordButton.setEnabled(true);
-                                               if 
(!editPasswordButton.isEnabled())
-                                                       
editPasswordButton.setEnabled(true);
-                                               if 
(!deletePasswordButton.isEnabled())
-                                                       
deletePasswordButton.setEnabled(true);
-                                       }
-                               }
-                       }
-                       table.getSelectionModel().addListSelectionListener(new 
PasswordsTableSelectionListner());
-
-                       // Panel to hold the buttons
-                       JPanel bp = new JPanel();
-                       bp.add(viewPasswordButton);
-                       bp.add(editPasswordButton);
-                       bp.add(newPasswordButton);
-                       bp.add(deletePasswordButton);
-
-                       // Add button panel to the tab
-                       tab.add(bp, PAGE_END);
-
-               } else if (tableType.equals(KEYPAIRS)) { // Key Pairs tab
-                       // The Key Pairs table's data model
-                       KeyPairsTableModel keyPairsTableModel = new 
KeyPairsTableModel(credManager);
-                       // The table itself
-                       table = new JTable(keyPairsTableModel);
-
-                       /*
-                        * Set the alias and service URIs columns of the 
KayPairs table to
-                        * be invisible by removing them from the column model 
(they will
-                        * still present in the table model)
-                        * 
-                        * Remove the last column first
-                        */
-                       TableColumn aliasColumn = 
table.getColumnModel().getColumn(6);
-                       table.getColumnModel().removeColumn(aliasColumn);
-                       TableColumn serviceURIsColumn = 
table.getColumnModel().getColumn(5);
-                       table.getColumnModel().removeColumn(serviceURIsColumn);
-                       TableColumn lastModifiedDateColumn = 
table.getColumnModel().getColumn(4);
-                       
table.getColumnModel().removeColumn(lastModifiedDateColumn);
-
-                       // Buttons
-                       final JButton viewKeyPairButton = new 
JButton("Details");
-                       viewKeyPairButton.addActionListener(new 
ActionListener() {
-                               @Override
-                               public void actionPerformed(ActionEvent e) {
-                                       viewCertificate();
-                               }
-                       });
-                       viewKeyPairButton.setEnabled(false);
-
-                       JButton importKeyPairButton = new JButton("Import");
-                       importKeyPairButton.addActionListener(new 
ActionListener() {
-                               @Override
-                               public void actionPerformed(ActionEvent e) {
-                                       importKeyPair();
-                               }
-                       });
-
-                       final JButton exportKeyPairButton = new 
JButton("Export");
-                       exportKeyPairButton.addActionListener(new 
ActionListener() {
-                               @Override
-                               public void actionPerformed(ActionEvent e) {
-                                       exportKeyPair();
-                               }
-                       });
-                       exportKeyPairButton.setEnabled(false);
-
-                       final JButton deleteKeyPairButton = new 
JButton("Delete");
-                       deleteKeyPairButton.addActionListener(new 
ActionListener() {
-                               @Override
-                               public void actionPerformed(ActionEvent e) {
-                                       deleteKeyPair();
-                               }
-                       });
-                       deleteKeyPairButton.setEnabled(false);
-
-                       /*
-                        * Selection listener for key pairs table to 
enable/disable action
-                        * buttons accordingly
-                        */
-                       class KeyPairsTableSelectionListner implements
-                                       ListSelectionListener {
-                               @Override
-                               public void valueChanged(ListSelectionEvent e) {
-                                       if (e.getSource() != 
keyPairsTable.getSelectionModel())
-                                               return;
-                                       if (keyPairsTable.getSelectedRow() == 
-1) {
-                                               // nothing is selected
-                                               
viewKeyPairButton.setEnabled(false);
-                                               
exportKeyPairButton.setEnabled(false);
-                                               
deleteKeyPairButton.setEnabled(false);
-                                       } else {
-                                               if 
(!viewKeyPairButton.isEnabled())
-                                                       
viewKeyPairButton.setEnabled(true);
-                                               if 
(!exportKeyPairButton.isEnabled())
-                                                       
exportKeyPairButton.setEnabled(true);
-                                               if 
(!deleteKeyPairButton.isEnabled())
-                                                       
deleteKeyPairButton.setEnabled(true);
-                                       }
-                               }
-                       }
-                       table.getSelectionModel().addListSelectionListener(
-                                       new KeyPairsTableSelectionListner());
-
-                       // Panel to hold the buttons
-                       JPanel bp = new JPanel();
-                       bp.add(viewKeyPairButton);
-                       bp.add(importKeyPairButton);
-                       bp.add(exportKeyPairButton);
-                       bp.add(deleteKeyPairButton);
-
-                       // Add button panel to the tab
-                       tab.add(bp, PAGE_END);
-               } else if (tableType.equals(TRUSTED_CERTIFICATES)) { // 
Certificates tab
-
-                       // The Trusted Certificate table's data model
-                       TrustedCertsTableModel trustedCertificatesTableModel = 
new TrustedCertsTableModel(credManager);
-                       // The table itself
-                       table = new JTable(trustedCertificatesTableModel);
-
-                       /*
-                        * Set the alias columns of the Trusted Certs table to 
be invisible
-                        * by removing them from the column model (they will 
still be
-                        * present in the table model)
-                        * 
-                        * Remove the last column first
-                        */
-                       TableColumn aliasColumn = 
table.getColumnModel().getColumn(5);
-                       table.getColumnModel().removeColumn(aliasColumn);
-                       TableColumn lastModifiedDateColumn = 
table.getColumnModel().getColumn(4);
-                       
table.getColumnModel().removeColumn(lastModifiedDateColumn);
-
-                       // Buttons
-                       final JButton viewTrustedCertificateButton = new 
JButton("Details");
-                       viewTrustedCertificateButton
-                                       .addActionListener(new ActionListener() 
{
-                                               @Override
-                                               public void 
actionPerformed(ActionEvent e) {
-                                                       viewCertificate();
-                                               }
-                                       });
-                       viewTrustedCertificateButton.setEnabled(false);
-
-                       JButton importTrustedCertificateButton = new 
JButton("Import");
-                       importTrustedCertificateButton
-                                       .addActionListener(new ActionListener() 
{
-                                               @Override
-                                               public void 
actionPerformed(ActionEvent e) {
-                                                       
importTrustedCertificate();
-                                               }
-                                       });
-
-                       final JButton exportTrustedCertificateButton = new 
JButton("Export");
-                       exportTrustedCertificateButton
-                                       .addActionListener(new ActionListener() 
{
-                                               @Override
-                                               public void 
actionPerformed(ActionEvent e) {
-                                                       
exportTrustedCertificate();
-                                               }
-                                       });
-                       exportTrustedCertificateButton.setEnabled(false);
-
-                       final JButton deleteTrustedCertificateButton = new 
JButton("Delete");
-                       deleteTrustedCertificateButton
-                                       .addActionListener(new ActionListener() 
{
-                                               @Override
-                                               public void 
actionPerformed(ActionEvent e) {
-                                                       
deleteTrustedCertificate();
-                                               }
-                                       });
-                       deleteTrustedCertificateButton.setEnabled(false);
-
-                       // Selection listener for trusted certs table to 
enable/disable action buttons accordingly
-                       class TrustedCertsTableSelectionListener implements
-                                       ListSelectionListener {
-                               @Override
-                               public void valueChanged(ListSelectionEvent e) {
-                                       if (e.getSource() != 
trustedCertsTable.getSelectionModel())
-                                               return;
-                                       if (trustedCertsTable.getSelectedRow() 
== -1) {
-                                               // nothing is selected
-                                               
viewTrustedCertificateButton.setEnabled(false);
-                                               
exportTrustedCertificateButton.setEnabled(false);
-                                               
deleteTrustedCertificateButton.setEnabled(false);
-                                       } else {
-                                               if 
(!viewTrustedCertificateButton.isEnabled())
-                                                       
viewTrustedCertificateButton.setEnabled(true);
-                                               if 
(!exportTrustedCertificateButton.isEnabled())
-                                                       
exportTrustedCertificateButton.setEnabled(true);
-                                               if 
(!deleteTrustedCertificateButton.isEnabled())
-                                                       
deleteTrustedCertificateButton.setEnabled(true);
-                                       }
-                               }
-                       }
-                       table.getSelectionModel().addListSelectionListener(
-                                       new 
TrustedCertsTableSelectionListener());
-
-                       // Panel to hold the buttons
-                       JPanel bp = new JPanel();
-                       bp.add(viewTrustedCertificateButton);
-                       bp.add(importTrustedCertificateButton);
-                       bp.add(exportTrustedCertificateButton);
-                       bp.add(deleteTrustedCertificateButton);
-
-                       // Add button panel to the tab
-                       tab.add(bp, PAGE_END);
-               } else {
-                       throw new RuntimeException("Unknown table type " + 
tableType);
-               }
-
-               table.setShowGrid(false);
-               table.setRowMargin(0);
-               table.getColumnModel().setColumnMargin(0);
-               table.getTableHeader().setReorderingAllowed(false);
-               table.setAutoResizeMode(AUTO_RESIZE_ALL_COLUMNS);
-               // Top accommodates entry icons with 2 pixels spare space 
(images are
-               // 16x16 pixels)
-               table.setRowHeight(18);
-
-               // Add custom renderrers for the table headers and cells
-               for (int iCnt = 0; iCnt < table.getColumnCount(); iCnt++) {
-                       TableColumn column = 
table.getColumnModel().getColumn(iCnt);
-                       column.setHeaderRenderer(new TableHeaderRenderer());
-                       column.setCellRenderer(new TableCellRenderer());
-               }
-
-               // Make the first column small and not resizable (it holds 
icons to
-               // represent different entry types)
-               TableColumn typeCol = table.getColumnModel().getColumn(0);
-               typeCol.setResizable(false);
-               typeCol.setMinWidth(20);
-               typeCol.setMaxWidth(20);
-               typeCol.setPreferredWidth(20);
-
-               // Set the size for the second column
-               // (i.e. Service URI column of Passwords table, and
-               // Certificate Name column of the Kay Pairs and Trusted 
Certificates tables)
-               // We do not care about the size of other columns.
-               TableColumn secondCol = table.getColumnModel().getColumn(1);
-               secondCol.setMinWidth(20);
-               secondCol.setMaxWidth(10000);
-               secondCol.setPreferredWidth(300);
-
-               // Put the table into a scroll pane
-               JScrollPane jspTableScrollPane = new JScrollPane(table,
-                               VERTICAL_SCROLLBAR_AS_NEEDED, 
HORIZONTAL_SCROLLBAR_AS_NEEDED);
-               
jspTableScrollPane.getViewport().setBackground(table.getBackground());
-
-               // Put the scroll pane on the tab panel
-               tab.add(jspTableScrollPane, CENTER);
-               jspTableScrollPane.setBorder(new EmptyBorder(3, 3, 3, 3));
-
-               /*
-                * Add mouse listeners to show an entry's details if it is
-                * double-clicked
-                */
-               table.addMouseListener(new MouseAdapter() {
-                       @Override
-                       public void mouseClicked(MouseEvent evt) {
-                               tableDoubleClick(evt);
-                       }
-               });
-
-               // Add the tab to the tabbed pane
-               keyStoreTabbedPane.addTab(tableType, tab);
-
-               return table;
-       }
-
-       /**
-        * Displays the details of the username/password pair entry - this 
includes
-        * showing the plaintext password and service URI for this entry.
-        */
-       private void viewPassword() {
-               // Which username/password pair entry has been selected, if any?
-               int iRow = passwordsTable.getSelectedRow();
-               if (iRow == -1) // no row currently selected
-                       return;
-
-               // Get current values for service URI, username and password
-               String serviceURI = (String) passwordsTable.getValueAt(iRow, 
1); // current entry's service URI
-
-               String username = (String) passwordsTable.getValueAt(iRow, 2); 
// current entry's username
-
-               /*
-                * Because the password column is not visible we call the 
getValueAt
-                * method on the table model rather than at the JTable
-                */
-               String password = (String) passwordsTable.getModel()
-                               .getValueAt(iRow, 4); // current entry's 
password value
-
-               // Let the user view service URI, username and password of the 
entry
-               ViewUsernamePasswordEntryDialog viewServicePassDialog = new 
ViewUsernamePasswordEntryDialog(
-                               this, serviceURI, username, password);
-
-               viewServicePassDialog.setLocationRelativeTo(this);
-               viewServicePassDialog.setVisible(true);
-       }
-
-       /**
-        * Lets a user insert a new username/password/service URI tuple to the
-        * Keystore.
-        */
-       private void newPassword() {
-               URI serviceURI = null; // service URI
-               String username = null; // username
-               String password = null; // password
-
-               // Loop until the user cancels or enters everything correctly
-               while (true) {
-                       /*
-                        * Let the user insert a new password entry (by 
specifying service
-                        * URI, username and password)
-                        */
-                       NewEditPasswordEntryDialog newPasswordDialog = new 
NewEditPasswordEntryDialog(
-                                       this, "New username and password for a 
service", true,
-                                       serviceURI, username, password, 
credManager);
-                       newPasswordDialog.setLocationRelativeTo(this);
-                       newPasswordDialog.setVisible(true);
-
-                       serviceURI = newPasswordDialog.getServiceURI(); // get 
service URI
-                       username = newPasswordDialog.getUsername(); // get 
username
-                       password = newPasswordDialog.getPassword(); // get 
password
-
-                       if (password == null) { // user cancelled - any of the 
above three
-                               // fields is null
-                               // do nothing
-                               return;
-                       }
-
-                       /*
-                        * Check if a password entry with the given service URI 
already
-                        * exists in the Keystore. We ask this here as the user 
may wish to
-                        * overwrite the existing password entry. Checking for 
key pair
-                        * entries' URIs is done in the NewEditPasswordEntry 
dialog.
-                        */
-
-                       /*
-                        * Get list of service URIs for all the password 
entries in the
-                        * Keystore
-                        */
-                       List<URI> serviceURIs = null;
-                       try {
-                               serviceURIs = credManager
-                                               
.getServiceURIsForAllUsernameAndPasswordPairs();
-                       } catch (CMException cme) {
-                               showMessageDialog(this, "Failed to get service 
URIs for all username and password pairs "
-                                               + "to check if the entered 
service URI already exists",
-                                               ERROR_TITLE, ERROR_MESSAGE);
-                               return;
-                       }
-                       if (serviceURIs.contains(serviceURI)) { // if such a 
URI already
-                               // exists
-                               // Ask if the user wants to overwrite it
-                               int answer = showConfirmDialog(
-                                                               this,
-                                                               "Credential 
Manager already contains a password entry with the same service URI.\n"
-                                                                               
+ "Do you want to overwrite it?",
-                                                               ALERT_TITLE,
-                                                               YES_NO_OPTION);
-
-                               // Add the new password entry in the Keystore
-                               try {
-                                       if (answer == YES_OPTION) {
-                                               
credManager.addUsernameAndPasswordForService(
-                                                               new 
UsernamePassword(username, password),
-                                                               serviceURI);
-                                               break;
-                                       }
-                               } catch (CMException cme) {
-                                       showMessageDialog(
-                                                       this,
-                                                       "Credential Manager 
failed to insert a new username and password pair",
-                                                       ERROR_TITLE, 
ERROR_MESSAGE);
-                               }
-                               /*
-                                * Otherwise show the same window with the 
entered service URI,
-                                * username and password values
-                                */
-                       } else
-                               // Add the new password entry in the Keystore
-                               try {
-                                       
credManager.addUsernameAndPasswordForService(new UsernamePassword(username,
-                                                       password), serviceURI);
-                                       break;
-                               } catch (CMException cme) {
-                                       showMessageDialog(
-                                                       this,
-                                                       "Credential Manager 
failed to insert a new username and password pair",
-                                                       ERROR_TITLE, 
ERROR_MESSAGE);
-                               }
-               }
-       }
-
-       /**
-        * Lets a user insert a new username/password pair for a given service 
URI
-        * to the Keystore.
-        */
-       public void newPasswordForService(URI serviceURI) {
-               /*
-                * As this method can be called from outside of Credential 
Manager UI,
-                * e.g. from wsdl-activity-ui or rshell-activity-ui to pop up a 
dialog
-                * to ask the user for username and password, we also want to 
make sure
-                * the main Credential Manager UI Dialog is visible as it may 
be clearer
-                * to the user what is going on
-                */
-               if (!isVisible() || getState() == ICONIFIED)
-                       setVisible(true);
-
-               // Make sure password tab is selected as this method may
-               // be called from outside of Credential Manager UI.
-               keyStoreTabbedPane.setSelectedComponent(passwordsTab);
-
-               String username = null; // username
-               String password = null; // password
-
-               // Loop until the user cancels or enters everything correctly
-               while (true) {
-
-//                     if(!this.isVisible()){ // if Cred Man UI is already 
showing but e.g. obscured by another window or minimised
-//                             // Do not bring it up!
-//                     } // actually we now want to show it as it makes it 
clearer to the user what is going on
-
-                       // Let the user insert a new password entry for the 
given service
-                       // URI (by specifying username and password)
-                       NewEditPasswordEntryDialog newPasswordDialog = new 
NewEditPasswordEntryDialog(
-                                       this, "New username and password for a 
service", true,
-                                       serviceURI, username, password, 
credManager);
-                       newPasswordDialog.setLocationRelativeTo(this);
-                       newPasswordDialog.setVisible(true);
-
-                       serviceURI = newPasswordDialog.getServiceURI(); // get 
service URI
-                       username = newPasswordDialog.getUsername(); // get 
username
-                       password = newPasswordDialog.getPassword(); // get 
password
-
-                       if (password == null) // user cancelled - any of the 
above three
-                               // fields is null
-                               // do nothing
-                               return;
-
-                       /*
-                        * Check if a password entry with the given service URI 
already
-                        * exists in the Keystore. We ask this here as the user 
may wish to
-                        * overwrite the existing password entry. Checking for 
key pair
-                        * entries' URIs is done in the NewEditPasswordEntry 
dialog.
-                        */
-
-                       // Get list of service URIs for all the password 
entries in the
-                       // Keystore
-                       List<URI> serviceURIs = null;
-                       try {
-                               serviceURIs = credManager
-                                               
.getServiceURIsForAllUsernameAndPasswordPairs();
-                       } catch (CMException cme) {
-                               showMessageDialog(this, "Failed to get service 
URIs for all username and password pairs "
-                                               + "to check if the entered 
service URI already exists",
-                                               ERROR_TITLE, ERROR_MESSAGE);
-                               return;
-                       }
-                       if (serviceURIs.contains(serviceURI)) { // if such a 
URI already
-                               // exists
-                               // Ask if the user wants to overwrite it
-                               int answer = showConfirmDialog(
-                                               this,
-                                               "Credential Manager already 
contains a password entry with the same service URI.\n"
-                                                               + "Do you want 
to overwrite it?", ALERT_TITLE,
-                                               YES_NO_OPTION);
-
-                               // Add the new password entry in the Keystore
-                               try {
-                                       if (answer == YES_OPTION) {
-                                               
credManager.addUsernameAndPasswordForService(
-                                                               new 
UsernamePassword(username, password),
-                                                               serviceURI);
-                                               break;
-                                       }
-                               } catch (CMException cme) {
-                                       String exMessage = "Credential Manager 
failed to insert a new username and password pair";
-                                       showMessageDialog(this, exMessage, 
ERROR_TITLE,
-                                                       ERROR_MESSAGE);
-                               }
-                               // Otherwise show the same window with the 
entered service
-                               // URI, username and password values
-                       } else
-                               // Add the new password entry in the Keystore
-                               try {
-                                       
credManager.addUsernameAndPasswordForService(new UsernamePassword(username,
-                                                       password), serviceURI);
-                                       break;
-                               } catch (CMException cme) {
-                                       showMessageDialog(this, "Credential 
Manager failed to insert a new username and password pair",
-                                                       ERROR_TITLE,
-                                                       ERROR_MESSAGE);
-                               }
-               }
-       }
-
-       /**
-        * Lets a user edit a username and password entry or their related 
service
-        * URI to the Keystore.
-        */
-       private void editPassword() {
-               // Which password entry has been selected?
-               int iRow = passwordsTable.getSelectedRow();
-               if (iRow == -1) { // no row currently selected
-                       return;
-               }
-
-               // Get current values for service URI, username and password
-               URI serviceURI = URI.create((String) 
passwordsTable.getValueAt(iRow, 1)); // current entry's service URI
-
-               String username = (String) passwordsTable.getValueAt(iRow, 2); 
// current entry's username
-
-               /*
-                * Because the password column is not visible we call the 
getValueAt
-                * method on the table model rather than at the JTable
-                */
-               String password = (String) passwordsTable.getModel()
-                               .getValueAt(iRow, 4); // current entry's 
password value
-
-               while (true) { // loop until user cancels or enters everything 
correctly
-                       // Let the user edit service URI, username or password 
of a password entry
-                       NewEditPasswordEntryDialog editPasswordDialog = new 
NewEditPasswordEntryDialog(
-                                       this, "Edit username and password for a 
service", true,
-                                       serviceURI, username, password, 
credManager);
-
-                       editPasswordDialog.setLocationRelativeTo(this);
-                       editPasswordDialog.setVisible(true);
-
-                       // New values
-                       URI newServiceURI = editPasswordDialog.getServiceURI(); 
// get new service URI
-                       String newUsername = editPasswordDialog.getUsername(); 
// get new username
-                       String newPassword = editPasswordDialog.getPassword(); 
// get new password
-
-                       if (newPassword == null) // user cancelled - any of the 
above three
-                               // fields is null
-                               // do nothing
-                               return;
-
-                       // Is anything actually modified?
-                       boolean isModified = !serviceURI.equals(newServiceURI)
-                                       || !username.equals(newUsername)
-                                       || !password.equals(newPassword);
-
-                       if (isModified) {
-                               /*
-                                * Check if a different password entry with the 
new URI (i.e.
-                                * alias) already exists in the Keystore We ask 
this here as the
-                                * user may wish to overwrite that other 
password entry.
-                                */
-
-                               // Get list of URIs for all passwords in the 
Keystore
-                               List<URI> serviceURIs = null;
-                               try {
-                                       serviceURIs = credManager
-                                                       
.getServiceURIsForAllUsernameAndPasswordPairs();
-                               } catch (CMException cme) {
-                                       showMessageDialog(this, "Failed to get 
service URIs for all username and password pairs "
-                                                       + "to check if the 
modified entry already exists",
-                                                       ERROR_TITLE,
-                                                       ERROR_MESSAGE);
-                                       return;
-                               }
-
-                               // If the modified service URI already exists 
and is not the
-                               // currently selected one
-                               if (!newServiceURI.equals(serviceURI)
-                                               && 
serviceURIs.contains(newServiceURI)) {
-                                       int answer = showConfirmDialog(
-                                                       this,
-                                                       "The Keystore already 
contains username and password pair for the entered service URI.\n"
-                                                                       + "Do 
you want to overwrite it?",
-                                                       ALERT_TITLE, 
YES_NO_OPTION);
-
-                                       try {
-                                               if (answer == YES_OPTION) {
-                                                       /*
-                                                        * Overwrite that other 
entry entry and save the new
-                                                        * one in its place. 
Also remove the current one
-                                                        * that we are editing 
- as it is replacing the
-                                                        * other entry.
-                                                        */
-                                                       credManager
-                                                                       
.deleteUsernameAndPasswordForService(serviceURI);
-                                                       
credManager.addUsernameAndPasswordForService(
-                                                                       new 
UsernamePassword(newUsername,
-                                                                               
        newPassword), newServiceURI);
-                                                       break;
-                                               }
-                                       } catch (CMException cme) {
-                                               showMessageDialog(
-                                                               this,
-                                                               "Failed to 
update the username and password pair in the Keystore",
-                                                               ERROR_TITLE, 
ERROR_MESSAGE);
-                                       }
-                                       // Otherwise show the same window with 
the entered
-                                       // service URI, username and password 
values
-                               } else
-                                       try {
-                                               if 
(!newServiceURI.equals(serviceURI))
-                                                       credManager
-                                                                       
.deleteUsernameAndPasswordForService(serviceURI);
-                                               
credManager.addUsernameAndPasswordForService(
-                                                               new 
UsernamePassword(newUsername, newPassword), newServiceURI);
-                                               break;
-                                       } catch (CMException cme) {
-                                               showMessageDialog(
-                                                               this,
-                                                               "Failed to 
update the username and password pair in the Keystore",
-                                                               ERROR_TITLE, 
ERROR_MESSAGE);
-                                       }
-                       } else // nothing actually modified
-                               break;
-               }
-       }
-
-       /**
-        * Lets the user delete the selected username and password entries from 
the
-        * Keystore.
-        */
-       private void deletePassword() {
-               // Which entries have been selected?
-               int[] selectedRows = passwordsTable.getSelectedRows();
-               if (selectedRows.length == 0) // no password entry selected
-                       return;
-
-               // Ask user to confirm the deletion
-               if (showConfirmDialog(
-                               null,
-                               "Are you sure you want to delete the selected 
username and password entries?",
-                               ALERT_TITLE, YES_NO_OPTION) != YES_OPTION)
-                       return;
-
-               String exMessage = null;
-               for (int i = selectedRows.length - 1; i >= 0; i--) { // delete 
from backwards
-                       // Get service URI for the current entry
-                       URI serviceURI = URI.create((String) 
passwordsTable.getValueAt(selectedRows[i], 1));
-                       // current entry's service URI
-                       try {
-                               // Delete the password entry from the Keystore
-                               
credManager.deleteUsernameAndPasswordForService(serviceURI);
-                       } catch (CMException cme) {
-                               exMessage = "Failed to delete the username and 
password pair from the Keystore";
-                       }
-               }
-               if (exMessage != null)
-                       showMessageDialog(this, exMessage, ERROR_TITLE, 
ERROR_MESSAGE);
-       }
-
-       /**
-        * Shows the contents of a (user or trusted) certificate.
-        */
-       private void viewCertificate() {
-               int selectedRow = -1;
-               String alias = null;
-               X509Certificate certToView = null;
-               ArrayList<String> serviceURIs = null;
-               KeystoreType keystoreType = null;
-
-               // Are we showing user's public key certificate?
-               if (keyPairsTab.isShowing()) {
-                       keystoreType = KEYSTORE;
-                       selectedRow = keyPairsTable.getSelectedRow();
-
-                       if (selectedRow != -1)
-                               /*
-                                * Because the alias column is not visible we 
call the
-                                * getValueAt method on the table model rather 
than at the
-                                * JTable
-                                */
-                               alias = (String) 
keyPairsTable.getModel().getValueAt(selectedRow, 6); // current entry's 
Keystore alias
-               }
-               // Are we showing trusted certificate?
-               else if (trustedCertificatesTab.isShowing()) {
-                       keystoreType = TRUSTSTORE;
-                       selectedRow = trustedCertsTable.getSelectedRow();
-
-                       if (selectedRow != -1)
-                               /*
-                                * Get the selected trusted certificate entry's 
Truststore alias
-                                * Alias column is invisible so we get the 
value from the table
-                                * model
-                                */
-                               alias = (String) 
trustedCertsTable.getModel().getValueAt(
-                                               selectedRow, 5);
-               }
-
-               try {
-                       if (selectedRow != -1) { // something has been selected
-                               // Get the entry's certificate
-                               certToView = 
dnParser.convertCertificate(credManager
-                                               .getCertificate(keystoreType, 
alias));
-
-                               // Show the certificate's contents to the user
-                               ViewCertDetailsDialog viewCertDetailsDialog = 
new ViewCertDetailsDialog(
-                                               this, "Certificate details", 
true, certToView,
-                                               serviceURIs, dnParser);
-                               
viewCertDetailsDialog.setLocationRelativeTo(this);
-                               viewCertDetailsDialog.setVisible(true);
-                       }
-               } catch (CMException cme) {
-                       String exMessage = "Failed to get certificate details 
to display to the user";
-                       logger.error(exMessage, cme);
-                       showMessageDialog(this, exMessage, ERROR_TITLE, 
ERROR_MESSAGE);
-               }
-       }
-
-       /**
-        * Lets a user import a key pair from a PKCS #12 keystore file to the
-        * Keystore.
-        */
-       private void importKeyPair() {
-               /*
-                * Let the user choose a PKCS #12 file (keystore) containing a 
public
-                * and private key pair to import
-                */
-               File importFile = selectImportExportFile(
-                               "PKCS #12 file to import from", // title
-                               new String[] { ".p12", ".pfx" }, // array of 
file extensions
-                               // for the file filter
-                               "PKCS#12 Files (*.p12, *.pfx)", // description 
of the filter
-                               "Import", // text for the file chooser's 
approve button
-                               "keyPairDir"); // preference string for saving 
the last chosen directory
-
-               if (importFile == null)
-                       return;
-
-               // The PKCS #12 keystore is not a file
-               if (!importFile.isFile()) {
-                       showMessageDialog(this, "Your selection is not a file",
-                                       ALERT_TITLE, WARNING_MESSAGE);
-                       return;
-               }
-
-               // Get the user to enter the password that was used to encrypt 
the
-               // private key contained in the PKCS #12 file
-               GetPasswordDialog getPasswordDialog = new 
GetPasswordDialog(this,
-                               "Import key pair entry", true,
-                               "Enter the password that was used to encrypt 
the PKCS #12 file");
-               getPasswordDialog.setLocationRelativeTo(this);
-               getPasswordDialog.setVisible(true);
-
-               String pkcs12Password = getPasswordDialog.getPassword();
-
-               if (pkcs12Password == null) // user cancelled
-                       return;
-               else if (pkcs12Password.isEmpty()) // empty password
-                       // FIXME: Maybe user did not have the password set for 
the private key???
-                       return;
-
-               try {
-                       // Load the PKCS #12 keystore from the file
-                       // (this is using the BouncyCastle provider !!!)
-                       KeyStore pkcs12Keystore = 
credManager.loadPKCS12Keystore(importFile,
-                                       pkcs12Password);
-
-                       /*
-                        * Display the import key pair dialog supplying all the 
private keys
-                        * stored in the PKCS #12 file (normally there will be 
only one
-                        * private key inside, but could be more as this is a 
keystore after
-                        * all).
-                        */
-                       NewKeyPairEntryDialog importKeyPairDialog = new 
NewKeyPairEntryDialog(
-                                       this, "Credential Manager", true, 
pkcs12Keystore, dnParser);
-                       importKeyPairDialog.setLocationRelativeTo(this);
-                       importKeyPairDialog.setVisible(true);
-
-                       // Get the private key and certificate chain of the key 
pair
-                       Key privateKey = importKeyPairDialog.getPrivateKey();
-                       Certificate[] certChain = 
importKeyPairDialog.getCertificateChain();
-
-                       if (privateKey == null || certChain == null)
-                               // User did not select a key pair for import or 
cancelled
-                               return;
-
-                       /*
-                        * Check if a key pair entry with the same alias 
already exists in
-                        * the Keystore
-                        */
-                       if (credManager.hasKeyPair(privateKey, certChain)
-                                       && showConfirmDialog(this,
-                                                       "The keystore already 
contains the key pair entry with the same private key.\n"
-                                                                       + "Do 
you want to overwrite it?",
-                                                       ALERT_TITLE, 
YES_NO_OPTION) != YES_OPTION)
-                               return;
-
-                       // Place the private key and certificate chain into the 
Keystore
-                       credManager.addKeyPair(privateKey, certChain);
-
-                       // Display success message
-                       showMessageDialog(this, "Key pair import successful", 
ALERT_TITLE,
-                                       INFORMATION_MESSAGE);
-               } catch (Exception ex) { // too many exceptions to catch 
separately
-                       String exMessage = "Failed to import the key pair entry 
to the Keystore. "
-                                       + ex.getMessage();
-                       logger.error(exMessage, ex);
-                       showMessageDialog(this, exMessage, ERROR_TITLE, 
ERROR_MESSAGE);
-               }
-       }
-
-       /**
-        * Lets a user export user's private and public key pair to a PKCS #12
-        * keystore file.
-        */
-       private void exportKeyPair() {
-               // Which key pair entry has been selected?
-               int selectedRow = keyPairsTable.getSelectedRow();
-               if (selectedRow == -1) // no row currently selected
-                       return;
-
-               // Get the key pair entry's Keystore alias
-               String alias = (String) 
keyPairsTable.getModel().getValueAt(selectedRow, 6);
-
-               // Let the user choose a PKCS #12 file (keystore) to export 
public and
-               // private key pair to
-               File exportFile = selectImportExportFile("Select a file to 
export to", // title
-                               new String[] { ".p12", ".pfx" }, // array of 
file extensions
-                               // for the file filter
-                               "PKCS#12 Files (*.p12, *.pfx)", // description 
of the filter
-                               "Export", // text for the file chooser's 
approve button
-                               "keyPairDir"); // preference string for saving 
the last chosen directory
-
-               if (exportFile == null)
-                       return;
-
-               // If file already exist - ask the user if he wants to 
overwrite it
-               if (exportFile.isFile()
-                               && showConfirmDialog(this,
-                                               "The file with the given name 
already exists.\n"
-                                                               + "Do you want 
to overwrite it?", ALERT_TITLE,
-                                               YES_NO_OPTION) == NO_OPTION)
-                       return;
-
-               // Get the user to enter the password for the PKCS #12 keystore 
file
-               GetPasswordDialog getPasswordDialog = new 
GetPasswordDialog(this,
-                               "Credential Manager", true,
-                               "Enter the password for protecting the exported 
key pair");
-               getPasswordDialog.setLocationRelativeTo(this);
-               getPasswordDialog.setVisible(true);
-
-               String pkcs12Password = getPasswordDialog.getPassword();
-
-               if (pkcs12Password == null) { // user cancelled or empty 
password
-                       // Warn the user
-                       showMessageDialog(
-                                       this,
-                                       "You must supply a password for 
protecting the exported key pair.",
-                                       ALERT_TITLE, INFORMATION_MESSAGE);
-                       return;
-               }
-
-               // Export the key pair
-               try {
-                       credManager.exportKeyPair(alias, exportFile, 
pkcs12Password);
-                       showMessageDialog(this, "Key pair export successful", 
ALERT_TITLE,
-                                       INFORMATION_MESSAGE);
-               } catch (CMException cme) {
-                       showMessageDialog(this, cme.getMessage(), ERROR_TITLE,
-                                       ERROR_MESSAGE);
-               }
-       }
-
-       /**
-        * Lets a user delete selected key pair entries from the Keystore.
-        */
-       private void deleteKeyPair() {
-               // Which entries have been selected?
-               int[] selectedRows = keyPairsTable.getSelectedRows();
-               if (selectedRows.length == 0) // no key pair entry selected
-                       return;
-
-               // Ask user to confirm the deletion
-               if (showConfirmDialog(null,
-                               "Are you sure you want to delete the selected 
key pairs?",
-                               ALERT_TITLE, YES_NO_OPTION) != YES_OPTION)
-                       return;
-
-               String exMessage = null;
-               for (int i = selectedRows.length - 1; i >= 0; i--) { // delete 
from backwards
-                       // Get the alias for the current entry
-                       String alias = (String) 
keyPairsTable.getModel().getValueAt(
-                                       selectedRows[i], 6);
-                       try {
-                               // Delete the key pair entry from the Keystore
-                               credManager.deleteKeyPair(alias);
-                       } catch (CMException cme) {
-                               logger.warn("failed to delete " + alias, cme);
-                               exMessage = "Failed to delete the key pair(s) 
from the Keystore";
-                       }
-               }
-               if (exMessage != null)
-                       showMessageDialog(this, exMessage, ERROR_TITLE, 
ERROR_MESSAGE);
-       }
-
-       /**
-        * Lets a user import a trusted certificate from a PEM or DER encoded 
file
-        * into the Truststore.
-        */
-       private void importTrustedCertificate() {
-               // Let the user choose a file containing trusted certificate(s) 
to
-               // import
-               File certFile = selectImportExportFile(
-                               "Certificate file to import from", // title
-                               new String[] { ".pem", ".crt", ".cer", ".der", 
"p7", ".p7c" }, // file extensions filters
-                               "Certificate Files (*.pem, *.crt, , *.cer, 
*.der, *.p7, *.p7c)", // filter descriptions
-                               "Import", // text for the file chooser's 
approve button
-                               "trustedCertDir"); // preference string for 
saving the last chosen directory
-               if (certFile == null)
-                       return;
-
-               // Load the certificate(s) from the file
-               ArrayList<X509Certificate> trustCertsList = new ArrayList<>();
-               CertificateFactory cf;
-               try {
-                       cf = CertificateFactory.getInstance("X.509");
-               } catch (Exception e) {
-                       // Nothing we can do! Things are badly misconfigured
-                       cf = null;
-               }
-
-               if (cf != null) {
-                       try (FileInputStream fis = new 
FileInputStream(certFile)) {
-                               for (Certificate cert : 
cf.generateCertificates(fis))
-                                       trustCertsList.add((X509Certificate) 
cert);
-                       } catch (Exception cex) {
-                               // Do nothing
-                       }
-
-                       if (trustCertsList.size() == 0) {
-                               // Could not load certificates as any of the 
above types
-                               try (FileInputStream fis = new 
FileInputStream(certFile);
-                                               PEMReader pr = new PEMReader(
-                                                               new 
InputStreamReader(fis), null, cf
-                                                                               
.getProvider().getName())) {
-                                       /*
-                                        * Try as openssl PEM format - which 
sligtly differs from
-                                        * the one supported by JCE
-                                        */
-                                       Object cert;
-                                       while ((cert = pr.readObject()) != null)
-                                               if (cert instanceof 
X509Certificate)
-                                                       
trustCertsList.add((X509Certificate) cert);
-                               } catch (Exception cex) {
-                                       // do nothing
-                               }
-                       }
-               }
-
-               if (trustCertsList.size() == 0) {
-                       /* Failed to load certifcate(s) using any of the known 
encodings */
-                       showMessageDialog(this,
-                                       "Failed to load certificate(s) using 
any of the known encodings -\n"
-                                                       + "file format not 
recognised.", ERROR_TITLE,
-                                       ERROR_MESSAGE);
-                       return;
-               }
-
-               // Show the list of certificates contained in the file for the 
user to
-               // select the ones to import
-               NewTrustCertsDialog importTrustCertsDialog = new 
NewTrustCertsDialog(this,
-                               "Credential Manager", true, trustCertsList, 
dnParser);
-
-               importTrustCertsDialog.setLocationRelativeTo(this);
-               importTrustCertsDialog.setVisible(true);
-               List<X509Certificate> selectedTrustCerts = 
importTrustCertsDialog
-                               .getTrustedCertificates(); // user-selected 
trusted certs to import
-
-               // If user cancelled or did not select any cert to import
-               if (selectedTrustCerts == null || selectedTrustCerts.isEmpty())
-                       return;
-
-               try {
-                       for (X509Certificate cert : selectedTrustCerts)
-                               // Import the selected trusted certificates
-                               credManager.addTrustedCertificate(cert);
-
-                       // Display success message
-                       showMessageDialog(this, "Trusted certificate(s) import 
successful",
-                                       ALERT_TITLE, INFORMATION_MESSAGE);
-               } catch (CMException cme) {
-                       String exMessage = "Failed to import trusted 
certificate(s) to the Truststore";
-                       logger.error(exMessage, cme);
-                       showMessageDialog(this, exMessage, ERROR_TITLE, 
ERROR_MESSAGE);
-               }
-       }
-
-       /**
-        * Lets the user export one (at the moment) or more (in future) trusted
-        * certificate entries to a PEM-encoded file.
-        */
-       private boolean exportTrustedCertificate() {
-               // Which trusted certificate has been selected?
-               int selectedRow = trustedCertsTable.getSelectedRow();
-               if (selectedRow == -1) // no row currently selected
-                       return false;
-
-               // Get the trusted certificate entry's Keystore alias
-               String alias = (String) trustedCertsTable.getModel()
-                               .getValueAt(selectedRow, 3);
-               // the alias column is invisible so we get the value from the 
table
-               // model
-
-               // Let the user choose a file to export to
-               File exportFile = selectImportExportFile("Select a file to 
export to", // title
-                               new String[] { ".pem" }, // array of file 
extensions for the
-                               // file filter
-                               "Certificate Files (*.pem)", // description of 
the filter
-                               "Export", // text for the file chooser's 
approve button
-                               "trustedCertDir"); // preference string for 
saving the last chosen directory
-               if (exportFile == null)
-                       return false;
-
-               // If file already exist - ask the user if he wants to 
overwrite it
-               if (exportFile.isFile()
-                               && showConfirmDialog(this,
-                                               "The file with the given name 
already exists.\n"
-                                                               + "Do you want 
to overwrite it?", ALERT_TITLE,
-                                               YES_NO_OPTION) == NO_OPTION)
-                       return false;
-
-               // Export the trusted certificate
-               try (PEMWriter pw = new PEMWriter(new FileWriter(exportFile))) {
-                       // Get the trusted certificate
-                       pw.writeObject(credManager.getCertificate(TRUSTSTORE, 
alias));
-               } catch (Exception ex) {
-                       String exMessage = "Failed to export the trusted 
certificate from the Truststore.";
-                       logger.error(exMessage, ex);
-                       showMessageDialog(this, exMessage, ERROR_TITLE, 
ERROR_MESSAGE);
-                       return false;
-               }
-               showMessageDialog(this, "Trusted certificate export successful",
-                               ALERT_TITLE, INFORMATION_MESSAGE);
-               return true;
-       }
-
-       /**
-        * Lets a user delete the selected trusted certificate entries from the
-        * Truststore.
-        */
-       private void deleteTrustedCertificate() {
-               // Which entries have been selected?
-               int[] selectedRows = trustedCertsTable.getSelectedRows();
-               if (selectedRows.length == 0) // no trusted cert entry selected
-                       return;
-
-               // Ask user to confirm the deletion
-               if (showConfirmDialog(
-                               null,
-                               "Are you sure you want to delete the selected 
trusted certificate(s)?",
-                               ALERT_TITLE, YES_NO_OPTION) != YES_OPTION)
-                       return;
-
-               String exMessage = null;
-               for (int i = selectedRows.length - 1; i >= 0; i--) { // delete 
from backwards
-                       // Get the alias for the current entry
-                       String alias = (String) 
trustedCertsTable.getModel().getValueAt(
-                                       selectedRows[i], 5);
-                       try {
-                               // Delete the trusted certificate entry from 
the Truststore
-                               credManager.deleteTrustedCertificate(alias);
-                       } catch (CMException cme) {
-                               exMessage = "Failed to delete the trusted 
certificate(s) from the Truststore";
-                               logger.error(exMessage, cme);
-                       }
-               }
-               if (exMessage != null)
-                       showMessageDialog(this, exMessage, ERROR_TITLE, 
ERROR_MESSAGE);
-       }
-
-       /**
-        * If double click on a table occured - show the
-        * details of the table entry.
-        */
-       private void tableDoubleClick(MouseEvent evt) {
-               if (evt.getClickCount() > 1) { // is it a double click?
-                       // Which row was clicked on (if any)?
-                       Point point = new Point(evt.getX(), evt.getY());
-                       int row = ((JTable) evt.getSource()).rowAtPoint(point);
-                       if (row == -1)
-                               return;
-                       // Which table the click occured on?
-                       if (((JTable) evt.getSource()).getModel() instanceof 
PasswordsTableModel)
-                               // Passwords table
-                               viewPassword();
-                       else if (((JTable) evt.getSource()).getModel() 
instanceof KeyPairsTableModel)
-                               // Key pairs table
-                               viewCertificate();
-                       else
-                               // Trusted certificates table
-                               viewCertificate();
-               }
-       }
-
-       /**
-        * Lets the user select a file to export to or import from a key pair 
or a
-        * certificate.
-        */
-       private File selectImportExportFile(String title, String[] filter,
-                       String description, String approveButtonText, String 
prefString) {
-               Preferences prefs = Preferences
-                               .userNodeForPackage(CredentialManagerUI.class);
-               String keyPairDir = prefs.get(prefString,
-                               System.getProperty("user.home"));
-               JFileChooser fileChooser = new JFileChooser();
-               fileChooser.addChoosableFileFilter(new CryptoFileFilter(filter,
-                               description));
-               fileChooser.setDialogTitle(title);
-               fileChooser.setMultiSelectionEnabled(false);
-               fileChooser.setCurrentDirectory(new File(keyPairDir));
-
-               if (fileChooser.showDialog(this, approveButtonText) != 
APPROVE_OPTION)
-                       return null;
-
-               File selectedFile = fileChooser.getSelectedFile();
-               prefs.put(prefString, 
fileChooser.getCurrentDirectory().toString());
-               return selectedFile;
-       }
-
-       private void closeFrame() {
-               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/CredentialManagerUILauncher.java
----------------------------------------------------------------------
diff --git 
a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/CredentialManagerUILauncher.java
 
b/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/CredentialManagerUILauncher.java
deleted file mode 100644
index cdcabb7..0000000
--- 
a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/CredentialManagerUILauncher.java
+++ /dev/null
@@ -1,96 +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 javax.swing.SwingUtilities.invokeLater;
-
-import java.awt.Dimension;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-
-import javax.swing.ImageIcon;
-import javax.swing.JButton;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-
-/**
- * Test launcher for Credential Manager GUI (so it does not have to be
- * launched from Taverna).
- *
- * @author Alexandra Nenadic
- */
-public class CredentialManagerUILauncher extends JFrame {
-       private static final long serialVersionUID = 2079805060170251148L;
-
-       private final ImageIcon launchCMIcon = new ImageIcon(
-                       CredentialManagerUILauncher.class
-                                       
.getResource("/images/cred_manager.png"));
-
-       public CredentialManagerUILauncher() {
-               JPanel jpLaunch = new JPanel();
-               jpLaunch.setPreferredSize(new Dimension(300, 120));
-
-               JLabel jlLaunch = new JLabel("T2: Launch Credential Manager 
GUI");
-
-               JButton jbLaunch = new JButton();
-               jbLaunch.setIcon(launchCMIcon);
-               jbLaunch.setToolTipText("Launches Credential Manager");
-               jbLaunch.addActionListener(new ActionListener() {
-                       @Override
-                       public void actionPerformed(ActionEvent e) {
-                               CredentialManagerUI cmGUI = new 
CredentialManagerUI(null, null);
-                               if (cmGUI != null)
-                                       cmGUI.setVisible(true);
-                       }
-               });
-
-               jpLaunch.add(jlLaunch);
-               jpLaunch.add(jbLaunch);
-
-               getContentPane().add(jpLaunch, CENTER);
-
-               // Handle application close
-               setDefaultCloseOperation(EXIT_ON_CLOSE);
-
-               pack();
-
-        // Centre the frame in the centre of the desktop
-        setLocationRelativeTo(null);
-        // Set the frame's title
-        setTitle("Credential Manager GUI Launcher");
-        setVisible(true);
-       }
-
-       /**
-        * Launcher for the Credential Manager GUI.
-        */
-       public static void main(String[] args) {
-        // Create and show GUI on the event handler thread
-        invokeLater(new Runnable(){
-               @Override
-               public void run() {
-                       new CredentialManagerUILauncher();
-               }
-        });
-    }
-}

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/CryptoFileFilter.java
----------------------------------------------------------------------
diff --git 
a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/CryptoFileFilter.java
 
b/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/CryptoFileFilter.java
deleted file mode 100644
index d58aa8a..0000000
--- 
a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/CryptoFileFilter.java
+++ /dev/null
@@ -1,73 +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 java.io.File;
-import java.util.Arrays;
-import java.util.List;
-
-import javax.swing.filechooser.FileFilter;
-
-/**
- * File filter for filtering against various file extensions. Crypto files
- * normally contain a private key (and optionally its certificate chain) or a
- * public key certificate (and optionally its certificate chain).
- * 
- * .p12 or .pfx are PKCS #12 keystore files containing private key and its
- * public key (+cert chain); .pem are ASN.1 PEM-encoded files containing one 
(or
- * more concatenated) public key certificate(s); .der are ASN.1 DER-encoded
- * files containing one public key certificate; .cer are CER-encoded files
- * containing one ore more DER-encoded certificates; .crt files are either
- * encoded as binary DER or as ASCII PEM. .p7 and .p7c are PKCS #7 certificate
- * chain files (i.e. SignedData structure without data, just certificate(s)).
- */
-public class CryptoFileFilter extends FileFilter {
-       // Description of the filter
-       private String description;
-
-       // Array of file extensions to filter against
-       private List<String> exts;
-
-       public CryptoFileFilter(String[] extList, String desc) {
-               exts = Arrays.asList(extList);
-               this.description = desc;
-       }
-
-       @Override
-       public boolean accept(File file) {
-               if (file.isDirectory())
-                       return true;
-               if (file.isFile())
-                       for (String ext : exts)
-                               if (file.getName().toLowerCase().endsWith(ext))
-                                       return true;
-               return false;
-       }
-
-       public void setDescription(String desc) {
-               this.description = desc;
-       }
-
-       @Override
-       public String getDescription() {
-               return this.description;
-       }
-}

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/GetMasterPasswordDialog.java
----------------------------------------------------------------------
diff --git 
a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/GetMasterPasswordDialog.java
 
b/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/GetMasterPasswordDialog.java
deleted file mode 100644
index b6f623e..0000000
--- 
a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/GetMasterPasswordDialog.java
+++ /dev/null
@@ -1,169 +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 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.Frame;
-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.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JPasswordField;
-import javax.swing.border.EmptyBorder;
-
-import net.sf.taverna.t2.workbench.helper.NonBlockedHelpEnabledDialog;
-
-/**
- * Dialog used for getting a master password for Credential Manager from the
- * users.
- * 
- * @author Alex Nenadic
- */
-@SuppressWarnings("serial")
-public class GetMasterPasswordDialog extends NonBlockedHelpEnabledDialog {
-       /** Password entry field */
-       private JPasswordField passwordField;
-       /** The entered password */
-       private String password = null;
-       /** Text giving user the instructions what to do in the dialog */
-       private String instructions;
-
-       public GetMasterPasswordDialog(String instructions) {
-               super((Frame) null, "Enter master password", true);
-               this.instructions = instructions;
-               initComponents();
-       }
-
-       private void initComponents() {
-               getContentPane().setLayout(new BorderLayout());
-
-               JLabel instructionsLabel = new JLabel(instructions);
-               // instructionsLabel.setFont(new Font(null, Font.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("Password");
-               passwordLabel.setBorder(new EmptyBorder(0, 5, 0, 0));
-
-               passwordField = new JPasswordField(15);
-               JPanel passwordPanel = new JPanel(new GridLayout(1, 1, 5, 5));
-               passwordPanel.add(passwordLabel);
-               passwordPanel.add(passwordField);
-
-               JPanel mainPanel = new JPanel(new BorderLayout());
-               mainPanel.setBorder(new EmptyBorder(10, 10, 10, 10));
-               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();
-       }
-
-       /**
-        * Get the password entered in the dialog.
-        */
-       public String getPassword() {
-               return password;
-       }
-
-       /**
-        * Check that the entered password is not empty and store the entered
-        * password.
-        */
-       private boolean checkPassword() {
-               password = new String(passwordField.getPassword());
-
-               if (password.isEmpty()) {
-                       showMessageDialog(this, "The password cannot be empty",
-                                       WARN_TITLE, WARNING_MESSAGE);
-                       return false;
-               }
-
-               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/GetPasswordDialog.java
----------------------------------------------------------------------
diff --git 
a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/GetPasswordDialog.java
 
b/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/GetPasswordDialog.java
deleted file mode 100644
index 45a0f88..0000000
--- 
a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/GetPasswordDialog.java
+++ /dev/null
@@ -1,168 +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.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.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-
-import javax.swing.JButton;
-import javax.swing.JDialog;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JPasswordField;
-import javax.swing.border.EmptyBorder;
-
-import net.sf.taverna.t2.workbench.helper.NonBlockedHelpEnabledDialog;
-
-/**
- * A general dialog for entering a password.
- * 
- * @author Alex Nenadic
- */
-@SuppressWarnings("serial")
-public class GetPasswordDialog extends NonBlockedHelpEnabledDialog {
-       /** Instructions for user explaining the purpose of the password */
-       private String instructions = null;
-       /* Password entry password field */
-       private JPasswordField passwordField;
-       /* Stores the password entered */
-       private String password = null;
-
-       public GetPasswordDialog(JFrame parent, String title, boolean modal,
-                       String instr) {
-               super(parent, title, modal);
-               instructions = instr;
-               initComponents();
-       }
-
-       public GetPasswordDialog(JDialog parent, String title, boolean modal,
-                       String instr) {
-               super(parent, title, modal);
-               instructions = instr;
-               initComponents();
-       }
-
-       private void initComponents() {
-               getContentPane().setLayout(new BorderLayout());
-
-               JLabel passwordLabel = new JLabel("Password");
-               passwordField = new JPasswordField(15);
-
-               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();
-                       }
-               });
-
-               JLabel instructionsLabel; // Instructions
-               if (instructions != null) {
-                       instructionsLabel = new JLabel(instructions);
-                       instructionsLabel.setFont(new Font(null, PLAIN, 11));
-                       instructionsLabel.setBorder(new EmptyBorder(5, 5, 5, 
5));
-                       getContentPane().add(instructionsLabel, NORTH);
-               }
-        
-        JPanel passwordPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
-        passwordPanel.add(passwordLabel);
-        passwordPanel.add(passwordField);
-        passwordPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
-
-        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 password entered in the dialog.
-        */
-       public String getPassword() {
-               return password;
-       }
-
-       /**
-        * Check that the password entered is not empty and store the entered
-        * password.
-        */
-       private boolean checkPassword() {
-               password = new String(passwordField.getPassword());
-
-               if (password.isEmpty()) {
-                       showMessageDialog(this, "The password cannot be empty",
-                                       WARN_TITLE, WARNING_MESSAGE);
-                       return false;
-               }
-
-               return true;
-       }
-
-       private void okPressed() {
-        if (checkPassword())
-            closeDialog();
-    }
-
-       private void cancelPressed() {
-               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/KeyPairsTableModel.java
----------------------------------------------------------------------
diff --git 
a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/KeyPairsTableModel.java
 
b/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/KeyPairsTableModel.java
deleted file mode 100644
index 3d416e8..0000000
--- 
a/taverna-credential-manager-ui/src/main/java/net/sf/taverna/t2/workbench/ui/credentialmanager/KeyPairsTableModel.java
+++ /dev/null
@@ -1,213 +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.KEY_PAIR_ENTRY_TYPE;
-
-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.log4j.Logger;
-
-/**
- * The table model used to display the Keystore's key pair entries.
- *
- * @author Alex Nenadic
- */
-@SuppressWarnings("serial")
-public class KeyPairsTableModel extends AbstractTableModel implements 
Observer<KeystoreChangedEvent> {
-       private static final Logger logger = 
Logger.getLogger(KeyPairsTableModel.class);
-
-       /** Column names*/
-    private String[] columnNames;
-    /** Table data*/
-    private Object[][] data;
-       private CredentialManager credManager;
-
-    public KeyPairsTableModel(CredentialManager credentialManager) {
-        credManager = credentialManager;
-
-               if (credManager == 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
-            "URLs", // the invisible column holding the list of URLs 
associated with this entry
-            "Alias" // the invisible column holding the actual alias in the 
Keystore
-        };
-
-               try {
-                       load();
-               } catch (CMException cme) {
-                       String sMessage = "Failed to load key pairs";
-                       logger.error(sMessage, cme);
-                       showMessageDialog(new JFrame(), sMessage,
-                                       ERROR_TITLE, ERROR_MESSAGE);
-                       return;
-               }
-
-        // Start observing changes to the Keystore
-        credManager.addObserver(this);
-    }
-
-    /**
-     * Load the table model with the key pair entries from the Keystore.
-     */
-    public void load() throws CMException {
-       // Place key pair entries' aliases in a tree map to sort them
-       TreeMap<String, String> sortedAliases = new TreeMap<>();
-
-               for (String alias: credManager.getAliases(KEYSTORE))
-                       /*
-                        * We are only interested in key pair entries here.
-                        * 
-                        * Alias for such entries is constructed as
-                        * "keypair#<CERT_SERIAL_NUMBER>#<CERT_COMMON_NAME>" 
where
-                        */
-                       if (alias.startsWith("keypair#"))
-                               sortedAliases.put(alias, alias);
-
-               // Create one table row for each key pair entry
-               data = new Object[sortedAliases.size()][7];
-
-               /*
-                * Iterate through the sorted aliases (if any), retrieving the 
key pair
-                * entries and populating the table model
-                */
-               int iCnt = 0;
-               for (String alias : sortedAliases.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] = KEY_PAIR_ENTRY_TYPE;
-
-                       /*
-                        * Split the alias string to extract owner, issuer and 
serial number
-                        * alias =
-                        * 
"keypair#"<SUBJECT_COMMON_NAME>"#"<ISSUER_COMMON_NAME>"#"<SERIAL_NUMBER>
-                        */
-                       String[] aliasComponents = alias.split("#");
-
-                       // Populate the owner column extracted from the alias
-                       data[iCnt][1] = aliasComponents[1];
-
-                       // Populate the issuer column extracted from the alias
-                       data[iCnt][2] = aliasComponents[2];
-
-                       // Populate the serial number column extracted from the 
alias
-                       data[iCnt][3] = aliasComponents[3];
-
-                       // Populate the modified date column ("UBER" keystore 
type supports creation date)
-                       //data[iCnt][4] = 
credManager.getEntryCreationDate(CredentialManager.KEYSTORE, alias);
-
-                       // Populate the invisible URLs list column
-                       //data[iCnt][5] = 
credManager.getServiceURLsForKeyPair(alias);
-
-                       // Populate the invisible alias column
-                       data[iCnt][6] = 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();
-       }
-}

Reply via email to