// --- 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 java.awt.event.*; import java.awt.*; import java.util.*; import com.netscape.management.client.util.*; import com.netscape.certsrv.common.*; /** * Policy Rule Order Dialog -

* * The administrator can use this dialog to reconfig the ordering * of the existing policy rules. * * @author Jack Pan-Chen * @version $Revision$, $Date$ * @see com.netscape.admin.certsrv.config */ public class PolicyRuleOrderDialog extends JDialog implements ActionListener, MouseListener { /*========================================================== * variables *==========================================================*/ private String PREFIX = "POLICYORDERDIALOG"; private JFrame mParentFrame; private AdminConnection mConnection; private ResourceBundle mResource; protected DefaultListModel mDataModel; protected String mDestination; //dest flag private JScrollPane mScrollPane; private JList mList; private JButton mOK, mCancel, mUp, mDown, mHelp; private final static String RAHELPINDEX = "configuration-ra-reorder-policyrule-dbox-help"; private final static String KRAHELPINDEX = "configuration-kra-reorder-policyrule-dbox-help"; private final static String CAHELPINDEX = "configuration-ca-reorder-policyrule-dbox-help"; private String mHelpToken; /*========================================================== * constructors *==========================================================*/ public PolicyRuleOrderDialog(JFrame parent, AdminConnection conn, String dest) { super(parent,true); mParentFrame = parent; mConnection = conn; mDestination = dest; if (mDestination.equals(DestDef.DEST_RA_POLICY_ADMIN)) mHelpToken = RAHELPINDEX; else if (mDestination.equals(DestDef.DEST_KRA_POLICY_ADMIN)) mHelpToken = KRAHELPINDEX; else mHelpToken = CAHELPINDEX; mResource = ResourceBundle.getBundle(CMSAdminResources.class.getName()); mDataModel = new DefaultListModel(); setSize(360, 216); setTitle(mResource.getString(PREFIX+"_TITLE")); setLocationRelativeTo(parent); getRootPane().setDoubleBuffered(true); setDisplay(); } /*========================================================== * public methods *==========================================================*/ /** * show the windows * @param users list of current groups */ public void showDialog(Vector rules) { mDataModel.clear(); for (int i=0; i0) mList.setSelectedIndex(0); refresh(); setArrowButtons(); this.show(); } /*========================================================== * EVNET HANDLER METHODS *==========================================================*/ //=== ACTIONLISTENER ===================== public void actionPerformed(ActionEvent evt) { if (evt.getSource().equals(mOK)) { try { saveOrder(); } catch (EAdminException e) { //display error dialog CMSAdminUtil.showErrorDialog(mParentFrame, mResource, e.getMessage(), CMSAdminUtil.ERROR_MESSAGE); return; } this.dispose(); } if (evt.getSource().equals(mCancel)) { this.dispose(); } if (evt.getSource().equals(mUp)) { int index = mList.getSelectedIndex(); Object obj = mDataModel.elementAt(index); mDataModel.removeElementAt(index); mDataModel.insertElementAt(obj,index-1); mList.setSelectedIndex(index-1); setArrowButtons(); refresh(); } if (evt.getSource().equals(mDown)) { int index = mList.getSelectedIndex(); Object obj = mDataModel.elementAt(index); mDataModel.removeElementAt(index); mDataModel.insertElementAt(obj,index+1); mList.setSelectedIndex(index+1); setArrowButtons(); refresh(); } 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(); } /*========================================================== * 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; gbc.fill = gbc.BOTH; 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); } /** * create the bottom action button panel */ protected JPanel createUDButtonPanel() { //up, down buttons required //actionlister to this object mUp = CMSAdminUtil.makeJButton(mResource, PREFIX, "UP", null, this); mDown = CMSAdminUtil.makeJButton(mResource, PREFIX, "DOWN", null, this); JButton[] buttons = { mUp, mDown}; JButtonFactory.resize( buttons ); return CMSAdminUtil.makeJButtonVPanel( buttons ); } //create botton action panel 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}; JButtonFactory.resize( buttons ); return CMSAdminUtil.makeJButtonPanel( buttons, true); } private JPanel makeContentPane() { JPanel mListPanel = new JPanel(); GridBagLayout gb = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); mListPanel.setLayout(gb); //content.setBorder(CMSAdminUtil.makeEtchedBorder()); //left side certificate table mList = CMSAdminUtil.makeJList(mDataModel,10); 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.gridwidth = 1; gbc.weightx = 1.0; gbc.weighty = 1.0; gbc.fill = gbc.BOTH; gbc.insets = new Insets(CMSAdminUtil.COMPONENT_SPACE,CMSAdminUtil.COMPONENT_SPACE,0,0); gb.setConstraints(mScrollPane, gbc); mListPanel.add(mScrollPane); JPanel buttonPanel = createUDButtonPanel(); 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 = new Insets(CMSAdminUtil.COMPONENT_SPACE,0,0,0); gb.setConstraints(buttonPanel, gbc); mListPanel.add(buttonPanel); return mListPanel; } //================================================= // RETRIEVE INFO FROM SERVER SIDE //================================================= //save order information to the server private void saveOrder() throws EAdminException { StringBuffer buf = new StringBuffer(); int x = 0; for(int i=0; i 0) buf.append(","); x++; buf.append(((JLabel)mDataModel.getElementAt(i)).getText()); } NameValuePairs nvp = new NameValuePairs(); nvp.put(Constants.PR_POLICY_ORDER, buf.toString()); Debug.println("ORDER: "+buf.toString()); mConnection.modify(mDestination, ScopeDef.SC_POLICY_RULES, Constants.RS_ID_ORDER, nvp); } //set arrow buttons private void setArrowButtons() { //enable and diable buttons accordingly Debug.println("setArrowButtons() - "+mList.getSelectedIndex()); if (mList.getSelectedIndex()< 0) { mUp.setEnabled(false); mDown.setEnabled(false); mOK.setEnabled(false); return; } if (mList.getSelectedIndex()==0) mUp.setEnabled(false); else mUp.setEnabled(true); if (mList.getSelectedIndex()< mDataModel.getSize()-1) mDown.setEnabled(true); else mDown.setEnabled(false); mOK.setEnabled(true); } //refresh the table content private void refresh() { //mTable.invalidate(); //mTable.validate(); //mTable.repaint(1); mScrollPane.invalidate(); mScrollPane.validate(); //mScrollPane.repaint(1); repaint(); } }