diff options
Diffstat (limited to 'base/console/src/com/netscape/admin/certsrv/config/CMSCRLIPPanel.java')
-rw-r--r-- | base/console/src/com/netscape/admin/certsrv/config/CMSCRLIPPanel.java | 327 |
1 files changed, 327 insertions, 0 deletions
diff --git a/base/console/src/com/netscape/admin/certsrv/config/CMSCRLIPPanel.java b/base/console/src/com/netscape/admin/certsrv/config/CMSCRLIPPanel.java new file mode 100644 index 000000000..553211eb8 --- /dev/null +++ b/base/console/src/com/netscape/admin/certsrv/config/CMSCRLIPPanel.java @@ -0,0 +1,327 @@ +// --- 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.ug.*; +import com.netscape.management.client.*; +import com.netscape.management.client.util.*; +import com.netscape.certsrv.common.*; +import com.netscape.admin.certsrv.connection.*; +import javax.swing.*; +import java.awt.*; +import java.awt.event.*; +import java.util.*; + +/** + * CRL IP Panel + * + * @version $Revision$, $Date$ + */ +public class CMSCRLIPPanel extends CMSBaseTab + implements MouseListener +{ + + /*========================================================== + * variables + *==========================================================*/ + + private final static String PANEL_NAME = "CRLIPS"; + private final static String HELPINDEX = "configuration-revocation"; + + private AdminConnection mAdmin; + private CMSBaseResourceModel mModel; + private CMSTabPanel mParent; + private JList mList; + private DefaultListModel mDataModel; + private JScrollPane mScrollPane; + private JButton mAdd; + private JButton mEdit; + private JButton mDelete; + private Vector mNames; + + /*========================================================== + * constructors + *==========================================================*/ + public CMSCRLIPPanel(CMSBaseResourceModel model, CMSTabPanel parent) { + super(PANEL_NAME, parent); + mModel = model; + mParent = parent; + mDataModel = new DefaultListModel(); + mHelpToken = HELPINDEX; + mNames = new Vector(); + } + + /*========================================================== + * public methods + *==========================================================*/ + + /** + * initialize the UI components + */ + public void init() { + JPanel mainPanel = mCenterPanel; + + Debug.println("CRLIPPanel: init()"); + mAdmin = mModel.getServerInfo().getAdmin(); + + GridBagLayout gb1 = new GridBagLayout(); + mainPanel.setLayout(gb1); + + GridBagConstraints gbc = new GridBagConstraints(); + CMSAdminUtil.resetGBC(gbc); + JLabel listLabel = makeJLabel("CRLIPLIST"); + gbc.anchor = gbc.NORTHWEST; + gbc.fill = gbc.NONE; + gbc.gridwidth = gbc.REMAINDER; + gbc.weightx = 1.0; + gbc.insets = new Insets(DIFFERENT_COMPONENT_SPACE, + DIFFERENT_COMPONENT_SPACE, + 0,DIFFERENT_COMPONENT_SPACE); + gb1.setConstraints(listLabel, gbc); + mainPanel.add(listLabel); + + CMSAdminUtil.resetGBC(gbc); + mList = makeJList(mDataModel, 7); + mScrollPane = new JScrollPane(mList, + JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, + JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); + mList.addMouseListener(this); + mScrollPane.setBackground(Color.white); + mScrollPane.setBorder(BorderFactory.createLoweredBevelBorder()); + gbc.anchor = gbc.NORTHWEST; + gbc.weightx = 0.5; + gbc.weighty = 1.0; + gbc.insets = new Insets(COMPONENT_SPACE, + DIFFERENT_COMPONENT_SPACE, + 0,DIFFERENT_COMPONENT_SPACE); + gb1.setConstraints(mScrollPane, gbc); + mainPanel.add(mScrollPane); + + JPanel buttonPanel = createUserButtonPanel(); + CMSAdminUtil.resetGBC(gbc); + gbc.anchor = gbc.NORTHWEST; + gbc.gridwidth = gbc.REMAINDER; + gbc.gridheight = gbc.REMAINDER; + gbc.weightx = 0.0; + gbc.weighty = 1.0; + gbc.insets = new Insets(COMPONENT_SPACE,0, + 0,DIFFERENT_COMPONENT_SPACE); + gb1.setConstraints(buttonPanel, gbc); + mainPanel.add(buttonPanel); + + refresh(); + } + + + /** + * create the user action button panel + */ + protected JPanel createUserButtonPanel() { + //add, edit, delete, help buttons required + //actionlister to this object + mAdd = makeJButton("ADD"); + mEdit = makeJButton("EDIT"); + mDelete = makeJButton("DELETE"); + JButton[] buttons = {mAdd, mEdit, mDelete}; + JButtonFactory.resize( buttons ); + return CMSAdminUtil.makeJButtonVPanel( buttons ); + } + + /** + * refresh the panel data + */ + public void refresh() { + try { + NameValuePairs nvps = mAdmin.search(DestDef.DEST_CA_ADMIN, + ScopeDef.SC_CRLIPS, + new NameValuePairs()); + populate(nvps); + } catch (EAdminException e) { + showErrorDialog(e.toString()); + } + + repaint(1); + } + + + /*========================================================== + * Event Handler + *==========================================================*/ + + //======= ActionLister ============================ + public void actionPerformed(ActionEvent e) { + if (e.getSource().equals(mEdit)) { + JFrame frame = mModel.getFrame(); + String name = ((JLabel)mList.getSelectedValue()).getText(); + //(String)mList.getSelectedValue(); + NameValuePairs nvps = new NameValuePairs(); + nvps.put(Constants.PR_ENABLED, ""); + nvps.put(Constants.PR_ID, ""); + nvps.put(Constants.PR_DESCRIPTION, ""); + nvps.put(Constants.PR_CLASS, ""); + try { + NameValuePairs values = mAdmin.read(DestDef.DEST_CA_ADMIN, + ScopeDef.SC_CRLIPS, + name, nvps); + + CRLIPEditor editor = new CRLIPEditor(mAdmin, mModel.getFrame(), + name, DestDef.DEST_CA_ADMIN, + mModel.getServerInfo().getServerId(), + mNames); + editor.showDialog(values); + } catch (EAdminException ex) { + showErrorDialog(ex.toString()); + } + refresh(); + } else if (e.getSource().equals(mAdd)) { + CRLIPEditor editor = new CRLIPEditor(mAdmin, mModel.getFrame(), + null, DestDef.DEST_CA_ADMIN, + mModel.getServerInfo().getServerId(), + mNames); + editor.showDialog(new NameValuePairs()); + String name = editor.getCRLName(); + CMSResourceObject node = (CMSResourceObject)(mParent.getResourceObject()); + CMSResourceObject crlsNode = node; + node = new CMSResourceObject(); + node.setName(name); + CMSTabPanel crlIPTabPane = new CMSTabPanel(mModel, node); + crlIPTabPane.addTab(new CMSCRLSettingPanel(crlIPTabPane, name)); + crlIPTabPane.addTab(new CMSCRLCachePanel(crlIPTabPane, name)); + crlIPTabPane.addTab(new CMSCRLFormatPanel(crlIPTabPane, name)); + node.setCustomPanel(crlIPTabPane); + node.setIcon( CMSAdminUtil.getImage(CMSAdminResources.IMAGE_RULEOBJECT)); + node.setAllowsChildren(true); + crlsNode.insert(node, crlsNode.getChildCount()); + + CMSResourceObject crlNode = node; + + node = new CMSResourceObject("CRLEXTENSIONS"); + CMSUGTabPanel crlExtTabPane1 = new CMSUGTabPanel(mModel, node); + crlExtTabPane1.addTab(new CRLExtensionsInstanceTab(mModel, DestDef.DEST_CA_ADMIN, name)); + node.setCustomPanel(crlExtTabPane1); + node.setIcon( CMSAdminUtil.getImage(CMSAdminResources.IMAGE_RULEOBJECT)); + node.setAllowsChildren(false); + crlNode.add(node); + mModel.fireTreeStructureChanged((ResourceObject)crlsNode); + + refresh(); + } else if (e.getSource().equals(mDelete)) { + int index = mList.getSelectedIndex(); + if (index >= 0) { + String name = ((JLabel)mList.getSelectedValue()).getText(); + //(String)mList.getSelectedValue(); + + int i = showConfirmDialog("DELETE"); + if (i == JOptionPane.YES_OPTION) { + try { + mAdmin.delete(DestDef.DEST_CA_ADMIN, + ScopeDef.SC_CRLIPS, name); + } catch (EAdminException ex) { + showErrorDialog(ex.toString()); + } + if (mNames.contains(name)) + mNames.remove(name); + mDataModel.removeElementAt(index); + if (mDataModel.size() > 0) + mList.setSelectedIndex(0); + } + CMSResourceObject node = + (CMSResourceObject)(mParent.getResourceObject()); + Enumeration allchildren = node.children(); + while (allchildren.hasMoreElements()) { + CMSResourceObject child = (CMSResourceObject)(allchildren.nextElement()); + String name1 = child.getName(); + if (name1.equals(name)) { + node.remove(child); + mModel.fireTreeStructureChanged((ResourceObject)node); + return; + } + } + } + } + } + + //=== MOUSELISTENER ======================== + public void mouseClicked(MouseEvent e) { + if (e.getSource() == mList) { + if (mList.getSelectedIndex() < 0) + mEdit.setEnabled(false); + else + mEdit.setEnabled(true); + } + } + + public void mousePressed(MouseEvent e) {} + public void mouseReleased(MouseEvent e) {} + public void mouseEntered(MouseEvent e) {} + public void mouseExited(MouseEvent e) {} + + //======== CMSBaseConfigPanel ============== + public boolean applyCallback() { + return true; + } + + /** + * Implementation for reset values + * @return true if save successful; otherwise, false. + */ + public boolean resetCallback() { + refresh(); + return true; + } + + /*========================================================== + * private methods + *==========================================================*/ + + //update the UI component using the data retrieved + private void populate(NameValuePairs nvps) { + + mDataModel.removeAllElements(); + mNames.removeAllElements(); + for (String name : nvps.keySet()) { + if (name.indexOf('.') == -1) { + mNames.addElement(name); + + String enable = nvps.get(name + "." + Constants.PR_ENABLED); + if (enable != null && enable.equalsIgnoreCase(Constants.TRUE)) { + mDataModel.addElement(new JLabel(name, + CMSAdminUtil.getImage(CMSAdminResources.IMAGE_RULE), + JLabel.LEFT)); + } else { + mDataModel.addElement(new JLabel(name, + CMSAdminUtil.getImage(CMSAdminResources.IMAGE_RULE_DISABLE), + JLabel.LEFT)); + } + /* + mDataModel.addElement(name); + */ + } + } + + if (mDataModel.size() > 0) { + mList.setSelectedIndex(0); + mEdit.setEnabled(true); + mDelete.setEnabled(true); + } else { + mEdit.setEnabled(false); + mDelete.setEnabled(false); + } + } +} |