com.cmsoftware.keyron.vista.Login.java Source code

Java tutorial

Introduction

Here is the source code for com.cmsoftware.keyron.vista.Login.java

Source

/*
 * Copyright 2014 Cristiam Mercado. 
 * 
 * Esta obra est licenciada bajo la Licencia:
 * Creative Commons Atribucin-NoComercial-SinDerivar 4.0 Internacional.
 * 
 * Para ver una copia de esta licencia, visita:
 * http://creativecommons.org/licenses/by-nc-nd/4.0/.
 */
package com.cmsoftware.keyron.vista;

import com.cmsoftware.keyron.controlador.AplicacionFunciones;
import com.cmsoftware.keyron.controlador.Configuracion;
import com.cmsoftware.keyron.controlador.Log;
import com.cmsoftware.keyron.controlador.Optimizacion;
import com.cmsoftware.keyron.controlador.UsuarioFunciones;
import com.cmsoftware.keyron.vista.aplicacion.EsperarDescarga;
import com.cmsoftware.keyron.vista.aplicacion.InformacionNuevaVersion;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.event.KeyEvent;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import org.json.JSONException;

/**
 * Ventana para acceder a la plataforma. Se requiere de un usuario y una clave
 * para continuar.
 *
 * @author Cristiam Mercado cristiammercadoj@gmail.com
 * @version 1.0
 */
public class Login extends javax.swing.JFrame {

    private volatile int xAnterior;
    private volatile int yAnterior;

    /**
     * Constructor de la clase Login.
     */
    public Login() {
        initComponents();
        setLocationRelativeTo(null);
        setIconImage(
                new ImageIcon(getClass().getResource("/com/cmsoftware/keyron/recursos/iconoBarra.png")).getImage());
    }

    /**
     * Cierra la ventana.
     */
    public void cerrarVentana() {
        this.dispose();
    }

    /**
     * Funcin que valida campos e inicia sesin.
     */
    private void iniciarSesion() {
        if (usuario.getText().trim().isEmpty() || usuario.getText().trim().length() < 5) {
            labelError.setText(Configuracion.getInstancia().getBundle().getString("usuario_novalido"));
            usuario.requestFocus();
            usuario.setBackground(new Color(253, 194, 194));
        } else if (clave.getPassword().length != 0) {
            usuario.setEnabled(false);
            clave.setEnabled(false);
            acceder.setEnabled(false);
            labelError.setText(Configuracion.getInstancia().getBundle().getString("ingresando"));
            labelError.setIcon(new javax.swing.ImageIcon(
                    getClass().getResource("/com/cmsoftware/keyron/recursos/cargando.gif")));
            new Acceso().start();
        } else {
            labelError.setText(Configuracion.getInstancia().getBundle().getString("clave_novalido"));
            clave.requestFocus();
            clave.setBackground(new Color(253, 194, 194));
        }
    }

