/* 
* 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.TablaCategorias;
import servidor.utiles.smoothJLabel;


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

		ArrayList Categorias = null;
		JPanel jPanelCategorias = null;
		ItemGridCategori1[] itemCategorias;
		String[] cabeceras = {"Id", "Descripcion", "Codigo" };
		JTable gridCategorias;
		private javax.swing.JPanel jPanel1,jPanel2,jPanel3;
		private javax.swing.JScrollPane jScrollPane1;
		
		public frmCategoriasEsta() {
			super();
			initComponents();
			actualizaCategorias();
			gridCategorias.setEnabled(false);
			gridCategorias.addMouseListener(this);
		}
		
		private void actualizaCategorias(){
			this.cargaPanelPorCategori1();
			gridCategorias.setModel(new GridTableModel(itemCategorias,
					cabeceras));
			gridCategorias.getColumnModel().getColumn(0).setMaxWidth(0);
			gridCategorias.getColumnModel().getColumn(0).setMinWidth(0);
			gridCategorias.getColumnModel().getColumn(0).setPreferredWidth(0);
			gridCategorias.getColumnModel().getColumn(0).setResizable(false);
			gridCategorias.getColumnModel().getColumn(2).setMaxWidth(80);
		}		
		
		

		public void mousePressed(java.awt.event.MouseEvent evt) {
			if (((JTable) evt.getSource()).getName() == "gridCategorias") {
				seleccionarFilaGrid(gridCategorias, evt.getPoint());
				if (evt.getClickCount() == 2) {
					frmMantenCategori1 fO = new frmMantenCategori1(frmConfiguraServidor.getConfiFrame(),true);
					int fila=gridCategorias.getSelectedRow();
					int idsala=((Integer) gridCategorias.getValueAt(fila, 0)).intValue();
					fO.Modifica((String) gridCategorias.getValueAt(fila, 1), 
							(String) gridCategorias.getValueAt(fila, 2));
					if (!fO.jtxtTextoSala.getText().equalsIgnoreCase("")) {
						try{
							String textosala = fO.jtxtTextoSala.getText();
							String tespera = fO.jTEspera.getText();
						TablaCategorias top = BaseDatos.bd().tablaCategorias();
						top.SQL("UPDATE CategoriasEsta SET CodigoEstadistico='"
								+tespera + "' ,CategoriaEsta='"+textosala +"' WHERE Id="
								+idsala) ;
							actualizaCategorias();
						}
						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 jPanelCategorias;
		}

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

		void cargaPanelPorCategori1() {

			Categorias = new ArrayList();
			try {
				TablaCategorias top = BaseDatos.bd().tablaCategorias();
				top.leerDatos("order by id");
				itemCategorias = new ItemGridCategori1[top.recordsCount()];
				top.beforeFirst();
				int i = 0;
				while (top.next()) {
					String textosala = new String(top.getcategoriaEsta());
					String tespera = top.getcodigoestadistico();
					int id=top.getId();
					itemCategorias[i++] = new ItemGridCategori1(id,textosala,tespera);
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}


		}

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

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

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

			smoothJLabel titulito=new smoothJLabel("ATENEO - Categorias");
			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(gridCategorias);
	        JButton jbNuevo=new JButton("Nuevo");
	        jbNuevo.addActionListener(this);
	        jPanel2.add(jbNuevo);
                JButton jbBorrar = new JButton("Borrar");
		jbBorrar.addActionListener(this);
		jPanel2.add(jbBorrar);
			jPanel1.add(jScrollPane1, java.awt.BorderLayout.CENTER);
			jPanel1.add(jPanel2, java.awt.BorderLayout.SOUTH );
			jPanel1.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
			jPanelCategorias.add(jPanel1, java.awt.BorderLayout.CENTER);
			
		}
		public void actionPerformed(ActionEvent e) {
			JButton jb = (JButton) e.getSource();
			if (jb.getActionCommand().equalsIgnoreCase("nuevo")) {
				frmMantenCategori1 fO = new frmMantenCategori1(
						frmConfiguraServidor.getConfiFrame(), true);
				fO.Alta();
				if (!fO.jtxtTextoSala.getText().equalsIgnoreCase("")) {
					String textosala = fO.jtxtTextoSala.getText();
					String tespera = fO.jTEspera.getText();	
					if (JOptionPane.showConfirmDialog(	null,
									"¿Seguro deseas crear el Categoria: "
											+ textosala
											+ "?.\n No se podran borrar posteriormente.",
									"Confirmacion alta Categorias",
									JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
						TablaCategorias top = BaseDatos.bd().tablaCategorias();
						
						try {
						top.nuevaCategoria(tespera, textosala );
						actualizaCategorias();
						}						
						catch  (SQLException ex){
							JOptionPane.showMessageDialog(null,
							"No se pudo actualizar la base de datos.\n"+ex.getMessage());
						     ex.printStackTrace();
						     System.exit(1);
						} 
					}
				}
			}
                        else if (jb.getActionCommand().equalsIgnoreCase("borrar")  && (gridCategorias.getSelectedRow()>-1)) {
			String letraPuesto = (String) gridCategorias.getValueAt(gridCategorias.getSelectedRow(), 1);
			int id=((Integer) gridCategorias.getValueAt(gridCategorias.getSelectedRow(), 0)).intValue();
                        if (JOptionPane.showConfirmDialog(	null,	"¿Seguro deseas borrar la categoria:  \n" +letraPuesto + "?\n Revise la colas que puedan ser afectadas",
					"Confirmacion Categoria",	JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
				TablaCategorias tpues = BaseDatos.bd().tablaCategorias();
				try {
					tpues.SQL("DELETE FROM CategoriasEsta  WHERE Id = "+id);
					actualizaCategorias();
                                        
				} catch (SQLException ex) {
					JOptionPane.showMessageDialog(null, "No se pudo actualizar la base de datos.\n"+ex.getMessage());
					ex.printStackTrace();
					System.exit(1);
				}
		}
		}
	
		}

		
		

		class frmMantenCategori1 extends JDialog implements ActionListener {

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

			public void Modifica( String textosala,String TEspera) {
				this.jTEspera.setText(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(500, 160);
				this.setTitle("Mantenimiento Categorias");
				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(15, 45, 87, 25));
					jLabel.setText("Codigo:");
					jContentPane = new JPanel();
					jContentPane.setLayout(null);
                                        jTEspera = new JTextField(2);
					jTEspera.setToolTipText("Codigo AlfaNumerico.");
					jTEspera.setBounds(new java.awt.Rectangle(100, 45, 25, 23));
				//	jTEspera.addKeyListener(new Varios.MiAdaptador());
				//	jTEspera.setText(String.valueOf(1 ));
					jContentPane.add(jTEspera, null);


					jtxtTextoSala = new JTextField(50);
					jtxtTextoSala.setBounds(new java.awt.Rectangle(100, 12, 378, 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 JTextField(2);
//					jTEspera.setToolTipText("Codigo AlfaNumerico.");
//					jTEspera.setBounds(new java.awt.Rectangle(100, 45, 35, 23));
//				//	jTEspera.addKeyListener(new Varios.MiAdaptador());
//					jTEspera.setText(String.valueOf(1 ));
//                               //        jTEspera.setColumns(2);
//				//	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().toUpperCase());
					this.jtxtTextoSala.setText(this.jtxtTextoSala.getText().trim());
                                        if (this.jTEspera.getText().length()==0 || this.jTEspera.getText().length() >4){
						JOptionPane.showMessageDialog(null, "Maximo 4 digitos");
                                                return;

					}
					if (this.jTEspera.getText().length()==0 || this.jtxtTextoSala.getText().length()==0){
						JOptionPane.showMessageDialog(null, "Categoria mal definida");
					}
					else
					this.setVisible(false);
				}

			}

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

			}

		}



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

		}	
		
	}	
	