diff options
Diffstat (limited to 'base/console/src/com/netscape/admin/certsrv/security/CertRequestSelectTokenPane.java')
-rw-r--r-- | base/console/src/com/netscape/admin/certsrv/security/CertRequestSelectTokenPane.java | 302 |
1 files changed, 302 insertions, 0 deletions
diff --git a/base/console/src/com/netscape/admin/certsrv/security/CertRequestSelectTokenPane.java b/base/console/src/com/netscape/admin/certsrv/security/CertRequestSelectTokenPane.java new file mode 100644 index 000000000..cab38e8d3 --- /dev/null +++ b/base/console/src/com/netscape/admin/certsrv/security/CertRequestSelectTokenPane.java @@ -0,0 +1,302 @@ +// --- 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.security; + +import java.awt.*; +import java.awt.event.*; +import java.util.*; +import javax.swing.*; +import javax.swing.border.*; +import com.netscape.management.client.util.*; +import com.netscape.management.nmclf.*; + +/** + * + * Prompt user to see which token they want to use, and weather or not + * certificate has been installed or not. + * + * @version 1.0 98/07/10 + * @author <A HREF="mailto:shihcm@netscape.com">shihcm@netscape.com</A> + * + */ +class CertRequestSelectTokenPane extends JPanel implements SuiConstants, +IKeyCertPage { + + JComboBox tokenSelection = new JComboBox(); + JRadioButton _no; + JRadioButton _yes; + JRadioButton _noneed; + + String _defaultToken; + String _internal; + + /** + * Determain whether a cgi need to be call again + */ + boolean modified = true; + + + /** + * Get the panel that is going to be displayed + * @return a panel to be displayed by the key & cert wizard + */ + public JPanel getPanel() { + return this; + } + + /** + * Checks if this panel can be shown + * @return true if this page can be shown + */ + public boolean pageShow(WizardObservable observable) { + //might have to call cgi that loadmodule... + observable.put("sie", + KeyCertUtility.createTokenName( + observable.getConsoleInfo())); + + if (tokenSelection.getItemCount() == 0) { + observable.put("createTrust" , new Boolean(true)); + + KeyCertTaskInfo taskInfo = observable.getTaskInfo(); + taskInfo.put("sie", observable.get("sie")); + + try { + taskInfo.exec(taskInfo.SEC_LSTOKEN); + } catch (Exception e) { + SuiOptionPane.showMessageDialog( + UtilConsoleGlobals.getActivatedFrame(), + e.getMessage()); + return true; + } + + Vector cipherList = taskInfo.getResponse().getFamilyList(); + for (int i = 0; i < cipherList.size(); i++) { + CipherEntry cipher = (CipherEntry)(cipherList.elementAt(i)); + JComboBox tokenNames = cipher.getTokenComboBox(); + for (int j = 0; j < cipher.getTokenCount(); j++) { + tokenSelection.addItem(tokenNames.getItemAt(j)); + } + if (tokenSelection.getItemCount() > 0) { + observable.put("createTrust" , new Boolean(false)); + } + } + + + boolean noDefaultToken = true; + for (int i = tokenSelection.getItemCount() - 1; i >= 0; i--) { + if (tokenSelection.getItemAt(i).equals(_defaultToken)) { + noDefaultToken = false; + } + } + if (noDefaultToken) { + tokenSelection.addItem(_defaultToken); + observable.put("createTrust" , new Boolean(true)); + } + + try { + tokenSelection.setSelectedIndex(0); + } catch (Exception e) {} + } + + return true; + } + + + /** + * Checks if this panel can be hidden + * @return true if this page can be hide + */ + public boolean pageHide(WizardObservable observable) { + /*observable.put("isInternal" , ((TOGGLEPANEeditor)(questionPane.getCtrlByName("isInternal"))).getValue());*/ + + try { + observable.put("isInternal" , new Boolean(true)); + if (!(((String)(tokenSelection.getSelectedItem())). + toLowerCase()).startsWith(_internal.toLowerCase())) { + observable.put("isInternal" , new Boolean(false)); + } + } catch (Exception e) {} + if (modified) { + observable.put("CertReqModified", new Boolean(true)); + observable.put("tokenName" , tokenSelection.getSelectedItem()); + observable.put("requestCert" , new Boolean(_no.isSelected())); + observable.put("installCert" , + new Boolean(!(_noneed.isSelected()))); + observable.put("noneed" , new Boolean(_noneed.isSelected())); + modified = false; + } + + return true; + } + + /** + * Listen to changes to determain if cgi need to be called again + * + */ + class ModifiedActionListener implements ActionListener { + public void actionPerformed(ActionEvent e) { + modified = true; + } + } + + + + /** + * + * Convinent method for create a numbered component: + * [panel] + * 1. bla bla bla + * 2. bla bla bla + * [panel] + * + */ + private void addNumberedComponent(JPanel p, int count, Component c, + Vector components) { + //JPanel entry = new JPanel(); + //entry.setLayout(new GridBagLayout()); + GridBagUtil.constrain(p, + Box.createRigidArea( + new Dimension(SEPARATED_COMPONENT_SPACE, 0)), 0, + count - 1, 1, 1, 0.0, 0.0, GridBagConstraints.NORTH, + GridBagConstraints.BOTH, 0, 0, 0, 0); + GridBagUtil.constrain(p, + new JLabel(Integer.toString(count) + ". "), 1, + count - 1, 1, 1, 0.0, 0.0, GridBagConstraints.NORTH, + GridBagConstraints.NONE, 0, 0, 0, 0); + GridBagUtil.constrain(p, c, 2, count - 1, 1, 1, 0.0, 0.0, + GridBagConstraints.NORTH, + GridBagConstraints.HORIZONTAL, 0, 0, + DIFFERENT_COMPONENT_SPACE, 0); + + + for (int i = 0; i < components.size(); i++) { + GridBagUtil.constrain(p, + (Component)(components.elementAt(i)), 2, + count + i, 1, 1, 1.0, 0.0, + GridBagConstraints.WEST, GridBagConstraints.NONE, + 0, 0, 0, 0); + } + + //p.add(entry); + } + + /** + * + * Create a token selection panel for Key & Cert wizard. + * + */ + public CertRequestSelectTokenPane() { + super(); + setLayout(new GridBagLayout()); + + ResourceSet resource = KeyCertUtility.getKeyCertWizardResourceSet(); + + _internal = resource.getString("SelectToken", "internal"); + _defaultToken = resource.getString("SelectToken", "defaultToken"); + + _no = new JRadioButton(resource.getString("SelectToken", "no"), + true); + _yes = new JRadioButton(resource.getString("SelectToken", "yes"), + false); + _noneed = + new JRadioButton(resource.getString("SelectToken", "noNeed"), + false); + + JLabel useExt_noneed = + new JLabel(resource.getString("SelectToken", "noNeed_ext")); + Insets b = _noneed.getMargin(); + useExt_noneed.setBorder( new EmptyBorder( new Insets(0, + 12 + b.right + _noneed.getHorizontalTextPosition(), + b.bottom, b.right))); + + + + ModifiedActionListener listener = new ModifiedActionListener(); + _no.addActionListener(listener); + _yes.addActionListener(listener); + _noneed.addActionListener(listener); + tokenSelection.addActionListener(listener); + + + ButtonGroup buttonGroup = new ButtonGroup(); + buttonGroup.add(_no); + buttonGroup.add(_yes); + buttonGroup.add(_noneed); + + + int y = 0; + + setBorder( new TitledBorder( new CompoundBorder(new EtchedBorder(), + new EmptyBorder(COMPONENT_SPACE, COMPONENT_SPACE, + COMPONENT_SPACE, COMPONENT_SPACE)), + resource.getString("SelectToken", "title"))); + + + JPanel tokenSelectPane = new JPanel(); + //tokenSelectPane.setLayout(new BoxLayout(tokenSelectPane, BoxLayout.Y_AXIS)); + tokenSelectPane.setLayout(new GridBagLayout()); + + JLabel _pickToken = + new JLabel(resource.getString("SelectToken", "pickToken")); + Vector components = new Vector(); + components.addElement(tokenSelection); + addNumberedComponent(tokenSelectPane, ++y, _pickToken, components); + GridBagUtil.constrain(this, tokenSelectPane, 0, y, 1, 1, 0.0, + 0.0, GridBagConstraints.NORTH, + GridBagConstraints.BOTH, 0, 0, + DIFFERENT_COMPONENT_SPACE, 0); + + + JPanel certInstPane = new JPanel(); + //certInstPane.setLayout(new BoxLayout(certInstPane, BoxLayout.Y_AXIS)); + certInstPane.setLayout(new GridBagLayout()); + + components = new Vector(); + components.addElement(_no); + components.addElement(_yes); + //need a radio button that can wrap the string. + components.addElement(_noneed); + components.addElement(useExt_noneed); + addNumberedComponent(certInstPane, ++y, + new MultilineLabel( + resource.getString("SelectToken", "certReadyForInst")), + components); + GridBagUtil.constrain(this, certInstPane, 0, y, 1, 1, 0.0, 0.0, + GridBagConstraints.NORTH, GridBagConstraints.BOTH, 0, + 0, DIFFERENT_COMPONENT_SPACE, 0); + + GridBagUtil.constrain(this, Box.createVerticalGlue(), 0, ++y, + 1, 1, 1.0, 1.0, GridBagConstraints.NORTH, + GridBagConstraints.BOTH, 0, 0, 0, 0); + + GridBagUtil.constrain(this, + new JLabel( + resource.getString(null, "clickNextToContinue")), 0, + ++y, 1, 1, 1.0, 0.0, GridBagConstraints.NORTH, + GridBagConstraints.BOTH, 0, 0, 0, 0); + } + + /*public static void main(String arg[]) { + JFrame f = new JFrame(); + CertRequestSelectTokenPane c = new CertRequestSelectTokenPane(); + f.getContentPane().add("North",c ); + f.setSize(400,400); + f.show(); + }*/ + +} |