📄 eventhandler.java
字号:
/* * @(#) EventHandler.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.border.*;import javax.swing.event.*;import java.io.*;import java.lang.*;import java.util.*;/** * This class is designed to handle all events of the * ..... * ..... * @version 1.00 */public class EventHandler implements ActionListener, MouseListener, MouseMotionListener{ //----------------------------------------------------------------- // // static data members // //----------------------------------------------------------------- //----------------------------------------------------------------- // // instance data members // //----------------------------------------------------------------- /** * data member about current status */ protected String curr_am_string_d = CData.AM_NONE; public Vertex curr_vertex_focus_d = null; public Vertex curr_vertex_copy_d = null; public GraphArc curr_arc_focus_d = null; public DiGraph curr_graph_copy_d = null; /** * mouse positions */ protected int mouse_x_d = 0; protected int mouse_y_d = 0; //----------------------------------------------------------------- // // static function members // //----------------------------------------------------------------- //----------------------------------------------------------------- // // instance function members // //----------------------------------------------------------------- /** * reset all focus * * @return void */ public void resetFocus() { curr_am_string_d = CData.AM_NONE; curr_vertex_focus_d = null; curr_arc_focus_d = null; } /** * handle the event when a command is issued * * @param e the mouse event * @return void */ public void actionPerformed(ActionEvent e) { // check the menu first // CData.main_frame_d.checkMenu(); // branches on the action command // // file menu // if ( e.getActionCommand().equals(CData.AM_FILE_EXIT) ){ curr_am_string_d = CData.AM_FILE_EXIT; fileExit_actionPerformed(e); } if ( e.getActionCommand().equals(CData.AM_FILE_SAVE) ){ curr_am_string_d = CData.AM_FILE_EXIT; CData.store(false); } if ( e.getActionCommand().equals(CData.AM_FILE_SAVE_AS) ){ curr_am_string_d = CData.AM_FILE_EXIT; CData.store(true); } if ( e.getActionCommand().equals(CData.AM_FILE_SAVE_ALL) ){ curr_am_string_d = CData.AM_FILE_EXIT; showSaveAllDlg(); } if ( e.getActionCommand().equals(CData.AM_FILE_OPEN) ){ curr_am_string_d = CData.AM_FILE_EXIT; CData.load(false); } if ( e.getActionCommand().equals(CData.AM_FILE_NEW) ){ curr_am_string_d = CData.AM_FILE_EXIT; CData.newModel(true); } if ( e.getActionCommand().equals(CData.AM_FILE_CLOSE) ){ curr_am_string_d = CData.AM_FILE_EXIT; CData.newModel(false); } if ( e.getActionCommand().equals(CData.AM_HELP_ABOUT) ){ curr_am_string_d = CData.AM_HELP_ABOUT; helpAbout_actionPerformed(e); } // grammar menu // if ( e.getActionCommand().equals(CData.AM_GRAMMAR_INSERT_START) ){ if ( CData.curr_graph_d == null ) return; curr_am_string_d = CData.AM_GRAMMAR_INSERT_START; grammarInsertStart_actionPerformed(e); } if ( e.getActionCommand().equals(CData.AM_GRAMMAR_INSERT_STOP) ){ if ( CData.curr_graph_d == null ) return; curr_am_string_d = CData.AM_GRAMMAR_INSERT_STOP; grammarInsertStart_actionPerformed(e); } if ( e.getActionCommand().equals(CData.AM_GRAMMAR_INSERT_NODE) ){ if ( CData.curr_graph_d == null ) return; curr_am_string_d = CData.AM_GRAMMAR_INSERT_NODE; grammarInsertStart_actionPerformed(e); } if ( e.getActionCommand().equals(CData.AM_GRAMMAR_INSERT_ARC) ){ curr_am_string_d = CData.AM_GRAMMAR_INSERT_ARC; grammarInsertStart_actionPerformed(e); } if ( e.getActionCommand().equals(CData.AM_GRAMMAR_INSERT_SELF_ARC) ){ curr_am_string_d = CData.AM_GRAMMAR_INSERT_SELF_ARC; grammarInsertStart_actionPerformed(e); } if ( e.getActionCommand().equals(CData.AM_GRAMMAR_CUT) ){ curr_am_string_d = CData.AM_GRAMMAR_CUT; curr_vertex_copy_d = new Vertex(curr_vertex_focus_d); CData.curr_graph_d.removeVertex(curr_vertex_focus_d); curr_vertex_focus_d = null; curr_am_string_d = CData.AM_NONE; } if ( e.getActionCommand().equals(CData.AM_GRAMMAR_COPY) ){ if ( curr_vertex_focus_d == null ){ return; } curr_am_string_d = CData.AM_GRAMMAR_COPY; curr_vertex_copy_d = new Vertex(curr_vertex_focus_d); curr_am_string_d = CData.AM_NONE; } // paste a node // if ( e.getActionCommand().equals(CData.AM_GRAMMAR_PASTE) ){ if ( curr_vertex_copy_d == null ){ return; } curr_am_string_d = CData.AM_GRAMMAR_PASTE; //Point location = curr_vertex_copy_d.getVertexLocation(); Point location = curr_vertex_copy_d.getLocation(); location.x += 15; location.y += 15; Vertex paste_vertex = new Vertex(curr_vertex_copy_d); CData.work_area_d.insertVertexAt( paste_vertex, location); CData.curr_graph_d.insertVertex(paste_vertex); //curr_vertex_focus_d = null; curr_am_string_d = CData.AM_NONE; } if ( e.getActionCommand().equals(CData.AM_GRAMMAR_DELETE) ){ if ( curr_vertex_focus_d != null ){ CData.curr_graph_d.removeVertex(curr_vertex_focus_d); } if ( curr_arc_focus_d != null ){ CData.curr_graph_d.removeArc(curr_arc_focus_d); } curr_vertex_focus_d = null; curr_arc_focus_d = null; curr_am_string_d = CData.AM_NONE; } // copy a graph // if ( e.getActionCommand().equals(CData.AM_GRAMMAR_COPY_GRAPH) ){ if ( CData.curr_graph_d == null ){ return; } //System.out.println("copy a graph"); curr_graph_copy_d = new DiGraph(CData.curr_graph_d); curr_am_string_d = CData.AM_NONE; } // paste a graph // if ( e.getActionCommand().equals(CData.AM_GRAMMAR_PASTE_GRAPH) ){ if ( curr_graph_copy_d == null ){ return; } String graph_name = (String) CData.getCurrLevel().graph_names_d. get(CData.curr_graph_index_d); //System.out.println("paste a graph"); // set current graph // CData.curr_graph_d = new DiGraph(curr_graph_copy_d); CData.getCurrLevel().graphs_d.put(graph_name, CData.curr_graph_d); //curr_vertex_focus_d = null; curr_am_string_d = CData.AM_NONE; CData.main_frame_d.updateAll(); } // weight a graph // if ( e.getActionCommand().equals(CData.AM_GRAMMAR_WEIGHT_GRAPH) ){ if ( CData.curr_graph_d == null ){ return; } CData.curr_graph_d.resetGraphArcWeight((float)1.0); } // hiearchy menu // if ( e.getActionCommand().equals(CData.AM_H_ADD_LEVEL) ){ curr_am_string_d = CData.AM_H_ADD_LEVEL; CData.addLevel(CData.search_levels_d.size()); curr_am_string_d = CData.AM_NONE; CData.main_frame_d.updateAll(); } if ( e.getActionCommand().equals(CData.AM_H_DELETE_LEVEL) ){ CData.search_levels_d.remove(CData.getCurrLevel()); CData.main_frame_d.jTabbedPaneLeft. removeTabAt(CData.curr_level_index_d); curr_am_string_d = CData.AM_NONE; CData.main_frame_d.updateAll(); } if ( e.getActionCommand().equals(CData.AM_H_CHECK_LEVEL) ){ CData.check(); } if ( e.getActionCommand().equals(CData.AM_H_SYMBOLS) ){ curr_am_string_d = CData.AM_H_SYMBOLS; hSymbols_actionPerformed(e); } // repaint the work area // CData.work_area_d.repaint(); CData.removeTempFile(); } /** * exit the application * * @param e any event * @return void */ public void fileExit_actionPerformed(ActionEvent e) { System.exit(0); } /** * Help | About action performed * * @param e any event * @return void */ private void helpAbout_actionPerformed(ActionEvent e) { UIMainFrame_AboutBox dlg = new UIMainFrame_AboutBox( CData.main_frame_d); Dimension dlgSize = dlg.getPreferredSize(); Dimension frmSize = CData.main_frame_d.getSize(); Point loc = CData.main_frame_d.getLocation(); dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y); dlg.setModal(true); dlg.show(); } /** * Hiearchy | Symbols action performed * * @param e any event * @return void */ private void hSymbols_actionPerformed(ActionEvent e) { showSymbolsDlg(); } /** * Hiearchy | Symbols action performed * * @return void */ public void showSymbolsDlg() { UISymbolDialog dlg = null; if (CData.symbol_dlg_d == null ){ CData.symbol_dlg_d = new UISymbolDialog( CData.main_frame_d, "symbols", false); dlg = CData.symbol_dlg_d; Dimension dlgSize = dlg.getPreferredSize(); Dimension frmSize = CData.main_frame_d.getSize(); Point loc = CData.main_frame_d.getLocation(); dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y); dlg.setModal(false); } dlg = CData.symbol_dlg_d; SearchLevel curr_level = CData.getCurrLevel(); dlg.level_symbols_d = (Vector)curr_level.symbols_d.clone(); dlg.level_name_d = new String (curr_level.level_name_d); dlg.initAll(); dlg.show(); } /** * Hiearchy | Symbols action performed * * @return void */ public void showSaveAllDlg() { UISaveAllDialog dlg = new UISaveAllDialog( CData.main_frame_d, "SaveAlls", false); Dimension dlgSize = dlg.getPreferredSize(); Dimension frmSize = CData.main_frame_d.getSize(); Point loc = CData.main_frame_d.getLocation(); dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y); dlg.setModal(true); dlg.initAll(); dlg.show(); } /** * Grammar | Insert Start * * @param e the action event * @return void */ private void grammarInsertStart_actionPerformed(ActionEvent e) { // Create an instance of java.awt.Cursor // Cursor c = new Cursor ( Cursor.HAND_CURSOR ); // Set cursor for the work area // CData.work_area_d.setCursor(c); // then waiting for the mouse left-click on the work area } /** * handle the event when mouse is clicked * * @param e the mouse event * @return void */ public void mouseClicked(MouseEvent e) { // declare local variables // // restore the shape of the mouse // Cursor c = new Cursor ( Cursor.DEFAULT_CURSOR ); CData.work_area_d.setCursor(c); //System.out.println("mouse clicked"); // did the user click on the WorkArea with the left mouse button? // if (e.getSource().getClass().getName().equals("WorkArea")) { //System.out.println("workarea clicked"); if (CData.work_area_d.digraph_d == CData.curr_graph_d) { if (SwingUtilities.isLeftMouseButton(e)) { workAreaLMClicked(e); } if (SwingUtilities.isRightMouseButton(e)) { System.out.println(((WorkArea)e.getSource()). digraph_d.vertices_d.size()); workAreaRMClicked(e); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -