Java tutorial
/* * 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); } } } }