// --- BEGIN COPYRIGHT BLOCK --- // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; version 2 of the License. // // 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 General Public License for more details. // // You should have received a copy of the GNU General Public License along // with this program; if not, write to the Free Software Foundation, Inc., // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. // // (C) 2007 Red Hat, Inc. // All rights reserved. // --- END COPYRIGHT BLOCK --- package com.netscape.admin.certsrv.ug; import com.netscape.admin.certsrv.*; import com.netscape.admin.certsrv.connection.*; import javax.swing.*; import java.awt.event.*; import java.awt.*; import java.util.*; import com.netscape.management.client.util.*; import com.netscape.certsrv.common.*; /** * User Certificate Management Dialog -
*
* The administrator can use this dialog to management the
* certificates of specific user. This allows the import of
* new certificates and delete/view of existing certificates.
*
* This dialog is launched by clicking on the certificate button
* on the main user management tab.
*
* @author Jack Pan-Chen
* @version $Revision$, $Date$
* @see com.netscape.admin.certsrv.ug.CertImportDialog
* @see com.netscape.admin.certsrv.ug.CertViewDialog
* @see com.netscape.admin.certsrv.ug.UserTab
*/
public class CertManagementDialog extends JDialog
implements ActionListener, MouseListener
{
/*==========================================================
* variables
*==========================================================*/
private String PREFIX = "CERTMANAGEMENTDIALOG";
private JFrame mParentFrame;
private AdminConnection mConnection;
private ResourceBundle mResource;
protected DefaultListModel mDataModel;
protected Vector mPPData;
protected String mUID; //dest flag
protected CertViewDialog mViewDialog = null; //keeping a copy for reuse
protected CertImportDialog mCertDialog = null; //keeping a copy for reuse
private JScrollPane mScrollPane;
private JList mList;
private JButton mOK, mCancel, mAdd, mDelete, mView, mHelp;
private final static String HELPINDEX =
"usersgroups-certsrv-manage-usercert-dbox-help";
/*==========================================================
* constructors
*==========================================================*/
public CertManagementDialog(JFrame parent, AdminConnection conn) {
super(parent,true);
mParentFrame = parent;
mConnection = conn;
mResource = ResourceBundle.getBundle(CMSAdminResources.class.getName());
mDataModel = new DefaultListModel();
mPPData = new Vector();
setSize(800, 216);
setTitle(mResource.getString(PREFIX+"_TITLE"));
setLocationRelativeTo(parent);
getRootPane().setDoubleBuffered(true);
setDisplay();
}
/*==========================================================
* public methods
*==========================================================*/
/**
* show the windows
* @param uid current user id
*/
public void showDialog(String uid) {
mUID = uid;
if (!refresh())
return;
setButtons();
this.show();
}
/*==========================================================
* EVNET HANDLER METHODS
*==========================================================*/
//=== ACTIONLISTENER =====================
public void actionPerformed(ActionEvent evt) {
if (evt.getSource().equals(mOK)) {
//nothing to do here
this.dispose();
} else if (evt.getSource().equals(mCancel)) {
this.dispose();
} else if (evt.getSource().equals(mAdd)) {
//call cert import editor
if (mCertDialog==null)
mCertDialog = new CertImportDialog(mParentFrame);
mCertDialog.showDialog();
if (!mCertDialog.isOK())
return;
addCert(mCertDialog.getB64E());
refresh();
setButtons();
} else if (evt.getSource().equals(mDelete)) {
int i = CMSAdminUtil.showConfirmDialog(mParentFrame, mResource, "USERCERTS",
"DELETE", JOptionPane.INFORMATION_MESSAGE);
if (i == JOptionPane.YES_OPTION) {
deleteCert();
refresh();
setButtons();
}
} else if (evt.getSource().equals(mView)) {
if (mViewDialog==null)
mViewDialog = new CertViewDialog(mParentFrame);
String id = ((JLabel)mDataModel.elementAt(mList.getSelectedIndex())).getText();
mViewDialog.showDialog(id,(String)mPPData.elementAt(mList.getSelectedIndex()));
} else if (evt.getSource().equals(mHelp)) {
CMSAdminUtil.help(HELPINDEX);
}
}
//==== MOUSELISTENER ======================
public void mouseClicked(MouseEvent e) {
setButtons();
}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
/*==========================================================
* private methods
*==========================================================*/
/**
* Setup the initial UI components
*/
private void setDisplay() {
getContentPane().setLayout(new BorderLayout());
JPanel center = new JPanel();
GridBagLayout gb = new GridBagLayout();
GridBagConstraints gbc = new GridBagConstraints();
center.setLayout(gb);
//content panel
JPanel content = makeContentPane();
CMSAdminUtil.resetGBC(gbc);
gbc.fill = gbc.BOTH;
gbc.anchor = gbc.NORTH;
gbc.gridwidth = gbc.REMAINDER;
gbc.weightx = 1.0;
gbc.weighty = 1.0;
gb.setConstraints(content, gbc);
center.add(content);
//action panel
JPanel action = makeActionPane();
CMSAdminUtil.resetGBC(gbc);
gbc.anchor = gbc.NORTH;
gbc.gridwidth = gbc.REMAINDER;
gbc.gridheight = gbc.REMAINDER;
gbc.weightx = 1.0;
gb.setConstraints(action, gbc);
center.add(action);
getContentPane().add("Center",center);
}
/**
* create the bottom action button panel
*/
protected JPanel createUDButtonPanel() {
//up, down buttons required
//actionlister to this object
mAdd = CMSAdminUtil.makeJButton(mResource, PREFIX, "IMPORT", null, this);
mDelete = CMSAdminUtil.makeJButton(mResource, PREFIX, "DELETE", null, this);
mView = CMSAdminUtil.makeJButton(mResource, PREFIX, "VIEW", null, this);
JButton[] buttons = { mAdd, mDelete, mView};
JButtonFactory.resize( buttons );
return CMSAdminUtil.makeJButtonVPanel( buttons );
}
//create botton action panel
private JPanel makeActionPane() {
mOK = CMSAdminUtil.makeJButton(mResource, PREFIX, "OK", null, this);
mCancel = CMSAdminUtil.makeJButton(mResource, PREFIX, "CANCEL", null, this);
mHelp = CMSAdminUtil.makeJButton(mResource, PREFIX, "HELP", null, this);
// JButton[] buttons = { mOK, mHelp};
JButton[] buttons = { mOK};
JButtonFactory.resize( buttons );
return CMSAdminUtil.makeJButtonPanel( buttons, true);
}
private JPanel makeContentPane() {
JPanel mListPanel = new JPanel();
GridBagLayout gb = new GridBagLayout();
GridBagConstraints gbc = new GridBagConstraints();
mListPanel.setLayout(gb);
//content.setBorder(CMSAdminUtil.makeEtchedBorder());
//left side certificate table
mList = CMSAdminUtil.makeJList(mDataModel,10);
mScrollPane = new JScrollPane(mList,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
mList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION );
mList.addMouseListener(this);
mScrollPane.setBackground(Color.white);
mScrollPane.setBorder(BorderFactory.createLoweredBevelBorder());
CMSAdminUtil.resetGBC(gbc);
gbc.anchor = gbc.NORTH;
gbc.fill = gbc.BOTH;
gbc.gridwidth = 1;
gbc.weightx = 1.0;
gbc.weighty = 1.0;
gbc.insets = new Insets(CMSAdminUtil.COMPONENT_SPACE,CMSAdminUtil.COMPONENT_SPACE,0,0);
gb.setConstraints(mScrollPane, gbc);
mListPanel.add(mScrollPane);
JPanel buttonPanel = createUDButtonPanel();
CMSAdminUtil.resetGBC(gbc);
gbc.anchor = gbc.NORTH;
gbc.gridwidth = gbc.REMAINDER;
gbc.gridheight = gbc.REMAINDER;
gbc.weightx = 0.0;
gbc.weighty = 1.0;
gbc.insets = new Insets(CMSAdminUtil.COMPONENT_SPACE,
0,0,CMSAdminUtil.COMPONENT_SPACE);
gb.setConstraints(buttonPanel, gbc);
mListPanel.add(buttonPanel);
return mListPanel;
}
/**
* set buttons - proactive verification
*/
private void setButtons() {
//enable and diable buttons accordingly
//Debug.println("setButtons() - "+mList.getSelectedIndex());
if (mList.getSelectedIndex()< 0) {
mDelete.setEnabled(false);
mView.setEnabled(false);
return;
}
mDelete.setEnabled(true);
mView.setEnabled(true);
}
//=================================================
// RETRIEVE INFO FROM SERVER SIDE
//=================================================
//refresh the table content
private boolean refresh() {
mDataModel.clear();
mPPData.removeAllElements();
NameValuePairs response;
try {
response = mConnection.read(DestDef.DEST_USER_ADMIN,
ScopeDef.SC_USER_CERTS,
mUID, new NameValuePairs());
} catch (EAdminException e) {
CMSAdminUtil.showErrorDialog(mParentFrame, mResource,
e.getMessage(), CMSAdminUtil.ERROR_MESSAGE);
return false;
}
//parse data
String[] vals = new String[response.size()];
int i=0;
for (String entry : response.keySet()) {
vals[i++] = entry.trim();
}
CMSAdminUtil.bubbleSort(vals);
for (int y=0; y< vals.length ; y++) {
String str = reformat(vals[y]);
mDataModel.addElement(new JLabel(str,
CMSAdminUtil.getImage(CMSAdminResources.IMAGE_CERTICON_SMALL),
JLabel.LEFT));
mPPData.addElement(response.get(vals[y]));
}
return true;
}
/**
* Change DN from the following format:
* Serial:0x0 Subject: