/* 
* Copyright 2016 Agencia Estatal de Administración Tibutaria
*
* Licencia con arreglo a la EUPL, Versión 1.1 o –en cuanto
* sean aprobadas por la Comisión Europea– versiones
* posteriores de la EUPL (la «Licencia»);
* Solo podrá usarse esta obra si se respeta la Licencia.
* Puede obtenerse una copia de la Licencia en:
*  
* https://joinup.ec.europa.eu/software/page/eupl
*  
* Salvo cuando lo exija la legislación aplicable o se acuerde
* por escrito, el programa distribuido con arreglo a la
* Licencia se distribuye «TAL CUAL», SIN GARANTÍAS NI CONDICIONES
* DE NINGÚN TIPO, ni expresasni implícitas.
*
* Véase la Licencia en el idioma concreto que rige los permisos y 
* limitaciones que establece la Licencia.
*/ 

package monitor;

import java.util.logging.Level;
import java.util.regex.*;

public class FormReconectar extends javax.swing.JDialog {

    Ventana padre;
    Comunicaciones com;
    boolean cancelado = false;
    int puntos = 0;
    int segundosEspera = 2;
    javax.swing.Timer timer;
    boolean alternar = true;

    public FormReconectar(Ventana padre, Comunicaciones com) {
        super(padre, Ventana.main.trad.valor("titulo_conexion"), true);
        this.padre = padre;
        this.com = com;
        initComponents();
    }

    void ponerRotulo(String host) {
        String nombre = "";
        if (Pattern.matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}", host)) {
            nombre = host;
        } else {
            String[] ps = host.split("\\.", -1);
            nombre = ps[0];
        }
        this.lbIntentando.setText(this.lbIntentando.getText() + nombre);
    }

    void iniciar() {
        timer = new javax.swing.Timer(segundosEspera * 1000, new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent e) {
                intentarConexion();
            }
        });
        setSize(560, 250);
        setLocationRelativeTo(null);
        timer.start();
    }

    void intentarConexion() {
        if (cancelado) {
            return;
        }
        try {
            if (!com.conectado()) {
                com.abrir(alternar);
                alternar = !alternar;
            }
            if (com.conectado()) {
                Ventana.log.log(Level.INFO, "Reconexión con {0}", com.servidor);
                timer.stop();
                this.dispose();
            }
        } catch (Exception exc) {
            Ventana.log.log(Level.WARNING, "Excepcion en FormReconectar.conectar : {0}", exc.getMessage());
        }
    }

    void pulsadoCancelar() {
        timer.stop();
        cancelado = true;
        this.dispose();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
    private void initComponents() {
        btCancelar = new javax.swing.JButton();
        lbIntentando = new monitor.utiles.SmoothLabel();

        getContentPane().setLayout(null);

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setResizable(false);
        addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentShown(java.awt.event.ComponentEvent evt) {
                formComponentShown(evt);
            }
        });

        btCancelar.setFont(new java.awt.Font("MS Sans Serif", 1, 14));
        btCancelar.setText("CANCELAR");
        btCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btCancelarActionPerformed(evt);
            }
        });

        getContentPane().add(btCancelar);
        btCancelar.setBounds(208, 148, 130, 48);

        lbIntentando.setFont(new java.awt.Font("MS Sans Serif", 1, 26));
        lbIntentando.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        lbIntentando.setText("Esperando conexi\u00f3n con el servidor");
        getContentPane().add(lbIntentando);
        lbIntentando.setBounds(28, 52, 505, 44);

        pack();
    }// </editor-fold>//GEN-END:initComponents
    private void formComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_formComponentShown
        iniciar();
    }//GEN-LAST:event_formComponentShown

   private void btCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btCancelarActionPerformed
       pulsadoCancelar();
   }//GEN-LAST:event_btCancelarActionPerformed
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btCancelar;
    private javax.swing.JLabel lbIntentando;
    // End of variables declaration//GEN-END:variables
}
