diff options
Diffstat (limited to 'base/console/src/com/netscape/admin/certsrv/config/ProfilePolicySelectionDialog.java')
-rw-r--r-- | base/console/src/com/netscape/admin/certsrv/config/ProfilePolicySelectionDialog.java | 515 |
1 files changed, 515 insertions, 0 deletions
diff --git a/base/console/src/com/netscape/admin/certsrv/config/ProfilePolicySelectionDialog.java b/base/console/src/com/netscape/admin/certsrv/config/ProfilePolicySelectionDialog.java new file mode 100644 index 000000000..44fe9886b --- /dev/null +++ b/base/console/src/com/netscape/admin/certsrv/config/ProfilePolicySelectionDialog.java @@ -0,0 +1,515 @@ +// --- 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.config; + +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.*; + +/** + * Plugin Selection Dialog + * + * @author Jack Pan-chen + * @version $Revision$, $Date$ + * @see com.netscape.admin.certsrv.config + */ +public class ProfilePolicySelectionDialog extends JDialog + implements ActionListener, MouseListener, ListSelectionListener +{ + /*========================================================== + * variables + *==========================================================*/ + protected JFrame mParentFrame; + protected AdminConnection mConnection; + protected ResourceBundle mResource; + protected DefaultListModel mConstraintModel; + protected DefaultListModel mDefaultModel; + protected String mDestination; //dest flag + + private JScrollPane mScrollPane; + protected JList mDefaultList, mConstraintList; + protected Hashtable mDefaultData, mConstraintData; + protected JLabel mDefaultLabel, mConstraintLabel; + protected JButton mOK, mCancel, mHelp; + protected String mDefSetId; + protected String mPrefix; + protected String mScope; + protected String mInstanceScope; + protected String mImageName; + protected String mProfileId; + protected String mHelpToken="configuration-certificateprofiles"; + protected CMSPluginInstanceTab mPluginInstanceDialog; + protected CMSBaseResourceModel mModel=null; + protected String mExtraDestination; + + public ProfilePolicySelectionDialog( + String defSetId, + String profileId, + String prefix, + JFrame parent, + AdminConnection conn, + String dest) + { + this(defSetId, profileId, prefix, parent, conn, dest, null, null); + } + + public ProfilePolicySelectionDialog( + String defSetId, + String profileId, + String prefix, + JFrame parent, + AdminConnection conn, + String dest, String extraDest) + { + this(defSetId, profileId, prefix, + parent, + conn, + dest, extraDest, + null ); + } + + public ProfilePolicySelectionDialog( + String defSetId, + String profileId, + String prefix, + JFrame parent, + AdminConnection conn, + String dest, + CMSPluginInstanceTab pluginType) { + this(defSetId, profileId, prefix, parent, conn, dest, null, pluginType); + } + + /*========================================================== + * constructors + *==========================================================*/ + public ProfilePolicySelectionDialog( + String defSetId, + String profileId, + String prefix, + JFrame parent, + AdminConnection conn, + String dest, String extraDest, + CMSPluginInstanceTab pluginType) + { + super(parent,true); + mDefSetId = defSetId; + mProfileId = profileId; + mParentFrame = parent; + mConnection = conn; + mDestination = dest; + mExtraDestination = extraDest; + mResource = ResourceBundle.getBundle(CMSAdminResources.class.getName()); + mDefaultModel = new DefaultListModel(); + mConstraintModel = new DefaultListModel(); + mDefaultData = new Hashtable(); + mConstraintData = new Hashtable(); + mPrefix = prefix; + mPluginInstanceDialog = pluginType; + + setTitle(mResource.getString(mPrefix+"_TITLE")); + setSize(440, 250); + setLocationRelativeTo(parent); + getRootPane().setDoubleBuffered(true); + } + + /*========================================================== + * public methods + *==========================================================*/ + + public void setModel(CMSBaseResourceModel model) + { + mModel = model; + } + + /** + * show the windows + * @param users list of current groups + */ + public void showDialog() { + + mConstraintModel.clear(); + mDefaultModel.clear(); + + if(!update("defaultPolicy", mDefaultModel, mDefaultData)) + return; +/* + if(!update("constraintPolicy", mConstraintModel)) + return; +*/ +/* + refresh(); + setArrowButtons(); +*/ + this.show(); + } + + /*========================================================== + * EVNET HANDLER METHODS + *==========================================================*/ + + //=== ACTIONLISTENER ===================== + public void actionPerformed(ActionEvent evt) { + + if (evt.getSource().equals(mOK)) { + + // check selection lists + if (mDefaultList.getSelectedIndex() < 0) { + CMSAdminUtil.showErrorDialog(mParentFrame, mResource, "Must select default", CMSAdminUtil.ERROR_MESSAGE); + return; + } + + if (mConstraintList.getSelectedIndex() < 0) { + CMSAdminUtil.showErrorDialog(mParentFrame, mResource, "Must select constraint", CMSAdminUtil.ERROR_MESSAGE); + return; + } + + NameValuePairs response = null; +/* + try { + response = getDefaultConfig(); + } catch (EAdminException e) { + CMSAdminUtil.showErrorDialog(mParentFrame, mResource, + e.getMessage(), CMSAdminUtil.ERROR_MESSAGE); + return; + } + Debug.println(response.toString()); + String id = ((JLabel)mDefaultModel.elementAt(mDefaultList.getSelectedIndex())).getText(); + response.add(Constants.PR_POLICY_IMPL_NAME,id); +*/ + ProfilePolicyNewDialog dialog = + new ProfilePolicyNewDialog( + mDefSetId, + response, + mParentFrame, + mConnection, + mExtraDestination); + + dialog.setModel(mModel); + dialog.setInstanceScope(mInstanceScope); + + // profile;defClass;conClass + String defaultName = ((JLabel)mDefaultModel.elementAt(mDefaultList.getSelectedIndex())).getText(); + String conName = ((JLabel)mConstraintModel.elementAt(mConstraintList.getSelectedIndex())).getText(); + + + String namex = mProfileId + ";" + getID(defaultName, mDefaultData) + + ";" + getID(conName, mConstraintData); + dialog.showDialog(response,namex); + + if(!dialog.isOK()) { + this.dispose(); + return; + } + + //response = dialog.getData(); + // String name = dialog.getRuleName(); + + // Debug.println(response.toString()); + + dialog.dispose(); + this.dispose(); + } + + + if (evt.getSource().equals(mCancel)) { + this.dispose(); + } + if (evt.getSource().equals(mHelp)) { + CMSAdminUtil.help(mHelpToken); + } + } + + //==== MOUSELISTENER ====================== + public void mouseClicked(MouseEvent e) { + setArrowButtons(); + } + + public void mousePressed(MouseEvent e) {} + public void mouseReleased(MouseEvent e) { + setArrowButtons(); + } + public void mouseEntered(MouseEvent e) {} + public void mouseExited(MouseEvent e) { + setArrowButtons(); + } + + protected void setDisplay() { + Debug.println("*** PluginSelectionDialog.setDisplay() - 1"); + getContentPane().setLayout(new BorderLayout()); + JPanel center = new JPanel(); + GridBagLayout gb = new GridBagLayout(); + GridBagConstraints gbc = new GridBagConstraints(); + center.setLayout(gb); + + // default content panel + mDefaultLabel = CMSAdminUtil.makeJLabel(mResource, mPrefix, + "DEFAULTNAME", null); + center.add(mDefaultLabel); + + JPanel content = makeDefaultContentPane(); + CMSAdminUtil.resetGBC(gbc); + gbc.anchor = gbc.NORTH; + gbc.gridwidth = gbc.REMAINDER; + gbc.weightx = 1.0; + gbc.weighty = 1.0; + gbc.fill = gbc.BOTH; + gb.setConstraints(content, gbc); + center.add(content); + + // constraint content panel + mConstraintLabel = CMSAdminUtil.makeJLabel(mResource, mPrefix, + "CONSTRAINTNAME", null); + center.add(mConstraintLabel); + + JPanel content1 = makeConstraintContentPane(); + CMSAdminUtil.resetGBC(gbc); + gbc.anchor = gbc.NORTH; + gbc.gridwidth = gbc.REMAINDER; + gbc.weightx = 1.0; + gbc.weighty = 1.0; + gbc.fill = gbc.BOTH; + gb.setConstraints(content1, gbc); + center.add(content1); + + //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 botton action panel + private JPanel makeActionPane() { + mOK = CMSAdminUtil.makeJButton(mResource, mPrefix, "OK", null, this); + mCancel = CMSAdminUtil.makeJButton(mResource, mPrefix, "CANCEL", null, this); + mHelp = CMSAdminUtil.makeJButton(mResource, mPrefix, "HELP", null, this); + //JButton[] buttons = { mOK, mCancel, mHelp}; + JButton[] buttons = { mOK, mCancel}; + JButtonFactory.resize( buttons ); + return CMSAdminUtil.makeJButtonPanel( buttons, true); + } + + private JPanel makeDefaultContentPane() { + JPanel mListPanel = new JPanel(); + GridBagLayout gb = new GridBagLayout(); + GridBagConstraints gbc = new GridBagConstraints(); + mListPanel.setLayout(gb); + //content.setBorder(CMSAdminUtil.makeEtchedBorder()); + + //left side certificate table + mDefaultList = CMSAdminUtil.makeJList(mDefaultModel,9); + mDefaultList.addListSelectionListener(this); + Debug.println("PluginSelectionDialog.makeContentPane() - making mList("+mDefaultList+")"); + mScrollPane = new JScrollPane(mDefaultList, + JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, + JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); + mDefaultList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION ); + mDefaultList.addMouseListener(this); + mScrollPane.setBackground(Color.white); + mScrollPane.setBorder(BorderFactory.createLoweredBevelBorder()); + + CMSAdminUtil.resetGBC(gbc); + gbc.anchor = gbc.NORTH; + gbc.gridwidth = gbc.REMAINDER; + gbc.gridheight = gbc.REMAINDER; + gbc.weightx = 1.0; + gbc.weighty = 1.0; + gbc.fill = gbc.BOTH; + gb.setConstraints(mScrollPane, gbc); + mListPanel.add(mScrollPane); + + return mListPanel; + } + + private JPanel makeConstraintContentPane() { + JPanel mListPanel = new JPanel(); + GridBagLayout gb = new GridBagLayout(); + GridBagConstraints gbc = new GridBagConstraints(); + mListPanel.setLayout(gb); + //content.setBorder(CMSAdminUtil.makeEtchedBorder()); + + //left side certificate table + mConstraintList = CMSAdminUtil.makeJList(mConstraintModel,9); + Debug.println("PluginSelectionDialog.makeContentPane() - making mList("+mConstraintList+")"); + mScrollPane = new JScrollPane(mConstraintList, + JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, + JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); + mConstraintList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION ); + mConstraintList.addMouseListener(this); + mScrollPane.setBackground(Color.white); + mScrollPane.setBorder(BorderFactory.createLoweredBevelBorder()); + + CMSAdminUtil.resetGBC(gbc); + gbc.anchor = gbc.NORTH; + gbc.gridwidth = gbc.REMAINDER; + gbc.gridheight = gbc.REMAINDER; + gbc.weightx = 1.0; + gbc.weighty = 1.0; + gbc.fill = gbc.BOTH; + gb.setConstraints(mScrollPane, gbc); + mListPanel.add(mScrollPane); + + return mListPanel; + } + + + //set arrow buttons + private void setArrowButtons() { + + //enable and diable buttons accordingly + //Debug.println("setArrowButtons() - "+mList.getSelectedIndex()); + + if (mDefaultList.getSelectedIndex()< 0 && mConstraintList.getSelectedIndex()<0) { + mOK.setEnabled(false); + return; + } + + mOK.setEnabled(true); + } + + //refresh the table content + private void refresh() { + //mScrollPane.invalidate(); + //mScrollPane.validate(); + //repaint(); + } + + public void valueChanged(ListSelectionEvent e) { + if (e.getSource().equals(mDefaultList)) { + if (mDefaultList.getSelectedIndex() < 0) + return; + String name = ((JLabel)mDefaultModel.elementAt(mDefaultList.getSelectedIndex())).getText(); + NameValuePairs response=null; + + try { + response = mConnection.read(mDestination, + ScopeDef.SC_SUPPORTED_CONSTRAINTPOLICIES, + getID(name, mDefaultData), new NameValuePairs()); + Debug.println(response.toString()); + } catch (Exception ex) { + Debug.println(ex.toString()); + } + + mConstraintModel.clear(); + mConstraintData.clear(); + parseData(response, mConstraintModel, mConstraintData); + mConstraintList.invalidate(); + mConstraintList.validate(); + repaint(); + } + } + + //================================================= + // RETRIEVE INFO FROM SERVER SIDE + //================================================= + + //save order information to the server + protected boolean update(String scope, DefaultListModel model, + Hashtable data) { + + NameValuePairs response; + NameValuePairs params = new NameValuePairs(); + try { + response = mConnection.search(mDestination, scope, + params); + } catch (EAdminException e) { + //display error dialog + CMSAdminUtil.showErrorDialog(mParentFrame, mResource, + e.getMessage(), CMSAdminUtil.ERROR_MESSAGE); + return false; + } + + Debug.println(response.toString()); + + model.clear(); + data.clear(); + parseData(response, model, data); + return true; + } + + private void parseData(NameValuePairs response, DefaultListModel model, + Hashtable data) { + //parse the data + String[] vals = new String[response.size()]; + int i=0; + for (String name : response.keySet()) { + name = name.trim(); + String val = response.get(name); + StringTokenizer st = new StringTokenizer(val, ","); + String className = st.nextToken(); + String desc = st.nextToken(); + String friendlyName = st.nextToken(); + vals[i++] = friendlyName.trim(); + data.put(name, friendlyName); + Debug.println("PluginSelectionDialog::update() - adding '"+vals[i-1]+"'"); + } + + CMSAdminUtil.bubbleSort(vals); + + for (int y=0; y< vals.length ; y++) { + try { + model.addElement(new JLabel(vals[y], + CMSAdminUtil.getImage(mImageName), JLabel.LEFT)); + } + catch (Exception ex) { + Debug.println("PluginSelectionDialog could not get image for '"+ + mImageName+"'. Adding without image"); + model.addElement(new JLabel(vals[y], + JLabel.LEFT)); + } + } + } + + //this returns the default configuration + protected NameValuePairs getDefaultConfig() throws EAdminException { + String name = ((JLabel)mDefaultModel.elementAt(mDefaultList.getSelectedIndex())).getText(); + NameValuePairs response; + response = mConnection.read(mDestination, + ScopeDef.SC_SUPPORTED_CONSTRAINTPOLICIES, getID(name.trim(), mDefaultData), + new NameValuePairs()); + + Debug.println(response.toString()); + + return response; + } + + private String getID(String name, Hashtable t) { + Enumeration keys = t.keys(); + while (keys.hasMoreElements()) { + String key = (String)keys.nextElement(); + String val = (String)t.get(key); + if (val.equals(name)) { + return key; + } + } + return ""; + } +} |