/*
 * CadastroClientes.java
 *
 * Created on 9 de Setembro de 2006, 10:40
 */

package siscad;
import java.sql.*;
import java.util.HashMap;
import javax.crypto.NullCipher;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.view.JasperViewer;
/**
 *
 * @author  awolf
 */
public class CadastroClientes extends javax.swing.JFrame {
    
    private Connection Conexao = null;
    private ResultSet rs = null;
    
    /** Creates new form CadastroClientes */
    public CadastroClientes() {
        initComponents();
        
        String LocalBancoDados = "jdbc:mysql://10.3.3.16:3306/cadastro";
        String Usuario = "root";
        String Senha = "root";
        String NomeDriver = "com.mysql.jdbc.Driver";
        
        try {
            Class.forName(NomeDriver).newInstance();
        } catch (InstantiationException ex) {
            ex.printStackTrace();
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        } catch (IllegalAccessException ex) {
            ex.printStackTrace();
        }
        
        try {
            Conexao = DriverManager.getConnection(LocalBancoDados, Usuario, Senha);
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        
        btAtualizarActionPerformed(null);
        
    }
    
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Código Gerado ">//GEN-BEGIN:initComponents
    private void initComponents() {
        jPanel10 = new javax.swing.JPanel();
        jButton2 = new javax.swing.JButton();
        jButton1 = new javax.swing.JButton();
        btFechar = new javax.swing.JButton();
        paTabbed = new javax.swing.JTabbedPane();
        paClientes = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        paDadosCliente = new javax.swing.JPanel();
        jPanel5 = new javax.swing.JPanel();
        jPanel9 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        jPanel2 = new javax.swing.JPanel();
        jPanel4 = new javax.swing.JPanel();
        btIncluir = new javax.swing.JButton();
        btAlterar = new javax.swing.JButton();
        btExcluir = new javax.swing.JButton();
        btBuscar = new javax.swing.JButton();
        btImprimir = new javax.swing.JButton();
        btAtualizar = new javax.swing.JButton();
        jPanel6 = new javax.swing.JPanel();
        jPanel8 = new javax.swing.JPanel();
        tfCodigo = new javax.swing.JTextField();
        tfNome = new javax.swing.JTextField();
        tfEndereco = new javax.swing.JTextField();
        tfSalario = new javax.swing.JTextField();
        tfDataNasc = new javax.swing.JTextField();
        jPanel7 = new javax.swing.JPanel();
        btPrimeiro = new javax.swing.JButton();
        btRetrocede = new javax.swing.JButton();
        btAvanca = new javax.swing.JButton();
        btUltimo = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Cadastro de Clientes");
        jPanel10.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));

        jButton2.setText("jButton2");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        jPanel10.add(jButton2);

        jButton1.setText("jButton1");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jPanel10.add(jButton1);

