📄 jdfframe.java
字号:
import java.awt.Color;
import java.awt.Component;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.ClipboardOwner;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DragGestureEvent;
import java.awt.dnd.DragGestureListener;
import java.awt.dnd.DragSource;
import java.awt.dnd.DragSourceDragEvent;
import java.awt.dnd.DragSourceDropEvent;
import java.awt.dnd.DragSourceEvent;
import java.awt.dnd.DragSourceListener;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetDragEvent;
import java.awt.dnd.DropTargetDropEvent;
import java.awt.dnd.DropTargetEvent;
import java.awt.dnd.DropTargetListener;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.Stack;
import java.util.Vector;
import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.ButtonGroup;
import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JRadioButton;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.JTree;
import javax.swing.JViewport;
import javax.swing.KeyStroke;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.ToolTipManager;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.TreeModelEvent;
import javax.swing.event.TreeModelListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.event.UndoableEditEvent;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;
import javax.swing.undo.CannotUndoException;
import javax.swing.undo.UndoManager;
import javax.swing.undo.UndoableEditSupport;
import org.cip4.jdflib.core.AttributeName;
import org.cip4.jdflib.core.ElementName;
import org.cip4.jdflib.core.JDFComment;
import org.cip4.jdflib.core.JDFConstants;
import org.cip4.jdflib.core.JDFDoc;
import org.cip4.jdflib.core.JDFElement;
import org.cip4.jdflib.core.JDFException;
import org.cip4.jdflib.core.JDFParser;
import org.cip4.jdflib.core.JDFRefElement;
import org.cip4.jdflib.core.JDFResourceLink;
import org.cip4.jdflib.core.KElement;
import org.cip4.jdflib.core.VElement;
import org.cip4.jdflib.core.VString;
import org.cip4.jdflib.core.XMLDoc;
import org.cip4.jdflib.core.KElement.EnumValidationLevel;
import org.cip4.jdflib.datatypes.JDFAttributeMap;
import org.cip4.jdflib.jmf.JDFJMF;
import org.cip4.jdflib.node.JDFNode;
import org.cip4.jdflib.node.JDFNode.EnumActivation;
import org.cip4.jdflib.pool.JDFAuditPool;
import org.cip4.jdflib.pool.JDFResourceLinkPool;
import org.cip4.jdflib.pool.JDFResourcePool;
import org.cip4.jdflib.resource.JDFModified;
import org.cip4.jdflib.resource.JDFResource;
import org.cip4.jdflib.resource.JDFResource.EnumPartIDKey;
import org.cip4.jdflib.resource.devicecapability.JDFDevCap;
import org.cip4.jdflib.resource.devicecapability.JDFDevCaps;
import org.cip4.jdflib.resource.devicecapability.JDFStateBase;
import org.cip4.jdflib.util.JDFDate;
import org.cip4.jdflib.util.StringUtil;
import org.cip4.jdflib.util.XMLstrm;
import org.w3c.dom.Attr;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
/**
* @author AnderssA ThunellE SvenoniusI Elena Skobchenko
*/
public class JDFFrame extends JFrame implements ActionListener,
DropTargetListener,
DragSourceListener,
DragGestureListener,
ClipboardOwner
{
/**
* Comment for <code>serialVersionU
* ID</code>
*/
private static final long serialVersionUID = 626128726824503039L;
private JMenu m_recentFilesMenu;
private JMenu m_insertElementMenu;
private JMenu m_resourceMenu;
private JMenu m_resourceLinkMenu;
JMenu m_fileMenu;
JMenu m_insertMenu;
JMenu m_toolsMenu;
JMenu m_editMenu;
JMenu m_validateMenu;
JMenu m_helpMenu;
private JMenuItem m_newItem;
private JMenuItem m_saveItem;
private JMenuItem m_saveAsItem;
private JMenuItem m_openItem;
private JMenuItem m_quitItem;
private JMenuItem m_exportItem;
private JMenuItem m_copyItem;
private JMenuItem m_copyPopupItem;
private JMenuItem m_cutItem;
private JMenuItem m_undoItem;
private JMenuItem m_redoItem;
private JMenuItem m_cutPopupItem;
private JMenuItem m_pasteItem;
private JMenuItem m_pastePopupItem;
private JMenuItem m_deleteItem;
private JMenuItem m_deletePopupItem;
private JMenuItem m_helpItem;
private JMenuItem m_closeItem;
private JMenuItem m_validateItem;
private JMenuItem m_fixVersionItem;
private JMenuItem m_copyValidationListItem;
private JMenuItem m_findItem;
private JMenuItem m_findXPathItem;
private JMenuItem m_aboutItem;
private JMenuItem m_versionItem;
private JMenuItem m_insertAttrItem;
private JMenuItem m_insertAttrPopupItem;
// private JMenuItem m_insertResLinkItem;
private JMenuItem m_insertInResLinkItem;
private JMenuItem m_insertOutResLinkItem;
// private JMenuItem m_insertResLinkPopupItem;
private JMenuItem m_insertInResLinkPopupItem;
private JMenuItem m_insertOutResLinkPopupItem;
private JMenuItem m_insertElemBeforeItem;
private JMenuItem m_insertElemBeforePopupItem;
private JMenuItem m_insertElemAfterItem;
private JMenuItem m_insertElemAfterPopupItem;
private JMenuItem m_insertElemIntoItem;
private JMenuItem m_insertElemIntoPopupItem;
private JMenuItem m_insertInResItem;
private JMenuItem m_insertInResPopupItem;
private JMenuItem m_insertOutResItem;
private JMenuItem m_insertOutResPopupItem;
private JMenuItem m_insertResItem;
private JMenuItem m_insertResPopupItem;
private JMenuItem m_renameItem;
private JMenuItem m_renamePopupItem;
private JMenuItem m_modifyAttrValueItem;
private JMenuItem m_modifyAttrValuePopupItem;
private JMenuItem m_requiredAttrItem;
private JMenuItem m_requiredAttrPopupItem;
private JMenuItem m_requiredElemItem;
private JMenuItem m_requiredElemPopupItem;
private JMenuItem m_xpandPopupItem;
private JMenuItem m_collapsePopupItem;
private JMenuItem m_copyToClipBoardPopupItem;
private JMenuItem m_preferenceItem;
JMenuItem m_sendToDeviceItem;
JMenuItem m_spawnItem;
JMenuItem m_spawnInformItem;
JMenuItem m_mergeItem;
JMenuItem m_devCapItem;
private JRadioButtonMenuItem m_highlightFNRadioItem;
private JRadioButtonMenuItem m_showAttrRadioItem;
private JRadioButtonMenuItem m_showInhAttrRadioItem;
private JButton m_cancelButton;
JButton m_newButton;
JButton m_openButton;
JButton m_saveButton;
JButton m_undoButton;
JButton m_redoButton;
JButton m_cutButton;
JButton m_copyButton;
JButton m_pasteButton;
JButton m_validateButton;
JButton m_upOneLevelButton;
JButton m_printButton;
JButton m_zoomInButton;
JButton m_zoomOutButton;
JButton m_zoomOrigButton;
JButton m_zoomBestButton;
JButton m_findNextButton;
JButton m_refreshButton;
private boolean m_fileExists = true;
private boolean m_isJDF = true;
private boolean m_isPastedBefore = true;
// private boolean m_callNotFromAddReqAttribute = true;
private boolean m_callFromValidateNewNode = false;
private boolean m_callFromInOutputView = false;
private boolean m_isSearching = false;
private boolean m_currentAutoVal;
boolean m_callIsFromList = false;
boolean m_callNotFromProcessView = true;
boolean m_callFromSearch = false;
boolean m_currentReadOnly;
private Vector m_vErrors = new Vector();
private Vector m_vNodes = new Vector();
private Vector m_vXPath = new Vector();
private Vector m_vGlobalSearch = new Vector();
private Vector m_vInvalidResLinks;
private Vector m_vInvalidResLinksString;
private Vector m_vStrangeElements;
private Vector m_vStrangeElementsString;
Vector m_vPaintedRes = new Vector();
Vector m_vIn = new Vector();
JList m_myList = new JList();
JList m_devCapList = new JList();
private JTextArea m_commentArea;
private JTextArea m_processArea;
private JTextArea m_devCapArea;
private JTextArea m_treeArea;
private JMenuItem[] m_subMenuItem = new JMenuItem[5];
private JRadioButton m_forwardRadioButton;
private JRadioButton m_backwardRadioButton;
private JPanel m_inOutArea;
private JPanel m_inOutAreaLeft;
private JPanel m_inOutAreaMiddle;
private JPanel m_inOutAreaRight;
JToolBar m_buttonBar;
JTabbedPane m_rightTabbedPane;
JTabbedPane m_errorTabbedPane;
private JScrollPane m_treeScroll;
private JScrollPane m_commentScrollPane;
private JScrollPane m_inOutScrollPane;
private JScrollPane m_processScrollPane;
private JScrollPane m_devCapScrollPane;
private JScrollPane m_devCapErrScroll;
JScrollPane m_validErrScroll;
private JViewport m_treeView;
JTextField m_searchTextField;
ProcessPanel m_pArea = new ProcessPanel();
private JTree m_searchTree;
JTree m_jdfTree;
private JDFTreeNode m_root;
private JDFTreeNode m_copyNode;
private JDFTreeNode m_searchInOutNode;
private InvalidNode m_invalidNode;
private JDFTreeRenderer m_renderer;
TreeSelectionListener m_treeSelectionListener;
private ListSelectionListener m_listListener;
private ResourceBundle m_littleBundle;
private SearchDialog m_dialog = null;
private HelpFrame m_helpFrame = null;
private INIReader m_iniFile;
private PreferenceDialog m_pd = null;
private DefaultTreeModel m_model;
DefaultListModel m_listModel = new DefaultListModel();
private JDFDoc m_jdfDocument;
File m_fileToSave = null;
private int m_inTreePos = 0;
private int m_outTreePos = 0;
private String m_currentLanguage;
private String m_docNS = "";
String m_currentLookAndFeel;
String m_currentMethodSendToDevice;
private String[] m_recentFiles = new String[5];
private String[] m_iconStrings = new String[24];
static protected Cursor m_readyCursor = Cursor.getDefaultCursor();
static protected Cursor m_waitCursor = Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR);
private DragSource m_source;
final private int m_IO_INDEX = 0;
final private int m_PROC_INDEX = 1;
final private int m_COM_INDEX = 3;
final private int m_DC_INDEX = 2;
final private int m_VAL_ERRORS_INDEX = 0;
final private int m_DC_ERRORS_INDEX = 1;
private boolean m_bValidationCompleted = false;
final private JMenuBar m_menuBar = new JMenuBar();
JTree m_reportTree;
DefaultMutableTreeNode m_execRoot = null;
DefaultMutableTreeNode m_reportRoot;
DevCapTreeSelectionListener m_devCapTreeSelectionListener;
final MyUndoManager undomanager = new MyUndoManager();
final UndoableEditSupport undoSupport = new UndoableEditSupport();
UndoAction undoAction = new UndoAction();
RedoAction redoAction = new RedoAction();
public JDFFrame()
{
super("CIP4 JDF Editor");
m_source = DragSource.getDefaultDragSource();
m_source.createDefaultDragGestureRecognizer(this, DnDConstants.ACTION_COPY_OR_MOVE, this);
final Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(0, 0, d.width, d.height - 30);
this.setCursor(m_readyCursor);
m_iniFile = new INIReader();
m_iconStrings = m_iniFile.getIconStrings();
m_currentAutoVal = m_iniFile.autoVal();
m_currentReadOnly = m_iniFile.readOnly();
m_currentLanguage = m_iniFile.getLanguage();
m_currentLookAndFeel = m_iniFile.getLookAndFeel();
m_currentMethodSendToDevice = m_iniFile.getMethodSendToDevice();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -