📄 uimainframe.java
字号:
/*
* @(#) UIMainFrame.java 1.10 10/09/02
*
* Copyright ***, All Rights Reserved.
*
* This software is the proprietary information of ********
* Use is subject to license terms.
*
*/
// import java packages
//
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.border.*;
import javax.swing.event.*;
import java.util.*;
import javax.swing.event.*;
import javax.swing.table.*;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellEditor;
/**
* This class is construct the main frame of the network builder.
* @version 1.00
*/
public class UIMainFrame extends JFrame implements TreeSelectionListener,
ListSelectionListener,
CellEditorListener,
ChangeListener{
//-----------------------------------------------------------------
//
// static data members
//
//-----------------------------------------------------------------
//-----------------------------------------------------------------
//
// instance data members
//
//-----------------------------------------------------------------
// the graph name list indicate which graph is current graph
//
public Vector level_graphs_d = new Vector();
public LevelGraphTableModel graphs_in_level_d
= new LevelGraphTableModel();
// a list of graph names
//
JTable jGraphList = new JTable(graphs_in_level_d);
// status flag
//
boolean updating_d = false;
// menu options
//
JMenuBar jMenuBarMain = new JMenuBar();
JMenu jMenuFile = new JMenu();
JMenuItem jMenuFileNew = new JMenuItem();
JMenuItem jMenuFileOpen = new JMenuItem();
JMenuItem jMenuFileSave = new JMenuItem();
JMenuItem jMenuFileSaveAs = new JMenuItem();
JMenuItem jMenuFileSaveAll = new JMenuItem();
JMenuItem jMenuFileClose = new JMenuItem();
JMenuItem jMenuFileExit = new JMenuItem();
JMenu jMenuHelp = new JMenu();
JMenuItem jMenuHelpAbout = new JMenuItem();
//JMenuItem jMenuHelpTest = new JMenuItem();
JMenu jMenuGrammar = new JMenu();
JMenuItem jMenuGrammarInsertStart = new JMenuItem();
JMenuItem jMenuGrammarInsertStop = new JMenuItem();
JMenuItem jMenuGrammarInsertNode = new JMenuItem();
JMenuItem jMenuGrammarInsertArc = new JMenuItem();
JMenuItem jMenuGrammarInsertSelfArc = new JMenuItem();
JMenuItem jMenuGrammarCopy = new JMenuItem();
JMenuItem jMenuGrammarCut = new JMenuItem();
JMenuItem jMenuGrammarPaste = new JMenuItem();
JMenuItem jMenuGrammarDelete = new JMenuItem();
JMenuItem jMenuGrammarCopyGraph = new JMenuItem();
JMenuItem jMenuGrammarPasteGraph = new JMenuItem();
JMenuItem jMenuGrammarWeightGraph = new JMenuItem();
// menu for hiearchy
//
JMenu jMenuH = new JMenu();
JMenuItem jMenuHAddLevel = new JMenuItem();
JMenuItem jMenuHDeleteLevel = new JMenuItem();
JMenuItem jMenuHCheckLevel = new JMenuItem();
JMenuItem jMenuHAddGraph = new JMenuItem();
JMenuItem jMenuHDeleteGraph = new JMenuItem();
JMenuItem jMenuHSymbols = new JMenuItem();
// panels
//
public JTabbedPane jTabbedPaneLeft = new JTabbedPane();
JLabel statusBar = new JLabel();
BorderLayout borderLayout1 = new BorderLayout();
JPanel jPanel1 = new JPanel();
BorderLayout borderLayout2 = new BorderLayout();
JSplitPane jSplitPane1 = new JSplitPane();
JSplitPane jSplitPane2 = new JSplitPane();
JPanel jGraphPane = new JPanel();
JPanel jPanel3 = new JPanel();
JPanel jListPanel = new JPanel();
JTree jLevelTree = null;
BorderLayout borderLayout3 = new BorderLayout();
BorderLayout borderLayout4 = new BorderLayout();
JLabel jLabel1 = new JLabel();
JLabel jLabel2 = new JLabel();
JPanel jPanel5 = new JPanel();
JPanel jTreePanel = new JPanel();
BorderLayout borderLayout5 = new BorderLayout();
BorderLayout borderLayout6 = new BorderLayout();
TitledBorder titledBorder1;
TitledBorder titledBorder2;
Border border1;
Border border2;
JPanel jPanel7 = new JPanel();
BorderLayout borderLayout7 = new BorderLayout();
JLabel jLabel3 = new JLabel();
JScrollPane jWorkPane = null;
JScrollPane jLevelTreePane = null;
JScrollPane jGraphListPane = new JScrollPane();
JComboBox jComboBox1 = new JComboBox();
FlowLayout flowLayout1 = new FlowLayout();
JComboBox jComboBox2 = new JComboBox();
JLabel jLabel4 = new JLabel();
JComboBox jComboBox3 = new JComboBox();
JLabel jLabel5 = new JLabel();
//-----------------------------------------------------------------
//
// static function members
//
//-----------------------------------------------------------------
//-----------------------------------------------------------------
//
// instance function members
//
//-----------------------------------------------------------------
/**
* the class constructor
*/
public UIMainFrame() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
checkMenu();
CData.loadOptions();
}
catch(Exception e) {
e.printStackTrace();
}
}
/**
* add a new level to the search levels
*
* @param new_leve_a the new level to be added
* @return void
*/
public void addLevel(SearchLevel new_level_a) {
// create an new tab page for this level
//
jTabbedPaneLeft.addTab(new_level_a.level_name_d,
new_level_a.jGraphPane);
}
/**
* pre Component initialization
*
* @param none
* @return void
*/
private void jbPreInit() throws Exception {
// init the level tree
//
DefaultMutableTreeNode root
= new DefaultMutableTreeNode(CData.LEVEL_TREE_ROOT_NAME);
jLevelTree = new JTree(root );
jLevelTree.addTreeSelectionListener(this);
// add the cell editor listener
//
jLevelTree.setCellEditor(new
javax.swing.tree.
DefaultTreeCellEditor(jLevelTree, new DefaultTreeCellRenderer()));
jLevelTree.getCellEditor().addCellEditorListener(this);
// set the tree itself
//
jLevelTree.setEditable(true);
jLevelTree.getSelectionModel().
setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
jLevelTree.setShowsRootHandles(true);
// set the panel for the tree of levels
//
jLevelTreePane
= new JScrollPane(jLevelTree,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
jLevelTreePane.setPreferredSize(new Dimension(600, 1000));
// set the table of list of graph names
//
jGraphListPane.getViewport().add(jGraphList);
// init the scrollPane, the workarea is in this pane
//
jWorkPane = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
jWorkPane.getViewport().add(CData.work_area_d);
CData.work_area_d.revalidate();
CData.work_area_d.setPreferredSize(new Dimension(6000, 10000));
CData.work_area_d.addMouseListener(CData.event_handler_d);
CData.work_area_d.addMouseMotionListener(CData.event_handler_d);
// init data
//
CData.curr_graph_d = new DiGraph();
CData.work_area_d.setDiGraph(CData.curr_graph_d);
}
/**
* initialize the menus
*
* @param none
* @return void
*/
private void initMenu() throws Exception {
// menu bar, top level
//
jMenuBarMain.add(jMenuFile);
jMenuBarMain.add(jMenuH);
jMenuBarMain.add(jMenuGrammar);
jMenuBarMain.add(Box.createHorizontalGlue());
jMenuBarMain.add(jMenuHelp);
this.setJMenuBar(jMenuBarMain);
// menu File
//
jMenuFile.setText("File");
jMenuFileNew.setText("New");
jMenuFileOpen.setText("Open");
jMenuFileSave.setText("Save");
jMenuFileSaveAs.setText("Save As");
jMenuFileSaveAll.setText("Save All");
jMenuFileClose.setText("Close");
jMenuFileExit.setText("Exit");
jMenuFileNew.setActionCommand(CData.AM_FILE_NEW);
jMenuFileOpen.setActionCommand(CData.AM_FILE_OPEN);
jMenuFileSave.setActionCommand(CData.AM_FILE_SAVE);
jMenuFileSaveAs.setActionCommand(CData.AM_FILE_SAVE_AS);
jMenuFileSaveAll.setActionCommand(CData.AM_FILE_SAVE_ALL);
jMenuFileClose.setActionCommand(CData.AM_FILE_CLOSE);
jMenuFileExit.setActionCommand(CData.AM_FILE_EXIT);
jMenuFile.add(jMenuFileNew);
jMenuFile.add(jMenuFileOpen);
jMenuFile.add(jMenuFileSave);
jMenuFile.add(jMenuFileSaveAs);
jMenuFile.add(jMenuFileSaveAll);
jMenuFile.addSeparator();
//jMenuFile.addSeparator();
jMenuFile.add(jMenuFileClose);
jMenuFile.add(jMenuFileExit);
jMenuFileNew.addActionListener(CData.event_handler_d);
jMenuFileOpen.addActionListener(CData.event_handler_d);
jMenuFileSave.addActionListener(CData.event_handler_d);
jMenuFileSaveAs.addActionListener(CData.event_handler_d);
jMenuFileClose.addActionListener(CData.event_handler_d);
jMenuFileSaveAll.addActionListener(CData.event_handler_d);
jMenuFileExit.addActionListener(CData.event_handler_d);
// menu Grammar
//
jMenuGrammar.setText("Graph");
jMenuGrammarInsertStart.setText("Insert Start");
jMenuGrammarInsertStop.setText("Insert Stop");
jMenuGrammarInsertNode.setText("Insert Node");
jMenuGrammarInsertArc.setText("Insert Arc");
jMenuGrammarInsertSelfArc.setText("Insert Self Arc");
jMenuGrammarCopy.setText("Copy");
jMenuGrammarCut.setText("Cut");
jMenuGrammarPaste.setText("Paste");
jMenuGrammarDelete.setText("Delete");
jMenuGrammarCopyGraph.setText("Copy Graph");
jMenuGrammarPasteGraph.setText("Paste Graph");
jMenuGrammarWeightGraph.setText("Set Equal Weights");
jMenuGrammarInsertStart.setActionCommand(CData.AM_GRAMMAR_INSERT_START);
jMenuGrammarInsertStop.setActionCommand(CData.AM_GRAMMAR_INSERT_STOP);
jMenuGrammarInsertNode.setActionCommand(CData.AM_GRAMMAR_INSERT_NODE);
jMenuGrammarInsertArc.setActionCommand(CData.AM_GRAMMAR_INSERT_ARC);
jMenuGrammarInsertSelfArc.setActionCommand(CData.AM_GRAMMAR_INSERT_SELF_ARC);
jMenuGrammarCopy.setActionCommand(CData.AM_GRAMMAR_COPY);
jMenuGrammarCut.setActionCommand(CData.AM_GRAMMAR_CUT);
jMenuGrammarPaste.setActionCommand(CData.AM_GRAMMAR_PASTE);
jMenuGrammarDelete.setActionCommand(CData.AM_GRAMMAR_DELETE);
jMenuGrammarCopyGraph.setActionCommand(CData.AM_GRAMMAR_COPY_GRAPH);
jMenuGrammarPasteGraph.setActionCommand(CData.AM_GRAMMAR_PASTE_GRAPH);
jMenuGrammarWeightGraph.setActionCommand(CData.AM_GRAMMAR_WEIGHT_GRAPH);
jMenuGrammar.add(jMenuGrammarInsertStart);
jMenuGrammar.add(jMenuGrammarInsertStop);
jMenuGrammar.add(jMenuGrammarInsertNode);
jMenuGrammar.addSeparator();
jMenuGrammar.add(jMenuGrammarInsertArc);
jMenuGrammar.add(jMenuGrammarInsertSelfArc);
jMenuGrammar.addSeparator();
jMenuGrammar.add(jMenuGrammarCopy);
jMenuGrammar.add(jMenuGrammarCut);
jMenuGrammar.add(jMenuGrammarPaste);
jMenuGrammar.add(jMenuGrammarDelete);
jMenuGrammar.addSeparator();
jMenuGrammar.add(jMenuGrammarCopyGraph);
jMenuGrammar.add(jMenuGrammarPasteGraph);
jMenuGrammar.add(jMenuGrammarWeightGraph);
jMenuGrammarInsertStart.addActionListener(CData.event_handler_d);
jMenuGrammarInsertStop.addActionListener(CData.event_handler_d);
jMenuGrammarInsertNode.addActionListener(CData.event_handler_d);
jMenuGrammarInsertArc.addActionListener(CData.event_handler_d);
jMenuGrammarInsertSelfArc.addActionListener(CData.event_handler_d);
jMenuGrammarCopy.addActionListener(CData.event_handler_d);
jMenuGrammarCut.addActionListener(CData.event_handler_d);
jMenuGrammarPaste.addActionListener(CData.event_handler_d);
jMenuGrammarDelete.addActionListener(CData.event_handler_d);
jMenuGrammarCopyGraph.addActionListener(CData.event_handler_d);
jMenuGrammarPasteGraph.addActionListener(CData.event_handler_d);
jMenuGrammarWeightGraph.addActionListener(CData.event_handler_d);
// set the accelerator
//
jMenuGrammarDelete.
setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0));
jMenuGrammarCopy.
setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
ActionEvent.CTRL_MASK));
jMenuGrammarCut.
setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,
ActionEvent.CTRL_MASK));
jMenuGrammarPaste.
setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,
ActionEvent.CTRL_MASK));
jMenuGrammarCopyGraph.
setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
ActionEvent.ALT_MASK));
jMenuGrammarPasteGraph.
setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,
ActionEvent.ALT_MASK));
jMenuGrammarWeightGraph.
setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W,
ActionEvent.ALT_MASK));
// menus for the Hiearchical Levels
//
jMenuH.setText("Hierarchy");
jMenuHAddLevel.setText("Add Level");
jMenuHDeleteLevel.setText("Delete Level");
jMenuHCheckLevel.setText("Check Levels");
jMenuHSymbols.setText("Symbols");
jMenuHAddLevel.setActionCommand(CData.AM_H_ADD_LEVEL);
jMenuHDeleteLevel.setActionCommand(CData.AM_H_DELETE_LEVEL);
jMenuHCheckLevel.setActionCommand(CData.AM_H_CHECK_LEVEL);
jMenuHAddGraph.setActionCommand(CData.AM_H_ADD_GRAPH);
jMenuHDeleteGraph.setActionCommand(CData.AM_H_DELETE_GRAPH);
jMenuHSymbols.setActionCommand(CData.AM_H_SYMBOLS);
jMenuH.add(jMenuHAddLevel);
jMenuH.add(jMenuHDeleteLevel);
jMenuH.add(jMenuHCheckLevel);
jMenuH.addSeparator();
//jMenuH.add(jMenuHAddGraph);
//jMenuH.add(jMenuHDeleteGraph);
//jMenuH.addSeparator();
jMenuH.add(jMenuHSymbols);
jMenuHAddLevel.addActionListener(CData.event_handler_d);
jMenuHDeleteLevel.addActionListener(CData.event_handler_d);
jMenuHCheckLevel.addActionListener(CData.event_handler_d);
jMenuHAddGraph.addActionListener(CData.event_handler_d);
jMenuHDeleteGraph.addActionListener(CData.event_handler_d);
jMenuHSymbols.addActionListener(CData.event_handler_d);
// menu help
//
jMenuHelp.setText("Help");
jMenuHelpAbout.setText("About");
jMenuHelpAbout.setActionCommand(CData.AM_HELP_ABOUT);
jMenuHelpAbout.addActionListener(CData.event_handler_d);
jMenuHelp.add(jMenuHelpAbout);
}
/**
* Component initialization
*
* @return void
*/
private void jbInit() throws Exception {
// special init forward
//
jbPreInit();
CData.init();
// init the menu
//
initMenu();
titledBorder1 = new TitledBorder("");
titledBorder2 = new TitledBorder("");
border1 = BorderFactory.createEmptyBorder();
border2 = BorderFactory.createEmptyBorder();
this.getContentPane().setLayout(borderLayout1);
this.setSize(new Dimension(800, 600));
this.setTitle("Network Builder");
statusBar.setText(" ");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -