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

📄 multichoicesavingutility.java

📁 一个完整的XACML工程,学习XACML技术的好例子!
💻 JAVA
字号:
/*
* 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.
*/

/*
* Copyright (c) 2000-2005, University of Salford
* 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. 
*
* Neither the name of the University of Salford nor the names of its 
* contributors may be used to endorse or promote products derived from this 
* software without specific prior written permission. 
*
* 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. 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.
*/

package issrg.acm.extensions;

import issrg.acm.*;
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import java.util.Vector;

/**
* This utility is used as the default utility. It has a list of saving utilities
* that the user can choose from. Then the drop-down list box can be used to pick
* the "location" - e.g. Disk or LDAP. Other implementations will be added to the
* list.
*/

public class MultiChoiceSavingUtility extends DefaultSavingUtility implements ItemListener {
  protected Vector utilList = new Vector();
  protected JComboBox jUtilList = new JComboBox();
  protected Vector contentList = new Vector();
  protected JPanel contentPanel = new JPanel(new BorderLayout());//new FlowLayout(FlowLayout.LEADING));
  protected Component current = null;
 

  public MultiChoiceSavingUtility(){
    addUtility("Disk", new DiskSavingUtility()); 
    addUtility("LDAP Directory", new LDAPSavingUtility());
  }

  public MultiChoiceSavingUtility(issrg.acm.Registry registry){
    this();
    registerMe(registry);
  }

  public void addUtility(String label, DefaultSavingUtility ds){
    utilList.add(ds);
    jUtilList.addItem(label);
  }

  protected DefaultSavingUtility getSelected(){
    return ((DefaultSavingUtility)utilList.get(jUtilList.getSelectedIndex()));
  }

  public issrg.ac.AttributeCertificate load() throws ACCreationException{
    return getSelected().load();
  }

  public void save(byte [] ac) throws ACCreationException{
    getSelected().save(ac);
  }

  public issrg.ac.AttributeCertificate revoke() throws ACCreationException {
    return getSelected().revoke();
  }

  public void delete() throws ACCreationException {
    getSelected().delete();
  }

  public Component getContentPane(java.util.Map env, int dialogMode){
    jUtilList.removeItemListener(this);

    contentList = new Vector();
    Dimension sz = new Dimension(0, 0);

    if (current!=null) current.setVisible(false);
    current=null;

    for (int i=utilList.size(); i-->0; ){
      DefaultSavingUtility ds = (DefaultSavingUtility)utilList.get(i);
      ds.dialogMode = dialogMode;

      Component c = ds.getContentPane(env, dialogMode);
      c.setVisible(true);

      JPanel pan = new JPanel();
      pan.add(c);

      Dimension csz = pan.getPreferredSize();

      if (csz.width>sz.width) sz.width=csz.width;
      if (csz.height>sz.height) sz.height=csz.height;

      c.setVisible(false);
      //contentPanel.add(c);
      contentList.insertElementAt(c, 0);
    }

    contentPanel.setPreferredSize(sz);
    resetSelectedItem();

    JPanel p1 = new JPanel(new FlowLayout(FlowLayout.LEADING));
    p1.add(new JLabel("Select media: "));
    p1.add(jUtilList);

    JPanel p2 = new JPanel(new BorderLayout());
    p2.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
    p2.add(contentPanel, BorderLayout.CENTER);

    JPanel p3 = new JPanel(new BorderLayout());
    p3.add(p1, BorderLayout.NORTH);
    p3.add(p2, BorderLayout.CENTER);
    final Dimension size = p3.getPreferredSize();

    JPanel p = new JPanel(new BorderLayout()){
      public Dimension getPreferredSize(){
        return size;
      }

      public Dimension getSize(){
        return size;
      }
    };

    p.add(p1, BorderLayout.NORTH);
    p.add(p2, BorderLayout.CENTER);

    jUtilList.addItemListener(this);
    return p;
  }

  public void itemStateChanged(ItemEvent e){
    if (e.getStateChange()==ItemEvent.SELECTED){
      resetSelectedItem();
    }
  }

  private void resetSelectedItem(){
    int idx;
    if ((idx=jUtilList.getSelectedIndex())<0) idx=0;

    Component c = (Component)contentList.get(idx);
    if (current!=null) current.setVisible(false);
    current=c;
    current.setVisible(true);
    contentPanel.removeAll();
    contentPanel.add(current, BorderLayout.CENTER);        
  }    
}

⌨️ 快捷键说明

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