📄 multichoicesavingutility.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 + -