package com.rzg.zombieland.cliente.interfaz;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.SystemColor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import org.jdeferred.DoneCallback;
import com.rzg.zombieland.cliente.comunicacion.ServicioCliente;
import com.rzg.zombieland.cliente.comunicacion.peticion.PeticionInicioSesion;
import com.rzg.zombieland.cliente.meta.Estado;
import com.rzg.zombieland.cliente.misc.RutaImagen;
import com.rzg.zombieland.comunes.comunicacion.pojo.POJOInicioSesion;
import com.rzg.zombieland.comunes.comunicacion.respuesta.RespuestaGenerica;
import com.rzg.zombieland.comunes.misc.ParametrosNoValidosException;
import com.rzg.zombieland.comunes.misc.ZombielandException;
/**
* Interfaz completa de inicio de sesi�n.
*
* @author Manuel
*/
public class InterfazInicioSesion extends JPanel {
private static final long serialVersionUID = 1L;
private JTextField fieldUsuario;
private JPasswordField fieldPassword;
private InterfazRecuperaContrasenia recupera;
/**
* Create the application.
*/
public InterfazInicioSesion() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
setLayout(null);
JLabel lblUsuario = new JLabel("Usuario:");
lblUsuario.setFont(new Font("Tahoma", Font.PLAIN, 18));
lblUsuario.setBounds(251, 192, 92, 42);
add(lblUsuario);
JLabel lblPassword = new JLabel("Password:");
lblPassword.setFont(new Font("Tahoma", Font.PLAIN, 18));
lblPassword.setBounds(251, 246, 110, 17);
add(lblPassword);
JButton btnIngresar = new JButton("Ingresar");
btnIngresar.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
login();
}
});
btnIngresar.setBounds(184, 292, 175, 40);
add(btnIngresar);
fieldUsuario = new JTextField();
fieldUsuario.setFont(new Font("Tahoma", Font.PLAIN, 18));
fieldUsuario.setBounds(389, 203, 139, 20);
add(fieldUsuario);
fieldUsuario.setColumns(10);
fieldPassword = new JPasswordField();
fieldPassword.setFont(new Font("Tahoma", Font.PLAIN, 18));
fieldPassword.setBounds(389, 244, 139, 20);
add(fieldPassword);
JLabel lblNewLabel = new JLabel("");
lblNewLabel.setIcon(new ImageIcon(RutaImagen
.get("imagenes/zombieland.png")));
lblNewLabel.setBounds(325, 11, 159, 179);
add(lblNewLabel);
JLabel lblMsg = new JLabel("No tenes un usuario?");
lblMsg.setFont(new Font("Tahoma", Font.PLAIN, 18));
lblMsg.setBounds(251, 379, 200, 37);
add(lblMsg);
JButton btnRegistrarse = new JButton("Registrarse");
btnRegistrarse.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Main.irA(Main.REGISTRO);
}
});
btnRegistrarse.setBounds(445, 398, 175, 40);
add(btnRegistrarse);
JLabel lblRzg = new JLabel("RZG - 2015");
lblRzg.setForeground(SystemColor.controlShadow);
lblRzg.setBounds(700, 515, 110, 14);
add(lblRzg);
JLabel lblUniteAZombieland = new JLabel("Unite a Zombieland!");
lblUniteAZombieland.setFont(new Font("Tahoma", Font.PLAIN, 18));
lblUniteAZombieland.setBounds(251, 416, 219, 37);
add(lblUniteAZombieland);
JButton btnO = new JButton("Olvid\u00F3 su clave?");
btnO.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if (recupera == null)
recupera = new InterfazRecuperaContrasenia();
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
recupera.setVisible(true);
}
});
}
});
btnO.setBounds(445, 292, 175, 40);
add(btnO);
}
/**
* Realiza el inicio de sesi�n y muestra los carteles apropiados.
*/
public void login() {
try {
final POJOInicioSesion pojo = new POJOInicioSesion(
fieldUsuario.getText(), new String(
fieldPassword.getPassword()));
PeticionInicioSesion peticion = new PeticionInicioSesion(pojo);
ServicioCliente.enviarPeticion(peticion);
final InterfazInicioSesion _this = this;
peticion.getRespuesta().done(new DoneCallback<RespuestaGenerica>() {
@Override
public void onDone(RespuestaGenerica respuesta) {
if (respuesta.fuePeticionExitosa()) {
Estado.getInstancia()
.setNombreJugador(pojo.getNombre());
MenuZombieland.setInicioSesion(true);
Main.irA(Main.LISTADO_PARTIDAS);
return;
}
JOptionPane.showMessageDialog(_this,
respuesta.getMensajeError(),
"Inicio sesi�n Zombieland",
JOptionPane.WARNING_MESSAGE);
}
});
} catch (ParametrosNoValidosException e) {
JOptionPane.showMessageDialog(this, e.getMensaje(),
"Inicio sesi�n Zombieland", JOptionPane.WARNING_MESSAGE);
} catch (ZombielandException e) {
JOptionPane.showMessageDialog(this, e.getMessage(),
"Inicio sesi�n Zombieland", JOptionPane.ERROR_MESSAGE);
}
}
@Override
public void paint(Graphics g) {
ImageIcon imagenFondo = new ImageIcon(
RutaImagen.get("imagenes/Fondos/fondo-inicio-sesion.png"));
g.drawImage(imagenFondo.getImage(), 0, -50, 800, 600, null);
setOpaque(false);
super.paint(g);
}
}