package com.rzg.zombieland.cliente.interfaz; import java.awt.Color; import java.awt.Font; 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.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.SwingConstants; import javax.swing.border.EmptyBorder; import javax.swing.border.LineBorder; import org.jdeferred.DoneCallback; import com.rzg.zombieland.cliente.comunicacion.ServicioCliente; import com.rzg.zombieland.cliente.comunicacion.peticion.PeticionPreguntaSeguridad; import com.rzg.zombieland.cliente.misc.RutaImagen; import com.rzg.zombieland.comunes.comunicacion.pojo.POJONombreUsuario; import com.rzg.zombieland.comunes.comunicacion.respuesta.RespuestaPreguntaSeg; import com.rzg.zombieland.comunes.misc.ParametrosNoValidosException; import com.rzg.zombieland.comunes.misc.ZombielandException; /** * Interfaz de recuperar contraseña. * * @author Ivan */ public class InterfazRecuperaContrasenia extends JFrame { private static final long serialVersionUID = 5811662849518666164L; private JPanel contentPane; private JTextField textFieldUsuario; private JLabel preguntaSeguridad; private JTextField textFieldResp; private String respuestaReal; private JLabel labelContrasenia; /** * Create the frame. */ public InterfazRecuperaContrasenia() { setResizable(false); setTitle("Recuperaci\u00F3n de Contrase\u00F1a"); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setBounds(275, 180, 500, 350); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); JLabel lblUsuario = new JLabel("Usuario"); lblUsuario.setForeground(Color.WHITE); lblUsuario.setBounds(90, 75, 79, 14); contentPane.add(lblUsuario); JLabel lblPregunta = new JLabel("Pregunta de Seguridad"); lblPregunta.setForeground(Color.WHITE); lblPregunta.setBounds(90, 115, 132, 14); contentPane.add(lblPregunta); JLabel lblRespuesta = new JLabel("Respuesta"); lblRespuesta.setForeground(Color.WHITE); lblRespuesta.setBounds(90, 155, 110, 14); contentPane.add(lblRespuesta); labelContrasenia = new JLabel("Buscando Usuario..."); labelContrasenia.setVisible(false); labelContrasenia.setHorizontalAlignment(SwingConstants.CENTER); labelContrasenia.setBorder(new LineBorder(Color.GRAY)); labelContrasenia.setBounds(120, 266, 270, 20); contentPane.add(labelContrasenia); textFieldUsuario = new JTextField(); textFieldUsuario.setOpaque(false); textFieldUsuario.setBorder(new LineBorder(Color.GRAY)); textFieldUsuario.setForeground(Color.WHITE); textFieldUsuario.setBounds(270, 75, 125, 20); contentPane.add(textFieldUsuario); textFieldUsuario.setColumns(10); preguntaSeguridad = new JLabel(""); preguntaSeguridad.setBackground(Color.BLACK); preguntaSeguridad.setOpaque(false); preguntaSeguridad.setForeground(Color.WHITE); preguntaSeguridad.setBounds(270, 115, 191, 20); getContentPane().add(preguntaSeguridad); textFieldResp = new JTextField(); textFieldResp.setForeground(Color.WHITE); textFieldResp.setBorder(new LineBorder(Color.GRAY)); textFieldResp.setOpaque(false); textFieldResp.setColumns(10); textFieldResp.setBounds(270, 155, 125, 20); contentPane.add(textFieldResp); JLabel lblRzg = new JLabel("RZG - 2015"); lblRzg.setForeground(SystemColor.controlShadow); lblRzg.setBounds(421, 293, 63, 14); getContentPane().add(lblRzg); JButton btnRecuperar = new JButton("Obtener Pregunta Seguridad"); btnRecuperar.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { RecuperarPreguntaSeguridad(); } }); btnRecuperar.setBounds(10, 205, 200, 30); contentPane.add(btnRecuperar); JButton btnVerificarRespuesta = new JButton("Verificar Respuesta seguridad"); btnVerificarRespuesta.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { verificarRespuesta(); } }); btnVerificarRespuesta.setBounds(250, 205, 220, 30); contentPane.add(btnVerificarRespuesta); JLabel lblTitulo = new JLabel("Recupera tu contrase\u00F1a"); lblTitulo.setForeground(Color.LIGHT_GRAY); lblTitulo.setFont(new Font("Tahoma", Font.BOLD, 22)); lblTitulo.setBounds(90, 16, 340, 33); contentPane.add(lblTitulo); JLabel lblImagen = new JLabel(""); //lblImagen.setIcon(new ImageIcon(RutaImagen.get("imagenes/zombie-silueta.png"))); lblImagen.setBounds(-5, -30, 100, 386); contentPane.add(lblImagen); JLabel lblFondo = new JLabel(""); //lblFondo.setIcon(new ImageIcon(RutaImagen.get("imagenes/Fondos/fondo-contraseña.png"))); lblFondo.setBounds(-400, 0, 925, 386); contentPane.add(lblFondo); } /** * Se verifica que la respuesta de seguridad ingresada sea la correcta, * y se abre una ventana para que realice el cambio de contraseña */ public void verificarRespuesta() { if (textFieldResp.getText().equals(respuestaReal)){ new InterfazCambioContrasenia(textFieldUsuario.getText()).setVisible(true); textFieldResp.setText(""); textFieldUsuario.setText(""); preguntaSeguridad.setText(""); } else JOptionPane.showMessageDialog(this, "Respuesta incorrecta", "Recuperar Contraseña Fallo", JOptionPane.WARNING_MESSAGE); } /** * Ingresa el nombre de usuario y debe encontrar la pregunta de seguridad * correspondiente y su respuesta. */ public void RecuperarPreguntaSeguridad() { preguntaSeguridad.setText(" "); labelContrasenia.setVisible(true); try { final POJONombreUsuario pojo = new POJONombreUsuario( textFieldUsuario.getText()); PeticionPreguntaSeguridad peticion = new PeticionPreguntaSeguridad(pojo); ServicioCliente.enviarPeticion(peticion); final InterfazRecuperaContrasenia _this = this; peticion.getRespuesta().done(new DoneCallback<RespuestaPreguntaSeg>() { @Override public void onDone(RespuestaPreguntaSeg respuesta) { if (respuesta.fuePeticionExitosa()) { preguntaSeguridad.setText( respuesta.getPreguntaSeguridad().getPreguntaSeguridad()); respuestaReal = respuesta.getPreguntaSeguridad().getRespuestaSeguridad(); labelContrasenia.setVisible(false); return; } JOptionPane.showMessageDialog(_this, respuesta.getMensajeError(), "Recuperar Contraseña Fallo", JOptionPane.WARNING_MESSAGE); labelContrasenia.setVisible(false); } }); } catch (ParametrosNoValidosException e) { JOptionPane.showMessageDialog(this, e.getMensaje(), "Recuperar Contraseña Fallo", JOptionPane.WARNING_MESSAGE); } catch (ZombielandException e) { JOptionPane.showMessageDialog(this, e.getMessage(), "Recuperar Contraseña Fallo", JOptionPane.ERROR_MESSAGE); } } }