⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pwizardpanel4b.java

📁 一个完整的XACML工程,学习XACML技术的好例子!
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
* Copyright (c) 2006, University of Kent
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without 
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this 
* list of conditions and the following disclaimer.
* 
* Redistributions in binary form must reproduce the above copyright notice, 
* this list of conditions and the following disclaimer in the documentation 
* and/or other materials provided with the distribution. 
*
* 1. Neither the name of the University of Kent nor the names of its 
* contributors may be used to endorse or promote products derived from this 
* software without specific prior written permission. 
*
* 2. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS  
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
* PURPOSE ARE DISCLAIMED. 
*
* 3. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
* POSSIBILITY OF SUCH DAMAGE.
*
* 4. YOU AGREE THAT THE EXCLUSIONS IN PARAGRAPHS 2 AND 3 ABOVE ARE REASONABLE
* IN THE CIRCUMSTANCES.  IN PARTICULAR, YOU ACKNOWLEDGE (1) THAT THIS
* SOFTWARE HAS BEEN MADE AVAILABLE TO YOU FREE OF CHARGE, (2) THAT THIS
* SOFTWARE IS NOT "PRODUCT" QUALITY, BUT HAS BEEN PRODUCED BY A RESEARCH
* GROUP WHO DESIRE TO MAKE THIS SOFTWARE FREELY AVAILABLE TO PEOPLE WHO WISH
* TO USE IT, AND (3) THAT BECAUSE THIS SOFTWARE IS NOT OF "PRODUCT" QUALITY
* IT IS INEVITABLE THAT THERE WILL BE BUGS AND ERRORS, AND POSSIBLY MORE
* SERIOUS FAULTS, IN THIS SOFTWARE.
*
* 5. This license is governed, except to the extent that local laws
* necessarily apply, by the laws of England and Wales.
*/

/*
 * PWizardPanel4b.java - 7/08/2006
 */

package issrg.policywizard.slides;

import issrg.editor2.WindowUtilities;
import issrg.pba.rbac.BadURLException;
import issrg.pba.rbac.LDAPDNPrincipal;
import issrg.pba.rbac.URLPrincipal;
import issrg.policywizard.PWizard;
import issrg.utils.DITSelectionListener;
import issrg.utils.LDAP_DIT;
import issrg.utils.MultiLDAPBrowser;
import issrg.utils.RFC2253ParsingException;
import issrg.utils.xml.NodeItemList;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ResourceBundle;
import javax.naming.NamingException;
import javax.swing.ButtonGroup;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

/**
 * This slide will display the Subject Domain setup.
 *
 * @author Christian Azzopardi
 */
public class PWizardPanel4b extends NodeItemList implements ItemListener, DITSelectionListener,
                                                            KeyListener, ActionListener
{
    public JLabel nameLabel;
    public JRadioButton urlRbutton;
    public JRadioButton ldapRButton;
    public JRadioButton shibRButton;
    ButtonGroup radioGroup;
    
    public JTextField nameTextField;
    public JTextField urlTextField;
    public JTextField ldapTextField;
    public JTextField shibTextField;
    
    public MultiLDAPBrowser LDAP_Component;
    
    ResourceBundle rbl = ResourceBundle.getBundle("issrg/policywizard/PWApplication_i18n");
    String enterAdminCaption = rbl.getString("Slide4b_Prompt_Name"); //contains Account Administrator
    String enterURLCaption = rbl.getString("Slide4b_Prompt_URL"); //contains Enter URL
    String enterLDAPDN = rbl.getString("Slide4b_Prompt_LDAPDN"); //contains Enter LDAP DN
    String enterShibb = rbl.getString("Slide4b_Prompt_Shibboleth"); //contains Enter Shibboleth IdP DNS
    String borderLeft = rbl.getString("Slide4b_Border_Left"); //contains Create/Modify the Account
    String borderRight = rbl.getString("Slide4b_Border_Right"); //contains Available Account Administrators
    String addCaption = rbl.getString("Add>"); //contains Add
    String deleteCaption = rbl.getString("Delete<"); //contains Delete
    String replaceCaption = rbl.getString("Replace>"); //contains Replace
    String errorHeader = rbl.getString("ErrorHeader"); //contains Error!
    String errorMSG1 = rbl.getString("Slide4b_Error_Message1"); //contains User Account Administrator added already!
    String errorMSG2 = rbl.getString("Slide4b_Error_Message2"); //contains Not a valid URL Supplied!
    String errorMSG3 = rbl.getString("Slide4b_Error_Message3"); //contains Not a valid LDAP DN Supplied!
    String errorMSG4 = rbl.getString("Slide4b_Error_Message4"); //contains Parameter to Replace is Empty!
    String errorMSGInvalidURL = rbl.getString("Slide4b_Error_Message2"); //contains Not a valid URL Supplied!
    
    char firstURL = rbl.getString("Slide4b_FirstChar_URL").charAt(0);
    char firstLDAP = rbl.getString("Slide4b_FirstChar_LDAPDN").charAt(0);
    char firstShib = rbl.getString("Slide4b_FirstChar_Shibboleth").charAt(0);
    
    /** 
     * Creates a new instance of PWizardPanel5b. 
     * <p> 
     * Makes use of the RoleHierarchyPolicy component in the Policy Editor. Displays 
     * and uses its components.
     *
     * @param xmlED  the XMLEditor that the component will add/display/modify 
     *               its data.
     *
     * @see issrg.editor2.RoleHierarchyPolicy
     */
    public PWizardPanel4b() 
    {
        super(PWizard.finishWizard.policyDocument);
        //WindowUtilities.setJavaLookAndFeel();
        //WindowUtilities.setMotifLookAndFeel();
        this.setLayout(new BorderLayout());
        this.add(getContentPanel(), BorderLayout.CENTER);        
        
        setCaption("ADD_BUTTON", addCaption);
        setCaption("REPLACE_BUTTON", replaceCaption);
        setCaption("DELETE_BUTTON", deleteCaption);
        initSettings();
    }
    
    public JPanel getContentPanel()
    {        
        nameLabel = new JLabel(enterAdminCaption);
        
        urlRbutton = new JRadioButton(enterURLCaption);
        urlRbutton.setMnemonic(firstURL);
        urlRbutton.addItemListener(this);
        
        ldapRButton = new JRadioButton(enterLDAPDN);
        ldapRButton.setMnemonic(firstLDAP);
        ldapRButton.addItemListener(this);
        
        shibRButton = new JRadioButton(enterShibb);
        shibRButton.setMnemonic(firstLDAP);
        shibRButton.addItemListener(this);
        
        //set up TextFields -------------
        nameTextField = new JTextField();
        urlTextField = new JTextField();
        ldapTextField = new JTextField();
        shibTextField = new JTextField();
        
        //set up TextFields Key Listeners
        nameTextField.addKeyListener(this);
        urlTextField.addKeyListener(this);
        ldapTextField.addKeyListener(this);
        shibTextField.addKeyListener(this);
        
        LDAP_Component = new MultiLDAPBrowser(PWizard.configDocument, "LDAPDirectory");
        LDAP_Component.setSelectionListener(this);
        
        radioGroup = new ButtonGroup();
        radioGroup.add(urlRbutton);
        radioGroup.add(ldapRButton);        
        radioGroup.add(shibRButton);
        
        JPanel slide4b = new JPanel(new GridBagLayout());
        
        JPanel leftPanel = new JPanel(new GridBagLayout());
        GridBagConstraints leftconstraints = new GridBagConstraints();
        leftconstraints.gridx=0; leftconstraints.gridy=0;
        leftconstraints.gridwidth=1; leftconstraints.gridheight=1;
        leftconstraints.weightx=1; leftconstraints.weighty=0;
        leftconstraints.anchor = GridBagConstraints.LINE_START;
        leftconstraints.fill = GridBagConstraints.NONE;
        leftPanel.add(nameLabel, leftconstraints);

        leftconstraints.gridx=1; leftconstraints.gridy=0;
        leftconstraints.gridwidth=1; leftconstraints.gridheight=1;
        leftconstraints.weightx=1; leftconstraints.weighty=0;
        leftconstraints.anchor = GridBagConstraints.CENTER;
        leftconstraints.fill = GridBagConstraints.HORIZONTAL;
        leftconstraints.insets = new Insets(0,0,2,0);
        leftPanel.add(nameTextField, leftconstraints);
        
        leftconstraints.gridx=0; leftconstraints.gridy=1;
        leftconstraints.gridwidth=1; leftconstraints.gridheight=1;
        leftconstraints.weightx=1; leftconstraints.weighty=0;
        leftconstraints.anchor = GridBagConstraints.LINE_START;
        leftconstraints.fill = GridBagConstraints.NONE;
        leftconstraints.insets = new Insets(0,0,0,0);
        leftPanel.add(urlRbutton, leftconstraints);
        
        leftconstraints.gridx=1; leftconstraints.gridy=1;
        leftconstraints.gridwidth=1; leftconstraints.gridheight=1;
        leftconstraints.weightx=1; leftconstraints.weighty=0;
        leftconstraints.anchor = GridBagConstraints.CENTER;
        leftconstraints.fill = GridBagConstraints.HORIZONTAL;
        leftPanel.add(urlTextField, leftconstraints);
        
        leftconstraints.gridx=0; leftconstraints.gridy=2;
        leftconstraints.gridwidth=1; leftconstraints.gridheight=1;
        leftconstraints.weightx=1; leftconstraints.weighty=0;
        leftconstraints.anchor = GridBagConstraints.LINE_START;
        leftconstraints.fill = GridBagConstraints.NONE;
        leftPanel.add(shibRButton, leftconstraints);
        
        leftconstraints.gridx=1; leftconstraints.gridy=2;
        leftconstraints.gridwidth=1; leftconstraints.gridheight=1;
        leftconstraints.weightx=1; leftconstraints.weighty=0;
        leftconstraints.anchor = GridBagConstraints.CENTER;
        leftconstraints.fill = GridBagConstraints.HORIZONTAL;
        leftPanel.add(shibTextField, leftconstraints);
        
        leftconstraints.gridx=0; leftconstraints.gridy=3;
        leftconstraints.gridwidth=1; leftconstraints.gridheight=1;
        leftconstraints.weightx=1; leftconstraints.weighty=0;
        leftconstraints.anchor = GridBagConstraints.LINE_START;
        leftconstraints.fill = GridBagConstraints.NONE;
        leftPanel.add(ldapRButton, leftconstraints);
        
        leftconstraints.gridx=1; leftconstraints.gridy=3;
        leftconstraints.gridwidth=1; leftconstraints.gridheight=1;
        leftconstraints.weightx=1; leftconstraints.weighty=0;
        leftconstraints.anchor = GridBagConstraints.CENTER;
        leftconstraints.fill = GridBagConstraints.HORIZONTAL;
        leftconstraints.insets = new Insets(0,0,0,0);
        leftPanel.add(ldapTextField, leftconstraints);
        
        leftconstraints.gridx=1; leftconstraints.gridy=4;
        leftconstraints.gridwidth=1; leftconstraints.gridheight=1;
        leftconstraints.weightx=1; leftconstraints.weighty=1;
        leftconstraints.anchor = GridBagConstraints.CENTER;
        leftconstraints.fill = GridBagConstraints.BOTH;
        leftPanel.add(LDAP_Component.getContentPanel(), leftconstraints);
        
        leftPanel.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED), borderLeft));
        leftPanel.setPreferredSize(new Dimension(270,100));
        
        JPanel rightPanel = new JPanel(new BorderLayout());
        JPanel oldDisplay = super.getContentPanel();
        oldDisplay.setPreferredSize(new Dimension(150,100));
        rightPanel.add(oldDisplay);
        rightPanel.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED), borderRight));
        
        JPanel centerPanel = new JPanel(new GridLayout(0,1));
        centerPanel.add(this.removeAddButton());
        centerPanel.add(this.removeReplaceButton());
        centerPanel.add(new JLabel());
        centerPanel.add(this.removeDeleteButton());
        
        GridBagConstraints constraints = new GridBagConstraints();
        constraints.gridx=0; constraints.gridy=0;
        constraints.gridwidth=1; constraints.gridheight=1;
        constraints.weightx=1; constraints.weighty=1;
        constraints.anchor = GridBagConstraints.CENTER;
        constraints.fill = GridBagConstraints.BOTH;
        slide4b.add(leftPanel, constraints);
        
        constraints.gridx=1; constraints.gridy=0;
        constraints.gridwidth=1; constraints.gridheight=1;
        constraints.weightx=0; constraints.weighty=0;
        constraints.anchor = GridBagConstraints.CENTER;
        constraints.fill = GridBagConstraints.NONE;
        slide4b.add(centerPanel, constraints); 
        
        constraints.gridx=2; constraints.gridy=0;
        constraints.gridwidth=1; constraints.gridheight=1;
        constraints.weightx=1; constraints.weighty=1;
        constraints.anchor = GridBagConstraints.CENTER;
        constraints.fill = GridBagConstraints.BOTH;
        slide4b.add(rightPanel, constraints);        
        
        return slide4b;
    }
    
    /**
     * Sets the initial settings of the component. Which components are enabled
     * and adds the respective listeners.
     */
    public void initSettings()
    {
        addButton.setEnabled(false);
        urlRbutton.setSelected(true);        
        nameTextField.addActionListener(this);
        urlTextField.addActionListener(this);
        ldapTextField.addActionListener(this);
        shibTextField.addActionListener(this);
        
        PWizard.finishWizard.policyDocument.addXMLChangeListener(this);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -