📄 permispolicyeditormenu.java
字号:
/*
* 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.editor.gui;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.XMLSerializer;
import org.apache.xml.serialize.LineSeparator;
import javax.swing.JOptionPane;
import java.awt.event.WindowEvent;
import javax.swing.JOptionPane;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.ResourceBundle;
import javax.swing.JInternalFrame;
import javax.swing.JLayeredPane;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JSeparator;
import issrg.editor.PermisDialogBox;
import issrg.editor.PermisFileOperations;
import issrg.editor.PermisXmlDom;
import issrg.editor.PermisXmlWrite;
import issrg.editor.PermisXTree;
import issrg.editor.PermisXMLVerifier;
import issrg.utils.HelpWindow;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Element;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
/**
* Classname: PermisPolicyEditorMenu
*
* Description: A class that generates the the policy editor menu items and
* provides methods to implement their functionality.
* Version 1.0.
*
* Copyright (c) the authors April 2004
*
* @author Professor D.W.Chadwick
* P. Langley
* U. Mbanaso
*/
public class PermisPolicyEditorMenu implements ActionListener
{
private static final String NEW_ACTION = "new";
private static final String OPEN_ACTION = "open";
private static final String SAVE_ACTION = "save";
private static final String SAVE_AS_ACTION = "save as";
private static final String CLOSE_ACTION = "close";
private static final String EXIT_ACTION = "exit";
private static final String EDIT_ACTION = "edit";
private static final String CUT_ACTION = "cut";
private static final String COPY_ACTION = "copy";
private static final String PASTE_ACTION = "paste";
private static final String DELETE_ACTION = "delete";
private static final String VIEW_ACTION = "VIEW";
private static final String PREVIEW_ACTION = "preview";
private static final String TREE_VIEW_ACTION = "treeview";
private static final String VERIFY_ACTION = "verify";
private static final String CONFIG_ACTION = "config";
private static final String SIGN_ACTION = "sign";
private static final String HELP_ACTION = "help";
private static final String DYNAMIC_ACTION = "dynamic";
private static final String CONTENT_ACTION = "content";
private static final String ABOUT_ACTION = "about";
public static boolean alreadySaved;
private Document doc;
private DocumentBuilder builder;
private JInternalFrame ContextHelpFrame;
private JInternalFrame LDAPSetupFrame;
private JInternalFrame xmlPolicyViewFrame;
private JInternalFrame readablePolicyFrame;
protected static PermisXmlDom permisXmlDom;
protected static String openedDocument;
protected static String savedDocument;
private JMenu editMenu;
private JMenu fileMenu;
private JMenu helpMenu;
private JMenu viewMenu;
private JMenuBar menuBar;
private JMenuItem aboutMenuItem;
private JMenuItem closeMenuItem;
private JMenuItem contentMenuItem;
private JMenuItem copyElementMenuItem;
private JMenuItem copyMenuItem;
private JMenuItem configMenuItem;
private JMenuItem cutMenuItem;
private JMenuItem dynamicHelpMenuItem;
private JMenuItem deleteMenuItem;
private JMenuItem exitMenuItem;
private JMenuItem newMenuItem;
private JMenuItem openMenuItem;
private JMenuItem pasteMenuItem;
private JMenuItem previewPolicyMenuItem;
private JMenuItem saveAsMenuItem;
private JMenuItem saveMenuItem;
private JMenuItem treeViewMenuItem;
private JMenuItem sign_publishMenuItem;
private JMenu toolsMenu;
private JMenuItem verifyMenuItem;
private JSeparator fileSeparator1;
private JSeparator fileSeparator2;
private JSeparator jSeparator3;
private JSeparator jSeparator4;
private JSeparator jSeparator5;
protected static PermisDialogBox dialog;
private PermisPolicyEditorMain parent;
private PermisFileOperations fileOps;
private PermisReadablePolicy readablePolicy;
private PermisLdapSetup ldapSetup;// = new PermisLdapSetup(parent);
// private PermisSubjectPolicy subject;
private PermisXmlPolicyView xmlPolicyView;
private PermisXTree xmlView;
private PermisXmlWrite serializer;
private PermisDynamicContextHelp dynamicHelp;
private String helpButtonTitle = "Contents";
public String ldapParam;
boolean ldapStatus = false;
HelpWindow ma;
HelpWindow help;
/**
* Constructor
*
* @param parentIn Name of the instance of the PermisPolicyEditorMain
* that called the constructor.
*/
public PermisPolicyEditorMenu(PermisPolicyEditorMain parentIn)
{
this.readablePolicy = new PermisReadablePolicy();
this.fileOps = new PermisFileOperations();
this.serializer = new PermisXmlWrite();
this.dialog = new PermisDialogBox();
this.permisXmlDom = new PermisXmlDom();
this.parent = parentIn;
this.ldapSetup = new PermisLdapSetup(parent);
//read default ldap config file
//this.ldapSetup.readDefaultConfig();
//this.subject = new PermisSubjectPolicy();
this.ldapParam = null;
ma = new HelpWindow(null, "Minimal Manual", PermisPolicyEditorMenu.class, "issrg/editor/gui/minimalManual.help");
help = new HelpWindow(null, "Help", PermisPolicyEditorMenu.class, "issrg/editor/gui/full.help");
}
public PermisPolicyEditorMenu(){
}
/**
* Get object of ReadablePolicy.
*
* @return readablePolicy object
*/
public PermisReadablePolicy getReadablePolicy()
{
return this.readablePolicy;
}
public PermisLdapSetup getLdapSetup()
{
return this.ldapSetup ;
}
public void setButtonTitle(String title)
{
helpButtonTitle = title;
}
/**
* Creates the populauted menu bar.
*
* @return The Jmenu the method has created.
*/
public JMenuBar createMenu()
{
menuBar = new JMenuBar();
editMenu = new JMenu();
fileMenu = new JMenu();
helpMenu = new JMenu();
toolsMenu = new JMenu();
viewMenu = new JMenu();
aboutMenuItem = new JMenuItem();
closeMenuItem = new JMenuItem();
contentMenuItem = new JMenuItem();
copyElementMenuItem = new JMenuItem();
copyMenuItem = new JMenuItem();
configMenuItem = new JMenuItem();
dynamicHelpMenuItem = new JMenuItem();
pasteMenuItem = new JMenuItem();
cutMenuItem = new JMenuItem();
deleteMenuItem = new JMenuItem();
exitMenuItem = new JMenuItem();
newMenuItem = new JMenuItem();
openMenuItem = new JMenuItem();
previewPolicyMenuItem = new JMenuItem();
sign_publishMenuItem = new JMenuItem();
saveAsMenuItem = new JMenuItem();
saveMenuItem = new JMenuItem();
treeViewMenuItem = new JMenuItem();
verifyMenuItem = new JMenuItem();
fileSeparator1 = new JSeparator();
fileSeparator2 = new JSeparator();
jSeparator3 = new JSeparator();
jSeparator4 = new JSeparator();
jSeparator5 = new JSeparator();
disableMenuItems();
fileMenu.setMnemonic('F');
fileMenu.setText(ResourceBundle.getBundle("issrg/editor/gui/Editor_GUI_i18n").
getString("file_menu"));
fileMenu.setToolTipText("");
newMenuItem.setMnemonic('N');
newMenuItem.setText(ResourceBundle.getBundle("issrg/editor/gui/Editor_GUI_i18n").
getString("file_new"));
newMenuItem.setToolTipText(ResourceBundle.getBundle("issrg/editor/gui/Editor_GUI_i18n").
getString("create_new_tt"));
newMenuItem.setActionCommand(NEW_ACTION);
newMenuItem.addActionListener(this);
fileMenu.add(newMenuItem);
openMenuItem.setMnemonic('O');
openMenuItem.setText(ResourceBundle.getBundle("issrg/editor/gui/Editor_GUI_i18n").
getString("file_open"));
openMenuItem.setToolTipText(ResourceBundle.getBundle("issrg/editor/gui/Editor_GUI_i18n").
getString("file_open_tt"));
openMenuItem.setActionCommand(OPEN_ACTION);
openMenuItem.addActionListener(this);
fileMenu.add(openMenuItem);
fileMenu.add(fileSeparator1);
saveMenuItem.setMnemonic('S');
saveMenuItem.setText(ResourceBundle.getBundle("issrg/editor/gui/Editor_GUI_i18n").
getString("file_save"));
saveMenuItem.setToolTipText(ResourceBundle.getBundle("issrg/editor/gui/Editor_GUI_i18n").
getString("file_save_tt"));
saveMenuItem.setEnabled(false);
saveMenuItem.setActionCommand(SAVE_ACTION);
saveMenuItem.addActionListener(this);
fileMenu.add(saveMenuItem);
saveAsMenuItem.setMnemonic('V');
saveAsMenuItem.setText(ResourceBundle.getBundle("issrg/editor/gui/Editor_GUI_i18n").
getString("file_save_as"));
saveAsMenuItem.setToolTipText(ResourceBundle.getBundle("issrg/editor/gui/Editor_GUI_i18n").
getString("file_save_as_tt"));
saveAsMenuItem.setEnabled(false);
saveAsMenuItem.setActionCommand(SAVE_AS_ACTION);
saveAsMenuItem.addActionListener(this);
fileMenu.add(saveAsMenuItem);
fileMenu.add(fileSeparator2);
closeMenuItem.setMnemonic('C');
closeMenuItem.setText(ResourceBundle.getBundle("issrg/editor/gui/Editor_GUI_i18n").
getString("file_close"));
closeMenuItem.setToolTipText(ResourceBundle.getBundle("issrg/editor/gui/Editor_GUI_i18n").
getString("file_close_tt"));
closeMenuItem.setActionCommand(CLOSE_ACTION);
closeMenuItem.addActionListener(this);
fileMenu.add(closeMenuItem);
exitMenuItem.setMnemonic('X');
exitMenuItem.setText(ResourceBundle.getBundle("issrg/editor/gui/Editor_GUI_i18n").
getString("file_exit"));
exitMenuItem.setToolTipText(ResourceBundle.getBundle("issrg/editor/gui/Editor_GUI_i18n").
getString("file_exit_tt"));
exitMenuItem.setActionCommand(EXIT_ACTION);
exitMenuItem.addActionListener(this);
fileMenu.add(exitMenuItem);
menuBar.add(fileMenu);
editMenu.setMnemonic('E');
editMenu.setText("Edit");
editMenu.setActionCommand(EDIT_ACTION);
editMenu.addActionListener(this);
cutMenuItem.setMnemonic('X');
cutMenuItem.setText("Cut");
cutMenuItem.setActionCommand(CUT_ACTION);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -