/*
 * CadastroFornecedores.java
 *
 * Created on 3 de Maio de 2008, 11:47
 */

package sistema;

import java.awt.Frame;
import java.sql.*;
import java.util.HashMap;
import java.util.Vector;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.view.JasperViewer;

/**
 *
 * @author  awolf
 */
public class CadastroFornecedores extends javax.swing.JDialog {
    
    /** Creates new form CadastroFornecedores */
    private String Filtro="";
    private Connection conexao=null;
    private Frame parent=null;
    public CadastroFornecedores(java.awt.Frame parent, boolean modal, Connection conexao) {
        super(parent, modal);
        initComponents();
        this.conexao=conexao;
        this.parent=parent;
        atualizaTabela();
    }
    
    private void atualizaTabela(){
        try {
            
            Statement st=conexao.createStatement();
            ResultSet rs=st.executeQuery("Select codigo, nome, endereco from Clientes" + Filtro);
            
            
            Vector cabecalho=new Vector();
            cabecalho.addElement("Codigo");
            cabecalho.addElement("Nome");
            cabecalho.addElement("Endereco");
            
            Vector linhas=new Vector();
            Vector colunas=new Vector();
            while(rs.next()){
                colunas.removeAllElements();
                colunas.addElement(rs.getString("codigo"));
                colunas.addElement(rs.getString("nome"));
                colunas.addElement(rs.getString("endereco"));
                linhas.add(new Vector(colunas));
            }
            
            tbDados.setModel(
                    new javax.swing.table.DefaultTableModel(linhas, cabecalho));
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
    /** 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() {
        spDados = new javax.swing.JScrollPane();
        tbDados = new javax.swing.JTable();
        paManutencao = new javax.swing.JPanel();
        paAreaBotoes = new javax.swing.JPanel();
        lbFiltrar = new javax.swing.JLabel();
        paBotoes = new javax.swing.JPanel();
        paBotoesManutencao = new javax.swing.JPanel();
        paBotoesCadastro = new javax.swing.JPanel();
        btIncluir = new javax.swing.JButton();
        btAlterar = new javax.swing.JButton();
        btExcluir = new javax.swing.JButton();
        btImprimir = new javax.swing.JButton();
        btAtualiza = new javax.swing.JButton();
        paFechar = new javax.swing.JPanel();
        btFechar = new javax.swing.JButton();
        tfFiltrar = new javax.swing.JTextField();
        btFiltrar = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        tbDados.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"
            }
        ));
        spDados.setViewportView(tbDados);

        getContentPane().add(spDados, java.awt.BorderLayout.CENTER);

        paManutencao.setLayout(new java.awt.BorderLayout());

        paAreaBotoes.setLayout(new java.awt.BorderLayout());

        lbFiltrar.setText("Filtrar: ");
        paAreaBotoes.add(lbFiltrar, java.awt.BorderLayout.WEST);

        paBotoes.setLayout(new java.awt.BorderLayout());

        paBotoesManutencao.setLayout(new java.awt.BorderLayout());

        paBotoesCadastro.setLayout(new java.awt.GridLayout(1, 5));

        btIncluir.setText("Incluir");
        btIncluir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btIncluirActionPerformed(evt);
            }
        });

        paBotoesCadastro.add(btIncluir);

        btAlterar.setText("Alterar");
        btAlterar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btAlterarActionPerformed(evt);
            }
        });

        paBotoesCadastro.add(btAlterar);

        btExcluir.setText("Excluir");
        btExcluir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btExcluirActionPerformed(evt);
            }
        });

        paBotoesCadastro.add(btExcluir);

        btImprimir.setText("Imprimir");
        btImprimir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btImprimirActionPerformed(evt);
            }
        });

        paBotoesCadastro.add(btImprimir);

        btAtualiza.setText("Atualiza");
        btAtualiza.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btAtualizaActionPerformed(evt);
            }
        });

        paBotoesCadastro.add(btAtualiza);

        paBotoesManutencao.add(paBotoesCadastro, java.awt.BorderLayout.WEST);

        paBotoes.add(paBotoesManutencao, java.awt.BorderLayout.NORTH);

        paFechar.setLayout(new java.awt.BorderLayout());

        btFechar.setText("Fechar");
        btFechar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btFecharActionPerformed(evt);
            }
        });

        paFechar.add(btFechar, java.awt.BorderLayout.CENTER);

        paBotoes.add(paFechar, java.awt.BorderLayout.EAST);

        paAreaBotoes.add(paBotoes, java.awt.BorderLayout.SOUTH);

        paAreaBotoes.add(tfFiltrar, java.awt.BorderLayout.CENTER);

        btFiltrar.setText("Filtrar");
        btFiltrar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btFiltrarActionPerformed(evt);
            }
        });

        paAreaBotoes.add(btFiltrar, java.awt.BorderLayout.EAST);

        paManutencao.add(paAreaBotoes, java.awt.BorderLayout.SOUTH);

        getContentPane().add(paManutencao, java.awt.BorderLayout.SOUTH);

        pack();
    }// </editor-fold>//GEN-END:initComponents
    
    private void btImprimirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btImprimirActionPerformed
        HashMap parametros=new HashMap();
        try {
            parametros.put("titulo", "Empresa da Vaca doente");
            parametros.put("codigo", 33);
            
            JasperDesign jasperDesign = JRXmlLoader.load("C:\\Temp\\iReport-2.0.5\\meu_relatorio_querido.jrxml");
            JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
            JasperPrint impressao = JasperFillManager.fillReport(jasperReport, parametros, conexao);
            JasperViewer jrviewer=new JasperViewer(impressao, false);
            
            JDialog viewer = new JDialog(parent,"Visualização do Relatório", true);
            viewer.setSize(800,600);
            viewer.setLocationRelativeTo(null);
            viewer.getContentPane().add(jrviewer.getContentPane());
            
            viewer.setVisible(true);
        } catch (JRException ex) {
            ex.printStackTrace();
        }
        
    }//GEN-LAST:event_btImprimirActionPerformed
    
    private void btAlterarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAlterarActionPerformed
        if(tbDados.getSelectedRow()<0){
            JOptionPane.showMessageDialog(null, "Linha nao selecionada",
                    "Erro", JOptionPane.ERROR_MESSAGE);
            
        } else{
            CadastroFornecedoresManutencao cad=new CadastroFornecedoresManutencao(parent, true, conexao);
            cad.setCodigoEditable(false);
            cad.carregaDados((String) tbDados.getValueAt(tbDados.getSelectedRow(), PegaColunaCodigo()));
            cad.setVisible(true);
            atualizaTabela();
        }
    }//GEN-LAST:event_btAlterarActionPerformed
    
    private void btAtualizaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAtualizaActionPerformed
        atualizaTabela();
    }//GEN-LAST:event_btAtualizaActionPerformed
    
    private void btFiltrarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btFiltrarActionPerformed
        if(!tfFiltrar.getText().isEmpty()){
            Filtro = " Where nome like\""+tfFiltrar.getText()+"%\"";
            atualizaTabela();
        }else{
            Filtro="";
            atualizaTabela();
        }
    }//GEN-LAST:event_btFiltrarActionPerformed
    
    private int PegaColunaCodigo(){
        int col=0;
        for(int i=0; i<tbDados.getColumnCount(); i++){
            if(tbDados.getColumnName(i).equals("Codigo")){
                col=i;
                break;
            }
        }
        return col;
    }
    
    private void btExcluirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btExcluirActionPerformed
        if(tbDados.getSelectedRow()<0){
            JOptionPane.showMessageDialog(null, "Linha nao selecionada",
                    "Erro", JOptionPane.ERROR_MESSAGE);
            
        } else{
            try {
                
                Statement st=conexao.createStatement();
                st.execute("Delete from clientes where codigo=\""+
                        tbDados.getValueAt(tbDados.getSelectedRow(), PegaColunaCodigo())+ "\"");
                
                atualizaTabela();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }
    }//GEN-LAST:event_btExcluirActionPerformed
    
    private void btIncluirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btIncluirActionPerformed
        CadastroFornecedoresManutencao cad=new CadastroFornecedoresManutencao(parent, true, conexao);
        cad.setVisible(true);
        atualizaTabela();
    }//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 btAtualiza;
    private javax.swing.JButton btExcluir;
    private javax.swing.JButton btFechar;
    private javax.swing.JButton btFiltrar;
    private javax.swing.JButton btImprimir;
    private javax.swing.JButton btIncluir;
    private javax.swing.JLabel lbFiltrar;
    private javax.swing.JPanel paAreaBotoes;
    private javax.swing.JPanel paBotoes;
    private javax.swing.JPanel paBotoesCadastro;
    private javax.swing.JPanel paBotoesManutencao;
    private javax.swing.JPanel paFechar;
    private javax.swing.JPanel paManutencao;
    private javax.swing.JScrollPane spDados;
    private javax.swing.JTable tbDados;
    private javax.swing.JTextField tfFiltrar;
    // Fim da declaração de variáveis//GEN-END:variables
    
}
