Package prop.hex.presentacio

Source Code of prop.hex.presentacio.IniciaSessioVista

package prop.hex.presentacio;

import prop.hex.presentacio.auxiliars.JPanelImatge;
import prop.hex.presentacio.auxiliars.VistaDialeg;

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

/**
* Vista d'iniciar sessió del joc Hex.
*
* @author Guillermo Girona San Miguel (Grup 7.3, Hex)
*/
public final class IniciaSessioVista extends BaseVista
{

  // Panells

  /**
   * Panell central de la vista. Conté les dades de l'usuari.
   */
  private JPanel panell_dades;

  /**
   * Panell que conté els botons de la vista.
   */
  private JPanel panell_botons;

  // Botons

  /**
   * Botó d'accepta.
   */
  private JButton accepta;

  /**
   * Botó de registra't.
   */
  private JButton registra;

  /**
   * Botó d'entra com a convidat.
   */
  private JButton convidat;

  // Camps de tipus text/contrasenya

  /**
   * Camp de text del nom d'usuari.
   */
  private JTextField usuari;

  /**
   * Camp de la contrasenya.
   */
  private JPasswordField contrasenya;

  // Etiquetes de text

  /**
   * Etiqueta de nom d'usuari.
   */
  private JLabel text_usuari;

  /**
   * Etiqueta de contrasenya.
   */
  private JLabel text_contrasenya;

  /**
   * 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 IniciaSessioVista( JFrame frame_principal )
  {
    super( frame_principal );

    titol = new JLabel( "Inicia sessió" );
    panell_dades = new JPanelImatge( getClass().getResource( "/prop/img/caixa.png" ) );
    panell_botons = new JPanel();
    accepta = new JButton( "Accepta" );
    registra = new JButton( "Registra't" );
    convidat = new JButton( "Entra com a convidat" );
    usuari = new JTextField();
    contrasenya = new JPasswordField();
    text_usuari = new JLabel( "Nom d'usuari:" );
    text_contrasenya = new JLabel( "Contrasenya:" );

    inicialitzaVista();
  }

  @Override
  protected void inicialitzaPanellPrincipal()
  {
    panell_principal.setLayout( new GridBagLayout() );
    panell_principal.setBorder( BorderFactory.createEmptyBorder( 10, 10, 10, 10 ) );
    GridBagConstraints propietats_panel = new GridBagConstraints();
    propietats_panel.fill = GridBagConstraints.HORIZONTAL;
    propietats_panel.anchor = GridBagConstraints.CENTER;
    propietats_panel.gridx = 1;
    propietats_panel.gridy = 0;
    propietats_panel.weightx = 0.5;
    propietats_panel.weighty = 0.1;
    panell_principal.add( panell_titol, propietats_panel );
    propietats_panel.gridx = 1;
    propietats_panel.gridy = 1;
    propietats_panel.weighty = 0.5;
    panell_principal.add( panell_dades, propietats_panel );
    propietats_panel.gridx = 1;
    propietats_panel.gridy = 2;
    propietats_panel.weighty = 0.4;
    panell_principal.add( panell_botons, propietats_panel );
    propietats_panel.fill = GridBagConstraints.NONE;
    propietats_panel.gridx = 2;
    propietats_panel.gridy = 2;
    propietats_panel.weightx = 0.25;
    propietats_panel.weighty = 0.1;
    propietats_panel.anchor = GridBagConstraints.SOUTHEAST;
    panell_principal.add( panell_sortida, propietats_panel );
    propietats_panel.gridx = 0;
    propietats_panel.gridy = 2;
    propietats_panel.weightx = 0.25;
    propietats_panel.anchor = GridBagConstraints.SOUTHWEST;
    panell_principal.add( Box.createHorizontalStrut( 65 ), propietats_panel );
  }

  @Override
  protected void inicialitzaPanellCentral()
  {
    panell_dades.setBorder( BorderFactory.createRaisedBevelBorder() );
    panell_dades.setLayout( new BoxLayout( panell_dades, BoxLayout.PAGE_AXIS ) );
    JPanel panell_camps = new JPanel();
    panell_camps.setLayout( new GridLayout( 2, 2, 10, 10 ) );
    panell_camps.add( text_usuari );
    panell_camps.add( usuari );
    panell_camps.add( text_contrasenya );
    panell_camps.add( contrasenya );
    panell_camps.setBorder( BorderFactory.createEmptyBorder( 10, 10, 10, 10 ) );
    panell_camps.setOpaque( false );
    panell_dades.add( panell_camps );
    accepta.setAlignmentX( Component.CENTER_ALIGNMENT );
    panell_dades.add( accepta );
    panell_dades.add( Box.createVerticalStrut( 10 ) );
  }

  @Override
  protected void inicialitzaPanellPeu()
  {
    panell_botons.setLayout( new BoxLayout( panell_botons, BoxLayout.PAGE_AXIS ) );
    registra.setAlignmentX( Component.CENTER_ALIGNMENT );
    panell_botons.add( registra );
    panell_botons.add( Box.createVerticalStrut( 10 ) );
    convidat.setAlignmentX( Component.CENTER_ALIGNMENT );
    panell_botons.add( convidat );
    panell_botons.setOpaque( false );
  }

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

    accepta.addActionListener( new ActionListener()
    {

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

    convidat.addActionListener( new ActionListener()
    {

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

    registra.addActionListener( new ActionListener()
    {

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

  /**
   * Defineix el comportament del botó d'acceptar quan sigui pitjat.
   */
  public void accioBotoAccepta()
  {
    try
    {
      PresentacioCtrl.getInstancia().setUsuariActual( usuari.getText(), new String( contrasenya.getPassword() ) );
      PresentacioCtrl.getInstancia().vistaIniciaSessioAMenuPrincipal();
    }
    catch ( IllegalArgumentException excepcio )
    {
      VistaDialeg dialeg = new VistaDialeg();
      String[] botons = { "Accepta" };
      String valor_seleccionat = dialeg.setDialeg( "Error", "Nom d'usuari o contrasenya incorrectes.", botons,
          JOptionPane.WARNING_MESSAGE );
    }
    catch ( Exception excepcio )
    {
      VistaDialeg dialeg = new VistaDialeg();
      String[] botons = { "Accepta" };
      String valor_seleccionat =
          dialeg.setDialeg( "Error", "Error inesperat.", botons, JOptionPane.ERROR_MESSAGE );
    }
  }

  /**
   * Defineix el comportament del botó d'entrar com a convidat quan sigui pitjat.
   */
  public void accioBotoConvidat()
  {
    try
    {
      PresentacioCtrl.getInstancia().entraConvidat();
      PresentacioCtrl.getInstancia().vistaIniciaSessioAMenuPrincipal();
    }
    catch ( IllegalArgumentException excepcio )
    {
      VistaDialeg dialeg = new VistaDialeg();
      String[] botons = { "Accepta" };
      String valor_seleccionat = dialeg.setDialeg( "Error", "Nom d'usuari o contrasenya incorrectes.", botons,
          JOptionPane.WARNING_MESSAGE );
    }
    catch ( Exception excepcio )
    {
      VistaDialeg dialeg = new VistaDialeg();
      String[] botons = { "Accepta" };
      String valor_seleccionat =
          dialeg.setDialeg( "Error", "Error inesperat.", botons, JOptionPane.ERROR_MESSAGE );
    }
  }

  /**
   * Defineix el comportament del botó de registrar-se quan sigui pitjat.
   */
  public void accioBotoRegistra()
  {
    PresentacioCtrl.getInstancia().vistaIniciaSessioARegistra();
  }
}
TOP

Related Classes of prop.hex.presentacio.IniciaSessioVista

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.