summaryrefslogtreecommitdiffstats
path: root/pki/base/console/src/com/netscape/admin/certsrv/ug/UserTab.java
diff options
context:
space:
mode:
Diffstat (limited to 'pki/base/console/src/com/netscape/admin/certsrv/ug/UserTab.java')
-rw-r--r--pki/base/console/src/com/netscape/admin/certsrv/ug/UserTab.java375
1 files changed, 375 insertions, 0 deletions
diff --git a/pki/base/console/src/com/netscape/admin/certsrv/ug/UserTab.java b/pki/base/console/src/com/netscape/admin/certsrv/ug/UserTab.java
new file mode 100644
index 000000000..ccf7ac5ae
--- /dev/null
+++ b/pki/base/console/src/com/netscape/admin/certsrv/ug/UserTab.java
@@ -0,0 +1,375 @@
+// --- 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 javax.swing.event.*;
+import java.awt.event.*;
+import java.awt.*;
+import java.util.*;
+import com.netscape.management.client.*;
+import com.netscape.management.client.util.*;
+import com.netscape.certsrv.common.*;
+
+/**
+ * User Tab - this UI component provides the user
+ * management functionality of the certificate server.
+ *
+ * @author Jack Pan-Chen
+ * @version $Revision$, $Date$
+ *
+ * @see com.netscape.admin.certsrv.ug.CertImportDialog
+ * @see com.netscape.admin.certsrv.ug.CertManagementDialog
+ * @see com.netscape.admin.certsrv.ug.CertViewDialog
+ * @see com.netscape.admin.certsrv.ug.UserEditor
+ */
+public class UserTab extends CMSBaseUGTab {
+
+ /*==========================================================
+ * variables
+ *==========================================================*/
+ private static final String PANEL_NAME = "USERTAB";
+ private AdminConnection mConnection;
+
+ protected JScrollPane mScrollPane;
+ protected JTable mTable; //table
+ protected UserDataModel mDataModel; //table model
+ protected UserEditor mEditor=null; //keep single copy
+ protected UserEditor mAddEditor=null; //keep single copy
+ protected CertManagementDialog mCertEditor=null; //single copy
+ protected JButton mRefresh, mEdit, mAdd, mDelete, mHelp, mCert;
+ private final static String HELPINDEX = "usersgroups-certsrv-users-help";
+
+ /*==========================================================
+ * constructors
+ *==========================================================*/
+ public UserTab(CMSBaseResourceModel model) {
+ super(PANEL_NAME, model);
+ mConnection = model.getServerInfo().getAdmin();
+ mDataModel = new UserDataModel();
+ mHelpToken = HELPINDEX;
+ }
+
+ /*==========================================================
+ * public methods
+ *==========================================================*/
+
+ /**
+ * refresh the content of the tab
+ * IRefreshTab menthod
+ */
+ public void refresh() {
+ //Debug.println("refresh() user tab");
+
+ mDataModel.removeAllRows();
+ updateUser();
+ setButtons();
+ mTable.invalidate();
+ mTable.validate();
+ mScrollPane.invalidate();
+ mScrollPane.validate();
+ mScrollPane.repaint(1);
+ }
+
+ /*==========================================================
+ * EVNET HANDLER METHODS
+ *==========================================================*/
+
+ //=== ACTIONLISTENER =====================
+ public void actionPerformed(ActionEvent e) {
+ if (e.getSource().equals(mRefresh)) {
+ Debug.println("Refresh User");
+ refresh();
+ } else if (e.getSource().equals(mEdit)) {
+ if(mTable.getSelectedRow()< 0)
+ return;
+
+ Debug.println("Edit User");
+ String userName = (String)
+ mDataModel.getObjectValueAt(mTable.getSelectedRow());
+
+ mAddEditor = new UserEditor(mModel.getFrame(), mConnection,
+ false);
+ mAddEditor.showDialog(userName);
+ mAddEditor.dispose();
+ refresh();
+ } else if (e.getSource().equals(mAdd)) {
+ mAddEditor = new UserEditor(mModel.getFrame(), mConnection, true);
+ mAddEditor.showDialog("");
+ if (mAddEditor.isUserAdded())
+ refresh();
+ mAddEditor.dispose();
+ } else if (e.getSource().equals(mDelete)) {
+ Debug.println("Delete User");
+ if(mTable.getSelectedRow()< 0)
+ return;
+ int i = showConfirmDialog("DELETE");
+ if (i == JOptionPane.YES_OPTION) {
+ deleteUser();
+ Debug.println("User Deleted");
+ }
+ } else if (e.getSource().equals(mHelp)) {
+ helpCallback();
+ } else if (e.getSource().equals(mCert)) {
+ String userName = (String)
+ mDataModel.getObjectValueAt(mTable.getSelectedRow());
+ if (mCertEditor==null)
+ mCertEditor = new CertManagementDialog(mModel.getFrame(), mConnection);
+ mCertEditor.showDialog(userName);
+ Debug.println("Cert");
+ //refresh();
+ //XXX HELP
+ }
+ }
+
+ //==== MOUSELISTENER ======================
+ public void mouseClicked(MouseEvent e) {
+ //Debug.println("CertRepositoryPanel: mouseClicked() -"+e.toString());
+ setButtons();
+
+ //we track the double click action on the table entry - View op
+ if(mTable.getSelectedRow() >= 0) {
+ if(e.getClickCount() == 2) {
+ Debug.println("Edit User");
+ //editUser();
+ }
+ }
+ }
+
+ public void mouseReleased(MouseEvent e) {
+ setButtons();
+ }
+
+ /*==========================================================
+ * protected methods
+ *==========================================================*/
+
+ /**
+ * create the user action button panel
+ */
+ protected JPanel createUserButtonPanel() {
+ //edit, add, delete, help buttons required
+ //actionlister to this object
+ mEdit = makeJButton("EDIT");
+ mAdd = makeJButton("ADD");
+ mDelete = makeJButton("DELETE");
+ mCert = makeJButton("CERT");
+ JButton[] buttons = {mAdd, mDelete, mEdit, mCert};
+ JButtonFactory.resize( buttons );
+ return CMSAdminUtil.makeJButtonVPanel( buttons );
+ }
+
+ protected JPanel createActionPanel() {
+ //edit, add, delete, help buttons required
+ //actionlister to this object
+ mRefresh = makeJButton("REFRESH");
+ mHelp = makeJButton("HELP");
+ //JButton[] buttons = { mRefresh, mHelp };
+ JButton[] buttons = { mRefresh };
+ return makeJButtonPanel( buttons, true);
+ }
+
+ protected JPanel createListPanel() {
+ mListPanel = new JPanel();
+ GridBagLayout gb = new GridBagLayout();
+ GridBagConstraints gbc = new GridBagConstraints();
+ mListPanel.setLayout(gb);
+
+ //center table
+ mTable = new JTable(mDataModel);
+ mScrollPane = JTable.createScrollPaneForTable(mTable);
+ //mScrollPane.setBorder(CMSAdminUtil.makeTitledBorder(mResource,PANEL_NAME,"USERS"));
+ mScrollPane.setHorizontalScrollBarPolicy(mScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+ mScrollPane.setVerticalScrollBarPolicy(mScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
+ mTable.setAutoscrolls(true);
+ mTable.sizeColumnsToFit(true);
+ mTable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+ mTable.getSelectionModel().addListSelectionListener(this);
+ mTable.addMouseListener(this);
+ mScrollPane.setBackground(Color.white);
+ setLabelCellRenderer(mTable,0);
+
+ CMSAdminUtil.resetGBC(gbc);
+ gbc.anchor = gbc.NORTH;
+ gbc.fill = gbc.BOTH;
+ gbc.gridwidth = 1;
+ gbc.weightx = 1.0;
+ gbc.insets = EMPTY_INSETS;
+ gb.setConstraints(mScrollPane, gbc);
+ mListPanel.add(mScrollPane);
+
+ JPanel buttonPanel = createUserButtonPanel();
+ 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 = EMPTY_INSETS;
+ gb.setConstraints(buttonPanel, gbc);
+ mListPanel.add(buttonPanel);
+
+ refresh();
+
+ return mListPanel;
+ }
+
+ //Set the first column's cellrender as label cell
+ protected void setLabelCellRenderer(JTable table, int index) {
+ table.getColumnModel().getColumn(index).setCellRenderer(new LabelCellRenderer(new JLabel()));
+ }
+
+ /*==========================================================
+ * private methods
+ *==========================================================*/
+
+ /**
+ * set buttons - proactive verification
+ */
+ private void setButtons() {
+
+ //enable and diable buttons accordingly
+ if (mTable.getSelectionModel().isSelectionEmpty()) {
+ mDelete.setEnabled(false);
+ mEdit.setEnabled(false);
+ mCert.setEnabled(false);
+ return;
+ }
+
+ if(mDataModel.getRowCount()< 0) {
+ mDelete.setEnabled(false);
+ mEdit.setEnabled(false);
+ mCert.setEnabled(false);
+ return;
+ }
+
+ mDelete.setEnabled(true);
+ mEdit.setEnabled(true);
+ mCert.setEnabled(true);
+
+ }
+
+ //=============================================
+ // SEND REQUESTS TO THE SERVER SIDE
+ //=============================================
+
+ private void updateUser() {
+ //send request and parse data
+
+ NameValuePairs response;
+ mModel.progressStart();
+
+ try {
+ response = mConnection.search(DestDef.DEST_USER_ADMIN,
+ ScopeDef.SC_USERS,
+ new NameValuePairs());
+ } catch (EAdminException e) {
+ //display error dialog
+ showErrorDialog(e.getMessage());
+ mModel.progressStop();
+ return;
+ }
+
+ Debug.println(response.toString());
+
+ String responseValue = response.getValue("userInfo");
+
+ StringTokenizer tokenizer = new StringTokenizer(responseValue, ";");
+ StringTokenizer subTokenizer = null;
+
+ Vector store = new Vector();
+ Hashtable table = new Hashtable();
+
+ while (tokenizer.hasMoreTokens()) {
+ String t = (String)tokenizer.nextToken();
+ subTokenizer = new StringTokenizer(t, ":");
+ int i=0;
+ String str1 = null;
+ String str2 = null;
+ while (subTokenizer.hasMoreTokens()) {
+ if (i == 0) {
+ str1 = (String)subTokenizer.nextToken();
+ store.addElement(str1);
+ } else {
+ str2 = (String)subTokenizer.nextToken();
+ table.put(str1, str2);
+ }
+ i++;
+ }
+ }
+
+ String[] names = new String[store.size()];
+ store.copyInto(names);
+
+ if (names.length > 1) {
+ names = CMSAdminUtil.randomize(names);
+ CMSAdminUtil.quickSort(names, 0, names.length-1);
+ }
+
+ for (int y=0; y< names.length ; y++) {
+ String s = (String)table.get(names[y]);
+ mDataModel.processData(names[y], s);
+ }
+
+ if (mDataModel.getRowCount() >0)
+ mTable.setRowSelectionInterval(0,0);
+
+ mModel.progressStop();
+ }
+
+ private void deleteUser() {
+ //get entry name
+ String userName = (String)
+ mDataModel.getObjectValueAt(mTable.getSelectedRow());
+
+ mModel.progressStart();
+ //send comment to server for the removal of user
+ try {
+ mConnection.delete(DestDef.DEST_USER_ADMIN,
+ ScopeDef.SC_USERS,
+ userName);
+ } catch (EAdminException e) {
+ String str = e.toString();
+
+ if (str.indexOf("The user") == 0) {
+ int i =
+ JOptionPane.showConfirmDialog(new JFrame(), str,
+ "Information", JOptionPane.YES_NO_OPTION,
+ JOptionPane.INFORMATION_MESSAGE,
+ CMSAdminUtil.getImage(CMSAdminResources.IMAGE_INFO_ICON));
+ if (i == JOptionPane.YES_OPTION) {
+ Debug.println("User Deleted");
+ try {
+ mConnection.delete(DestDef.DEST_USER_ADMIN,
+ ScopeDef.SC_USERS,
+ userName+":true");
+ } catch (EAdminException ee) {
+ showErrorDialog(ee.getMessage());
+ }
+ }
+ }
+ }
+
+ mModel.progressStop();
+ //send comment to server and refetch the content
+ refresh();
+ }
+
+}