/* 
* 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 servidor.configurador;


import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.SQLException;

import javax.swing.InputVerifier;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.text.DefaultCaret;


import servidor.Configuracion;
import servidor.configurador.Varios.miNumericVerifier;
import servidor.datos.BaseDatos;
import servidor.datos.Tabla_Base;
import servidor.utiles.smoothJLabel;

public class frmParametrosServidor extends JPanel implements ActionListener {
        private Configuracion confi=null;
 //  @jve:decl-index=0:visual-constraint="88,5"

	private JTextField jipPort = null;
	private JTextField jservidor = null;
	private JTextField jnombreoficina = null;
	private JTextField jcodigoCentro = null;
	private JTextField jnumeroMesas = null;
	private JTextField jtiempoBucle = null;
	private JTextField jmargenRetraso = null;
	private JTextField jhorarecepcionh = null;
	private JTextField jhorarecepcionm = null;
//	private JTextField jhoraenvioh = null;
//	private JTextField jhoraenviom = null;
	private JTextField jhoraturnotardeh= null;
	private JTextField jhoraturnotardem= null;
	private JTextField jtiempoPenalizacion = null;
	private JTextField jservidorSql = null;
	private JTextField jcolasSimultaneas = null;
	private JTextField jBaseDatosAte = null;
	private JTextField jColaAutoEnvio = null;
	private JCheckBox jCcomprobarMonitores = null;
	private JCheckBox jCEstimarRetrasos = null;
	private JCheckBox jCRecepcionista= null;
	private JCheckBox jCgestionHuecos= null;
	private JCheckBox jpermitirNoiden= null;
	private JCheckBox jCAutoenvioColaCero= null;
	//private JDateChooser jDFInicio=null;
	//private JDateChooser jDFFin=null;
	private JTextField jretrasoTicket = null;

        private JComboBox jcbColaAutoenvio=null;
	private JCheckBox jCContestarResumenColasOpe=null;
	


	private JCheckBox jCapagarOperadoresFantasma = null;
	private JButton jButton = null;
	


	private void getJContentPane() {
		    
			
			smoothJLabel titulito=new smoothJLabel("ATENEO - Parámetros Servidor");
			titulito.setFont(new Font("Arial",Font.BOLD ,20));
			titulito.setBounds(75,10,400,25);
			JLabel jLabelx = new JLabel("Nombre oficina:");
			jLabelx.setBounds(32,52,99,19);
			jLabelx.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
			this.add(jLabelx, null);
                        JLabel jLabel = new JLabel();
			jLabel.setBounds(52,82,79,19);
			jLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
			jLabel.setText("Cód.Centro:");
		        JLabel jLabel2 = new JLabel();
			jLabel2.setBounds(56,112,73,19);
			jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
			jLabel2.setText("Puerto IP:");
			jLabelx = new JLabel("Nº Servidor:");
			jLabelx.setBounds(420,52,100,19);
			jLabelx.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
			this.add(jLabelx, null);

                        JLabel jLabel8 = new JLabel("Hora Recep:");
                   	jLabel8.setBounds(248,205,109,19);
			jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);

                        JLabel jLabel4 = new JLabel();
			jLabel4.setBounds(26,142,103,19);
			jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
			jLabel4.setText("T.Bucle:");
                        JLabel jLabel5 = new JLabel();
			jLabel5.setBounds(26,172,103,19);
			jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
			jLabel5.setText("Margen retraso:");
                        JLabel jLabel6 = new JLabel();
			jLabel6.setBounds(26,202,103,19);
			jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
			jLabel6.setText("T.Penalización:");
                        jLabelx=new JLabel("Margen aviso:");
			jLabelx.setBounds(26,262,103,19);
			jLabelx.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
			this.add(jLabelx, null);
                        jLabelx=new JLabel("Servidor BD:");
			jLabelx.setBounds(26,292,103,19);
			jLabelx.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
			this.add(jLabelx, null);
                        jLabelx=new JLabel("Base de Datos:");
			jLabelx.setBounds(26,322,103,19);
			jLabelx.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
			this.add(jLabelx, null);

			
			
			jLabelx = new JLabel("T.Simultaneos:");
			jLabelx.setBounds(228,172,109,19);
			jLabelx.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
			this.add(jLabelx, null);
                        jLabelx=new JLabel("Cola Autoenvío:");
			jLabelx.setBounds(480,85,113,19);
			
                        jLabelx.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
			this.add(jLabelx, null);

			
			jLabelx=new JLabel("Hora Turno Tarde:");
			jLabelx.setBounds(228,262,103,19);
			jLabelx.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
			this.add(jLabelx, null);
	

//			 gethoraenvio();
			 gethorarecepcion();
			 gethoraturnotarde();
			 
			this.setLayout(null);
			this.add(getJipPort(), null);
                        this.add(titulito);
                        this.add(getjNombreOficina(), null);
                        this.add(getJservidor(), null);
			this.add(getJcodigoCentro(), null);

			this.add(getJtiempoBucle(), null);
			this.add(getJmargenRetraso(), null);
			this.add(getJtiempoPenalizacion(), null);
			this.add(getjCcomprobarMonitores(), null);
			this.add(getjCgestionHuecos(), null);
                        this.add(getjCRecepcionista(), null);
			this.add(getjcbColaAutoenvio(), null);
                        this.add(getjCContestarResumenColasOpe(), null);
			this.add(jhorarecepcionh, null);
			this.add(jhorarecepcionm, null);
			this.add(jhoraturnotardeh, null);
			this.add(jhoraturnotardem, null);
			this.add(getJCapagarOperadoresFantasma(), null);
			this.add(getJButton(), null);
			this.add(getcolasSimultaneas(),null);
			this.add(getjservidorSQL(),null);
			this.add(getjpermitirNoiden(),null);
			this.add(getjBaseDatosAte(),null);
			this.add(getJretrasoTicket(),null);
			this.add(getjCEstimarRetrasos(),null);


			this.add(jLabel, null);
	
			this.add(jLabel2, null);

			this.add(jLabel4, null);
			this.add(jLabel5, null);
			this.add(jLabel6, null);

			this.add(jLabel8, null);

			
		
	
	}

	private JTextField getjNombreOficina(){
		if (jnombreoficina == null) {
			jnombreoficina = new JTextField();
			jnombreoficina.setText(confi.nombreoficina);
			jnombreoficina.setToolTipText("Literal con el nombre de la oficina");
			jnombreoficina.setBounds(new java.awt.Rectangle(134, 52, 300, 22));
		}
		return jnombreoficina;
		
	}

	private JTextField getJipPort() {
		if (jipPort == null) {
			jipPort = new JTextField(5);
			jipPort.setToolTipText("Puerto IP utilizado por el servidor (por defecto 5000).");
			jipPort.setBounds(new java.awt.Rectangle(134,112,54,20));
			jipPort.setText(String.valueOf( confi.ipPort ));
			jipPort.addKeyListener(new Varios.MiAdaptador());
			jipPort.setInputVerifier( new Varios.miNumericVerifier (2000,65000,5000));
		}
		return jipPort;
	}
	




	private JTextField getJcodigoCentro() {
		if (jcodigoCentro == null) {
			jcodigoCentro = new JTextField(5);
			DefaultCaret dc=(DefaultCaret)jcodigoCentro.getCaret();

			jcodigoCentro.setToolTipText("Codigo de oficina, cinco digitos.");
			jcodigoCentro.setBounds(new java.awt.Rectangle(134,82,57,20));
			jcodigoCentro.addKeyListener(new Varios.MiAdaptadorCodigoNumero());
			jcodigoCentro.setText(String.valueOf( confi.codigoCentro  ));
//			jcodigoCentro.setInputVerifier( new InputVerifier (){
//				public boolean verify(JComponent input) {
//					JTextField jtf=(JTextField)input;
//					if (jtf.getText().length()!=5){
//					    jtf.selectAll() ;
//
//					   return false;
//					}
//					else
//						return true;
//				}
//			});
		}
		return jcodigoCentro;
	}

	private JTextField getJservidor() {
		if (jservidor == null) {
			jservidor = new JTextField(1);
			jservidor.setToolTipText("Identifica el servidor");
			jservidor.setBounds(new java.awt.Rectangle(530,52,20,21));
			jservidor.setText(String.valueOf( confi.servidor   ));
			jservidor.addKeyListener(new Varios.MiAdaptador());
			jservidor.setInputVerifier( new Varios.miNumericVerifier (0,9,1));
			jservidor.addMouseListener(new MouseAdapter(){
				public void	mouseClicked(MouseEvent e) {
					if (JOptionPane.showConfirmDialog(null,
							"ATENcion\nEste dato normalmente no deberia ser modificado.\n" +
							"Antes de modificar el Nº Servidor verificar que no existe otro servidor\n" +
							"con transmision de datos en la oficina que pueda coincidir.\n" +
							"Hay que tener en cuenta ademas que si existen datos de dias anteriores,\n" +
							"se volveran a transmitir con el nuevo identificador y se duplicaran.",
							"Confirmacion modificacion Nº Servidor",
							JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION){
						jservidor.setEnabled(true);
						jservidor.requestFocus();
				
			}
				}
				
			});
			jservidor.setEnabled(false);
		}
		
		return jservidor;
	}


	private JTextField getJtiempoBucle() {
		if (jtiempoBucle == null) {
			jtiempoBucle = new JTextField(3);
			jtiempoBucle.setToolTipText("Tiempo en seg. en buscar tickets en espera");
			jtiempoBucle.setBounds(new java.awt.Rectangle(134,142,43,21));
			jtiempoBucle.addKeyListener(new Varios.MiAdaptador());
			jtiempoBucle.setText(String.valueOf( confi.tiempoBucle  ));
			jtiempoBucle.setInputVerifier( new Varios.miNumericVerifier (5,999,15));
		}
		return jtiempoBucle;
	}
	private JTextField getcolasSimultaneas() {
		if (jcolasSimultaneas == null) {
			jcolasSimultaneas = new JTextField(2);
			jcolasSimultaneas.setToolTipText("Nº de avisos a tiques que se envian a monitor en cada bucle de busqueda.");
			jcolasSimultaneas.setBounds(new java.awt.Rectangle(340,172,20,21));
			jcolasSimultaneas.addKeyListener(new Varios. MiAdaptador());
			jcolasSimultaneas.setText(String.valueOf( confi.colasSimultaneas   ));
			jcolasSimultaneas.setInputVerifier( new Varios.miNumericVerifier (1,99,1));	
			
		}
		return jcolasSimultaneas;
		
	}

	private JTextField getJmargenRetraso() {
		if (jmargenRetraso == null) {
			jmargenRetraso = new JTextField(3);
			jmargenRetraso.setToolTipText("Margen de aceptacion de retrasados en cita previa (en minutos)");
			jmargenRetraso.setBounds(new java.awt.Rectangle(134,172,43,21));
			jmargenRetraso.addKeyListener(new Varios.MiAdaptador());
			jmargenRetraso.setText(String.valueOf( confi.margenRetraso   ));
			jmargenRetraso.setInputVerifier( new Varios.miNumericVerifier (1,999,10));			
		}
		return jmargenRetraso;
	}


	private JTextField getJtiempoPenalizacion() {
		if (jtiempoPenalizacion == null) {
			jtiempoPenalizacion = new JTextField(2);
			jtiempoPenalizacion.setToolTipText("Penalizacion que se añade a los retrasados en cita previa (en minutos)");
			jtiempoPenalizacion.setBounds(new java.awt.Rectangle(134,202,43,21));
			jtiempoPenalizacion.addKeyListener(new Varios. MiAdaptador());
			jtiempoPenalizacion.setText(String.valueOf( confi.tiempoPenalizacion   ));
			jtiempoPenalizacion.setInputVerifier( new Varios.miNumericVerifier (0,99,15));		
		}
		return jtiempoPenalizacion;
	}

	private void gethoraturnotarde() {
		if (jhoraturnotardeh == null) {
			jhoraturnotardeh = new JTextField(2);
			jhoraturnotardeh.setToolTipText("Hora cambio turno de tarde");
			jhoraturnotardeh.setBounds(new java.awt.Rectangle(340,262,20,21));
			jhoraturnotardeh.addKeyListener(new Varios. MiAdaptador());
			jhoraturnotardeh.setText(String.valueOf( confi.horaturnotardeh));
			jhoraturnotardeh.setInputVerifier( new Varios.miNumericVerifier (0,23,21));		
		}
		if (jhoraturnotardem == null) {
			jhoraturnotardem = new JTextField(2);
			jhoraturnotardem.setToolTipText("Hora cambio turno de tarde");
			jhoraturnotardem.setBounds(new java.awt.Rectangle(360,262,20,21));
			jhoraturnotardem.addKeyListener(new Varios. MiAdaptador());
			jhoraturnotardem.setText(String.valueOf( confi.horaturnotardem));
			jhoraturnotardem.setInputVerifier( new Varios.miNumericVerifier (0,60,30));		
		}
		
	}
	

	private void gethorarecepcion() {
		if (jhorarecepcionh == null) {
			jhorarecepcionh = new JTextField(2);
			jhorarecepcionh.setToolTipText("Hora de generacion de huecos diarios");
			jhorarecepcionh.setBounds(new java.awt.Rectangle(340,205,20,21));
			jhorarecepcionh.addKeyListener(new Varios. MiAdaptador());
			jhorarecepcionh.setText(String.valueOf( confi.horaRecepcionh   ));
			jhorarecepcionh.setInputVerifier( new Varios.miNumericVerifier (0,23,21));
                        jhorarecepcionh.setEnabled(true);
		}
		if (jhorarecepcionm == null) {
			jhorarecepcionm = new JTextField(2);
			jhorarecepcionm.setToolTipText("Hora de generacion de huecos diarios");
			jhorarecepcionm.setBounds(new java.awt.Rectangle(360,205,20,21));
			jhorarecepcionm.addKeyListener(new Varios. MiAdaptador());
			jhorarecepcionm.setText(String.valueOf( confi.horaRecepcionm   ));
			jhorarecepcionm.setInputVerifier( new Varios.miNumericVerifier (0,60,30));		
		}
		
	}
	
	private JCheckBox getjCgestionHuecos() {
		if (jCgestionHuecos == null) {
			jCgestionHuecos = new JCheckBox();
			jCgestionHuecos.setToolTipText("Activar gestión de huecos para todas las colas configuradas.");
			jCgestionHuecos.setBounds(new java.awt.Rectangle(240,235,130,19));
			jCgestionHuecos.setText("Gestión Huecos:");
			jCgestionHuecos.setHorizontalTextPosition(JCheckBox.LEFT);
			jCgestionHuecos.setSelected(confi.gestionHuecosActivada);

		}
		return jCgestionHuecos;
	}

	private JCheckBox getjCcomprobarMonitores() {
		if (jCcomprobarMonitores == null) {
			jCcomprobarMonitores = new JCheckBox();
			jCcomprobarMonitores.setToolTipText("Comprobar el estado de los monitores antes de pasar a automatico y antes de enviar cada tique");
			jCcomprobarMonitores.setBounds(new java.awt.Rectangle(237,145,130,19));
			jCcomprobarMonitores.setText("Comprobar Mon.");
			jCcomprobarMonitores.setHorizontalTextPosition(JCheckBox.LEFT);
			jCcomprobarMonitores.setSelected(confi.comprobarMonitores);

		}
		return jCcomprobarMonitores;
	}

	private JCheckBox getjCEstimarRetrasos() {
		if (jCEstimarRetrasos == null) {
			jCEstimarRetrasos = new JCheckBox();
			jCEstimarRetrasos.setToolTipText("Activar rutina de estimacion de retrasos para los tiques emitidos");
			jCEstimarRetrasos.setBounds(new java.awt.Rectangle(33,232,140,19));
			jCEstimarRetrasos.setText("Estimar retrasos.");
			jCEstimarRetrasos.setHorizontalTextPosition(JCheckBox.LEFT);
			jCEstimarRetrasos.setSelected(confi.EstimarRetrasos);

		}
		return jCEstimarRetrasos;
	}

	
	private JCheckBox getjCRecepcionista() {
		if (jCRecepcionista == null) {
			jCRecepcionista = new JCheckBox();
			jCRecepcionista.setToolTipText("Funciona con Gestor normal o con 'miniGestor' en los operadores.");
			jCRecepcionista.setBounds(new java.awt.Rectangle(268,85,220,19));
			jCRecepcionista.setText("Oficina con Gestor-Recepcionista");
			jCRecepcionista.setSelected(!confi.modoSinGestor );
			
////			if (!confi.modoSinGestor){
////				confi.autoenviocolacero=false;
////			}
//			jCRecepcionista.addActionListener(new ActionListener() {
//				@Override
//				public void actionPerformed(ActionEvent e) {
//					// TODO Auto-generated method stub
//					//System.out.println(e.getSource().toString());
//					if (((JCheckBox)e.getSource()).isSelected()) {
//						jCAutoenvioColaCero.setSelected(false);
//						jCAutoenvioColaCero.setEnabled(false);
//
//			        }
//					else {
//						jCAutoenvioColaCero.setEnabled(true);
//					}
//					//jCAutoenvioColaCero.
//
//				}
//
//			});
			
		}
		return jCRecepcionista;
	}
	
	
	private JCheckBox getjpermitirNoiden() {
		if (jpermitirNoiden == null) {
			jpermitirNoiden = new JCheckBox();
			jpermitirNoiden.setToolTipText("Permitir # en identificación, como identificación válida.");
			jpermitirNoiden.setBounds(new java.awt.Rectangle(500,145,250,19));
                      // 	jpermitirNoiden.setBounds(new java.awt.Rectangle(385,337,250,19));
                  //      jCAutoenvioColaCero.setBounds(new java.awt.Rectangle(500,85,250,19));
			jpermitirNoiden.setText("Permitir # en identificación:");
			//jpermitirNoiden.setSelected(true );
                        jpermitirNoiden.setSelected(confi.permitirNoiden);
			jpermitirNoiden.setHorizontalTextPosition(jpermitirNoiden.LEFT);
			//jLabelx=new JLabel("SQL Express:");
			//jLabelx.setBounds(375,337,103,19);
			//jLabelx.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
			//this.add(jLabelx, null);	
                      //  jpermitirNoiden.setEnabled(false);
		}
		return jpermitirNoiden;
	}


	private JCheckBox getJCapagarOperadoresFantasma() {
		if (jCapagarOperadoresFantasma == null) {
			jCapagarOperadoresFantasma = new JCheckBox();
			jCapagarOperadoresFantasma.setToolTipText("Expulsar los clientes que no mantienen viva la comunicación (fantasmas).");
			jCapagarOperadoresFantasma.setBounds(new java.awt.Rectangle(268,115,145,19));
			jCapagarOperadoresFantasma.setText("Apagar Op. fantasma");
			jCapagarOperadoresFantasma.setSelected(confi.apagarOperadoresFantasma);
		}
		return jCapagarOperadoresFantasma;
	}
	private JTextField getjservidorSQL(){
		if (jservidorSql == null) {
		jservidorSql = new JTextField();
		jservidorSql.setText(confi.servidorSql);
		jservidorSql.setToolTipText("Nombre del equipo donde esta instalado SQLServer");
		jservidorSql.setBounds(new java.awt.Rectangle(134, 292, 250, 22));
		}
		return jservidorSql;
		
	}
	private JComboBox getjcbColaAutoenvio() {
		if (jcbColaAutoenvio == null){
		jcbColaAutoenvio = new JComboBox();
		jcbColaAutoenvio.setBounds(new java.awt.Rectangle(600,85, 100, 22));
		jcbColaAutoenvio.setToolTipText("Cola de categoría 0 donde se asignarán todos los autoenvíos de la oficina.");
		cargaComboColasTipo0();
		
		}
      return jcbColaAutoenvio;
	}
        
      private JCheckBox getjCContestarResumenColasOpe() {
		if (jCContestarResumenColasOpe == null) {
			jCContestarResumenColasOpe = new JCheckBox();
			jCContestarResumenColasOpe.setToolTipText("Constestar al botón del operador de tiques pendientes de las colas que atiende.");
			jCContestarResumenColasOpe.setBounds(new java.awt.Rectangle(500,115,145,19));
			jCContestarResumenColasOpe.setText("Contestar Op.");
			jCContestarResumenColasOpe.setSelected(confi.ContestarResumenColasOpe);
                        jCContestarResumenColasOpe.setHorizontalTextPosition(jpermitirNoiden.LEFT);
		}
		return jCContestarResumenColasOpe;
	}
        
        
	private JTextField getjBaseDatosAte(){
		//if (jBaseDatosAte == null) {
			jBaseDatosAte = new JTextField();
			jBaseDatosAte.setText(confi.BaseDatos);
			jBaseDatosAte.setToolTipText("Base de datos SQLServer");
			jBaseDatosAte.setBounds(new java.awt.Rectangle(134, 322, 140, 22));
                       
		//}
		return jBaseDatosAte;
		
	}
	private JTextField getJretrasoTicket() {
		if (jretrasoTicket == null) {
			jretrasoTicket = new JTextField(3);
			jretrasoTicket.setToolTipText("Tiempo mínimo desde que se emite el ticket hasta que se le puede llamar por el monitor(en segundos).Solo cuando no hay salas de espera.");
			jretrasoTicket.setBounds(new java.awt.Rectangle(134,262,33,21));
			jretrasoTicket.addKeyListener(new Varios.MiAdaptador());
			jretrasoTicket.setText(String.valueOf( confi.retrasoTicket    ));
			jretrasoTicket.setInputVerifier( new miNumericVerifier (10,999,30));	
			
		}
		return jretrasoTicket;
	}

	private void GuardarPreferencias(){
		confi.nombreoficina=jnombreoficina.getText();
		confi.servidor =Integer.parseInt(jservidor.getText());
		confi.ipPort=Integer.parseInt( jipPort.getText());
		confi.codigoCentro= jcodigoCentro.getText();
		
		confi.tiempoBucle=Integer.parseInt( jtiempoBucle.getText());
		confi.margenRetraso  =Integer.parseInt( jmargenRetraso.getText());
		confi.tiempoPenalizacion =Integer.parseInt( jtiempoPenalizacion.getText());
		confi.comprobarMonitores  =jCcomprobarMonitores.isSelected();
		confi.gestionHuecosActivada  =jCgestionHuecos.isSelected();
		confi.modoSinGestor=!jCRecepcionista.isSelected();
		

		confi.horaRecepcionh=jhorarecepcionh.getText();

		confi.horaRecepcionm=jhorarecepcionm.getText();
		confi.horaturnotardeh=jhoraturnotardeh.getText();
		confi.horaturnotardem=jhoraturnotardem.getText();
		confi.servidorSql=jservidorSql.getText();
		confi.permitirNoiden  =jpermitirNoiden.isSelected();
		confi.colasSimultaneas=Integer.parseInt( jcolasSimultaneas.getText());
		confi.BaseDatos=jBaseDatosAte.getText();
		confi.retrasoTicket =Integer.parseInt(jretrasoTicket.getText());
		//confi.URLActualizacion=jColaAutoEnvio.getText().trim();
                confi.ColaAutoenvio = (jcbColaAutoenvio.getSelectedIndex()>0)?(String)jcbColaAutoenvio.getSelectedItem():"";
		confi.ContestarResumenColasOpe = jCContestarResumenColasOpe.isSelected();
//		if (confi.URLActualizacion.length()>0) {
//			if (confi.URLActualizacion.charAt(confi.URLActualizacion.length()-1)!='/')
//			{
//				confi.URLActualizacion=confi.URLActualizacion+	"/";
//				jColaAutoEnvio.setText(confi.URLActualizacion);
//			}
//		}
		//confi.fechaInicio=jDFInicio.getDate();
		//confi.fechaFinal =jDFFin.getDate();
		confi.EstimarRetrasos=jCEstimarRetrasos.isSelected();
		
		//servidor.utiles.Global.modoAutomatico=jRmodoAutomatico.isSelected();

		confi.apagarOperadoresFantasma=jCapagarOperadoresFantasma.isSelected();
		if (!confi.salva("ConfiguracionServidor.ini")){
			JOptionPane.showMessageDialog(null,
			"No se pudo actualizar ConfiguraServidor.ini.","Configuración colas",JOptionPane.ERROR_MESSAGE);
		}
		else
		{
			JOptionPane.showMessageDialog(null,
					"Actualizado fichero ConfiguraServidor.ini.","Configuración colas",JOptionPane.INFORMATION_MESSAGE);
		}
	}
	public boolean haCambiadoalgo(){
		boolean cambio=false;
		cambio=!(
		confi.nombreoficina.equals( jnombreoficina.getText()) &&
		confi.ipPort==Integer.parseInt( jipPort.getText()) &&
		confi.codigoCentro.equals(jcodigoCentro.getText()) &&
		confi.tiempoBucle==Integer.parseInt( jtiempoBucle.getText()) && 
		confi.margenRetraso  ==Integer.parseInt( jmargenRetraso.getText()) && 
		confi.tiempoPenalizacion ==Integer.parseInt( jtiempoPenalizacion.getText()) && 
		confi.comprobarMonitores  ==jCcomprobarMonitores.isSelected() && 
		confi.gestionHuecosActivada  ==jCgestionHuecos.isSelected() && 
		confi.modoSinGestor==!jCRecepcionista.isSelected() && 
//		confi.horaEnvioh.equals(jhoraenvioh.getText()) &&
		confi.horaRecepcionh.equals(jhorarecepcionh.getText()) && 
//		confi.horaEnviom.equals(jhoraenviom.getText()) && 
		confi.horaRecepcionm.equals(jhorarecepcionm.getText()) && 
		confi.horaturnotardeh.equals(jhoraturnotardeh.getText()) && 
		confi.horaturnotardem.equals(jhoraturnotardem.getText()) && 
		confi.servidorSql.equals(jservidorSql.getText()) && 
		confi.permitirNoiden==(jpermitirNoiden.isSelected()) &&
		confi.colasSimultaneas==Integer.parseInt( jcolasSimultaneas.getText()) && 
		confi.BaseDatos.equals(jBaseDatosAte.getText()) && 
		confi.retrasoTicket ==Integer.parseInt(jretrasoTicket.getText()) && 
		confi.EstimarRetrasos==jCEstimarRetrasos.isSelected() &&
		confi.apagarOperadoresFantasma==jCapagarOperadoresFantasma.isSelected() && 
                confi.ColaAutoenvio.equals(((jcbColaAutoenvio.getSelectedIndex()>0)?jcbColaAutoenvio.getSelectedItem():"")) &&
                confi.ContestarResumenColasOpe == jCContestarResumenColasOpe.isSelected() &&
		confi.servidor ==Integer.parseInt(jservidor.getText())
		);
		return cambio; 
		
	}
        
        public  void cargaComboColasTipo0(){
		String antvalor;
		try {
			Tabla_Base top = BaseDatos.bd().tablabase ("Colas");
			top.leerDatos("where CodigoEstadistico=0");
			antvalor=((jcbColaAutoenvio.getItemCount()>0)?jcbColaAutoenvio.getSelectedItem().toString():confi.ColaAutoenvio);

			jcbColaAutoenvio.removeAllItems();
			jcbColaAutoenvio.addItem("Desactivado");
			
			top.beforeFirst();
			while (top.next()) {
				String cola = new String(top.getString("Cola"));
				jcbColaAutoenvio.addItem(cola);
			}
			jcbColaAutoenvio.setSelectedItem(antvalor==""?"Desactivado":antvalor);
		} catch (SQLException e) {
			JOptionPane.showMessageDialog(null, "No se pudo cargar colas.\n" + e.getMessage());
			e.printStackTrace();
			System.exit(1);
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null, "No se pudo cargar colas.\n" + e.getMessage());
			e.printStackTrace();
			System.exit(1);
		}
		
		
	}
        
	private JButton getJButton() {
		if (jButton == null) {
			jButton = new JButton();
			jButton.setBounds(new java.awt.Rectangle(184,450,87,25));
			jButton.setText("Guardar");
			jButton.addActionListener(this); 
		}
		return jButton;
	}


	public void actionPerformed(java.awt.event.ActionEvent e) {
		if (e.getActionCommand().equals("Guardar"))
		GuardarPreferencias(); 
		
	}

	public frmParametrosServidor() {
		super();
		initialize();
	}
	private void initialize(){
		confi=Configuracion.getConfiguracion();
		
		//if (confi.usarsqlexpress) {
			
		//}
		this.setSize(517,324);
		getJContentPane();
	}




	
 }	
