MainMenuView.java

  1. package org.microcol.gui;

  2. import java.awt.event.InputEvent;
  3. import java.awt.event.KeyEvent;

  4. import javax.swing.ButtonGroup;
  5. import javax.swing.JCheckBoxMenuItem;
  6. import javax.swing.JMenu;
  7. import javax.swing.JMenuBar;
  8. import javax.swing.JMenuItem;
  9. import javax.swing.JRadioButtonMenuItem;
  10. import javax.swing.KeyStroke;

  11. import org.microcol.gui.Text.Language;

  12. import com.google.common.base.Preconditions;
  13. import com.google.inject.Inject;

  14. public class MainMenuView extends JMenuBar implements MainMenuPresenter.Display {

  15.     /**
  16.      * Default serialVersionUID.
  17.      */
  18.     private static final long serialVersionUID = 1L;

  19.     private final Text text;

  20.     private final JMenu menuGame;

  21.     private final JMenuItem menuItemNewGame;

  22.     private final JMenuItem menuItemSameGame;

  23.     private final JMenuItem menuItemLoadGame;

  24.     private final JMenuItem menuItemQuitGame;

  25.     private final JMenuItem menuItemAbout;

  26.     private final JMenu menuView;

  27.     private final JMenuItem menuItemCenterView;

  28.     private final JMenu menuUnit;

  29.     private final JMenuItem menuItemMove;

  30.     private final JMenu menuPrefereces;

  31.     private final JMenu menuLanguage;

  32.     private final JRadioButtonMenuItem rbMenuItemlanguageEn;

  33.     private final JRadioButtonMenuItem rbMenuItemlanguageCz;

  34.     private final JMenuItem menuItemVolume;

  35.     private final JCheckBoxMenuItem menuItemShowGrid;

  36.     private final JMenu menuHelp;

  37.     @Inject
  38.     public MainMenuView(final GamePreferences gamePreferences, final Text text) {
  39.         this.text = Preconditions.checkNotNull(text);
  40.         menuGame = new JMenu();

  41.         menuItemNewGame = new JMenuItem();
  42.         menuItemNewGame.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK));
  43.         menuItemNewGame.setEnabled(true);
  44.         menuGame.add(menuItemNewGame);

  45.         menuItemSameGame = new JMenuItem();
  46.         menuItemSameGame.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));
  47.         menuItemSameGame.setEnabled(false);
  48.         menuGame.add(menuItemSameGame);

  49.         menuItemLoadGame = new JMenuItem();
  50.         menuItemLoadGame.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L, InputEvent.CTRL_MASK));
  51.         menuItemLoadGame.setEnabled(false);
  52.         menuGame.add(menuItemLoadGame);

  53.         menuItemQuitGame = new JMenuItem();
  54.         menuItemQuitGame.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, InputEvent.CTRL_MASK));
  55.         if (!gamePreferences.isOSX()) {
  56.             menuGame.add(menuItemQuitGame);
  57.         }
  58.         add(menuGame);
  59.        
  60.         /**
  61.          * Menu view
  62.          *
  63.          */
  64.         menuView = new JMenu();
  65.         menuItemCenterView = new JMenuItem();
  66.         menuItemCenterView.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, 0));
  67.         menuItemCenterView.setEnabled(false);
  68.         menuView.add(menuItemCenterView);
  69.         add(menuView);

  70.         /**
  71.          * Menu unit
  72.          *
  73.          */
  74.         menuUnit = new JMenu();
  75.         menuItemMove = new JMenuItem();
  76.         menuItemMove.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_M, 0));
  77.         menuItemMove.setEnabled(false);
  78.         menuUnit.add(menuItemMove);
  79.         add(menuUnit);

  80.         /**
  81.          * Preferences
  82.          *
  83.          */
  84.         menuPrefereces = new JMenu();
  85.         rbMenuItemlanguageEn = new JRadioButtonMenuItem();
  86.         rbMenuItemlanguageEn.setSelected(gamePreferences.getLanguage().equals(Language.en));
  87.         rbMenuItemlanguageCz = new JRadioButtonMenuItem();
  88.         rbMenuItemlanguageCz.setSelected(gamePreferences.getLanguage().equals(Language.cz));
  89.         final ButtonGroup groupLanguage = new ButtonGroup();
  90.         groupLanguage.add(rbMenuItemlanguageEn);
  91.         groupLanguage.add(rbMenuItemlanguageCz);
  92.         menuLanguage = new JMenu();
  93.         menuLanguage.add(rbMenuItemlanguageEn);
  94.         menuLanguage.add(rbMenuItemlanguageCz);
  95.         menuPrefereces.add(menuLanguage);

  96.         menuItemVolume = new JMenuItem();
  97.         menuItemVolume.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK));
  98.         menuPrefereces.add(menuItemVolume);

  99.         menuItemShowGrid = new JCheckBoxMenuItem();
  100.         menuItemShowGrid.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, 0));
  101.         menuItemShowGrid.setSelected(gamePreferences.isGridShown());
  102.         menuPrefereces.add(menuItemShowGrid);

  103.         add(menuPrefereces);

  104.         /**
  105.          * Help
  106.          */
  107.         menuHelp = new JMenu();
  108.         menuItemAbout = new JMenuItem();
  109.         menuHelp.add(menuItemAbout);

  110.         if (!gamePreferences.isOSX()) {
  111.             add(menuHelp);
  112.         }
  113.         updateLanguage();
  114.     }

  115.     @Override
  116.     public void updateLanguage() {
  117.         /**
  118.          * Game
  119.          */
  120.         menuGame.setText(text.get("mainMenu.game"));
  121.         menuItemNewGame.setText(text.get("mainMenu.game.newGame"));
  122.         menuItemSameGame.setText(text.get("mainMenu.game.saveGame"));
  123.         menuItemLoadGame.setText(text.get("mainMenu.game.loadGame"));
  124.         menuItemQuitGame.setText(text.get("mainMenu.game.quitGame"));

  125.         /**
  126.          * View
  127.          */
  128.         menuView.setText(text.get("mainMenu.view"));
  129.         menuItemCenterView.setText(text.get("mainMenu.view.center"));

  130.         /**
  131.          * Unit
  132.          */
  133.         menuUnit.setText(text.get("mainMenu.unit"));
  134.         menuItemMove.setText(text.get("mainMenu.unit.move"));

  135.         /**
  136.          * Preferences
  137.          */
  138.         menuPrefereces.setText(text.get("mainMenu.preferences"));
  139.         menuLanguage.setText(text.get("mainMenu.preferences.language"));
  140.         rbMenuItemlanguageEn.setText(text.get("mainMenu.preferences.language.en"));
  141.         rbMenuItemlanguageCz.setText(text.get("mainMenu.preferences.language.cz"));
  142.         menuItemVolume.setText(text.get("mainMenu.preferences.volume"));
  143.         menuItemShowGrid.setText(text.get("mainMenu.preferences.showGrid"));

  144.         /**
  145.          * Help & About
  146.          */
  147.         menuHelp.setText(text.get("mainMenu.help"));
  148.         menuItemAbout.setText(text.get("mainMenu.help.about"));
  149.     }

  150.     @Override
  151.     public JMenuItem getMenuItemNewGame() {
  152.         return menuItemNewGame;
  153.     }

  154.     @Override
  155.     public JMenuItem getMenuItemQuitGame() {
  156.         return menuItemQuitGame;
  157.     }

  158.     @Override
  159.     public JMenuItem getMenuItemSameGame() {
  160.         return menuItemSameGame;
  161.     }

  162.     @Override
  163.     public JMenuItem getMenuItemLoadGame() {
  164.         return menuItemLoadGame;
  165.     }

  166.     @Override
  167.     public JMenuItem getMenuItemAbout() {
  168.         return menuItemAbout;
  169.     }

  170.     @Override
  171.     public JRadioButtonMenuItem getRbMenuItemlanguageEn() {
  172.         return rbMenuItemlanguageEn;
  173.     }

  174.     @Override
  175.     public JRadioButtonMenuItem getRbMenuItemlanguageCz() {
  176.         return rbMenuItemlanguageCz;
  177.     }

  178.     @Override
  179.     public JMenuItem getMenuItemVolume() {
  180.         return menuItemVolume;
  181.     }

  182.     @Override
  183.     public JCheckBoxMenuItem getMenuItemShowGrid() {
  184.         return menuItemShowGrid;
  185.     }

  186.     @Override
  187.     public JMenuItem getMenuItemMove() {
  188.         return menuItemMove;
  189.     }

  190.     @Override
  191.     public JMenuItem getMenuItemCenterView() {
  192.         return menuItemCenterView;
  193.     }
  194. }