📄 uimainframe.java
字号:
jPanel1.setLayout(borderLayout2);
jSplitPane1.setLastDividerLocation(200);
jSplitPane2.setOrientation(JSplitPane.VERTICAL_SPLIT);
jSplitPane2.setLeftComponent(null);
jSplitPane2.setTopComponent(jPanel3);
jPanel3.setLayout(borderLayout3);
jListPanel.setLayout(borderLayout4);
jLabel1.setBorder(BorderFactory.createEtchedBorder());
jLabel1.setText("Hierarchy");
jLabel2.setBorder(BorderFactory.createEtchedBorder());
jLabel2.setText("Graph List");
jPanel5.setLayout(borderLayout5);
jTreePanel.setLayout(borderLayout6);
jPanel3.setBorder(BorderFactory.createLineBorder(Color.black));
jListPanel.setBorder(BorderFactory.createLineBorder(Color.black));
jGraphPane.setLayout(borderLayout7);
jLabel3.setPreferredSize(new Dimension(80, 24));
jLabel3.setText("Model Name");
jPanel7.setLayout(flowLayout1);
jComboBox1.setMaximumSize(new Dimension(80, 24));
jComboBox1.setMinimumSize(new Dimension(80, 24));
jComboBox1.setPreferredSize(new Dimension(100, 24));
jComboBox2.setPreferredSize(new Dimension(100, 24));
jComboBox2.setMinimumSize(new Dimension(80, 24));
jComboBox2.setMaximumSize(new Dimension(80, 24));
jLabel4.setText("Level");
jLabel4.setPreferredSize(new Dimension(60, 24));
jComboBox3.setPreferredSize(new Dimension(100, 24));
jComboBox3.setMinimumSize(new Dimension(80, 24));
jComboBox3.setMaximumSize(new Dimension(80, 24));
jLabel5.setText("Model Type");
jLabel5.setPreferredSize(new Dimension(80, 24));
jWorkPane.setBackground(Color.white);
jWorkPane.setBorder(BorderFactory.createEtchedBorder());
jPanel7.setBorder(BorderFactory.createEtchedBorder());
this.getContentPane().add(statusBar, BorderLayout.EAST);
this.getContentPane().add(jPanel1, BorderLayout.CENTER);
jPanel1.add(jSplitPane1, BorderLayout.CENTER);
jSplitPane1.add(jSplitPane2, JSplitPane.TOP);
jSplitPane2.add(jPanel3, JSplitPane.TOP);
jPanel3.add(jPanel5, BorderLayout.NORTH);
jPanel5.add(jLabel1, BorderLayout.CENTER);
jPanel3.add(jTreePanel, BorderLayout.CENTER);
jTreePanel.add(jLevelTreePane, BorderLayout.CENTER);
jSplitPane2.add(jListPanel, JSplitPane.BOTTOM);
jListPanel.add(jGraphListPane, BorderLayout.CENTER);
jListPanel.add(jLabel2, BorderLayout.NORTH);
jSplitPane1.add(jTabbedPaneLeft, JSplitPane.BOTTOM);
// create an empty graph
//
jTabbedPaneLeft.addChangeListener(this);
//jTabbedPaneLeft.addTab("Graph", jGraphPane);
//jTabbedPaneLeft.addTab("Symbol", jSymbolPane);
jPanel7.add(jLabel4, null);
jPanel7.add(jComboBox2, null);
jPanel7.add(jLabel3, null);
jPanel7.add(jComboBox1, null);
jPanel7.add(jLabel5, null);
jPanel7.add(jComboBox3, null);
jGraphPane.add(jWorkPane, BorderLayout.CENTER);
jSplitPane1.setDividerLocation(200);
jSplitPane2.setDividerLocation(250);
// set the action listener
//
ListSelectionModel model = jGraphList.getSelectionModel();
model.addListSelectionListener(this);
updateAll();
}
/**
* this function update all interface when level/graph is changed
*
* @param e a window event
* @return void
*/
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if(e.getID() == WindowEvent.WINDOW_CLOSING) {
CData.event_handler_d.fileExit_actionPerformed(null);
}
}
/**
* this function update all interface when level/graph is changed
*
* @return void
*/
public void updateAll() {
updating_d = true;
SearchLevel curr_level =
(SearchLevel)CData.getCurrLevel();
if ( curr_level != null ){
curr_level.sortSymbols();
}
// set the tree for levels
//
DefaultTreeModel model = (DefaultTreeModel)jLevelTree.getModel();
DefaultMutableTreeNode root =
(DefaultMutableTreeNode)jLevelTree.getModel().getRoot();
// remove all children
//
root.removeAllChildren();
for (int i = 0 ; i < CData.search_levels_d.size(); i++){
curr_level = (SearchLevel)CData.search_levels_d.get(i);
root.add(new DefaultMutableTreeNode(curr_level.level_name_d));
}
model.reload();
// set the tree selection
//
if ( CData.curr_level_index_d >= 0 ){
// set the tree selection
//
TreePath curr_path =
new TreePath(((DefaultMutableTreeNode)
root.getChildAt(CData.curr_level_index_d)).getPath());
jLevelTree.setSelectionPath(curr_path);
}
// set to current level
//
curr_level = (SearchLevel)CData.getCurrLevel();
int level_index = CData.curr_level_index_d;
// set the symbol list ( graph name list )
//
if ( CData.curr_level_index_d > 0 ){
if ( CData.getLevel(level_index - 1).contexts_d.size() > 0 ){
curr_level.graph_names_d =
CData.getLevel(level_index - 1).contexts_d;
}
else {
curr_level.graph_names_d =
CData.getLevel(level_index - 1).symbols_d;
}
}
// set graph names , these names will be displayed in
// the graph list
//
if ( curr_level != null ){
level_graphs_d = curr_level.graph_names_d;
}
graphs_in_level_d.fireTableDataChanged();
// clear all levels
//
//jTabbedPaneLeft.removeAll();
// set the labels
//
for ( int i = 0 ; i < CData.search_levels_d.size(); i ++ ){
SearchLevel level = (SearchLevel)CData.search_levels_d.get(i);
jTabbedPaneLeft.setTitleAt(i, level.level_name_d);
}
// set the graph in the work area
//
if ( curr_level != null){
// find the panel first
//
int i = jTabbedPaneLeft.
indexOfComponent(curr_level.jGraphPane);
// set current work pane
//
jTabbedPaneLeft.setSelectedIndex(i);
//jWorkPane = curr_level.jWorkPane;
// set the graph and workarea
//
if (curr_level.graph_names_d.size() > CData.curr_graph_index_d ){
/*
System.out.println("current level index:"
+ CData.curr_level_index_d);
System.out.println("current graph index:"
+ CData.curr_graph_index_d);
*/
String graph_name = (String)
curr_level.graph_names_d.get(CData.curr_graph_index_d);
//System.out.println("curr graph name: " + graph_name);
// set current graph
//
CData.curr_graph_d =
(DiGraph)curr_level.graphs_d.get(graph_name);
if ( CData.curr_graph_d == null ){
CData.curr_graph_d = new DiGraph();
curr_level.graphs_d.put(graph_name, CData.curr_graph_d);
}
// set current work area
//
//jWorkPane.getViewport().removeAll();
// set the graph, the work area
//
CData.work_area_d.setDiGraph(CData.curr_graph_d);
//jWorkPane.getViewport().add(CData.work_area_d);
// insert all vertices into the work area
//
CData.work_area_d.insertAll();
CData.work_area_d.revalidate();
// set the selection
//
jGraphList.changeSelection(CData.curr_graph_index_d, 0,
false,false);
curr_level.setWorkArea(CData.work_area_d);
}
}
else {
CData.curr_graph_d = null;
CData.work_area_d.setDiGraph(null);
}
// set the global symbol table
//
if (CData.symbol_dlg_d != null){
CData.event_handler_d.showSymbolsDlg();
}
CData.event_handler_d.resetFocus();
//jWorkPane.setPreferredSize(new Dimension(1, 1));
//jWorkPane.setViewportView(CData.work_area_d);
//CData.work_area_d.setPreferredSize(new Dimension(6, 10));
//CData.work_area_d.revalidate();
//jWorkPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
//jWorkPane.revalidate();
//jWorkPane.repaint();
//CData.work_area_d.setPreferredSize(new Dimension(600, 1000));
//CData.work_area_d.revalidate();
//CData.work_area_d.repaint();
//jTabbedPaneLeft.repaint();
updating_d = false;
}
/**
* handle the event the tabbed pane changed
*
* @param e the mouse event
* @return void
*/
public void editingStopped(ChangeEvent e) {
System.out.println("editingStopped");
if ( updating_d ){
return;
}
// set the tree for levels
//
DefaultTreeModel model = (DefaultTreeModel)jLevelTree.getModel();
DefaultMutableTreeNode root =
(DefaultMutableTreeNode)jLevelTree.getModel().getRoot();
DefaultMutableTreeNode selectedNode =
(DefaultMutableTreeNode)jLevelTree.getLastSelectedPathComponent();
if ( selectedNode == root || selectedNode == null ){
return;
}
// set previous value to search level
//
for ( int i = 0; i < root.getChildCount(); i++ ){
DefaultMutableTreeNode curr_node =
(DefaultMutableTreeNode)root.getChildAt(i);
String level_name = (String)curr_node.getUserObject();
CData.getLevel(i).level_name_d = level_name;
}
// update all
//
updateAll();
}
/**
* handle the event the tabbed pane changed
*
* @param e the mouse event
* @return void
*/
public void editingCanceled(ChangeEvent e) {
return;
}
/**
* handle the event the tabbed pane changed
*
* @param e the mouse event
* @return void
*/
public void stateChanged(ChangeEvent e) {
if ( updating_d ){
return;
}
// set correct level and graph
//
CData.curr_graph_index_d = 0;
//CData.curr_level_index_d = 0;
CData.curr_level_index_d = jTabbedPaneLeft.getSelectedIndex();
updateAll();
}
/**
* handle the event when a command is issued
*
* @param e the mouse event
* @return void
*/
public void valueChanged(ListSelectionEvent e) {
if ( updating_d ){
return;
}
// if the user click on the symbol list
//
int i = jGraphList.getSelectedRow();
int j = jGraphList.getSelectedColumn();
if ( i >= 0 && j >= 0 ){
String selected_string = (String)jGraphList.getValueAt(i,j);
CData.curr_graph_index_d =
CData.getCurrLevel().graph_names_d.indexOf(selected_string);
updateAll();
}
}
/**
* check menu
*
* @return void
*/
public void checkMenu() {
// check the menu options
//
jMenuGrammarInsertStart.setEnabled(true);
jMenuGrammarInsertStop.setEnabled(true);
jMenuHSymbols.setEnabled(true);
jMenuGrammar.setEnabled(true);
if ( CData.curr_graph_d == null ){
jMenuGrammar.setEnabled(false);
}
else {
if ( CData.curr_graph_d.hasStart() ){
jMenuGrammarInsertStart.setEnabled(false);
}
if ( CData.curr_graph_d.hasTerm() ){
jMenuGrammarInsertStop.setEnabled(false);
}
}
if ( CData.search_levels_d == null ){
jMenuHSymbols.setEnabled(false);
}
else if ( CData.search_levels_d.size() == 0 ){
jMenuHSymbols.setEnabled(false);
}
}
/**
* handle the event when a command is issued
*
* @param e the mouse event
* @return void
*/
public void valueChanged(TreeSelectionEvent e) {
if ( updating_d ){
return;
}
DefaultMutableTreeNode root =
(DefaultMutableTreeNode)jLevelTree.getModel().getRoot();
DefaultMutableTreeNode selectedNode =
(DefaultMutableTreeNode)jLevelTree.getLastSelectedPathComponent();
if ( selectedNode != root && selectedNode != null ){
CData.curr_level_index_d =
((DefaultMutableTreeNode)selectedNode.getParent()).
getIndex(selectedNode);
CData.curr_graph_index_d = 0;
updateAll();
}
}
// define inner class NodeSymbolModel
//
class LevelGraphTableModel extends AbstractTableModel {
final String[] columnNames = {"Graph Name"};
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return level_graphs_d.size();
}
public String getColumnName(int col) {
return columnNames[col];
}
public Object getValueAt(int row, int col) {
return level_graphs_d.get(row);
}
public void setValueAt(Object aValue, int row, int col) {
level_graphs_d.set(row, aValue.toString());
}
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
public boolean isCellEditable(int row, int col) {
return false;
}
} // end of class LevelSymbolModel
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -