/*
 * CadastroClientes.java
 *
 * Created on 19 de Abril de 2008, 14:36
 */

package sistema;

import java.sql.*;
import javax.swing.JOptionPane;

/**
 *
 * @author  awolf
 */
public class CadastroClientes extends wDialog {
    
    private Connection conexao=null;
    private Statement st=null;
    private ResultSet rs=null;
    
    public CadastroClientes(java.awt.Frame parent, boolean modal, Connection conexao) {
        super(parent, modal);
        initComponents();
        
        this.conexao=conexao;
        
        travaPainel();
        paConfirma.setVisible(false);
        
        //Conexao conex=new Conexao();
        //conexao=conex.getConexao();
        
        //conexao=new Conexao().getConexao();
        
        
        atualizaDados();
        mostraDados();
    }
    
    private void atualizaDados(){
        try {
            st=conexao.createStatement();
            rs=st.executeQuery("Select * From Clientes");
            rs.first();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
    
    private void mostraDados(){
        try {
            tfCodigo.setText(rs.getString("Codigo"));
            tfNome.setText(rs.getString("Nome"));
            tfEndereco.setText(rs.getString("Endereco"));
            tfBairro.setText(rs.getString("Bairro"));
            tfCidade.setText(rs.getString("Cidade"));
            tfEmail.setText(rs.getString("Email"));
            tfTelefone.setText(rs.getString("Telefone"));
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
    
    private void travaPainel(){
        tfCodigo.setEditable(false);
        tfNome.setEditable(false);
        tfEndereco.setEditable(false);
        tfBairro.setEditable(false);
        tfCidade.setEditable(false);
        tfEmail.setEditable(false);
        tfTelefone.setEditable(false);
    }
    
    private void destravaPainel(){
        tfCodigo.setEditable(true);
        tfNome.setEditable(true);
        tfEndereco.setEditable(true);
        tfBairro.setEditable(true);
        tfCidade.setEditable(true);
        tfEmail.setEditable(true);
        tfTelefone.setEditable(true);
    }
    
    private void travaBotoes(){
        btIncluir.setEnabled(false);
        btAlterar.setEnabled(false);
        btExcluir.setEnabled(false);
        btBuscar.setEnabled(false);
        btPrimeiro.setEnabled(false);
        btAvanca.setEnabled(false);
        btRetrocede.setEnabled(false);
        btUltimo.setEnabled(false);
    }
    
    private void destravaBotoes(){
        btIncluir.setEnabled(true);
        btAlterar.setEnabled(true);
        btExcluir.setEnabled(true);
        btBuscar.setEnabled(true);
        btPrimeiro.setEnabled(true);
        btAvanca.setEnabled(true);
        btRetrocede.setEnabled(true);
        btUltimo.setEnabled(true);
    }
    
    /** 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() {
        paMenu = new javax.swing.JPanel();
        paBotoes = new javax.swing.JPanel();
        btIncluir = new javax.swing.JButton();
        btAlterar = new javax.swing.JButton();
        btExcluir = new javax.swing.JButton();
        btBuscar = new javax.swing.JButton();
        btPrimeiro = new javax.swing.JButton();
        jPanel5 = new javax.swing.JPanel();
        btRetrocede = new javax.swing.JButton();
        btAvanca = new javax.swing.JButton();
        btUltimo = new javax.swing.JButton();
        paTopo = new javax.swing.JPanel();
        paDados = new javax.swing.JPanel();
        paCampos = new javax.swing.JPanel();
        paLabels = new javax.swing.JPanel();
        lbCodigo = new javax.swing.JLabel();
        lbNome = new javax.swing.JLabel();
        lbEndereco = new javax.swing.JLabel();
        lbBairro = new javax.swing.JLabel();
        lbCidade = new javax.swing.JLabel();
        lbEmail = new javax.swing.JLabel();
        jLabel1 = new javax.swing.JLabel();
        taDados = new javax.swing.JPanel();
        paTextField = new javax.swing.JPanel();
        tfCodigo = new javax.swing.JTextField();
        tfNome = new javax.swing.JTextField();
        tfEndereco = new javax.swing.JTextField();
        tfBairro = new javax.swing.JTextField();
        tfCidade = new javax.swing.JTextField();
        tfEmail = new javax.swing.JTextField();
        tfTelefone = new javax.swing.JTextField();
        paFechar = new javax.swing.JPanel();
        paConfirma = new javax.swing.JPanel();
        btOk = new javax.swing.JButton();
        btCancelar = new javax.swing.JButton();
        btFechar = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Cadastro de Clientes");
        paMenu.setLayout(new java.awt.BorderLayout());

        paBotoes.setLayout(new java.awt.GridLayout(7, 1));

        btIncluir.setText("Incluir");
        btIncluir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btIncluirActionPerformed(evt);
            }
        });

        paBotoes.add(btIncluir);

        btAlterar.setText("Alterar");
        btAlterar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btAlterarActionPerformed(evt);
            }
        });

        paBotoes.add(btAlterar);

        btExcluir.setText("Excluir");
        btExcluir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btExcluirActionPerformed(evt);
            }
        });

        paBotoes.add(btExcluir);

        btBuscar.setText("Buscar");
        btBuscar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btBuscarActionPerformed(evt);
            }
        });

        paBotoes.add(btBuscar);

        btPrimeiro.setText("Primeiro");
        btPrimeiro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btPrimeiroActionPerformed(evt);
            }
        });

        paBotoes.add(btPrimeiro);

        jPanel5.setLayout(new java.awt.GridLayout(1, 0));

        btRetrocede.setText("<");
        btRetrocede.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btRetrocedeActionPerformed(evt);
            }
        });

        jPanel5.add(btRetrocede);

        btAvanca.setText(">");
        btAvanca.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btAvancaActionPerformed(evt);
            }
        });

        jPanel5.add(btAvanca);

        paBotoes.add(jPanel5);

        btUltimo.setText("\u00daltimo");
        btUltimo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btUltimoActionPerformed(evt);
            }
        });

        paBotoes.add(btUltimo);

        paMenu.add(paBotoes, java.awt.BorderLayout.NORTH);

        getContentPane().add(paMenu, java.awt.BorderLayout.EAST);

        getContentPane().add(paTopo, java.awt.BorderLayout.NORTH);

        paDados.setLayout(new java.awt.BorderLayout(2, 0));

        paCampos.setLayout(new java.awt.BorderLayout(2, 0));

        paLabels.setLayout(new java.awt.GridLayout(7, 1, 2, 7));

        lbCodigo.setText("C\u00f3digo");
        paLabels.add(lbCodigo);

        lbNome.setText("Nome");
        paLabels.add(lbNome);

        lbEndereco.setText("Endere\u00e7o");
        paLabels.add(lbEndereco);

        lbBairro.setText("Bairro");
        paLabels.add(lbBairro);

        lbCidade.setText("Cidade");
        paLabels.add(lbCidade);

        lbEmail.setText("Email");
        paLabels.add(lbEmail);

        jLabel1.setText("Telefone");
        paLabels.add(jLabel1);

        paCampos.add(paLabels, java.awt.BorderLayout.NORTH);

        paDados.add(paCampos, java.awt.BorderLayout.WEST);

        taDados.setLayout(new java.awt.BorderLayout());

        paTextField.setLayout(new java.awt.GridLayout(8, 1, 0, 2));

        paTextField.add(tfCodigo);

        paTextField.add(tfNome);

        paTextField.add(tfEndereco);

        paTextField.add(tfBairro);

        paTextField.add(tfCidade);

        paTextField.add(tfEmail);

        paTextField.add(tfTelefone);

        taDados.add(paTextField, java.awt.BorderLayout.NORTH);

        paDados.add(taDados, java.awt.BorderLayout.CENTER);

        getContentPane().add(paDados, java.awt.BorderLayout.CENTER);

        paFechar.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));

        paConfirma.setLayout(new java.awt.GridLayout(1, 2));

        btOk.setText("Ok");
        btOk.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btOkActionPerformed(evt);
            }
        });

        paConfirma.add(btOk);

        btCancelar.setText("Cancelar");
        btCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btCancelarActionPerformed(evt);
            }
        });

        paConfirma.add(btCancelar);

        paFechar.add(paConfirma);

        btFechar.setText("Fechar");
        btFechar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btFecharActionPerformed(evt);
            }
        });

        paFechar.add(btFechar);

        getContentPane().add(paFechar, java.awt.BorderLayout.SOUTH);

        pack();
    }// </editor-fold>//GEN-END:initComponents
    
    private void btBuscarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btBuscarActionPerformed
        boolean achou=false;
        String Busca=JOptionPane.showInputDialog("Digite o Código", "");
        int oldCursor=0;
        try {
            oldCursor=rs.getRow();
            rs.beforeFirst();
            while(rs.next()){
                if(rs.getString("codigo").equals(Busca)){
                    achou=true;
                    mostraDados();
                    break;
                }
            }
        } catch (SQLException ex) {
            ex.printStackTrace();            
        }
        if(!achou){
            try {
                rs.absolute(oldCursor);
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
            
            JOptionPane.showMessageDialog(null, "Código não Encontrado", 
                    "Aviso", JOptionPane.WARNING_MESSAGE);
        }
    }//GEN-LAST:event_btBuscarActionPerformed
    
    private void btExcluirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btExcluirActionPerformed
        if(JOptionPane.showConfirmDialog(
                null,
                "Confirma a Exclusão",
                "Atenção",
                JOptionPane.YES_NO_CANCEL_OPTION)==JOptionPane.YES_OPTION){
            try{
                Statement st=conexao.createStatement();
                st.execute("Delete from Clientes " +
                        "Where codigo=\""+tfCodigo.getText()+"\""
                        );
                
            } catch (SQLException ex) {
                ex.printStackTrace();
                JOptionPane.showMessageDialog(null, "Erro ao alterar\n"+ex, "Erro", JOptionPane.ERROR_MESSAGE);
            }
            
            atualizaDados();
            mostraDados();
        }
    }//GEN-LAST:event_btExcluirActionPerformed
    
    private void btUltimoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btUltimoActionPerformed
        try {
            if(rs.last()){
                mostraDados();
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }//GEN-LAST:event_btUltimoActionPerformed
    
    private void btAvancaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAvancaActionPerformed
        try {
            if(rs.next()){
                mostraDados();
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }//GEN-LAST:event_btAvancaActionPerformed
    
    private void btRetrocedeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btRetrocedeActionPerformed
        try {
            if(rs.previous()){
                mostraDados();
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }//GEN-LAST:event_btRetrocedeActionPerformed
    
    private void btPrimeiroActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btPrimeiroActionPerformed
        try {
            if(rs.first()){
                mostraDados();
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }//GEN-LAST:event_btPrimeiroActionPerformed
    
    private void btAlterarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAlterarActionPerformed
        destravaPainel();
        travaBotoes();
        btFechar.setVisible(false);
        paConfirma.setVisible(true);
        tfCodigo.setEditable(false);
        tfNome.requestFocus();
    }//GEN-LAST:event_btAlterarActionPerformed
    
    private void btCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btCancelarActionPerformed
        travaPainel();
        destravaBotoes();
        btFechar.setVisible(true);
        paConfirma.setVisible(false);
        
    }//GEN-LAST:event_btCancelarActionPerformed
    
    private void btOkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btOkActionPerformed
        if(tfCodigo.isEditable()){ //incluir
            try {
                Statement st=conexao.createStatement();
                st.execute("Insert into Clientes(codigo, nome, endereco, " +
                        "bairro, cidade, telefone, email)values("+
                        "\""+tfCodigo.getText()+"\","+
                        "\""+tfNome.getText()+"\","+
                        "\""+tfEndereco.getText()+"\","+
                        "\""+tfBairro.getText()+"\","+
                        "\""+tfCidade.getText()+"\","+
                        "\""+tfTelefone.getText()+"\","+
                        "\""+tfEmail.getText()+"\")"
                        );
                
            } catch (SQLException ex) {
                ex.printStackTrace();
                JOptionPane.showMessageDialog(null, "Erro ao cadastrar\n"+ex, "Erro", JOptionPane.ERROR_MESSAGE);
            }
        }else{ //alterar
            try {
                Statement st=conexao.createStatement();
                st.execute("Update Clientes set " +
                        "nome=\""+tfNome.getText()+"\","+
                        "endereco=\""+tfEndereco.getText()+"\","+
                        "bairro=\""+tfBairro.getText()+"\","+
                        "cidade=\""+tfCidade.getText()+"\","+
                        "telefone=\""+tfTelefone.getText()+"\","+
                        "email=\""+tfEmail.getText()+"\" "+
                        "Where codigo=\""+tfCodigo.getText()+"\""
                        );
                
            } catch (SQLException ex) {
                ex.printStackTrace();
                JOptionPane.showMessageDialog(null, "Erro ao alterar\n"+ex, "Erro", JOptionPane.ERROR_MESSAGE);
            }
        }
        
        atualizaDados();
        
        travaPainel();
        destravaBotoes();
        btFechar.setVisible(true);
        paConfirma.setVisible(false);
    }//GEN-LAST:event_btOkActionPerformed
    
    private void btIncluirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btIncluirActionPerformed
        destravaPainel();
        travaBotoes();
        btFechar.setVisible(false);
        paConfirma.setVisible(true);
        
        tfCodigo.setText("");
        tfNome.setText("");
        tfEndereco.setText("");
        tfBairro.setText("");
        tfCidade.setText("");
        tfEmail.setText("");
        tfTelefone.setText("");
        
        tfCodigo.requestFocus();
    }//GEN-LAST:event_btIncluirActionPerformed
    
    private void btFecharActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btFecharActionPerformed
        dispose();
    }//GEN-LAST:event_btFecharActionPerformed
    
    // Declaração de variáveis - não modifique//GEN-BEGIN:variables
    private javax.swing.JButton btAlterar;
    private javax.swing.JButton btAvanca;
    private javax.swing.JButton btBuscar;
    private javax.swing.JButton btCancelar;
    private javax.swing.JButton btExcluir;
    private javax.swing.JButton btFechar;
    private javax.swing.JButton btIncluir;
    private javax.swing.JButton btOk;
    private javax.swing.JButton btPrimeiro;
    private javax.swing.JButton btRetrocede;
    private javax.swing.JButton btUltimo;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JLabel lbBairro;
    private javax.swing.JLabel lbCidade;
    private javax.swing.JLabel lbCodigo;
    private javax.swing.JLabel lbEmail;
    private javax.swing.JLabel lbEndereco;
    private javax.swing.JLabel lbNome;
    private javax.swing.JPanel paBotoes;
    private javax.swing.JPanel paCampos;
    private javax.swing.JPanel paConfirma;
    private javax.swing.JPanel paDados;
    private javax.swing.JPanel paFechar;
    private javax.swing.JPanel paLabels;
    private javax.swing.JPanel paMenu;
    private javax.swing.JPanel paTextField;
    private javax.swing.JPanel paTopo;
    private javax.swing.JPanel taDados;
    private javax.swing.JTextField tfBairro;
    private javax.swing.JTextField tfCidade;
    private javax.swing.JTextField tfCodigo;
    private javax.swing.JTextField tfEmail;
    private javax.swing.JTextField tfEndereco;
    private javax.swing.JTextField tfNome;
    private javax.swing.JTextField tfTelefone;
    // Fim da declaração de variáveis//GEN-END:variables
    
}
