MainMenuView.java
package org.microcol.gui;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.KeyStroke;
import org.microcol.gui.Text.Language;
import com.google.common.base.Preconditions;
import com.google.inject.Inject;
public class MainMenuView extends JMenuBar implements MainMenuPresenter.Display {
/**
* Default serialVersionUID.
*/
private static final long serialVersionUID = 1L;
private final Text text;
private final JMenu menuGame;
private final JMenuItem menuItemNewGame;
private final JMenuItem menuItemSameGame;
private final JMenuItem menuItemLoadGame;
private final JMenuItem menuItemQuitGame;
private final JMenuItem menuItemAbout;
private final JMenu menuView;
private final JMenuItem menuItemCenterView;
private final JMenu menuUnit;
private final JMenuItem menuItemMove;
private final JMenu menuPrefereces;
private final JMenu menuLanguage;
private final JRadioButtonMenuItem rbMenuItemlanguageEn;
private final JRadioButtonMenuItem rbMenuItemlanguageCz;
private final JMenuItem menuItemVolume;
private final JCheckBoxMenuItem menuItemShowGrid;
private final JMenu menuHelp;
@Inject
public MainMenuView(final GamePreferences gamePreferences, final Text text) {
this.text = Preconditions.checkNotNull(text);
menuGame = new JMenu();
menuItemNewGame = new JMenuItem();
menuItemNewGame.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK));
menuItemNewGame.setEnabled(true);
menuGame.add(menuItemNewGame);
menuItemSameGame = new JMenuItem();
menuItemSameGame.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));
menuItemSameGame.setEnabled(false);
menuGame.add(menuItemSameGame);
menuItemLoadGame = new JMenuItem();
menuItemLoadGame.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L, InputEvent.CTRL_MASK));
menuItemLoadGame.setEnabled(false);
menuGame.add(menuItemLoadGame);
menuItemQuitGame = new JMenuItem();
menuItemQuitGame.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, InputEvent.CTRL_MASK));
if (!gamePreferences.isOSX()) {
menuGame.add(menuItemQuitGame);
}
add(menuGame);
/**
* Menu view
*
*/
menuView = new JMenu();
menuItemCenterView = new JMenuItem();
menuItemCenterView.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, 0));
menuItemCenterView.setEnabled(false);
menuView.add(menuItemCenterView);
add(menuView);
/**
* Menu unit
*
*/
menuUnit = new JMenu();
menuItemMove = new JMenuItem();
menuItemMove.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_M, 0));
menuItemMove.setEnabled(false);
menuUnit.add(menuItemMove);
add(menuUnit);
/**
* Preferences
*
*/
menuPrefereces = new JMenu();
rbMenuItemlanguageEn = new JRadioButtonMenuItem();
rbMenuItemlanguageEn.setSelected(gamePreferences.getLanguage().equals(Language.en));
rbMenuItemlanguageCz = new JRadioButtonMenuItem();
rbMenuItemlanguageCz.setSelected(gamePreferences.getLanguage().equals(Language.cz));
final ButtonGroup groupLanguage = new ButtonGroup();
groupLanguage.add(rbMenuItemlanguageEn);
groupLanguage.add(rbMenuItemlanguageCz);
menuLanguage = new JMenu();
menuLanguage.add(rbMenuItemlanguageEn);
menuLanguage.add(rbMenuItemlanguageCz);
menuPrefereces.add(menuLanguage);
menuItemVolume = new JMenuItem();
menuItemVolume.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK));
menuPrefereces.add(menuItemVolume);
menuItemShowGrid = new JCheckBoxMenuItem();
menuItemShowGrid.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, 0));
menuItemShowGrid.setSelected(gamePreferences.isGridShown());
menuPrefereces.add(menuItemShowGrid);
add(menuPrefereces);
/**
* Help
*/
menuHelp = new JMenu();
menuItemAbout = new JMenuItem();
menuHelp.add(menuItemAbout);
if (!gamePreferences.isOSX()) {
add(menuHelp);
}
updateLanguage();
}
@Override
public void updateLanguage() {
/**
* Game
*/
menuGame.setText(text.get("mainMenu.game"));
menuItemNewGame.setText(text.get("mainMenu.game.newGame"));
menuItemSameGame.setText(text.get("mainMenu.game.saveGame"));
menuItemLoadGame.setText(text.get("mainMenu.game.loadGame"));
menuItemQuitGame.setText(text.get("mainMenu.game.quitGame"));
/**
* View
*/
menuView.setText(text.get("mainMenu.view"));
menuItemCenterView.setText(text.get("mainMenu.view.center"));
/**
* Unit
*/
menuUnit.setText(text.get("mainMenu.unit"));
menuItemMove.setText(text.get("mainMenu.unit.move"));
/**
* Preferences
*/
menuPrefereces.setText(text.get("mainMenu.preferences"));
menuLanguage.setText(text.get("mainMenu.preferences.language"));
rbMenuItemlanguageEn.setText(text.get("mainMenu.preferences.language.en"));
rbMenuItemlanguageCz.setText(text.get("mainMenu.preferences.language.cz"));
menuItemVolume.setText(text.get("mainMenu.preferences.volume"));
menuItemShowGrid.setText(text.get("mainMenu.preferences.showGrid"));
/**
* Help & About
*/
menuHelp.setText(text.get("mainMenu.help"));
menuItemAbout.setText(text.get("mainMenu.help.about"));
}
@Override
public JMenuItem getMenuItemNewGame() {
return menuItemNewGame;
}
@Override
public JMenuItem getMenuItemQuitGame() {
return menuItemQuitGame;
}
@Override
public JMenuItem getMenuItemSameGame() {
return menuItemSameGame;
}
@Override
public JMenuItem getMenuItemLoadGame() {
return menuItemLoadGame;
}
@Override
public JMenuItem getMenuItemAbout() {
return menuItemAbout;
}
@Override
public JRadioButtonMenuItem getRbMenuItemlanguageEn() {
return rbMenuItemlanguageEn;
}
@Override
public JRadioButtonMenuItem getRbMenuItemlanguageCz() {
return rbMenuItemlanguageCz;
}
@Override
public JMenuItem getMenuItemVolume() {
return menuItemVolume;
}
@Override
public JCheckBoxMenuItem getMenuItemShowGrid() {
return menuItemShowGrid;
}
@Override
public JMenuItem getMenuItemMove() {
return menuItemMove;
}
@Override
public JMenuItem getMenuItemCenterView() {
return menuItemCenterView;
}
}