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


import javax.swing.BorderFactory;
import javax.swing.JButton;

import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextField;




import servidor.configurador.Varios.miJTextField;
import servidor.datos.BaseDatos;
import servidor.datos.TablaSalasEspera;
import servidor.utiles.smoothJLabel;


/**
 * Panel de mantenimiento de los operadores
 * @author f41000g9
 *
 */
	public class frmSalasEspera extends  MouseAdapter implements ActionListener
	{

		ArrayList SalasEspera = null;
		JPanel jPanelSalasEspera = null;
		ItemGridSalaEspera[] itemSalasEspera;
		String[] cabeceras = {"Id", "Descripcion", "M.Aviso" };
		JTable gridSalasEspera;
		private javax.swing.JPanel jPanel1,jPanel2,jPanel3;
		private javax.swing.JScrollPane jScrollPane1;
		
		public frmSalasEspera() {
			super();
			initComponents();
			actualizaSalasEspera();
			gridSalasEspera.setEnabled(false);
			gridSalasEspera.addMouseListener(this);
		}
		
		private void actualizaSalasEspera(){
			this.cargaPanelPorSalaEspera();
			gridSalasEspera.setModel(new GridTableModel(itemSalasEspera,
					cabeceras));
			gridSalasEspera.getColumnModel().getColumn(0).setMaxWidth(0);
			gridSalasEspera.getColumnModel().getColumn(0).setMinWidth(0);
			gridSalasEspera.getColumnModel().getColumn(0).setPreferredWidth(0);
			gridSalasEspera.getColumnModel().getColumn(0).setResizable(false);
			gridSalasEspera.getColumnModel().getColumn(2).setMaxWidth(80);
		}		
		
		

		public void mousePressed(java.awt.event.MouseEvent evt) {
			if (((JTable) evt.getSource()).getName() == "gridSalasEspera") {
				seleccionarFilaGrid(gridSalasEspera, evt.getPoint());
				if (evt.getClickCount() == 2) {
					frmMantenSalaEspera fO = new frmMantenSalaEspera(frmConfiguraServidor.getConfiFrame(),true);
					int fila=gridSalasEspera.getSelectedRow();
					int idsala=((Integer) gridSalasEspera.getValueAt(fila, 0)).intValue();
					fO.Modifica((String) gridSalasEspera.getValueAt(fila, 1), 
							((Integer) gridSalasEspera.getValueAt(fila, 2)).intValue());
					if (!fO.jtxtTextoSala.getText().equalsIgnoreCase("")) {
						try{
							String textosala = fO.jtxtTextoSala.getText();
							int tespera = Integer.parseInt(fO.jTEspera.getText());	
						TablaSalasEspera top = BaseDatos.bd().tablaSalasEspera();
						top.SQL("UPDATE SalasEspera SET TextoSalaEspera='"
								+textosala + "' ,TiempoEspera="+tespera +" WHERE IdSalaEspera="
								+idsala) ;
							actualizaSalasEspera();
						}
						catch  (SQLException e){
							JOptionPane.showMessageDialog(null,
									"No se pudo actualizar la base de datos.\n"+e.getMessage());
						     e.printStackTrace();
						     System.exit(1);
						} 
					}
				}
			}
		}

		public JPanel contenido() {
			return jPanelSalasEspera;
		}

		void seleccionarFilaGrid(JTable grid, java.awt.Point p) {
			int r = grid.rowAtPoint(p);
			if (r != -1) {
				gridSalasEspera.changeSelection(r, 0, false, false);
			}
		}

		void cargaPanelPorSalaEspera() {

			SalasEspera = new ArrayList();
			try {
				TablaSalasEspera top = BaseDatos.bd().tablaSalasEspera();
				top.leerDatos("order by idSalaEspera");
				itemSalasEspera = new ItemGridSalaEspera[top.recordsCount()];
				top.beforeFirst();
				int i = 0;
				while (top.next()) {
					String textosala = new String(top.getTextoSalaEspera());
					int tespera = top.getRetraso();
					int id=top.getId();
					itemSalasEspera[i++] = new ItemGridSalaEspera(id,textosala,tespera);
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}


		}

		private void initComponents() {
			jPanelSalasEspera = new JPanel();
			jPanelSalasEspera.setLayout(new BorderLayout());
	        jPanel2=new javax.swing.JPanel();
			jPanel1 = new javax.swing.JPanel();
			jPanel3 = new javax.swing.JPanel();

			jScrollPane1 = new javax.swing.JScrollPane();
			gridSalasEspera = new javax.swing.JTable();
			gridSalasEspera.getTableHeader().setReorderingAllowed(false);
	        gridSalasEspera.setName("gridSalasEspera");

			jPanel1.setLayout(new java.awt.BorderLayout());

			smoothJLabel titulito=new smoothJLabel("ATENEO - Salas de espera");
			titulito.setFont(new Font("Arial",Font.BOLD ,20));

				//	jPanel3.setPreferredSize(new java.awt.Dimension(490, 35));
			jPanel3.add(titulito);
					jPanel1.add(jPanel3, java.awt.BorderLayout.NORTH);

			jScrollPane1.setViewportView(gridSalasEspera);
	        JButton jbNuevo=new JButton("Nuevo");
	        jbNuevo.addActionListener(this);
	        jPanel2.add(jbNuevo);
			jPanel1.add(jScrollPane1, java.awt.BorderLayout.CENTER);
			jPanel1.add(jPanel2, java.awt.BorderLayout.SOUTH );
			jPanel1.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
			jPanelSalasEspera.add(jPanel1, java.awt.BorderLayout.CENTER);
			
		}
		public void actionPerformed(ActionEvent e) {
			JButton jb = (JButton) e.getSource();
			if (jb.getActionCommand().equalsIgnoreCase("nuevo")) {
				frmMantenSalaEspera fO = new frmMantenSalaEspera(
						frmConfiguraServidor.getConfiFrame(), true);
				fO.Alta();
				if (!fO.jtxtTextoSala.getText().equalsIgnoreCase("")) {
					String textosala = fO.jtxtTextoSala.getText();
					int tespera = Integer.parseInt(fO.jTEspera.getText());	
					if (JOptionPane.showConfirmDialog(	null,
									"¿Seguro deseas crear el SalaEspera: "
											+ textosala
											+ "?.\n No se podran borrar posteriormente.",
									"Confirmacion alta Salas Espera",
									JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
						TablaSalasEspera top = BaseDatos.bd().tablaSalasEspera();
						
						try {
						top.nuevoSalaEspera(textosala, tespera );
						actualizaSalasEspera();
						}						
						catch  (SQLException ex){
							JOptionPane.showMessageDialog(null,
							"No se pudo actualizar la base de datos.\n"+ex.getMessage());
						     ex.printStackTrace();
						     System.exit(1);
						} 
					}
				}
			}
	
		}

		
		

		class frmMantenSalaEspera extends JDialog implements ActionListener {

			private JPanel jContentPane = null;
			private miJTextField jTEspera = null;
			private JTextField jtxtTextoSala = null;
			private JButton jbAceptar = null;
			private JButton jbCancelar = null;
			public frmMantenSalaEspera(JFrame fconfi,boolean modal) throws HeadlessException {
				super(fconfi,modal);
				initialize();
			}

			public void Modifica( String textosala,int TEspera) {
				this.jTEspera.setText(String.valueOf(TEspera));
				this.jtxtTextoSala.setText(textosala);
				this.setLocationRelativeTo (null);
				this.setVisible(true);
			}
			public void Alta() {
				this.jTEspera.setText("");
				this.jtxtTextoSala.setText("");
				this.setLocationRelativeTo (null);
				this.setVisible(true);
			}
			private void initialize() {
				this.setSize(372, 160);
				this.setTitle("Mantenimiento Salas Espera");
				this.setContentPane(getJContentPane());
			}

			private JPanel getJContentPane() {
				if (jContentPane == null) {
					JLabel jLabel1 = new JLabel();
					jLabel1.setBounds(new java.awt.Rectangle(15, 12, 74, 26));
					jLabel1.setText("Descripcion:");
					JLabel jLabel = new JLabel();
					jLabel.setBounds(new java.awt.Rectangle(10, 45, 97, 25));
					jLabel.setText("Margen Aviso:");
					jContentPane = new JPanel();
					jContentPane.setLayout(null);
					jContentPane.add(getJTEspera(), null);
					jtxtTextoSala = new JTextField(18);
					jtxtTextoSala.setBounds(new java.awt.Rectangle(100, 12, 178, 23));
					jtxtTextoSala.addKeyListener(new Varios.MiAdaptadorCadena());
					jContentPane.add(jtxtTextoSala, null);
					
					jContentPane.add(jLabel, null);
					jContentPane.add(jLabel1, null);
					//jLabel =new JLabel("Activo:");
					//jLabel.setBounds(new java.awt.Rectangle(12, 78, 57, 25));

					jbAceptar = new JButton("Aceptar");
					jbAceptar.setBounds(new java.awt.Rectangle(78, 90, 83, 25));
					jbAceptar.addActionListener(this);
					jContentPane.add(jbAceptar, null);
					jbCancelar = new JButton("Cancelar");
					jbCancelar.setBounds(new java.awt.Rectangle(194, 90, 89, 25));
					jbCancelar.setText("Cancelar");
					jbCancelar.addActionListener(this);
					jContentPane.add(jbCancelar, null);
				}
				return jContentPane;
			}
			private JTextField getJTEspera() {
				if (jTEspera == null) {
					jTEspera = new miJTextField(3);
					jTEspera.setToolTipText("Tiempo (segundos) minimo desde que se emite ticket hasta que puede ser llamado por un monitor de esta sala de espera.");
					jTEspera.setBounds(new java.awt.Rectangle(100, 45, 35, 23));
					jTEspera.addKeyListener(new Varios.MiAdaptador());
					jTEspera.setText(String.valueOf(1 ));
					jTEspera.setInputVerifier( new Varios.miNumericVerifier (1,999,15));
				}
				return jTEspera;
			}

			public void actionPerformed(ActionEvent e) {
				JButton jb = (JButton) e.getSource();
				if (jb.getActionCommand().equalsIgnoreCase("cancelar")) {
					this.jtxtTextoSala.setText("");
					this.setVisible(false);
				}
				if (jb.getActionCommand().equalsIgnoreCase("aceptar")) {
					this.jTEspera.setText(this.jTEspera.getText().trim());
					this.jtxtTextoSala.setText(this.jtxtTextoSala.getText().trim());
					if (this.jTEspera.getText().length()==0 || this.jtxtTextoSala.getText().length()==0){
						JOptionPane.showMessageDialog(null, "Sala de espera mal definida");
					}
					else
					this.setVisible(false);
				}

			}

		}
	
		class ItemGridSalaEspera extends ItemGrid {
			ItemGridSalaEspera(int id,String textosala, int tespera) {
				valores = new Object[3];
				valores[0] = new Integer(id);
				valores[1] = new String(textosala);
				valores[2] = new Integer(tespera);

			}

		}



		
					
		
		public static void main(String[] argv) {
			frmSalasEspera fp = new frmSalasEspera();
			JFrame jf = new JFrame("gg");
			jf.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
			jf.setContentPane(fp.contenido());
			jf.pack();
			jf.setVisible(true);

		}	
		
	}	
	