📄 glomomenubar.java
字号:
import java.awt.*;import java.awt.event.*;import java.io.*;import java.util.*;import javax.swing.*;public class GlomoMenuBar extends JMenuBar implements ActionListener, ItemListener { private JMenuItem openMenuItem, resetMenuItem, exitMenuItem; private JMenuItem realTimeMenuItem, writeTraceMenuItem, abortMenuItem, playBackMenuItem; private JMenuItem breakPointMenuItem, statsMenuItem, guiOptionMenuItem; private JCheckBoxMenuItem toolBarMenuItem, statusBarMenuItem; private JMenuItem aboutMenuItem, contentsMenuItem; private JRadioButtonMenuItem //zoom sub-menu oneMenuItem, twoMenuItem, threeMenuItem, fourMenuItem; private JMenuItem bgColorMenuItem; //bgColor menu item private JButton okInputButton, cancelInputButton; private JCheckBox guiRadioOption, guiRoutingOption; private GlomoContentsDialog contentsDialog; private GlomoAboutDialog aboutDialog; private GlomoConfigDialog configDialog; private GlomoGuiOptionsDialog guiOptionsDialog; private GlomoMessageDialog messageDialog; private JFrame parent; private GlomoCanvas gCanvas; private GlomoStatusPanel statusPanel; private GlomoToolBarPanel toolBarPanel; private Color bgColor; private JDialog inputDialog; private int magnification = 4; private GlomoRunThread runThread; private JLabel executable, traceFile; private JTextField execTF, traceTF; private String executableName = "..\\bin\\glomosim ..\\bin\\config.in"; private boolean guiRadio, guiRouting; private String traceFileName = "untitled.trace"; private int traceOption; private JColorChooser colorChooser; private final String GUI_OPTION = "GUI-OPTION"; private final String GUI_RADIO = "GUI-RADIO"; private final String GUI_ROUTING = "GUI-ROUTING"; public GlomoMenuBar(JFrame parent, GlomoCanvas gc, GlomoStatusPanel sp, GlomoToolBarPanel tbp, Color bgColor) { // Create the Menu Bar super(); this.parent = parent; gCanvas = gc; statusPanel = sp; toolBarPanel = tbp; this.bgColor = bgColor; guiRadio = true; guiRouting = true; // set the executable file name according to the operationg system if(System.getProperty("file.separator","/").trim().equals("/")){ // Unix file system executableName = "../bin/glomosim ../bin/config.in"; } // Create File Menu JMenu fileMenu = new JMenu("File"); fileMenu.setMnemonic(KeyEvent.VK_F); openMenuItem = new JMenuItem("Open...", KeyEvent.VK_O); openMenuItem.setAccelerator( KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK)); openMenuItem.addActionListener(this); fileMenu.add(openMenuItem); resetMenuItem = new JMenuItem("Reset", KeyEvent.VK_R); resetMenuItem.setAccelerator( KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK)); resetMenuItem.addActionListener(this); //fileMenu.add(resetMenuItem); fileMenu.addSeparator(); exitMenuItem = new JMenuItem("Exit", KeyEvent.VK_X); exitMenuItem.setAccelerator( KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.CTRL_MASK)); exitMenuItem.addActionListener(this); fileMenu.add(exitMenuItem); add(fileMenu); // Create view Menu JMenu viewMenu = new JMenu("View"); viewMenu.setMnemonic(KeyEvent.VK_V); toolBarMenuItem = new JCheckBoxMenuItem("Tool Bar"); toolBarMenuItem.setState(true); toolBarMenuItem.addItemListener(this); viewMenu.add(toolBarMenuItem); statusBarMenuItem = new JCheckBoxMenuItem("Status Bar"); statusBarMenuItem.setState(true); statusBarMenuItem.addItemListener(this); viewMenu.add(statusBarMenuItem); add(viewMenu); // Create Simulate Menu JMenu simulateMenu = new JMenu("Simulate"); simulateMenu.setMnemonic(KeyEvent.VK_S); realTimeMenuItem = new JMenuItem("Real Time", KeyEvent.VK_R); realTimeMenuItem.setAccelerator( KeyStroke.getKeyStroke(KeyEvent.VK_R, ActionEvent.CTRL_MASK)); realTimeMenuItem.addActionListener(this); simulateMenu.add(realTimeMenuItem); writeTraceMenuItem = new JMenuItem("Write Trace",KeyEvent.VK_W); writeTraceMenuItem.setAccelerator( KeyStroke.getKeyStroke(KeyEvent.VK_W, ActionEvent.CTRL_MASK)); writeTraceMenuItem.addActionListener(this); simulateMenu.add(writeTraceMenuItem); playBackMenuItem = new JMenuItem("Play Back",KeyEvent.VK_P); playBackMenuItem.setAccelerator( KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK)); playBackMenuItem.addActionListener(this); simulateMenu.add(playBackMenuItem); simulateMenu.addSeparator(); abortMenuItem = new JMenuItem("Abort", KeyEvent.VK_A); abortMenuItem.setAccelerator( KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK)); abortMenuItem.addActionListener(this); abortMenuItem.setEnabled(false); simulateMenu.add(abortMenuItem); add(simulateMenu); // Create Options Menu JMenu optionsMenu = new JMenu("Options"); optionsMenu.setMnemonic(KeyEvent.VK_O); // Create Zoom Sub Menu JMenu zoomMenu = new JMenu("Zoom"); ButtonGroup group = new ButtonGroup(); oneMenuItem = new JRadioButtonMenuItem("Normal"); oneMenuItem.addActionListener(this); group.add(oneMenuItem); zoomMenu.add(oneMenuItem); twoMenuItem = new JRadioButtonMenuItem("times 2"); twoMenuItem.addActionListener(this); group.add(twoMenuItem); zoomMenu.add(twoMenuItem); threeMenuItem = new JRadioButtonMenuItem("times 3"); threeMenuItem.addActionListener(this); group.add(threeMenuItem); zoomMenu.add(threeMenuItem); fourMenuItem = new JRadioButtonMenuItem("times 4"); fourMenuItem.addActionListener(this); group.add(fourMenuItem); zoomMenu.add(fourMenuItem); setZoomItems(fourMenuItem); optionsMenu.add(zoomMenu); // Create Color Menu Item bgColorMenuItem = new JMenuItem("Background Colors"); bgColorMenuItem.addActionListener(this); optionsMenu.add(bgColorMenuItem); // Create Gui Sub Menu guiOptionMenuItem = new JMenuItem("GUI Options..."); guiOptionMenuItem.addActionListener(this); optionsMenu.add(guiOptionMenuItem); add(optionsMenu); // Create Debug Menu JMenu debugMenu = new JMenu("Debug"); debugMenu.setMnemonic(KeyEvent.VK_D); breakPointMenuItem = new JMenuItem("Break Point", KeyEvent.VK_B); breakPointMenuItem.setAccelerator( KeyStroke.getKeyStroke(KeyEvent.VK_B, ActionEvent.CTRL_MASK)); breakPointMenuItem.setEnabled (false); breakPointMenuItem.addActionListener(this); debugMenu.add(breakPointMenuItem); statsMenuItem = new JMenuItem("View stats..."); statsMenuItem.addActionListener(this); debugMenu.add(statsMenuItem); add(debugMenu); // Create Help Menu // In order to make help menu at the right edage, create // a blank glue add(Box.createHorizontalGlue()); JMenu helpMenu = new JMenu("Help"); helpMenu.setMnemonic(KeyEvent.VK_H); contentsMenuItem = new JMenuItem("Contents",KeyEvent.VK_C); contentsMenuItem.addActionListener(this); helpMenu.add(contentsMenuItem); aboutMenuItem = new JMenuItem("About"); aboutMenuItem.addActionListener(this); helpMenu.add(aboutMenuItem); add(helpMenu); // Set a raised bevel border of menu bar setBorder(BorderFactory.createRaisedBevelBorder()); // Create Dialogs messageDialog = new GlomoMessageDialog(parent); configDialog = new GlomoConfigDialog(parent, messageDialog); contentsDialog = new GlomoContentsDialog(parent, messageDialog); aboutDialog = new GlomoAboutDialog(parent); guiOptionsDialog=new GlomoGuiOptionsDialog(parent, messageDialog); // Create the Color Chooser colorChooser = new JColorChooser(); } public void actionPerformed(ActionEvent e) { Object action = e.getSource(); if (action == openMenuItem) { try { if(configDialog.openFile()){ configDialog.setVisible(true); } } catch(IOException ioe) { messageDialog.setMessage("Config Open...", "Error processing file!"); } } else if (action == exitMenuItem) { System.exit(0); } else if (action == contentsMenuItem) { contentsDialog.setVisible(true); } else if (action == aboutMenuItem) { aboutDialog.setVisible(true); } else if (action == realTimeMenuItem) { traceOption = GlomoRunThread.REAL_TIME; inputDialog = new JDialog(parent, "", true); initInputDialog(inputDialog); inputDialog.setVisible(true); } else if (action == writeTraceMenuItem) { traceOption = GlomoRunThread.WRITE_TRACE; inputDialog = new JDialog(parent, "", true); initInputDialog(inputDialog); inputDialog.setVisible(true); } else if (action == playBackMenuItem) { traceOption = GlomoRunThread.PLAYBACK_TRACE; inputDialog = new JDialog(parent, "", true); initInputDialog(inputDialog); inputDialog.setVisible(true); } else if (action == cancelInputButton) { resetMenuAndToolBars(); inputDialog.setVisible(false); } else if (action == okInputButton) { inputDialog.setVisible(false); //set menu items and tool buttons if ((traceOption == GlomoRunThread.WRITE_TRACE)){ setRunSettings(); } else{ setPlayBackSettings(); } if ((traceOption == GlomoRunThread.WRITE_TRACE) || (traceOption == GlomoRunThread.REAL_TIME)) { executableName = execTF.getText(); guiRadio = guiRadioOption.isSelected(); guiRouting = guiRoutingOption.isSelected(); if( !setGuiOptions(executableName, guiRadio, guiRouting)){ messageDialog.setMessage("Input Error","Wrong input command"); return; } } if (traceOption != GlomoRunThread.REAL_TIME) { traceFileName = traceTF.getText(); } runThread.setParams(executableName, traceFileName); runThread.start(); } else if (action == abortMenuItem) { runThread.abortSim(); // if the runThread is currently paused, you need to resume it // before it can abort; otherwise, it will continue to wait() if (runThread.isSimPaused() == true) { runThread.resumeSim(); toolBarPanel.setPauseLabel(); } } else if (action == statsMenuItem) { try { GlomoStatsDialog statsDialog = new GlomoStatsDialog(parent, messageDialog); statsDialog.openFile(); } catch (NumberFormatException nfe) { messageDialog.setMessage("Stats Open...", "Error processing file!"); } catch (IOException ioe) { messageDialog.setMessage("Stats Open...", "Error processing file!"); } } else if (action == guiOptionMenuItem) { guiOptionsDialog.setVisible(true); } else if (action == oneMenuItem) { setMagnification(1); toolBarPanel.setMagnification(1); } else if (action == twoMenuItem) { setMagnification(2); toolBarPanel.setMagnification(2); } else if (action == threeMenuItem) { setMagnification(3); toolBarPanel.setMagnification(3); } else if (action == fourMenuItem) { setMagnification(4); toolBarPanel.setMagnification(4); } else if (action == bgColorMenuItem) { selectBackgroundColor();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -