/* 
* 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.Point;
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.HashSet;
import java.util.Iterator;

import javax.swing.JButton;
import javax.swing.JCheckBox;

import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;
import javax.swing.table.AbstractTableModel;

import servidor.datos.BaseDatos;
import servidor.datos.Tabla_Base;
import servidor.utiles.Global;

public class frmMantenPuesto extends JDialog implements ActionListener {

	private JTextField jtxtPuesto = null;
	private JCheckBox jcbExclusivo = null;
	private JComboBox jcbZonaAtencion = null;
	private HashMap zonas=null;
	private HashSet colasseleccionadas = null;
	private ItemGridCola[] itemColas;
	private JTable gridColas;
	private String[] cabeceras = {"Cola", "Descripcion", "Selec."};


	public frmMantenPuesto(boolean modal,HashMap zonas) {
		super();
		this.setModal(modal);
		this.setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
		this.setSize(425, 475);
		this.setTitle("Mantenimiento Puestos");
		this.zonas = zonas;
		initComponents();
		ArrayList idszonas = new ArrayList();
		idszonas.addAll(this.zonas.keySet());
		Collections.sort(idszonas);
		for (int i=0;i<idszonas.size();i++)
         {
			jcbZonaAtencion.addItem((String) (this.zonas.get(idszonas.get(i))));
		}
		

	}

	public void Modifica(String numPuesto, String colas,String zona, boolean exclusiva) {
		this.jtxtPuesto.setText(numPuesto);
		this.jcbExclusivo.setSelected(exclusiva);
		this.jcbZonaAtencion.setSelectedItem(zona);
		String[] cols = Global.split(colas, '-');
		colasseleccionadas = new HashSet(cols.length);
		for (int i = 0; i < cols.length; i++) {
			colasseleccionadas.add(cols[i]);
		}
		actualizaColas();
		this.setLocationRelativeTo (null);
		
		this.setVisible(true);

	}
	public void Alta() {

		this.jtxtPuesto.setText("");
		colasseleccionadas = new HashSet();
		actualizaColas();
		this.jcbZonaAtencion.setSelectedIndex(0);
		this.setLocationRelativeTo (null);
		this.setVisible(true);
	}

	private void actualizaColas() {
		this.cargaPanelPorColas();

		gridColas.setModel(new GridTableModelCola(itemColas, cabeceras));
		gridColas.getColumnModel().getColumn(0).setMaxWidth(60);
		gridColas.getColumnModel().getColumn(2).setMaxWidth(60);
	}

	void cargaPanelPorColas() {

		ArrayList colas = new ArrayList();
		HashMap hcolas = new HashMap(30);

		try {
			Tabla_Base top = BaseDatos.bd().tablabase("Colas");
			top.leerDatos(null);
			top.beforeFirst();

			while (top.next()) {
				String cola = new String(top.getString("Cola"));
				String descripcion = new String(top.getString("Descripcion"));
				Boolean activa = new Boolean(colasseleccionadas.contains(cola));
				colas.add(cola);
				Object[] a = {cola, descripcion, activa, activa};
				hcolas.put(cola, a);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		Collections.sort(colas);
		itemColas = new ItemGridCola[colas.size()];
		for (int i = 0; i < colas.size(); i++) {
			Object[] a = (Object[]) hcolas.get(colas.get(i));
			itemColas[i] = new ItemGridCola((String) a[0], (String) a[1], ((Boolean) a[2]).booleanValue());
		}

	}


	
	private void initComponents() {

		JPanel jPanelPuesto = new JPanel();
		JPanel jPanel2 = new javax.swing.JPanel();
		JPanel jPanel1 = new javax.swing.JPanel();

		JLabel jl = new JLabel("Puesto: ");
		jtxtPuesto = new JTextField(3);

		jtxtPuesto.addKeyListener(new Varios.MiAdaptador());
		jtxtPuesto.setInputVerifier(new Varios.miNumericVerifier(1, 999, 1));
		jPanelPuesto.add(jl);
		jPanelPuesto.add(jtxtPuesto);
		jcbExclusivo = new JCheckBox("Exclusivo:");
		jcbExclusivo.setHorizontalTextPosition(SwingConstants.LEFT);
		jPanelPuesto.add(jcbExclusivo);
		//jPanelPuesto.setBorder(new EmptyBorder(20, 0, 10, 0));

		jcbZonaAtencion = new JComboBox();
		//jcbZonaAtencion.setBounds(new java.awt.Rectangle(85, 105, 378, 22));
		jcbZonaAtencion.setToolTipText("Zona de atencion del puesto");
		
		JLabel jLabel = new JLabel("Zona:");
		//jLabel.setBounds(new java.awt.Rectangle(10, 105, 67, 22));
		jPanelPuesto.add(jLabel, null);		
		jPanelPuesto.add(jcbZonaAtencion, null);
		
		JScrollPane jScrollPane1 = new javax.swing.JScrollPane();
		gridColas = new javax.swing.JTable();
		gridColas.setName("gridcolas");
		jPanel1.setLayout(new java.awt.BorderLayout());

		

		jScrollPane1.setViewportView(gridColas);
		JButton jbAceptar = new JButton("Aceptar");
		jbAceptar.addActionListener(this);
		jPanel2.add(jbAceptar);
		JButton jbCancelar = new JButton("Cancelar");
		jbCancelar.addActionListener(this);
		jPanel2.add(jbCancelar);
		jPanel1.add(jScrollPane1, java.awt.BorderLayout.CENTER);
		jPanel1.add(jPanel2, java.awt.BorderLayout.SOUTH);
		this.getContentPane().add(jPanelPuesto, java.awt.BorderLayout.NORTH);
		this.getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);

	}

	public void actionPerformed(ActionEvent e) {
		JButton jb = (JButton) e.getSource();
		if (jb.getActionCommand().equalsIgnoreCase("cancelar")) {
			this.jtxtPuesto.setText("");
			this.setVisible(false);
		}
		if (jb.getActionCommand().equalsIgnoreCase("aceptar")) {
			this.jtxtPuesto.setText(this.jtxtPuesto.getText().toUpperCase());
			this.setVisible(false);
		}

	}
	public String getCadena_capacidades() {
		String cadena = "";
		ItemGridCola itc = null;
		boolean selec = false;
		for (int i = 0; i < itemColas.length; i++) {
			itc = itemColas[i];
			selec = ((Boolean) itc.valores[2]).booleanValue();
			if (selec) {
				cadena = cadena + (cadena != "" ? "-" : "") + (String) (itc.valores[0]);
			}
		}
		return cadena;
	}
	public String getPuesto() {
		return jtxtPuesto.getText();
	}
	public String getExclusiva() {
		return jcbExclusivo.isSelected()?"1":"0";
	}
	public int getIdZona() {
		String stcod = (String) jcbZonaAtencion.getSelectedItem();
		Iterator it = zonas.keySet().iterator();
		while (it.hasNext()) {
			Integer clave = (Integer) it.next();
			if (stcod.equals(zonas.get(clave))) {
				return clave.intValue();
			}
		}
		return 0;
	}
	class ItemGridCola extends ItemGrid {
		
		ItemGridCola(String cola, String descripcion, boolean seleccionada) {
			valores = new Object[3];
			valores[0] = new String(cola);
			valores[1] = new String(descripcion);
			valores[2] = new Boolean(seleccionada);
		}

	}

	class GridTableModelCola extends GridTableModel{
		public GridTableModelCola(ItemGrid[] datos,String[] cabecera) {
			super(datos,cabecera);
		}
		public boolean isCellEditable(int row, int col) {
			return (col == 2);
		}
		

	}

	public static void main(String[] args) {
		//frmMantenPuesto fO = new frmMantenPuesto(true);
	//	fO.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
		//fO.Alta();

	}

}