        btFechar.setText("Fechar");
        btFechar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btFecharActionPerformed(evt);
            }
        });

        jPanel10.add(btFechar);

        getContentPane().add(jPanel10, java.awt.BorderLayout.SOUTH);

        paClientes.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Título 1", "Título 2", "Título 3", "Título 4"
            }
        ));
        jScrollPane1.setViewportView(jTable1);

        paClientes.add(jScrollPane1);

        paTabbed.addTab("Clientes", paClientes);

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

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

        jPanel9.setLayout(new java.awt.GridLayout(5, 1, 0, 5));

        jLabel1.setText("C\u00f3digo");
        jPanel9.add(jLabel1);

        jLabel2.setText("Nome");
        jPanel9.add(jLabel2);

        jLabel3.setText("Endereco ");
        jPanel9.add(jLabel3);

        jLabel4.setText("Sal\u00e1rio");
        jPanel9.add(jLabel4);

        jLabel5.setText("Data Nasc. ");
        jPanel9.add(jLabel5);

        jPanel5.add(jPanel9, java.awt.BorderLayout.NORTH);

        paDadosCliente.add(jPanel5, java.awt.BorderLayout.WEST);

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

        jPanel4.setLayout(new java.awt.GridLayout(6, 1));

        btIncluir.setText("Incluir");
        btIncluir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btIncluirActionPerformed(evt);
            }
        });

        jPanel4.add(btIncluir);

        btAlterar.setText("Alterar");
        btAlterar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btAlterarActionPerformed(evt);
            }
        });

        jPanel4.add(btAlterar);

        btExcluir.setText("Excluir");
        btExcluir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btExcluirActionPerformed(evt);
            }
        });

        jPanel4.add(btExcluir);

        btBuscar.setText("Buscar");
        jPanel4.add(btBuscar);

        btImprimir.setText("Imprimir");
        btImprimir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btImprimirActionPerformed(evt);
            }
        });

        jPanel4.add(btImprimir);

        btAtualizar.setText("Atualizar");
        btAtualizar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btAtualizarActionPerformed(evt);
            }
        });

        jPanel4.add(btAtualizar);

        jPanel2.add(jPanel4, java.awt.BorderLayout.NORTH);

        paDadosCliente.add(jPanel2, java.awt.BorderLayout.EAST);

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

        jPanel8.setLayout(new java.awt.GridLayout(5, 1));

        tfCodigo.setEditable(false);
        jPanel8.add(tfCodigo);

        tfNome.setEditable(false);
        jPanel8.add(tfNome);

        tfEndereco.setEditable(false);
        jPanel8.add(tfEndereco);

        tfSalario.setEditable(false);
        jPanel8.add(tfSalario);

        tfDataNasc.setEditable(false);
        jPanel8.add(tfDataNasc);

        jPanel6.add(jPanel8, java.awt.BorderLayout.NORTH);

        paDadosCliente.add(jPanel6, java.awt.BorderLayout.CENTER);

        jPanel7.setLayout(new java.awt.GridLayout(1, 4));

        btPrimeiro.setText("|<");
        btPrimeiro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btPrimeiroActionPerformed(evt);
            }
        });

        jPanel7.add(btPrimeiro);

        btRetrocede.setText("<");
        btRetrocede.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btRetrocedeActionPerformed(evt);
            }
        });

        jPanel7.add(btRetrocede);

        btAvanca.setText(">");
        btAvanca.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btAvancaActionPerformed(evt);
            }
        });

        jPanel7.add(btAvanca);

        btUltimo.setText(">|");
        btUltimo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btUltimoActionPerformed(evt);
            }
        });

        jPanel7.add(btUltimo);

        paDadosCliente.add(jPanel7, java.awt.BorderLayout.SOUTH);

        paTabbed.addTab("Dados do Cliente", paDadosCliente);

        getContentPane().add(paTabbed, java.awt.BorderLayout.NORTH);
        paTabbed.getAccessibleContext().setAccessibleName("");

        pack();
    }// </editor-fold>//GEN-END:initComponents
    
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
        NovoJFrame n = new NovoJFrame();
        n.setVisible(true);
        String algo = n.getNome();
        
    }//GEN-LAST:event_jButton2ActionPerformed
    
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        try{
            Statement st1 = Conexao.createStatement();
            ResultSet rs1 = st1.executeQuery("Select count(Codigo) as Quant from Clientes");
            rs1.first();
            
            String MatString[][] = new String[rs1.getInt("Quant")][2];
            
            rs.beforeFirst();
            int i = 0;
            while(rs.next()){
                MatString[i][0] = rs.getString("Codigo");
                MatString[i][1] = rs.getString("Nome");
                i++;
            }
            
            String VetString[] = {"Codigo", "Nome" };
            
            jTable1.setModel(new javax.swing.table.DefaultTableModel(MatString, VetString ));
            
        } catch(Exception e){
            e.printStackTrace();
        }
        
    }//GEN-LAST:event_jButton1ActionPerformed
    
    private void btImprimirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btImprimirActionPerformed
        try{
            HashMap parameters = new HashMap();
            JasperDesign design = JasperManager.loadXmlDesign("C:\\temp\\iReport-2.0.0\\RelatorioClientes.jrxml");
            JasperReport jr = JasperManager.compileReport(design);
            JasperPrint impressao = JasperManager.fillReport(jr,parameters, Conexao);
            JasperViewer jrviewer = new JasperViewer(impressao, false);
            jrviewer.setTitle("A VACA MORREU");
            jrviewer.setVisible(true);
        }catch(Exception e){
            e.printStackTrace();
        }
    }//GEN-LAST:event_btImprimirActionPerformed
    
    private void btFecharActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btFecharActionPerformed
        dispose();
    }//GEN-LAST:event_btFecharActionPerformed
    
    private void btAlterarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAlterarActionPerformed
        if(tfNome.isEditable()){ // porque a funcao sera cancelar
            DesAtivaBotoesControle();
            TravaCampos();
            MostraRegistros();
        }
    }//GEN-LAST:event_btAlterarActionPerformed
    
    private void btIncluirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btIncluirActionPerformed
        if(tfNome.isEditable()){ // porque a funcao sera Ok
            Statement st = null;
            try{
                st = Conexao.createStatement();
                if(tfCodigo.isEditable()){ // inclusao
                    st.execute("Insert into clientes(Codigo, Nome, Endereco, Salario, Data) values ("+
                            "\'"+tfCodigo.getText() + "\',"+
                            "\'"+tfNome.getText() + "\',"+
                            "\'"+tfEndereco.getText() + "\',"+
                            "\'"+tfSalario.getText() + "\',"+
                            "\'"+tfDataNasc.getText() + "\')");
                    DesAtivaBotoesControle();
                    TravaCampos();
                    System.out.println("´a coisa");
                }else{ //alteracao
                    st.execute("Update..");
                    DesAtivaBotoesControle();
                    TravaCampos();
                }
                btAtualizarActionPerformed(null);
            }catch(Exception e){
                JOptionPane.showMessageDialog(null,"Erro ao Incluir o Registro Atual!"+e,
                        "Erro", JOptionPane.ERROR_MESSAGE);
            }
        }else { // a funcao sera Incluir
            AtivaBotoesControle();
            DestravaCampos();
            LimpaCampos();
            tfCodigo.grabFocus();
        }
    }//GEN-LAST:event_btIncluirActionPerformed
    
    private void LimpaCampos(){
        tfCodigo.setText("");
        tfNome.setText("");
        tfEndereco.setText("");
        tfSalario.setText("");
        tfDataNasc.setText("");
    }
    private void DestravaCampos(){
        tfCodigo.setEditable(true);
        tfNome.setEditable(true);
        tfEndereco.setEditable(true);
        tfSalario.setEditable(true);
        tfDataNasc.setEditable(true);
    }
    
    private void TravaCampos(){
        tfCodigo.setEditable(false);
        tfNome.setEditable(false);
        tfEndereco.setEditable(false);
        tfSalario.setEditable(false);
        tfDataNasc.setEditable(false);
    }
    
    private void AtivaBotoesControle(){
        btIncluir.setText("Ok");
        btAlterar.setText("Cancelar");
        btExcluir.setEnabled(false);
        btBuscar.setEnabled(false);
        btAtualizar.setEnabled(false);
        btPrimeiro.setEnabled(false);
        btRetrocede.setEnabled(false);
        btAvanca.setEnabled(false);
        btUltimo.setEnabled(false);
    }
    
    private void DesAtivaBotoesControle(){
        btIncluir.setText("Incluir");
        btAlterar.setText("Alterar");
        btExcluir.setEnabled(true);
        btBuscar.setEnabled(true);
        btAtualizar.setEnabled(true);
        btPrimeiro.setEnabled(true);
        btRetrocede.setEnabled(true);
        btAvanca.setEnabled(true);
        btUltimo.setEnabled(true);
    }
    
    private void btExcluirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btExcluirActionPerformed
        if(!tfCodigo.getText().isEmpty()){
            if(JOptionPane.showConfirmDialog(null,"Deseja Excluir o Registro?",
                    "Confirmar", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
                Statement st = null;
                try{
                    st = Conexao.createStatement();
                    st.execute("Delete From Clientes Where Codigo=\'"+tfCodigo.getText()+"\'");
                    btAtualizarActionPerformed(null);
                }catch(Exception e){
                    JOptionPane.showMessageDialog(null,"Erro ao Excluir o Registro Atual!",
                            "Erro", JOptionPane.ERROR_MESSAGE);
                }
            }
        }
    }//GEN-LAST:event_btExcluirActionPerformed
    
    private void btRetrocedeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btRetrocedeActionPerformed
        try{
            if(rs.previous()){
                MostraRegistros();
            }
        } catch(Exception e){
            JOptionPane.showMessageDialog(null,"Não foi possível acessar os Registros!", "Erro", JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_btRetrocedeActionPerformed
    
    private void btAvancaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAvancaActionPerformed
        try{
            if(rs.next()){
                MostraRegistros();
            }
        } catch(Exception e){
            JOptionPane.showMessageDialog(null,"Não foi possível acessar os Registros!", "Erro", JOptionPane.ERROR_MESSAGE);
        }
        
    }//GEN-LAST:event_btAvancaActionPerformed
    
    private void btUltimoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btUltimoActionPerformed
        try{
            if(rs.last()){
                MostraRegistros();
            }
        } catch(Exception e){
            JOptionPane.showMessageDialog(null,"Não foi possível acessar os Registros!", "Erro", JOptionPane.ERROR_MESSAGE);
        }
        
    }//GEN-LAST:event_btUltimoActionPerformed
    
    private void btPrimeiroActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btPrimeiroActionPerformed
        try{
            if(rs.first()){
                MostraRegistros();
            }
        } catch(Exception e){
            JOptionPane.showMessageDialog(null,"Não foi possível acessar os Registros!", "Erro", JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_btPrimeiroActionPerformed
    
    private void btAtualizarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAtualizarActionPerformed
        Statement st = null;
        try{
            st = Conexao.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
            rs = st.executeQuery("Select Codigo, Nome, Endereco, Salario, Data From clientes Order by Codigo");
            btPrimeiroActionPerformed(null);
        }catch(SQLException e){
            System.out.println("Não foi encontrado registros: " + e);
        }
    }//GEN-LAST:event_btAtualizarActionPerformed
    
    private void MostraRegistros() {
        try{
            tfCodigo.setText(rs.getString("Codigo"));
            tfNome.setText(rs.getString("Nome"));
            tfEndereco.setText(rs.getString("Endereco"));
            tfSalario.setText(rs.getString("Salario"));
            tfDataNasc.setText(rs.getString("Data"));
        }catch(Exception e){}
    }
    
    
    // Declaração de variáveis - não modifique//GEN-BEGIN:variables
    private javax.swing.JButton btAlterar;
    private javax.swing.JButton btAtualizar;
    private javax.swing.JButton btAvanca;
    private javax.swing.JButton btBuscar;
    private javax.swing.JButton btExcluir;
    private javax.swing.JButton btFechar;
    private javax.swing.JButton btImprimir;
    private javax.swing.JButton btIncluir;
    private javax.swing.JButton btPrimeiro;
    private javax.swing.JButton btRetrocede;
    private javax.swing.JButton btUltimo;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JPanel jPanel10;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JPanel jPanel7;
    private javax.swing.JPanel jPanel8;
    private javax.swing.JPanel jPanel9;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    private javax.swing.JPanel paClientes;
    private javax.swing.JPanel paDadosCliente;
    private javax.swing.JTabbedPane paTabbed;
    private javax.swing.JTextField tfCodigo;
    private javax.swing.JTextField tfDataNasc;
    private javax.swing.JTextField tfEndereco;
    private javax.swing.JTextField tfNome;
    private javax.swing.JTextField tfSalario;
    // Fim da declaração de variáveis//GEN-END:variables
    
}
