📄 commonmenubar.java
字号:
/* * MegaMek - Copyright (C) 2003,2004,2005 Ben Mazur (bmazur@sev.org) * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free * Software Foundation; either version 2 of the License, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. */package megamek.client.ui.swing;import megamek.client.Client;import megamek.common.Entity;import megamek.common.IGame;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JMenu;import javax.swing.KeyStroke;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.util.Enumeration;import java.util.Vector;/** * Every menu bar in MegaMek should have an identical look-and-feel, * with various menu items enabled or disabled, based upon the frame * that owns the menu bar, and the current state of the program. */public class CommonMenuBar extends JMenuBar implements ActionListener { /** * The <code>Game</code> current selected. * This value may be <code>null</code>. */ private IGame game; private JMenuItem fileGameNew; private JMenuItem fileGameOpen; private JMenuItem fileGameSave; private JMenuItem fileGameScenario; private JMenuItem fileGameConnectBot; private JMenuItem fileGameConnect; /** * When we have a <code>Board</code>, set this to <code>true</code>. */ private boolean hasBoard; private JMenuItem fileBoardNew; private JMenuItem fileBoardOpen; private JMenuItem fileBoardSave; private JMenuItem fileBoardSaveAs; private JMenuItem fileBoardSaveAsImage; /** * When we have a unit list, set this to <code>true</code>. */ private boolean hasUnitList; private JMenuItem fileUnitsOpen; private JMenuItem fileUnitsClear; private JMenuItem fileUnitsSave; /** * The <code>Entity</code> current selected. * This value may be <code>null</code>. */ private Entity entity; /** * Record the current phase of the game. */ private int phase = IGame.PHASE_UNKNOWN; private JMenuItem filePrint; private JMenuItem viewMiniMap; private JMenuItem viewMekDisplay; private JMenuItem viewZoomIn; private JMenuItem viewZoomOut; private JMenuItem viewLOSSetting; private JMenuItem viewUnitOverview; private JMenuItem viewRoundReport; private JMenuItem viewGameOptions; private JMenuItem viewClientSettings; private JMenuItem viewPlayerList; private JMenuItem deployMinesConventional; private JMenuItem deployMinesCommand; private JMenuItem deployMinesVibrabomb; private JMenuItem deployNext; private JMenuItem deployTurn; private JMenuItem deployLoad; private JMenuItem deployUnload; private JMenuItem deployRemove; private JMenuItem deployAssaultDrop; private JMenuItem moveWalk; private JMenuItem moveNext; private JMenuItem moveTurn; private JMenuItem moveLayMine; private JMenuItem moveLoad; private JMenuItem moveUnload; private JMenuItem moveJump; private JMenuItem moveSwim; private JMenuItem moveBackUp; private JMenuItem moveCharge; private JMenuItem moveDFA; private JMenuItem moveGoProne; private JMenuItem moveFlee; private JMenuItem moveEject; private JMenuItem moveUnjam; private JMenuItem moveSearchlight; private JMenuItem moveClear; private JMenuItem moveHullDown; private JMenuItem moveGetUp; private JMenuItem moveRaise; private JMenuItem moveLower; private JMenuItem fireFire; private JMenuItem fireSkip; private JMenuItem fireNextTarg; private JMenuItem fireNext; private JMenuItem fireTwist; private JMenuItem fireFlipArms; private JMenuItem fireMode; private JMenuItem fireFindClub; private JMenuItem fireSpot; private JMenuItem fireSearchlight; private JMenuItem fireCancel; private JMenuItem physicalNext; private JMenuItem physicalPunch; private JMenuItem physicalKick; private JMenuItem physicalPush; private JMenuItem physicalClub; private JMenuItem physicalBrushOff; private JMenuItem physicalDodge; private JMenuItem physicalThrash; private JMenuItem physicalProto; private Client client; /** * A <code>Vector</code> containing the <code>ActionListener</code>s * that have registered themselves with this menu bar. */ private final Vector actionListeners = new Vector(); /** * Create a MegaMek menu bar. */ public CommonMenuBar(Client parent) { this(); client = parent; } public CommonMenuBar() { JMenu menu = null; JMenu submenu = null; JMenuItem item = null; // *** Create the File menu. menu = new JMenu(Messages.getString("CommonMenuBar.FileMenu")); //$NON-NLS-1$ menu.setMnemonic(KeyEvent.VK_F); add(menu); // Create the Game sub-menu. submenu = new JMenu(Messages.getString("CommonMenuBar.GameMenu")); //$NON-NLS-1$ menu.add(submenu); fileGameNew = new JMenuItem(Messages.getString("CommonMenuBar.fileGameNew")); //$NON-NLS-1$ fileGameNew.addActionListener(this); fileGameNew.setActionCommand("fileGameNew"); //$NON-NLS-1$ fileGameNew.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, getToolkit().getMenuShortcutKeyMask())); submenu.add(fileGameNew); fileGameOpen = new JMenuItem(Messages.getString("CommonMenuBar.fileGameOpen")); //$NON-NLS-1$ fileGameOpen.addActionListener(this); fileGameOpen.setActionCommand("fileGameOpen"); //$NON-NLS-1$ submenu.add(fileGameOpen); fileGameSave = new JMenuItem(Messages.getString("CommonMenuBar.fileGameSave")); //$NON-NLS-1$ fileGameSave.addActionListener(this); fileGameSave.setActionCommand("fileGameSave"); //$NON-NLS-1$ submenu.add(fileGameSave); submenu.addSeparator(); fileGameScenario = new JMenuItem(Messages.getString("CommonMenuBar.fileGameScenario")); //$NON-NLS-1$ fileGameScenario.addActionListener(this); fileGameScenario.setActionCommand("fileGameScenario"); //$NON-NLS-1$ submenu.add(fileGameScenario); submenu.addSeparator(); fileGameConnectBot = new JMenuItem(Messages.getString("CommonMenuBar.fileGameConnectBot")); //$NON-NLS-1$ fileGameConnectBot.addActionListener(this); fileGameConnectBot.setActionCommand("fileGameConnectBot"); //$NON-NLS-1$ submenu.add(fileGameConnectBot); fileGameConnect = new JMenuItem(Messages.getString("CommonMenuBar.fileGameConnect")); //$NON-NLS-1$ fileGameConnect.addActionListener(this); fileGameConnect.setActionCommand("fileGameConnect"); //$NON-NLS-1$ submenu.add(fileGameConnect); // Create the Board sub-menu. submenu = new JMenu(Messages.getString("CommonMenuBar.BoardMenu")); //$NON-NLS-1$ menu.add(submenu); fileBoardNew = new JMenuItem(Messages.getString("CommonMenuBar.fileBoardNew")); //$NON-NLS-1$ fileBoardNew.addActionListener(this); fileBoardNew.setActionCommand("fileBoardNew"); //$NON-NLS-1$ submenu.add(fileBoardNew); fileBoardOpen = new JMenuItem(Messages.getString("CommonMenuBar.fileBoardOpen")); //$NON-NLS-1$ fileBoardOpen.addActionListener(this); fileBoardOpen.setActionCommand("fileBoardOpen"); //$NON-NLS-1$ submenu.add(fileBoardOpen); fileBoardSave = new JMenuItem(Messages.getString("CommonMenuBar.fileBoardSave")); //$NON-NLS-1$ fileBoardSave.addActionListener(this); fileBoardSave.setActionCommand("fileBoardSave"); //$NON-NLS-1$ submenu.add(fileBoardSave); fileBoardSaveAs = new JMenuItem(Messages.getString("CommonMenuBar.fileBoardSaveAs")); //$NON-NLS-1$ fileBoardSaveAs.addActionListener(this); fileBoardSaveAs.setActionCommand("fileBoardSaveAs"); //$NON-NLS-1$ submenu.add(fileBoardSaveAs); fileBoardSaveAsImage = new JMenuItem(Messages.getString("CommonMenuBar.fileBoardSaveAsImage")); //$NON-NLS-1$ fileBoardSaveAsImage.addActionListener(this); fileBoardSaveAsImage.setActionCommand("fileBoardSaveAsImage"); //$NON-NLS-1$ submenu.add(fileBoardSaveAsImage); // Create the Unit List sub-menu. submenu = new JMenu(Messages.getString("CommonMenuBar.UnitListMenu")); //$NON-NLS-1$ menu.add(submenu); fileUnitsOpen = new JMenuItem(Messages.getString("CommonMenuBar.fileUnitsOpen")); //$NON-NLS-1$ fileUnitsOpen.addActionListener(this); fileUnitsOpen.setActionCommand("fileUnitsOpen"); //$NON-NLS-1$ submenu.add(fileUnitsOpen); fileUnitsClear = new JMenuItem(Messages.getString("CommonMenuBar.fileUnitsClear")); //$NON-NLS-1$ fileUnitsClear.addActionListener(this); fileUnitsClear.setActionCommand("fileUnitsClear"); //$NON-NLS-1$ submenu.add(fileUnitsClear); fileUnitsSave = new JMenuItem(Messages.getString("CommonMenuBar.fileUnitsSave")); //$NON-NLS-1$ fileUnitsSave.addActionListener(this); fileUnitsSave.setActionCommand("fileUnitsSave"); //$NON-NLS-1$ submenu.add(fileUnitsSave); // Finish off the File menu. filePrint = new JMenuItem(Messages.getString("CommonMenuBar.PrintMenu")); //$NON-NLS-1$ filePrint.addActionListener(this); filePrint.setActionCommand("filePrint"); //$NON-NLS-1$ filePrint.setEnabled(false); menu.addSeparator(); menu.add(filePrint); // *** Create the view menu. menu = new JMenu(Messages.getString("CommonMenuBar.ViewMenu")); //$NON-NLS-1$ menu.setMnemonic(KeyEvent.VK_V); add(menu); viewMekDisplay = new JMenuItem(Messages.getString("CommonMenuBar.viewMekDisplay")); //$NON-NLS-1$ viewMekDisplay.addActionListener(this); viewMekDisplay.setActionCommand(ClientGUI.VIEW_MEK_DISPLAY); viewMekDisplay.setMnemonic(KeyEvent.VK_D); viewMekDisplay.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D, getToolkit().getMenuShortcutKeyMask())); menu.add(viewMekDisplay); viewMiniMap = new JMenuItem(Messages.getString("CommonMenuBar.viewMiniMap")); //$NON-NLS-1$ viewMiniMap.addActionListener(this); viewMiniMap.setActionCommand(ClientGUI.VIEW_MINI_MAP); viewMiniMap.setMnemonic(KeyEvent.VK_M); viewMiniMap.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_M, getToolkit().getMenuShortcutKeyMask())); menu.add(viewMiniMap); viewUnitOverview = new JMenuItem(Messages.getString("CommonMenuBar.viewUnitOverview")); //$NON-NLS-1$ viewUnitOverview.addActionListener(this); viewUnitOverview.setActionCommand(ClientGUI.VIEW_UNIT_OVERVIEW); viewUnitOverview.setMnemonic(KeyEvent.VK_U); viewUnitOverview.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U, getToolkit().getMenuShortcutKeyMask())); menu.add(viewUnitOverview); viewZoomIn = new JMenuItem(Messages.getString("CommonMenuBar.viewZoomIn")); //$NON-NLS-1$ viewZoomIn.addActionListener(this); viewZoomIn.setActionCommand(ClientGUI.VIEW_ZOOM_IN); menu.add(viewZoomIn); viewZoomOut = new JMenuItem(Messages.getString("CommonMenuBar.viewZoomOut")); //$NON-NLS-1$ viewZoomOut.addActionListener(this); viewZoomOut.setActionCommand(ClientGUI.VIEW_ZOOM_OUT); menu.add(viewZoomOut); menu.addSeparator(); viewRoundReport = new JMenuItem(Messages.getString("CommonMenuBar.viewRoundReport")); //$NON-NLS-1$ viewRoundReport.addActionListener(this); viewRoundReport.setActionCommand("viewRoundReport"); //$NON-NLS-1$ viewRoundReport.setMnemonic(KeyEvent.VK_R); viewRoundReport.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R, getToolkit().getMenuShortcutKeyMask())); menu.add(viewRoundReport); menu.addSeparator(); viewGameOptions = new JMenuItem(Messages.getString("CommonMenuBar.viewGameOptions")); //$NON-NLS-1$ viewGameOptions.setActionCommand("viewGameOptions"); //$NON-NLS-1$ viewGameOptions.addActionListener(this); menu.add(viewGameOptions); viewClientSettings = new JMenuItem(Messages.getString("CommonMenuBar.viewClientSettings")); //$NON-NLS-1$ viewClientSettings.setActionCommand("viewClientSettings"); //$NON-NLS-1$ viewClientSettings.addActionListener(this); menu.add(viewClientSettings); viewLOSSetting = new JMenuItem(Messages.getString("CommonMenuBar.viewLOSSetting")); //$NON-NLS-1$ viewLOSSetting.addActionListener(this); viewLOSSetting.setActionCommand(ClientGUI.VIEW_LOS_SETTING); viewLOSSetting.setMnemonic(KeyEvent.VK_L); viewLOSSetting.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L, getToolkit().getMenuShortcutKeyMask())); menu.add(viewLOSSetting); menu.addSeparator(); viewPlayerList = new JMenuItem(Messages.getString("CommonMenuBar.viewPlayerList")); //$NON-NLS-1$ viewPlayerList.setActionCommand("viewPlayerList"); //$NON-NLS-1$ viewPlayerList.addActionListener(this); menu.add(viewPlayerList); // *** Create the deployo menu. menu = new JMenu(Messages.getString("CommonMenuBar.DeployMenu")); //$NON-NLS-1$ menu.setMnemonic(KeyEvent.VK_D); add(menu);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -