/* 
* 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.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;

import java.util.Iterator;

import javax.swing.AbstractButton;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;

import servidor.configurador.Varios.miJTextField;


import servidor.datos.BaseDatos;
import servidor.datos.TablaServicios;


public class frmMantenCola extends JDialog implements ActionListener {
	private JTextField jtxtDescripcion = null;
	private JCheckBox jcbActivo = null;
	private JCheckBox jcbGesHue = null;
        private JCheckBox jcbOpeHue = null;
	private JCheckBox jcbNifObligatorio = null;
	private JCheckBox jcbColaEspecial = null;
	private JTextField jtxtCola = null;

	private miJTextField jtxtBonificacion = null;
	private miJTextField jtxtUmbralSuplencia = null;
//	private miJTextField jtxtCodNave = null;
	
	private JComboBox jcbCategoriaEsta = null;
	private JComboBox jcbSalaEspera = null;
	private HashMap categorias = null;
	private HashMap salas=null;
        //private boolean tieneserviciosCP;

//	private ItemGridSCP[] itemSCP;
//	private JTable gridSCP;
	//private String[] cabeceras = {"Cod CP", "Servicio Cita Previa Asociados"};


	public frmMantenCola(boolean modal, HashMap categorias,HashMap salasespera) throws HeadlessException {
		super();
		initialize();
/*		this.categorias = categorias;
		Iterator it = categorias.values().iterator();
		while (it.hasNext()) {
			jcbCategoriaEsta.addItem((String) (it.next()));
		}*/
		this.categorias = categorias;
		ArrayList strcates = new ArrayList();
		strcates.addAll(this.categorias.values());
		//Collections.sort(strcates);
		for (int i=0;i<strcates.size();i++)
         {
			jcbCategoriaEsta.addItem((String) strcates.get(i));
		}
		this.salas = salasespera;
		ArrayList idssalas = new ArrayList();
		idssalas.addAll(this.salas.keySet());
		Collections.sort(idssalas);
		for (int i=0;i<idssalas.size();i++)
         {
			jcbSalaEspera.addItem((String) (this.salas.get(idssalas.get(i))));
		}

		this.setModal(modal);
		this.setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);


	}
	
	
//	private void actualizaSCP() {
//		this.cargaPanelPorSCP();
//
//		gridSCP.setModel(new GridTableModelSCP(itemSCP, cabeceras));
//		gridSCP.getColumnModel().getColumn(0).setMaxWidth(60);
//
//	}
//
//	void cargaPanelPorSCP() {
//
//		ArrayList servicioCP = new ArrayList();
//		HashMap hCP = new HashMap(30);
//        tieneserviciosCP=false;
//		try {
//			TablaServicios top = BaseDatos.bd().tablaServicios();
//			top.leerDatos(null);
//			top.beforeFirst();
//
//			while (top.next()) {
//				String sCP = new String(top.getcodigo());
//				String descripcion = new String(top.getdescripcion());
//				String colasasociadas=top.getcolasasociadas();
//				if (colasasociadas.lastIndexOf(this.getCola())!=-1){
//					Object[] a = {sCP, descripcion};
//					sCP=" " + sCP;
//				    servicioCP.add(sCP);
//				    hCP.put(sCP, a);
//					tieneserviciosCP=true;
//				}
//			}
//		} catch (SQLException e) {
//			e.printStackTrace();
//		}
//		Collections.sort(servicioCP);
//		itemSCP = new ItemGridSCP[servicioCP.size()];
//
//		for (int i = 0; i < servicioCP.size(); i++) {
//			Object[] a = (Object[]) hCP.get(servicioCP.get(i));
//			itemSCP[i] = new ItemGridSCP((String) a[0], (String) a[1]);
//		}
//
//	}
//
	
	
	
	public void Modifica(String letracola, String nombre,Boolean activa,String catego,
			     String sala ,String boni,Boolean NifObligatorio,Boolean ColaEspecial,String UmbralSuplencia,Boolean GesHue,Boolean OpeHue) {
//		if (letracola.equalsIgnoreCase("Z")) {
//			this.jtxtCola.setEnabled(false);
//			this.jcbCategoriaEsta.setEnabled(false);
//			this.jtxtDescripcion.setEnabled(false);
//		} else {
		this.jtxtCola.setEnabled(true);
		this.jcbCategoriaEsta.setEnabled(true);
		this.jtxtDescripcion.setEnabled(true);
//		}

		this.jtxtCola.setText(letracola);
		this.jtxtCola.setEnabled(false);
		this.jtxtDescripcion.setText(nombre);
		this.jcbActivo.setSelected(activa.booleanValue());
		//this.jcbActivo.setEnabled(conservicioCP);
		this.jcbGesHue.setSelected(GesHue.booleanValue());
                this.jcbOpeHue.setSelected(OpeHue.booleanValue());
		this.jcbCategoriaEsta.setSelectedItem(catego);
		this.jcbSalaEspera.setSelectedItem(sala);
//	this.jtxtCodNave.setText( clavenave);
		this.jtxtBonificacion.setText((boni));
		this.jcbNifObligatorio.setSelected(NifObligatorio.booleanValue());
		this.jcbColaEspecial.setSelected(ColaEspecial.booleanValue());
		this.jtxtUmbralSuplencia.setText(UmbralSuplencia);
		//this.jtxtCodServicio.setText(codservicio);

	//	actualizaSCP();
//	    if (tieneserviciosCP){
//	    	this.jcbActivo.setEnabled(false);
//	    	this.jcbGesHue.setEnabled(false);
//	    }
		this.setLocationRelativeTo(null);
		
		this.setVisible(true);

	}
	public void Alta() {
		this.jtxtDescripcion.setText("");
		this.jtxtCola.setText("");
		this.jcbActivo.setSelected(true);
		this.jcbGesHue.setSelected(true);
                this.jcbOpeHue.setSelected(true);
		this.jtxtBonificacion.setText("0");
		this.jcbNifObligatorio.setSelected(false);
		this.jcbColaEspecial.setSelected(false);
		this.jtxtUmbralSuplencia.setText("0");
//		this.jtxtCodNave .setText("0");
		this.jcbSalaEspera.setSelectedIndex(0);
		this.setLocationRelativeTo(null);
		this.setVisible(true);
	}
	private void initialize() {
		this.setSize(450, 375);
		this.setTitle("Mantenimiento Colas");
		this.getJContentPane();
	}
	public String getCola(){
		return this.jtxtCola.getText();
	}
	public String getDescripcion(){
		return this.jtxtDescripcion.getText().trim();
	}
	public String getCodCate() {
		String stcod = (String) jcbCategoriaEsta.getSelectedItem();
		Iterator it = categorias.keySet().iterator();
		while (it.hasNext()) {
			String clave = (String) it.next();
			if (stcod.equals(categorias.get(clave))) {
				return clave;
			}
		}
		return null;
	}
	public int getIdSala() {
		String stcod = (String) jcbSalaEspera.getSelectedItem();
		Iterator it = salas.keySet().iterator();
		while (it.hasNext()) {
			Integer clave = (Integer) it.next();
			if (stcod.equals(salas.get(clave))) {
				return clave.intValue();
			}
		}
		return 0;
	}
	public String getCodNavegacion(){
		return "0";
	}
	public String getBonificacion(){
		String strx=this.jtxtBonificacion.getText();
		if (strx.length()==0) {
			strx="0";
		}
		return strx;
	}
	public String getNifObligatorio(){
		return this.jcbNifObligatorio.isSelected()?"1":"0";
	}
	public String getColaEspecial(){
		return this.jcbColaEspecial.isSelected()?"1":"0";
	}
	public String getUmbralSuplencia(){
		String strx=this.jtxtUmbralSuplencia.getText();
		if (strx.length()==0) {
			strx="0";
		}
		return strx;
	}

	public String getActivo(){
	return this.jcbActivo.isSelected()?"1":"0";
	}
	public String getGesHue(){
		return this.jcbGesHue.isSelected()?"1":"0";
		}
        public String getOpeHue(){
		return this.jcbOpeHue.isSelected()?"1":"0";
		}
	private void getJContentPane() {
	
			JPanel jContentPane = new JPanel(null);

			JLabel jLabel = new JLabel("Cola:");
			jLabel.setBounds(new java.awt.Rectangle(12, 12, 57, 22));
			jContentPane.add(jLabel, null);
			jtxtCola = new JTextField(2);
			jtxtCola.addKeyListener(new Varios.MiAdaptadorCola());
			jtxtCola.setBounds(new java.awt.Rectangle(45, 13, 23, 22));
			jContentPane.add(jtxtCola, null);

			jLabel = new JLabel("Descripcion:");
			jLabel.setBounds(new java.awt.Rectangle(10, 75, 74, 22));
			jContentPane.add(jLabel, null);
			jtxtDescripcion = new JTextField(25);
			jtxtDescripcion.addKeyListener(new Varios.MiAdaptadorCadena());
			jtxtDescripcion.setBounds(new java.awt.Rectangle(85, 76, 278, 22));
			jContentPane.add(jtxtDescripcion, null);

			jcbCategoriaEsta = new JComboBox();
			jcbCategoriaEsta.setBounds(new java.awt.Rectangle(85, 105, 278, 22));
			jcbCategoriaEsta.setToolTipText("Categoria estadistica a la que esta asociado este servicio.");
			jContentPane.add(jcbCategoriaEsta, null);
			jLabel = new JLabel("Categoria:");
			jLabel.setBounds(new java.awt.Rectangle(10, 105, 67, 22));
			jContentPane.add(jLabel, null);
			
			jcbSalaEspera = new JComboBox();
			jcbSalaEspera.setBounds(new java.awt.Rectangle(85, 135, 278, 22));
			jcbSalaEspera.setToolTipText("Sala de espera de esta cola");
			jContentPane.add(jcbSalaEspera, null);
			jLabel = new JLabel("S. Espera:");
			jLabel.setBounds(new java.awt.Rectangle(10, 135, 67, 22));
			jContentPane.add(jLabel, null);

			jcbActivo = new JCheckBox("Activa: ");	
			jcbActivo.setBounds(105, 12, 70, 25);
			jcbActivo.setHorizontalTextPosition(JCheckBox.LEFT);
			jContentPane.add(jcbActivo, null);

                        jcbColaEspecial = new Varios.miJCheckBox("Esp: ");
			jcbColaEspecial.setBounds(90,42, 55, 25);
			jcbColaEspecial.setToolTipText("Cola especial, no aparecera en autoservicio. Antiguas de doble letra.");
			jcbColaEspecial.setHorizontalTextPosition(JCheckBox.LEFT);
			jContentPane.add(jcbColaEspecial, null);
			
		        jcbNifObligatorio = new Varios.miJCheckBox("NIFO: ");
			jcbNifObligatorio.setBounds(198,12, 65, 22);
			jcbNifObligatorio.setToolTipText("Para obtener una cita de esta cola se requerira obligatoriamente una Identificación fiscal.");
			jcbNifObligatorio.setHorizontalTextPosition(JCheckBox.LEFT);
			jContentPane.add(jcbNifObligatorio, null);
			
			jLabel = new JLabel("Umbral Op:");
			jLabel.setBounds(new java.awt.Rectangle(280, 12, 87, 22));
			jContentPane.add(jLabel, null);
			jtxtUmbralSuplencia = new miJTextField(2);
			jtxtUmbralSuplencia.addKeyListener(new Varios.MiAdaptador());
			jtxtUmbralSuplencia.setInputVerifier(new Varios.miNumericVerifier(0, 99, 0));
			jtxtUmbralSuplencia.setBounds(345,12, 25, 22);
			jtxtUmbralSuplencia.setToolTipText("Nº de operadores conectados minimo antes de que se activen los operadores suplentes.");
			jContentPane.add(jtxtUmbralSuplencia, null);

			jLabel = new JLabel("Bonif.:");
			jLabel.setBounds(new java.awt.Rectangle(8, 42, 67, 22));
			jContentPane.add(jLabel, null);
			jtxtBonificacion = new miJTextField(4);
			jtxtBonificacion.addKeyListener(new Varios.MiAdaptadorNumeroNegativo());
			jtxtBonificacion.setInputVerifier(new Varios.miNumericVerifier(-999, 999, 0));
			jtxtBonificacion.setBounds(45,42, 35, 22);
			jtxtBonificacion.setToolTipText("Bonificacion, resta estos minutos a la hora de ticket para hacer que pase antes que otros servicios.");
			jContentPane.add(jtxtBonificacion, null);			
			
//			jLabel = new JLabel("Clave Nav:");
//			jLabel.setBounds(new java.awt.Rectangle(80, 42, 87, 22));
//			jContentPane.add(jLabel, null);
//			jtxtCodNave = new miJTextField(2);
//			jtxtCodNave.addKeyListener(new Varios.MiAdaptador());
//			jtxtCodNave.setInputVerifier(new Varios.miNumericVerifier(0, 99, 0));
//			jtxtCodNave.setBounds(140, 42, 25, 22);
//			jtxtCodNave.setToolTipText("Clave de Navegacion. Indica al operador que accion automatica debe realizar. 1: Cita previa");
//			jContentPane.add(jtxtCodNave, null);

			jcbGesHue = new Varios.miJCheckBox("Ges.Huecos: ");
			jcbGesHue.setBounds(155, 42, 100, 25);
			jcbGesHue.setToolTipText("Gestion de huecos. " +
					"Activado siempre en colas asociadas a algun servicio de cita previa.");
			jcbGesHue.setHorizontalTextPosition(JCheckBox.LEFT);
			jContentPane.add(jcbGesHue, null);

                        jcbOpeHue = new Varios.miJCheckBox("Ope.Huecos: ");
			jcbOpeHue.setBounds(270,42, 140, 25);
			jcbOpeHue.setToolTipText("Control de Huecos. en Operador.");
			jcbOpeHue.setHorizontalTextPosition(JCheckBox.LEFT);
			jContentPane.add(jcbOpeHue, null);
//			JScrollPane jScrollPane1 = new javax.swing.JScrollPane();
//			gridSCP = new javax.swing.JTable();
//			gridSCP.setName("gridSCP");
//
//			jScrollPane1.setViewportView(gridSCP);
			JButton jbAceptar = new JButton("Aceptar");
			jbAceptar.setBounds(100, 290, 90, 20);
			jbAceptar.addActionListener(this);
			jContentPane.add(jbAceptar);
			JButton jbCancelar = new JButton("Cancelar");
			jbCancelar.addActionListener(this);
			jbCancelar.setBounds(210, 290, 90, 20);
			jContentPane.add(jbCancelar);
			
//			jScrollPane1.setBounds(10, 170, 375, 200);
//			jContentPane.add(jScrollPane1);
		//	jPanel1.add(jPanel2, java.awt.BorderLayout.SOUTH);
			//this.getContentPane().setLayout(null);
			this.getContentPane().add(jContentPane);
			//this.getContentPane().add(jScrollPane1);
		
		
	}

	public void actionPerformed(ActionEvent e) {
		AbstractButton jb = (AbstractButton) e.getSource();
		if (jb.getActionCommand().equalsIgnoreCase("cancelar")) {
			this.jtxtCola.setText("");
			this.setVisible(false);
		}
		if (jb.getActionCommand().equalsIgnoreCase("aceptar")) {
			this.jtxtCola.setText(this.jtxtCola.getText().trim().toUpperCase());
			if (this.jtxtDescripcion.getText().trim().length() == 0) {
				JOptionPane.showMessageDialog(null, "La descripcion no puede estar vacia.");
			} else
				this.setVisible(false);
		}

	}

	
//class ItemGridSCP extends ItemGrid {
//
//	ItemGridSCP(String codCP, String descripcion) {
//			valores = new Object[3];
//			valores[0] = new String(codCP);
//			valores[1] = new String(descripcion);
//		}
//
//	}
//
//	class GridTableModelSCP extends GridTableModel{
//		public GridTableModelSCP(ItemGrid[] datos,String[] cabecera) {
//			super(datos,cabecera);
//		}
//
//
//
//	}
	
}
