Package prop.hex.presentacio

Source Code of prop.hex.presentacio.DefineixSituacioVista

package prop.hex.presentacio;

import prop.cluster.domini.models.estats.EstatPartida;
import prop.hex.presentacio.auxiliars.JPanelImatge;
import prop.hex.presentacio.auxiliars.JPanelTauler;
import prop.hex.presentacio.auxiliars.VistaDialeg;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
* Vista de definir una situació inicial d'una partida del joc Hex.
*
* @author Guillermo Girona San Miguel (Grup 7.3, Hex)
*/
public final class DefineixSituacioVista extends BaseVista
{

  // Panells

  /**
   * Panell central de la vista que conté el tauler.
   */
  private JPanelTauler panell_central;

  /**
   * Panell dels botons de la vista.
   */
  private JPanel panell_botons;

  // Botons

  /**
   * Botó d'inicia partida.
   */
  private JButton inicia_partida;

  /**
   * Botó d'abandona partida.
   */
  private JButton abandona;

  /**
   * Constructor que crea una vista passant-li quin és el frame sobre el qual s'haurà de treballar.
   *
   * @param frame_principal Frame principal sobre el que s'hauran d'afegir els diferents components.
   */
  public DefineixSituacioVista( JFrame frame_principal )
  {
    super( frame_principal );

    titol = new JLabel( "jHex" );
    panell_principal = new JPanelImatge( getClass().getResource( "/prop/img/fons_partida.png" ) );
    panell_central = new JPanelTauler( false );
    panell_botons = new JPanel();
    inicia_partida = new JButton( "Inicia la partida" );
    abandona = new JButton( "Abandona la partida" );

    inicialitzaVista();
  }

  @Override
  protected void inicialitzaPanellPrincipal()
  {
    panell_principal.add( panell_central );
    panell_principal.add( panell_botons );
  }

  @Override
  protected void inicialitzaPanellCentral()
  {
    panell_central.setOpaque( false );
  }

  @Override
  protected void inicialitzaPanellPeu()
  {
    panell_botons.setLayout( new FlowLayout( FlowLayout.CENTER, 50, 0 ) );
    JPanel botons = new JPanel();
    botons.add( inicia_partida );
    botons.add( abandona );
    botons.setOpaque( false );
    panell_botons.add( botons );
    panell_botons.add( panell_sortida );
    panell_botons.setOpaque( false );
  }

  protected void inicialitzaPanellSortida()
  {
    panell_sortida.setLayout( new FlowLayout( FlowLayout.CENTER, 10, 0 ) );
    panell_sortida.add( ajuda );
    panell_sortida.add( surt );
    panell_sortida.setOpaque( false );
  }

  @Override
  protected void assignaListeners()
  {
    super.assignaListeners();

    inicia_partida.addActionListener( new ActionListener()
    {

      @Override
      public void actionPerformed( ActionEvent event )
      {
        accioBotoIniciaPartida();
      }
    } );

    abandona.addActionListener( new ActionListener()
    {

      @Override
      public void actionPerformed( ActionEvent event )
      {
        accioBotoAbandona();
      }
    } );
  }

  /**
   * Defineix el comportament del botó d'abandonar partida quan sigui pitjat.
   */
  public void accioBotoAbandona()
  {
    if ( PresentacioCtrl.getInstancia().consultaEstatPartida() == EstatPartida.NO_FINALITZADA )
    {
      VistaDialeg dialeg = new VistaDialeg();

      String[] botons = {
          "Sí",
          "No"
      };

      String valor_seleccionat = dialeg.setDialeg( "Confirmació de sortida de la partida",
          "Estàs segur que vols sortir de la partida?", botons, JOptionPane.QUESTION_MESSAGE );

      if ( "Sí" == valor_seleccionat )
      {
        PresentacioCtrl.getInstancia().vistaDefineixSituacioAMenuPrincipal();
      }
    }
    else
    {
      PresentacioCtrl.getInstancia().vistaDefineixSituacioAMenuPrincipal();
    }
  }

  /**
   * Defineix el comportament del botó d'iniciar partida quan sigui pitjat.
   */
  public void accioBotoIniciaPartida()
  {
    PresentacioCtrl.getInstancia().vistaDefineixSituacioAPartida();
  }

  /**
   * Mostra un diàleg al finalitzar la partida amb les dades de la mateixa. Realitza la finalització de la partida.
   */
  public void mostraDialegVictoria( String missatge )
  {
    VistaDialeg dialeg = new VistaDialeg();
    String[] botons = { "Torna al menú principal" };
    dialeg.setDialeg( "Partida finalitzada", missatge, botons, JOptionPane.INFORMATION_MESSAGE );

    try
    {
      PresentacioCtrl.getInstancia().finalitzaPartida();
      PresentacioCtrl.getInstancia().vistaDefineixSituacioAMenuPrincipal();
    }
    catch ( Exception excepcio )
    {
      VistaDialeg dialeg_error = new VistaDialeg();
      String[] botons_error = { "Accepta" };
      dialeg_error.setDialeg( "Error", excepcio.getMessage(), botons_error, JOptionPane.WARNING_MESSAGE );
    }
  }
}
TOP

Related Classes of prop.hex.presentacio.DefineixSituacioVista

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.