Package hexenschach.gui

Source Code of hexenschach.gui.MainMenu

package hexenschach.gui;
import javax.swing.JPanel;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import hexenschach.gui.event.GameEvent;
import hexenschach.gui.event.GameListener;
import hexenschach.gui.help.HelpWindow;
import hexenschach.gui.resources.Images;

/**
* JPanel, dass die obere Menue-Leiste darstellt.
* @author Tobias Marquardt
*/
class MainMenu extends JPanel implements GUIContainer, GameListener {
  private static final long serialVersionUID = -3728670435567372195L;
  private GUI gui;
  // Größe des Panels
  static final int xSize = 1008;
  static final int ySize = 50;
  // Abstand der Buttons zum Rand bzw. zu anderen Buttons
  static final int horizontalGap = 4;
  static final int verticalGap = 2;
  private FlowLayout layout;
  // Buttons
  private MainMenuButton newGameButton;
  private MainMenuButton saveButton;
  private MainMenuButton loadButton;
  private MainMenuButton helpButton;
  // Dialoge
  private NewGameDialog newGameDialog;
  private SaveDialog saveDialog;
  private LoadDialog loadDialog;
 
  /**
   * @param gui GUI, zu dem das Panel gehört.
   */
  MainMenu(GUI gui) {
    this.gui = gui;
    initLayout();
    initComponents();
    initListener();
    initContainerProperties();
  }
  public void initLayout() {
    layout = new FlowLayout();
    layout.setVgap(verticalGap);
    layout.setHgap(horizontalGap);
    setLayout(layout);
  }
  public void initComponents() {
    // Buttons erzeugen
    newGameButton = new MainMenuButton(Dictionary.NewGameToolTipp, Images.getNewGameButtonDefaultImage(), Images.getNewGameButtonRolloverImage(), Images.getNewGameButtonPressedImage(), Images.getNewGameButtonDisabledImage());
    saveButton = new MainMenuButton(Dictionary.SaveToolTipp, Images.getSaveButtonDefaultImage(), Images.getSaveButtonRolloverImage(), Images.getSaveButtonPressedImage(), Images.getSaveButtonDisabledImage());
    loadButton = new MainMenuButton(Dictionary.LoadToolTipp, Images.getLoadButtonDefaultImage(), Images.getLoadButtonRolloverImage(), Images.getLoadButtonPressedImage(), Images.getLoadButtonDisabledImage());
    helpButton = new MainMenuButton(Dictionary.HelpToolTipp, Images.getHelpButtonDefaultImage(), Images.getHelpButtonRolloverImage(), Images.getHelpButtonPressedImage(), Images.getHelpButtonDisabledImage());
    // Wenn noch kein Spiel gestartet ist, deaktiviere den Speichern-Button
    saveButton.setEnabled(false);
    // Wenn es keine gespeicherten Spielstände gibt, deaktiviere den Laden-Button
    if(gui.getPersistence().getSaveGames().isEmpty())
      loadButton.setEnabled(false);
    // Buttons hinzufuegen
    add(newGameButton);
    add(saveButton);
    add(loadButton);
    add(helpButton);
  }
  public void initContainerProperties() {
    setOpaque(false); //Paneltransparenz
    setBorder(null);
    setPreferredSize(new Dimension(xSize, ySize));
  }
  /**
   * Fügt sicht selbst als dem GUI als GameListener hinzu
   * und fügt den Buttons ActionListener in Form
   * innerer anonymer Klassen hinzu.
   */
  private void initListener() {
    gui.addGameListener(this);
    newGameButton.addActionListener(
        new ActionListener() {
          @Override
          public void actionPerformed(ActionEvent e) {
            newGameButtonClicked();
          }
        }
      );
    saveButton.addActionListener(
        new ActionListener() {
          @Override
          public void actionPerformed(ActionEvent e) {
            saveButtonClicked();
          }
        }
      );
    loadButton.addActionListener(
        new ActionListener() {
          @Override
          public void actionPerformed(ActionEvent e) {
            loadButtonClicked();
          }
        }
      );
    helpButton.addActionListener(
        new ActionListener() {
          @Override
          public void actionPerformed(ActionEvent e) {
            helpButtonClicked();
          }
        }
      );
  }
// Für jeden Button gibt es hier eine Clicked-Methode, die vom jeweiligen ActionListener aufgerufen wird.
// Dient vorallem der Übersichtlichkeit.
  /**
   * Aktion beim Klick auf den Neues-Spiel-Button.
   */
  private void newGameButtonClicked() {   
    newGameDialog = new NewGameDialog(gui);
    newGameDialog.setVisible(true);
  }
  /**
   * Aktion beim Klick auf den Speichern-Button.
   */
  private void saveButtonClicked() {
    saveDialog = new SaveDialog(gui);
    saveDialog.setVisible(true);
  }
  /**
   * Aktion beim Klick auf den Laden-Button.
   */
  private void loadButtonClicked() {
    loadDialog = new LoadDialog(gui);
    loadDialog.setVisible(true);
  }
  /**
   * Aktion beim Klick auf den Hilfe-Button.
   */
  private void helpButtonClicked() {
    // bj add
    new HelpWindow().show();
  }
  @Override
  public void gameStarted(GameEvent e) {
    // Wenn ein Spiel gestartet wurde, wird der Speichern-Button aktiviert.
    saveButton.setEnabled(true);
  }
  @Override
  public void gameFinished(GameEvent e) {
    saveButton.setEnabled(false)
  }
  @Override
  public void gameSaved(GameEvent e) {
    // Wenn ein Spiel gespeichert wurde und somit mindestens ein Spielstand existiert, aktiviere den Laden-Button
    loadButton.setEnabled(true);
  }
}
TOP

Related Classes of hexenschach.gui.MainMenu

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.