/* 
* 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 gestor;

import gestor.utiles.Global;
import java.awt.event.ActionListener;

public final class FormDesconexion extends javax.swing.JDialog {

    private javax.swing.Timer timer = null;
    int puntos = 0;
    boolean alternar = true;
    Configuracion conf;
    Comunicaciones comunicaciones;

    public FormDesconexion(java.awt.Frame parent) {
        super(parent, true);
        initComponents();
        conf = Configuracion.instanciaUnica();
        comunicaciones = Comunicaciones.comm;
        rbApagar.setSelected(true);
        timer = new javax.swing.Timer(1000, (java.awt.event.ActionEvent e) -> {
            conectar();
        });
    }

    public void conectar() {
        timer.stop();
        comunicaciones.abrir();
        if (comunicaciones.sock.abierto()) {
            comunicaciones.enviar(Comunicaciones.CONEXION, conf.codigoGestor, "0");
            this.dispose();
        } else {
            alternar = !alternar;
            ponerPuntos(alternar, conf.usandoUDP);
            timer.start();
        }
    }

    void ponerPuntos(boolean principal, boolean usandoUdp) {
        if (usandoUdp) {
            labelRotulo1.setText("Buscando Servidor ");
        } else {
            labelRotulo1.setText("Intentando conectar con " + " "
                    + (principal ? Configuracion.instanciaUnica().ipServidor : Configuracion.instanciaUnica().ipServidorSec));
        }
        puntos++;
        String texto = "Espere ";
        for (int i = 0; i < puntos; i++) {
            texto += " ... ";
        }
        if (puntos == 5) {
            puntos = 0;
        }
        labelRotulo2.setText(texto);
        repaint();
    }

    void pulsadoAceptar() {
        if (rbApagar.isSelected()) {
            System.exit(0);
        } else {
            Global.principal.imprimirListado();
            rbApagar.setSelected(true);
        }
    }

    /**
     * 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() {

        buttonGroup1 = new javax.swing.ButtonGroup();
        jLabel1 = new javax.swing.JLabel();
        rbApagar = new javax.swing.JRadioButton();
        rbImprimir = new javax.swing.JRadioButton();
        jButton1 = new javax.swing.JButton();
        labelRotulo1 = new javax.swing.JLabel();
        labelRotulo2 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
        setTitle("PÉRDIDA DE CONEXIÓN");
        setModal(true);
        setSize(new java.awt.Dimension(300, 400));
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowOpened(java.awt.event.WindowEvent evt) {
                formWindowOpened(evt);
            }
        });
        getContentPane().setLayout(null);

        jLabel1.setText("<html><center>Se ha perdido la conexión con el servidor ATENEO.<br><¿Que desea hacer?</center></html>");
        getContentPane().add(jLabel1);
        jLabel1.setBounds(68, 20, 291, 50);

        buttonGroup1.add(rbApagar);
        rbApagar.setText("Apagar el programa");
        rbApagar.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        rbApagar.setMargin(new java.awt.Insets(0, 0, 0, 0));
        getContentPane().add(rbApagar);
        rbApagar.setBounds(108, 84, 206, 24);

        buttonGroup1.add(rbImprimir);
        rbImprimir.setText("Obtener listado de cita previa");
        rbImprimir.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        rbImprimir.setMargin(new java.awt.Insets(0, 0, 0, 0));
        getContentPane().add(rbImprimir);
        rbImprimir.setBounds(108, 108, 219, 27);

        jButton1.setText("Aceptar");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton1);
        jButton1.setBounds(120, 150, 151, 41);

        labelRotulo1.setText("Reconectando");
        getContentPane().add(labelRotulo1);
        labelRotulo1.setBounds(20, 200, 320, 16);

        labelRotulo2.setText("..........");
        getContentPane().add(labelRotulo2);
        labelRotulo2.setBounds(20, 220, 310, 20);

        pack();
    }// </editor-fold>//GEN-END:initComponents
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        pulsadoAceptar();
    }//GEN-LAST:event_jButton1ActionPerformed

    private void formWindowOpened(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowOpened
        timer.start();        // TODO add your handling code here:
    }//GEN-LAST:event_formWindowOpened

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.ButtonGroup buttonGroup1;
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel labelRotulo1;
    private javax.swing.JLabel labelRotulo2;
    private javax.swing.JRadioButton rbApagar;
    private javax.swing.JRadioButton rbImprimir;
    // End of variables declaration//GEN-END:variables
}
