📄 minesweepermenu.java
字号:
package cn.pandaoen.game.minesweeper.actions;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
import java.util.Locale;
import cn.pandaoen.game.minesweeper.C11N;
import cn.pandaoen.game.minesweeper.MineSweeper;
import cn.pandaoen.game.minesweeper.res.Resources;
/**
* The instance of this class creates all menus.
* @author pan
*/
public class MineSweeperMenu {
MenuItem gameItem;
MenuItem newItem;
MenuItem[] modeItems = new MenuItem[4];
MenuItem soundItem;
MenuItem langItem;
MenuItem[] langItems;
MenuItem bestTimeItem;
MenuItem exitItem;
MenuItem helpItem;
MenuItem contentItem;
MenuItem aboutItem;
MineSweeper mineSweeper;
Shell shell;
public MineSweeperMenu(MineSweeper mineSweeper) {
this.mineSweeper = mineSweeper;
this.shell = mineSweeper.getShell();
Menu menuBar = new Menu(shell, SWT.BAR);
createMenus(menuBar);
shell.setMenuBar(menuBar);
addListeners();
}
void createMenus(Menu menuBar) {
Resources res = Resources.res;
C11N c11n = C11N.c11n;
gameItem = new MenuItem(menuBar, SWT.CASCADE);
gameItem.setText(res.getString("Game")); //$NON-NLS-1$
Menu gameMenu = new Menu(shell, SWT.DROP_DOWN);
gameItem.setMenu(gameMenu);
newItem = new MenuItem(gameMenu, SWT.PUSH);
newItem.setText(res.getString("New")); //$NON-NLS-1$
newItem.setAccelerator(SWT.F2);
new MenuItem(gameMenu, SWT.SEPARATOR);
modeItems[0] = new MenuItem(gameMenu, SWT.RADIO);
modeItems[0].setText(res.getString("Beginner")); //$NON-NLS-1$
modeItems[1] = new MenuItem(gameMenu, SWT.RADIO);
modeItems[1].setText(res.getString("Intermediate")); //$NON-NLS-1$
modeItems[2] = new MenuItem(gameMenu, SWT.RADIO);
modeItems[2].setText(res.getString("Expert")); //$NON-NLS-1$
modeItems[3] = new MenuItem(gameMenu, SWT.RADIO);
modeItems[3].setText(res.getString("Custom")); //$NON-NLS-1$
modeItems[c11n.getMode()].setSelection(true);
new MenuItem(gameMenu, SWT.SEPARATOR);
soundItem = new MenuItem(gameMenu, SWT.CHECK);
soundItem.setText(res.getString("Sound")); //$NON-NLS-1$
soundItem.setSelection(c11n.getSound());
langItem = new MenuItem(gameMenu, SWT.CASCADE);
langItem.setText(res.getString("Language")); //$NON-NLS-1$
Menu langMenu = new Menu(shell, SWT.DROP_DOWN);
langItem.setMenu(langMenu);
createLanguageMenu(langMenu);
new MenuItem(gameMenu, SWT.SEPARATOR);
bestTimeItem = new MenuItem(gameMenu, SWT.PUSH);
bestTimeItem.setText(res.getString("BestTime")); //$NON-NLS-1$
new MenuItem(gameMenu, SWT.SEPARATOR);
exitItem = new MenuItem(gameMenu, SWT.PUSH);
exitItem.setText(res.getString("Exit")); //$NON-NLS-1$
helpItem = new MenuItem(menuBar, SWT.CASCADE);
helpItem.setText(res.getString("Help")); //$NON-NLS-1$
Menu helpMenu = new Menu(shell, SWT.DROP_DOWN);
helpItem.setMenu(helpMenu);
contentItem = new MenuItem(helpMenu, SWT.PUSH);
contentItem.setText(res.getString("Content")); //$NON-NLS-1$
contentItem.setAccelerator(SWT.F1);
contentItem.setImage(res.getImage("help.gif")); //$NON-NLS-1$
new MenuItem(helpMenu, SWT.SEPARATOR);
aboutItem = new MenuItem(helpMenu, SWT.PUSH);
aboutItem.setText(res.getString("About")); //$NON-NLS-1$
aboutItem.setImage(res.getImage("about.gif")); //$NON-NLS-1$
}
void createLanguageMenu(Menu langMenu) {
Image cn = Resources.res.getImage("chinese.gif"); //$NON-NLS-1$
Image en = Resources.res.getImage("english.gif"); //$NON-NLS-1$
Image de = Resources.res.getImage("german.gif"); //$NON-NLS-1$
Locale[] locales = Resources.res.getLocales();
langItems = new MenuItem[locales.length];
Locale selected = C11N.c11n.getLocale();
for (int i = 0; i < langItems.length; i++) {
langItems[i] = new MenuItem(langMenu, SWT.RADIO);
langItems[i].setText(locales[i].getDisplayName());
langItems[i].setData(locales[i]);
if (locales[i] == Locale.ENGLISH)
langItems[i].setImage(en);
else if (locales[i] == Locale.CHINESE)
langItems[i].setImage(cn);
else if (locales[i] == Locale.GERMAN)
langItems[i].setImage(de);
if (locales[i] == selected)
langItems[i].setSelection(true);
}
}
void addListeners() {
MineSweeperListener mineSweeperListener = new MineSweeperListener(this);
newItem.addListener(SWT.Selection, mineSweeperListener);
bestTimeItem.addListener(SWT.Selection, mineSweeperListener);
exitItem.addListener(SWT.Selection, mineSweeperListener);
contentItem.addListener(SWT.Selection, mineSweeperListener);
aboutItem.addListener(SWT.Selection, mineSweeperListener);
ModeChangeListener modeChangeListener = new ModeChangeListener(this);
for (int i = 0; i < modeItems.length; i++) {
modeItems[i].addSelectionListener(modeChangeListener);
modeItems[i].setData(new Integer(i));
}
LangChangeListener langChangeListener = new LangChangeListener(this);
for (int i = 0; i < langItems.length; i++) {
langItems[i].addSelectionListener(langChangeListener);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -