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

public class DlgReconectando extends javax.swing.JDialog {

   Main padre;
   boolean cancelado = false;
   int puntos = 0;
   int segundosEspera = 2;
   private javax.swing.Timer timer = null;
   boolean alternar = true;

   public DlgReconectando(Main padre) {
      super(padre, true);
      this.padre = padre;
      initComponents();
      if (padre.conf.usandoUDP) {
         labelRotulo1.setText(gestor.utiles.Global.trad.valor("BuscandoServidor"));
      } else {
         labelRotulo1.setText(gestor.utiles.Global.trad.valor("IntentandoConectar") + " " + padre.comunicaciones.sock.getHost()); 
      }
      btCancelar.setText(gestor.utiles.Global.trad.valor("Cancelar"));
      if (!Configuracion.instanciaUnica().cursorVisible) {
         setCursor(gestor.utiles.Global.mainForm.cursorTransparente);
      }
      timer = new javax.swing.Timer(1000, new java.awt.event.ActionListener() {

         public void actionPerformed(java.awt.event.ActionEvent e) {
            conectar();
         }
      });
      setSize(475, 204);
      setLocationRelativeTo(null);
   }

   void ponerPuntos(boolean principal, boolean usandoUdp) {
      if (usandoUdp) {
         labelRotulo1.setText(gestor.utiles.Global.trad.valor("BuscandoServidor"));
      } else {
         labelRotulo1.setText(gestor.utiles.Global.trad.valor("IntentandoConectar") + " " +
                 (principal ? Configuracion.instanciaUnica().ipServidor : Configuracion.instanciaUnica().ipServidorSec));
      }
      puntos++;
      String texto = gestor.utiles.Global.trad.valor("PorFavorEspere");
      for (int i = 0; i < puntos; i++) {
         texto += ".";
      }
      if (puntos == 3) {
         puntos = 0;
      }
      labelRotulo2.setText(texto);
      repaint();
   }

   public void conectar() {
      timer.stop();
      padre.comunicaciones.abrirSock(alternar);
      if (padre.comunicaciones.sock.abierto()) {
         padre.comunicaciones.restablecer();
         setVisible(false);
      } else {
         alternar = !alternar;
         ponerPuntos(alternar, padre.conf.usandoUDP);
         timer.start();
      }
   }

   void cancelar() {
      cancelado = true;
      timer.stop();
      setVisible(false);
   }

   /** 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() {
        jPanel1 = new MiPanel();
        labelRotulo1 = new gestor.utiles.SmoothLabel();
        labelRotulo2 = new gestor.utiles.SmoothLabel();
        btCancelar = new javax.swing.JButton();

        setResizable(false);
        setUndecorated(true);
        addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentShown(java.awt.event.ComponentEvent evt) {
                formComponentShown(evt);
            }
        });

        jPanel1.setLayout(null);

        jPanel1.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 4, true));
        labelRotulo1.setFont(new java.awt.Font("Arial", 3, 18));
        labelRotulo1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        labelRotulo1.setText("Intentando conectar con ");
        jPanel1.add(labelRotulo1);
        labelRotulo1.setBounds(8, 52, 459, 20);

        labelRotulo2.setFont(new java.awt.Font("Arial", 3, 18));
        labelRotulo2.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        labelRotulo2.setText("Por favor, espere");
        jPanel1.add(labelRotulo2);
        labelRotulo2.setBounds(140, 88, 220, 22);

        btCancelar.setFont(new java.awt.Font("Arial", 3, 14));
        btCancelar.setText("Cancelar");
        btCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btCancelarActionPerformed(evt);
            }
        });

        jPanel1.add(btCancelar);
        btCancelar.setBounds(132, 156, 188, 27);

        getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);

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

   private void formComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_formComponentShown
      timer.start();
   }//GEN-LAST:event_formComponentShown
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btCancelar;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JLabel labelRotulo1;
    private javax.swing.JLabel labelRotulo2;
    // End of variables declaration//GEN-END:variables
}