    /**
     * Operaciones de verificacin de actualizacin de acuerdo a la
     * configuracin.
     */
    private void verificarActualizacion() {
        new Thread(() -> {
            if (new AplicacionFunciones().verificarActualizacion()) {
                String mensaje = "Hay una nueva versin del programa. Qu desea hacer?";
                String[] opciones = { "Descargar e instalar", "Ms informacin" };
                int respuesta = JOptionPane.showOptionDialog(null, mensaje, "Confirmar Operacin - Keyron",
                        JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, opciones, 0);
                if (respuesta == 0) {
                    new EsperarDescarga(null, true, "Iniciando descarga...").setVisible(true);
                } else if (respuesta == 1) {
                    new InformacionNuevaVersion(null, true).setVisible(true);
                }
            }
        }).start();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        panelContenido = new javax.swing.JPanel();
        logo = new javax.swing.JLabel();
        separador = new javax.swing.JLabel();
        mensajeAcceso = new javax.swing.JLabel();
        labelUsuario = new javax.swing.JLabel();
        labelClave = new javax.swing.JLabel();
        usuario = new javax.swing.JTextField();
        acceder = new javax.swing.JButton();
        cerrar = new javax.swing.JLabel();
        clave = new javax.swing.JPasswordField();
        panelMensajes = new javax.swing.JPanel();
        labelError = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        java.util.ResourceBundle bundle = java.util.ResourceBundle
                .getBundle("com/cmsoftware/keyron/vista/idioma/idioma"); // NOI18N
        setTitle(bundle.getString("iniciar_sesion")); // NOI18N
        setName("Login"); // NOI18N
        setUndecorated(true);
        setResizable(false);

        panelContenido.setBackground(new java.awt.Color(246, 246, 246));
        panelContenido.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(119, 41, 83)));
        panelContenido.setMaximumSize(new java.awt.Dimension(382, 318));
        panelContenido.setMinimumSize(new java.awt.Dimension(382, 318));
        panelContenido.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                panelContenidoMouseClicked(evt);
            }

            public void mousePressed(java.awt.event.MouseEvent evt) {
                panelContenidoMousePressed(evt);
            }

            public void mouseReleased(java.awt.event.MouseEvent evt) {
                panelContenidoMouseReleased(evt);
            }
        });
        panelContenido.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
            public void mouseDragged(java.awt.event.MouseEvent evt) {
                panelContenidoMouseDragged(evt);
            }

            public void mouseMoved(java.awt.event.MouseEvent evt) {
                panelContenidoMouseMoved(evt);
            }
        });

        logo.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        logo.setIcon(new javax.swing.ImageIcon(
                getClass().getResource("/com/cmsoftware/keyron/recursos/encabezado.png"))); // NOI18N

        separador.setForeground(new java.awt.Color(119, 41, 83));
        separador.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        separador.setText("______________________________________________________________");

        mensajeAcceso.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
        mensajeAcceso.setForeground(new java.awt.Color(89, 89, 89));
        mensajeAcceso.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        mensajeAcceso.setText(Configuracion.getInstancia().getBundle().getString("mensaje_acceso")); // NOI18N

        labelUsuario.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
        labelUsuario.setForeground(new java.awt.Color(89, 89, 89));
        labelUsuario.setText(Configuracion.getInstancia().getBundle().getString("campo_usuario")); // NOI18N

        labelClave.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
        labelClave.setForeground(new java.awt.Color(89, 89, 89));
        labelClave.setText(Configuracion.getInstancia().getBundle().getString("campo_clave")); // NOI18N

        usuario.setFont(com.cmsoftware.keyron.controlador.Optimizacion.getInstancia().getFuente().MyFont(0, 14f));
        usuario.setForeground(new java.awt.Color(89, 89, 89));
        usuario.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                usuarioKeyTyped(evt);
            }
        });

        acceder.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
        acceder.setForeground(new java.awt.Color(89, 89, 89));
        acceder.setText(Configuracion.getInstancia().getBundle().getString("boton_acceder")); // NOI18N
        acceder.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        acceder.setMargin(new java.awt.Insets(6, 14, 6, 14));
        acceder.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                accederActionPerformed(evt);
            }
        });

        cerrar.setFont(new java.awt.Font("Arial", 1, 11)); // NOI18N
        cerrar.setText("X");
        cerrar.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        cerrar.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                cerrarMouseClicked(evt);
            }

            public void mouseEntered(java.awt.event.MouseEvent evt) {
                cerrarMouseEntered(evt);
            }

            public void mouseExited(java.awt.event.MouseEvent evt) {
                cerrarMouseExited(evt);
            }
        });

        clave.setFont(new java.awt.Font("Tahoma", 0, 13)); // NOI18N
        clave.setForeground(new java.awt.Color(89, 89, 89));
        clave.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                claveKeyTyped(evt);
            }
        });

        javax.swing.GroupLayout panelContenidoLayout = new javax.swing.GroupLayout(panelContenido);
        panelContenido.setLayout(panelContenidoLayout);
        panelContenidoLayout.setHorizontalGroup(panelContenidoLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelContenidoLayout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(panelContenidoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
                                .addComponent(logo, javax.swing.GroupLayout.Alignment.LEADING,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
                                        Short.MAX_VALUE)
                                .addComponent(separador, javax.swing.GroupLayout.Alignment.TRAILING,
                                        javax.swing.GroupLayout.PREFERRED_SIZE, 384,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(0, 0, 0).addComponent(cerrar).addGap(8, 8, 8))
                .addGroup(panelContenidoLayout.createSequentialGroup().addGap(25, 25, 25)
                        .addGroup(panelContenidoLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                .addComponent(acceder)
                                .addGroup(panelContenidoLayout
                                        .createSequentialGroup()
                                        .addGroup(panelContenidoLayout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                .addComponent(labelUsuario).addComponent(labelClave))
                                        .addGap(29, 29, 29)
                                        .addGroup(panelContenidoLayout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                                .addComponent(usuario, javax.swing.GroupLayout.PREFERRED_SIZE, 262,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addComponent(clave, javax.swing.GroupLayout.PREFERRED_SIZE, 262,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE))))
                        .addGap(0, 0, Short.MAX_VALUE))
                .addComponent(mensajeAcceso, javax.swing.GroupLayout.DEFAULT_SIZE,
                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE));
        panelContenidoLayout.setVerticalGroup(
                panelContenidoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(panelContenidoLayout.createSequentialGroup()
                                .addGroup(panelContenidoLayout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                        .addGroup(panelContenidoLayout.createSequentialGroup().addContainerGap()
                                                .addComponent(logo))
                                        .addComponent(cerrar))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(separador)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(mensajeAcceso).addGap(18, 18, 18)
                                .addGroup(panelContenidoLayout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                        .addComponent(labelUsuario).addComponent(usuario,
                                                javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addGap(18, 18, 18)
                                .addGroup(panelContenidoLayout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                        .addComponent(labelClave).addComponent(clave,
                                                javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(acceder)
                                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

        panelContenidoLayout.linkSize(javax.swing.SwingConstants.VERTICAL,
                new java.awt.Component[] { clave, usuario });

        panelMensajes.setBackground(new java.awt.Color(119, 41, 83));

        labelError.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        labelError.setForeground(new java.awt.Color(255, 255, 255));
        labelError.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);

        javax.swing.GroupLayout panelMensajesLayout = new javax.swing.GroupLayout(panelMensajes);
        panelMensajes.setLayout(panelMensajesLayout);
        panelMensajesLayout.setHorizontalGroup(
                panelMensajesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(labelError, javax.swing.GroupLayout.DEFAULT_SIZE, 426, Short.MAX_VALUE));
        panelMensajesLayout.setVerticalGroup(panelMensajesLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(panelMensajesLayout.createSequentialGroup().addComponent(labelError,
                        javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(0, 0, Short.MAX_VALUE)));

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(panelMensajes, javax.swing.GroupLayout.DEFAULT_SIZE,
                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(panelContenido, javax.swing.GroupLayout.DEFAULT_SIZE,
                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE));
        layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                        .addComponent(panelContenido, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(0, 0, Short.MAX_VALUE)
                        .addComponent(panelMensajes, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(0, 0, 0)));

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void accederActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_accederActionPerformed
        iniciarSesion();
    }//GEN-LAST:event_accederActionPerformed

    private void cerrarMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_cerrarMouseClicked
        System.exit(0);
    }//GEN-LAST:event_cerrarMouseClicked

    private void cerrarMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_cerrarMouseEntered
        cerrar.setForeground(panelMensajes.getBackground());
    }//GEN-LAST:event_cerrarMouseEntered

    private void cerrarMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_cerrarMouseExited
        cerrar.setForeground(Color.black);
    }//GEN-LAST:event_cerrarMouseExited

    private void usuarioKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_usuarioKeyTyped
        usuario.setBackground(new Color(255, 255, 255));
        if (KeyEvent.VK_ENTER == evt.getKeyChar()) {
            iniciarSesion();
        } else {
            labelError.setText("");
        }
    }//GEN-LAST:event_usuarioKeyTyped

    private void claveKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_claveKeyTyped
        clave.setBackground(new Color(255, 255, 255));
        if (KeyEvent.VK_ENTER == evt.getKeyChar()) {
            iniciarSesion();
        } else {
            labelError.setText("");
        }
    }//GEN-LAST:event_claveKeyTyped

    private void panelContenidoMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_panelContenidoMouseReleased
        this.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
    }//GEN-LAST:event_panelContenidoMouseReleased

    private void panelContenidoMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_panelContenidoMouseClicked

    }//GEN-LAST:event_panelContenidoMouseClicked

    private void panelContenidoMouseDragged(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_panelContenidoMouseDragged
        this.setLocation(evt.getX() - xAnterior + this.getLocation().x,
                evt.getY() - yAnterior + this.getLocation().y);
    }//GEN-LAST:event_panelContenidoMouseDragged

    private void panelContenidoMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_panelContenidoMouseMoved

    }//GEN-LAST:event_panelContenidoMouseMoved

    private void panelContenidoMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_panelContenidoMousePressed
        yAnterior = evt.getY();
        xAnterior = evt.getX();
        this.setCursor(new Cursor(Cursor.MOVE_CURSOR));
    }//GEN-LAST:event_panelContenidoMousePressed

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(() -> {
            new Login().setVisible(true);
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton acceder;
    private javax.swing.JLabel cerrar;
    private javax.swing.JPasswordField clave;
    private javax.swing.JLabel labelClave;
    private javax.swing.JLabel labelError;
    private javax.swing.JLabel labelUsuario;
    private javax.swing.JLabel logo;
    private javax.swing.JLabel mensajeAcceso;
    private javax.swing.JPanel panelContenido;
    private javax.swing.JPanel panelMensajes;
    private javax.swing.JLabel separador;
    private javax.swing.JTextField usuario;
    // End of variables declaration//GEN-END:variables

    /**
     * Clase interna que inicializa el hilo para consultar el Web Service.
     *
     * @author Cristiam Mercado.
     */
    private class Acceso extends Thread {

        @Override
        public void run() {
            try {
                UsuarioFunciones uf = new UsuarioFunciones();
                int codigoError = uf.iniciarSesion(usuario.getText(), String.copyValueOf(clave.getPassword()));

                if (codigoError == 0) {
                    labelError.setText(Configuracion.getInstancia().getBundle().getString("iniciando_sesion"));
                    Optimizacion.getInstancia().getAdminInicio().setVisible(true);
                    verificarActualizacion();
                    cerrarVentana();
                } else if (codigoError == 1) {
                    usuario.setEnabled(true);
                    clave.setEnabled(true);
                    acceder.setEnabled(true);
                    labelError.setText(Configuracion.getInstancia().getBundle().getString("error_correo"));
                    labelError.setIcon(null);
                    usuario.requestFocus();
                    usuario.setBackground(new Color(253, 194, 194));
                } else if (codigoError == 2) {
                    usuario.setEnabled(true);
                    clave.setEnabled(true);
                    acceder.setEnabled(true);
                    labelError.setText(Configuracion.getInstancia().getBundle().getString("error_clave"));
                    clave.requestFocus();
                    clave.setBackground(new Color(253, 194, 194));
                    labelError.setIcon(null);
                } else if (codigoError == 19) {
                    usuario.setEnabled(true);
                    clave.setEnabled(true);
                    acceder.setEnabled(true);
                    labelError.setText(Configuracion.getInstancia().getBundle().getString("error_activo"));
                    usuario.requestFocus();
                    usuario.setBackground(new Color(253, 194, 194));
                    labelError.setIcon(null);
                } else if (codigoError >= 3) {
                    usuario.setEnabled(true);
                    clave.setEnabled(true);
                    acceder.setEnabled(true);
                    labelError.setText(Configuracion.getInstancia().getBundle().getString("no_ingreso"));
                    labelError.setIcon(null);
                } else if (codigoError == -1) {
                    usuario.setEnabled(true);
                    clave.setEnabled(true);
                    acceder.setEnabled(true);
                    labelError.setText(Configuracion.getInstancia().getBundle().getString("error_conexion"));
                    labelError.setIcon(null);
                } else {
                    usuario.setEnabled(true);
                    clave.setEnabled(true);
                    acceder.setEnabled(true);
                    labelError.setText(Configuracion.getInstancia().getBundle().getString("error_solicitud"));
                    labelError.setIcon(null);
                }
            } catch (JSONException e) {
                labelError.setText(Configuracion.getInstancia().getBundle().getString("error_descarga"));
                usuario.setEnabled(true);
                clave.setEnabled(true);
                acceder.setEnabled(true);
                labelError.setIcon(null);
                Log.agregarError(e);
            }
        }
    }
}