diff options
author | Endi Sukma Dewata <edewata@redhat.com> | 2012-03-24 02:27:47 -0500 |
---|---|---|
committer | Endi Sukma Dewata <edewata@redhat.com> | 2012-03-26 11:43:54 -0500 |
commit | 621d9e5c413e561293d7484b93882d985b3fe15f (patch) | |
tree | 638f3d75761c121d9a8fb50b52a12a6686c5ac5c /base/console/src/com/netscape/admin/certsrv/ug/GroupEditor.java | |
parent | 40d3643b8d91886bf210aa27f711731c81a11e49 (diff) | |
download | pki-621d9e5c413e561293d7484b93882d985b3fe15f.tar.gz pki-621d9e5c413e561293d7484b93882d985b3fe15f.tar.xz pki-621d9e5c413e561293d7484b93882d985b3fe15f.zip |
Removed unnecessary pki folder.
Previously the source code was located inside a pki folder.
This folder was created during svn migration and is no longer
needed. This folder has now been removed and the contents have
been moved up one level.
Ticket #131
Diffstat (limited to 'base/console/src/com/netscape/admin/certsrv/ug/GroupEditor.java')
-rw-r--r-- | base/console/src/com/netscape/admin/certsrv/ug/GroupEditor.java | 596 |
1 files changed, 596 insertions, 0 deletions
diff --git a/base/console/src/com/netscape/admin/certsrv/ug/GroupEditor.java b/base/console/src/com/netscape/admin/certsrv/ug/GroupEditor.java new file mode 100644 index 000000000..e9693b15d --- /dev/null +++ b/base/console/src/com/netscape/admin/certsrv/ug/GroupEditor.java @@ -0,0 +1,596 @@ +// --- 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.util.*; +import com.netscape.certsrv.common.*; + +/** + * Group Membership Editor + * + * @author Jack Pan-Chen + * @version $Revision$, $Date$ + * @see com.netscape.admin.certsrv.ug + */ +public class GroupEditor extends JDialog + implements ActionListener, ListSelectionListener +{ + + /*========================================================== + * variables + *==========================================================*/ + private String PREFIX = "GROUPEDITOR"; + + private JFrame mParentFrame; + private AdminConnection mConnection; + private String mGroupName; + private boolean mIsNewGroup = false; + private ResourceBundle mResource; + protected DefaultListModel mDataModel; + protected UserListDialog mUserDialog = null; //keeping a copy for reuse + + protected JScrollPane mScrollPane; + protected JList mList; + + private JButton mOK, mCancel, mHelp, mAddUser, mDelete; + private JTextField mGroupNameField, mGroupDescField; + private JLabel mGroupNameLabel; + + private static final String ADDHELPINDEX = + "usersgroups-certsrv-add-group-dbox-help"; + private static final String EDITHELPINDEX = + "usersgroups-certsrv-edit-group-dbox-help"; + private String mHelpToken; + + /*========================================================== + * constructors + *==========================================================*/ + public GroupEditor(JFrame parent, AdminConnection conn) { + super(parent,true); + mParentFrame = parent; + mConnection = conn; + mDataModel = new DefaultListModel(); + mResource = ResourceBundle.getBundle(CMSAdminResources.class.getName()); + + setSize(360, 300); + setTitle(mResource.getString(PREFIX+"_TITLE")); + setLocationRelativeTo(parent); + getRootPane().setDoubleBuffered(true); + setDisplay(); + //toFront(); + } + + /*========================================================== + * public methods + *==========================================================*/ + + /** + * show the windows + * @param users list of current groups + */ + public void showDialog(String group, boolean isNew) { + + //initialize and setup + mGroupName = group; + mIsNewGroup = isNew; + + if (isNew) + mHelpToken = ADDHELPINDEX; + else + mHelpToken = EDITHELPINDEX; + + mGroupDescField.setText(""); + mGroupNameField.setText(""); + + mDataModel.clear(); + + //disable name change + if(!mIsNewGroup) { + mGroupNameField.setVisible(false); + mGroupNameLabel.setVisible(true); + mGroupNameLabel.setText(mGroupName); + } else { + mGroupNameField.setVisible(true); + mGroupNameLabel.setVisible(false); + } + + //retrieve the user record from the server + try { + if (mIsNewGroup == false) + refresh(); + } catch (EAdminException ex) { + CMSAdminUtil.showErrorDialog(mParentFrame, mResource, + ex.toString(), CMSAdminUtil.ERROR_MESSAGE); + return; + } + + setButtons(); + this.show(); + } + + /*========================================================== + * EVNET HANDLER METHODS + *==========================================================*/ + + //=== ACTIONLISTENER ===================== + + public void actionPerformed(ActionEvent evt) { + + if (evt.getSource().equals(mOK)) { + + if (mIsNewGroup) { + + //check text fields + if (mGroupNameField.getText().trim().equals("")) { + CMSAdminUtil.showMessageDialog(mParentFrame, mResource, PREFIX, + "NOGROUPNAME", CMSAdminUtil.ERROR_MESSAGE); + return; + } + + try { + mGroupName = mGroupNameField.getText().trim(); + addGroup(); + } catch (EAdminException e) { + //display error dialog + Debug.println(e.toString()); + CMSAdminUtil.showErrorDialog(mParentFrame, mResource, + e.toString(), CMSAdminUtil.ERROR_MESSAGE); + return; + } + + } else { + + try { + modifyGroup(); + } catch (EAdminException e) { + //display error dialog + Debug.println(e.toString()); + CMSAdminUtil.showErrorDialog(mParentFrame, mResource, + e.toString(), CMSAdminUtil.ERROR_MESSAGE); + return; + } + + } + this.hide(); + } + + if (evt.getSource().equals(mCancel)) { + Debug.println("Cancel Pressed"); + + //display are you sure dialog + this.hide(); + } + + if (evt.getSource().equals(mHelp)) { + CMSAdminUtil.help(mHelpToken); + } + + if (evt.getSource().equals(mAddUser)) { + //bring up the list for selection + + //create vector here + Vector currentUser = new Vector(); + for (int i=0; i<mDataModel.getSize(); i++) { + currentUser.addElement((String)mDataModel.getElementAt(i)); + } + + NameValuePairs response; + try { + response = mConnection.search(DestDef.DEST_USER_ADMIN, + ScopeDef.SC_USERS, new NameValuePairs()); + boolean hasNewUser = false; + for (String entry : response.keySet()) { + entry = entry.trim(); + if (currentUser.indexOf(entry)== -1) + hasNewUser = true; + } + if (!hasNewUser) { + CMSAdminUtil.showMessageDialog(mParentFrame, mResource, PREFIX, + "ALLUSERS", CMSAdminUtil.INFORMATION_MESSAGE); + return; + } + } catch (EAdminException e) { + CMSAdminUtil.showErrorDialog(mParentFrame, mResource, + e.getMessage(), CMSAdminUtil.ERROR_MESSAGE); + return; + } + + if (mUserDialog==null) + mUserDialog = new UserListDialog(mParentFrame, mConnection); + + mUserDialog.showDialog(currentUser); + + //get selection + if (!mUserDialog.isOK()) + return; + + //create user NVP data object and add user entry + Vector selectedUser = mUserDialog.getSelectedUser(); + //Debug.println("Selected User = "+selectedUser.toString()); + + + for(int i=0; i<selectedUser.size(); i++) { + String name = ((String) selectedUser.elementAt(i)).trim(); + if (!isDuplicate(name)) + mDataModel.addElement(name); + } + + refreshTable(); + } + + if (evt.getSource().equals(mDelete)) { + if(mList.getSelectedIndex()< 0) + return; + int i = CMSAdminUtil.showConfirmDialog(mParentFrame, mResource, + PREFIX, "DELETE", CMSAdminUtil.WARNING_MESSAGE); + if (i == JOptionPane.YES_OPTION) { + deleteMember(); + Debug.println("Member Deleted"); + } + setButtons(); + } + } + + private boolean isDuplicate(String name) { + for (int i=0; i<mDataModel.getSize(); i++) { + String name1 = ((String)mDataModel.getElementAt(i)).trim(); + if (name1.equals(name)) + return true; + } + return false; + } + + public void valueChanged(ListSelectionEvent e) { + setButtons(); + } + + /*========================================================== + * private methods + *==========================================================*/ + 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.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); + + } + + //resize vertical buttons + private void resizeButtons() { + mAddUser = CMSAdminUtil.makeJButton(mResource, PREFIX,"ADDUSER", null, this); + //mAddGroup = CMSAdminUtil.makeJButton(mResource, PREFIX, "ADDGROUP", null, this); + mDelete = CMSAdminUtil.makeJButton(mResource, PREFIX, "DELETE", null, this); + JButton[] buttons = {mAddUser, mDelete}; + //JButton[] buttons = {mAddUser, mAddGroup, mDelete}; + JButtonFactory.resize( buttons ); + } + + 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, mCancel, mHelp }; + JButton[] buttons = { mOK, mCancel }; + return CMSAdminUtil.makeJButtonPanel( buttons, true); + } + + + //create the vertical button panel for System Groups + private JPanel createMemberButtonPanel() { + //edit, add, delete, help buttons required + //actionlister to this object + JButton[] buttons = {mAddUser, mDelete}; + //JButton[] buttons = {mAddUser, mAddGroup, mDelete}; + return CMSAdminUtil.makeJButtonVPanel( buttons ); + } + + private JPanel makeContentPane() { + JPanel content = new JPanel(); + GridBagLayout gb3 = new GridBagLayout(); + content.setLayout(gb3); + //content.setBorder(CMSAdminUtil.makeEtchedBorder()); + + Insets insets = new Insets(CMSAdminUtil.COMPONENT_SPACE,0, + CMSAdminUtil.COMPONENT_SPACE,0); + + //top panel + JPanel top = new JPanel(); + GridBagLayout gb = new GridBagLayout(); + GridBagConstraints gbc = new GridBagConstraints(); + CMSAdminUtil.resetGBC(gbc); + top.setLayout(gb); + + JLabel label1 = CMSAdminUtil.makeJLabel(mResource, PREFIX, "GROUPNAME", null); + mGroupNameField = new JTextField(); + mGroupNameLabel = new JLabel(); + mGroupNameLabel.setVisible(false); + gbc.fill = gbc.NONE; + gbc.weightx = 0.0; + gbc.anchor = gbc.EAST; + gbc. insets = new Insets(CMSAdminUtil.COMPONENT_SPACE, + CMSAdminUtil.COMPONENT_SPACE,0,0); + top.add(label1, gbc); + + gbc.anchor = gbc.WEST; + gbc.fill = gbc.HORIZONTAL; + gbc.weightx = 1.0; + gbc. insets = new Insets(CMSAdminUtil.COMPONENT_SPACE, + CMSAdminUtil.COMPONENT_SPACE, + 0,CMSAdminUtil.DIFFERENT_COMPONENT_SPACE); + top.add( mGroupNameLabel, gbc ); + top.add( mGroupNameField, gbc ); + + JLabel dummy = new JLabel(); + dummy.setVisible(false); + gbc.gridwidth = gbc.REMAINDER; + gbc.weightx = 0.0; + top.add( dummy, gbc); + + CMSAdminUtil.resetGBC(gbc); + //gbc.gridheight = gbc.REMAINDER; + JLabel label2 = CMSAdminUtil.makeJLabel(mResource, PREFIX, "GROUPDESC", null); + mGroupDescField = new JTextField(); + CMSAdminUtil.addEntryField(top, label2, mGroupDescField, gbc); + + CMSAdminUtil.resetGBC(gbc); + JLabel label3 = CMSAdminUtil.makeJLabel(mResource, PREFIX, "MEMBER", null); + gbc.gridheight = gbc.REMAINDER; + gbc.fill = gbc.NONE; + gbc.gridwidth = gbc.REMAINDER; + gbc.anchor = gbc.WEST; + gbc.insets = new Insets(CMSAdminUtil.COMPONENT_SPACE, + CMSAdminUtil.DIFFERENT_COMPONENT_SPACE, + CMSAdminUtil.COMPONENT_SPACE,0); + top.add(label3, gbc ); + + CMSAdminUtil.resetGBC(gbc); + gbc.anchor = gbc.NORTH; + gbc.gridwidth = gbc.REMAINDER; + gbc.weightx = 1.0; + gbc.insets = CMSAdminUtil.DEFAULT_EMPTY_INSETS; + gb3.setConstraints(top, gbc); + content.add(top); + + //bottom panel + JPanel bottom = new JPanel(); + //bottom.setBorder(BorderFactory.createEtchedBorder()); + GridBagLayout gb2 = new GridBagLayout(); + CMSAdminUtil.resetGBC(gbc); + bottom.setLayout(gb2); + + resizeButtons(); + + //group membership table + + + mList = makeJList(mDataModel,9); + mList.addListSelectionListener(this); + mScrollPane = new JScrollPane(mList, + JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, + JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); + 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, + CMSAdminUtil.COMPONENT_SPACE, + 0); + gb2.setConstraints(mScrollPane, gbc); + bottom.add(mScrollPane); + + JPanel memberButtonPanel = createMemberButtonPanel(); + CMSAdminUtil.resetGBC(gbc); + gbc.anchor = gbc.NORTH; + gbc.gridwidth = gbc.REMAINDER; + gbc.gridheight = gbc.REMAINDER; + gbc.weightx = 0.0; + gbc.insets = new Insets(CMSAdminUtil.COMPONENT_SPACE,0, + CMSAdminUtil.COMPONENT_SPACE, + CMSAdminUtil.DIFFERENT_COMPONENT_SPACE); + gb2.setConstraints(memberButtonPanel, gbc); + bottom.add(memberButtonPanel); + + CMSAdminUtil.resetGBC(gbc); + gbc.anchor = gbc.NORTH; + gbc.gridwidth = gbc.REMAINDER; + gbc.gridheight = gbc.REMAINDER; + gbc.weightx = 1.0; + gbc.weighty = 1.0; + gbc.insets = CMSAdminUtil.DEFAULT_EMPTY_INSETS; + gb3.setConstraints(bottom, gbc); + content.add(bottom); + + + return content; + } + + //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 void setButtons() { + if (mList.getSelectedIndex() < 0) { + mDelete.setEnabled(false); + } else + mDelete.setEnabled(true); + CMSAdminUtil.repaintComp(mDelete); + } + + //================================================= + // RETRIEVE INFO FROM SERVER SIDE + //================================================= + + //retrieve group information from the server + private void refresh() throws EAdminException { + //Call AdminConnection to get data mGroupName + //mDataModel.removeAllRows(); + + //construct NVP + NameValuePairs config = new NameValuePairs(); + config.put(Constants.PR_GROUP_DESC, ""); + config.put(Constants.PR_GROUP_USER, ""); + config.put(Constants.PR_GROUP_GROUP, ""); + + NameValuePairs response; + response = mConnection.read(DestDef.DEST_GROUP_ADMIN, + ScopeDef.SC_GROUPS, + mGroupName, + config); + + Debug.println("Received Memebership: "+response.toString()); + //setup the ui + mGroupNameField.setText(mGroupName); + mGroupDescField.setText(response.get(Constants.PR_GROUP_DESC)); + + //setup the member table + + //parse user entry + String user = response.get(Constants.PR_GROUP_USER).trim(); + StringTokenizer tokenizer = new StringTokenizer(user, ","); + while (tokenizer.hasMoreTokens()) { + String user_str = tokenizer.nextToken().trim(); + mDataModel.addElement(user_str); + } + + } + + //add new group information + private void addGroup() throws EAdminException { + + //construct NVP + NameValuePairs config = new NameValuePairs(); + config.put(Constants.PR_GROUP_DESC, mGroupName); + createUGString(config); + + //send request + mConnection.add(DestDef.DEST_GROUP_ADMIN, + ScopeDef.SC_GROUPS, + mGroupName, + config); + } + + //change new group information + private void modifyGroup() throws EAdminException { + + //construct NVP + NameValuePairs config = new NameValuePairs(); + config.put(Constants.PR_GROUP_DESC, mGroupDescField.getText()); + createUGString(config); + + //send request + mConnection.modify(DestDef.DEST_GROUP_ADMIN, + ScopeDef.SC_GROUPS, + mGroupName, + config); + + } + + //remove member from the member list + private void deleteMember() { + Debug.println("GroupEditor: deleteMember()"); + int i = mList.getSelectedIndex(); + try{ + mDataModel.removeElementAt(i); + } catch (Exception e) { + Debug.println("GroupEditor: deleteMember()-" +e.toString()); + } + refreshTable(); + } + + //create user and group membership string + private void createUGString(NameValuePairs config) { + StringBuffer userBuf = new StringBuffer(); + + //go through membership table + if(mDataModel.getSize()>0) + for (int i=0; i<mDataModel.getSize(); i++) { + String data = (String)mDataModel.getElementAt(i); + if (userBuf.length()>0) + userBuf.append(","); + userBuf.append(data); + } + + //set parameters + config.put(Constants.PR_GROUP_USER, userBuf.toString()); + } + + //refresh the table content + private void refreshTable() { + //Debug.println("GroupEditor: refreshTable() - start"); + //mTable.invalidate(); + //mTable.validate(); + //mTable.repaint(1); + //mScrollPane.invalidate(); + //mScrollPane.validate(); + //mScrollPane.repaint(1); + //Debug.println("GroupEditor: refreshTable() - end"); + } + + public JList makeJList(DefaultListModel listModel, int visibleCount) { + JList listbox = new JList(listModel); + listbox.setCellRenderer(new AttrCellRenderer()); + listbox.setSelectionModel(new DefaultListSelectionModel()); + listbox.setVisibleRowCount(visibleCount); + if(listModel.size()!=0) + listbox.setSelectedIndex(0); + return listbox; + } + +} + + |