View.JInternalFrameCadastroTreinador.java Source code

Java tutorial

Introduction

Here is the source code for View.JInternalFrameCadastroTreinador.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package View;

import DAO.TreinadorJpaController;
import DataBase.Treinador;
import academiavisual.FormPrincipal;
import com.google.common.base.Charsets;
import com.google.common.hash.Hashing;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import javax.swing.JOptionPane;

/**
 *
 * @author afnsoo
 */
public class JInternalFrameCadastroTreinador extends javax.swing.JInternalFrame {

    /**
     * Creates new form JInternalFrameCadastroTreinador
     */
    public JInternalFrameCadastroTreinador() {
        initComponents();
        abaConsulta();

    }

    /**
     * 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.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {
        bindingGroup = new org.jdesktop.beansbinding.BindingGroup();

        entityManagerTreinador = java.beans.Beans.isDesignTime() ? null
                : javax.persistence.Persistence.createEntityManagerFactory("AcademiaVisualPU")
                        .createEntityManager();
        treinadorQuery = java.beans.Beans.isDesignTime() ? null
                : entityManagerTreinador.createQuery("SELECT t FROM Treinador t");
        treinadorList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList()
                : treinadorQuery.getResultList();
        jButtonExcluirTreinador = new javax.swing.JButton();
        jButtonFecharTreinador = new javax.swing.JButton();
        jTabbedPaneTreinador = new javax.swing.JTabbedPane();
        jPanelConsultaTreinador = new javax.swing.JPanel();
        jScrollPaneTreinador = new javax.swing.JScrollPane();
        jTableTreinador = new javax.swing.JTable();
        jLabelProcurarTreinador = new javax.swing.JLabel();
        jTextFieldProcurarTreinador = new javax.swing.JTextField();
        jComboBoxProcurarTreinador = new javax.swing.JComboBox();
        jButtonProcurarTreinador = new javax.swing.JButton();
        jPanelAlterarTreinador = new javax.swing.JPanel();
        jLabelNomeTreinador = new javax.swing.JLabel();
        jLabelCpfTreinador = new javax.swing.JLabel();
        jLabelDataNascimentoTreinador = new javax.swing.JLabel();
        jLabelEnderecoTreinador = new javax.swing.JLabel();
        jLabelLoginTreinador = new javax.swing.JLabel();
        jLabelSenhaTreinador = new javax.swing.JLabel();
        jLabelEmailTreinador = new javax.swing.JLabel();
        jTextFieldNomeTreinador = new javax.swing.JTextField();
        jTextFieldEnderecoTreinador = new javax.swing.JTextField();
        jTextFieldLoginTreinador = new javax.swing.JTextField();
        jTextFieldEmailTreinador = new javax.swing.JTextField();
        jPasswordFieldSenhaTreinador = new javax.swing.JPasswordField();
        jLabelAdministradorTreinador = new javax.swing.JLabel();
        jCheckBoxAdministradorTreinador = new javax.swing.JCheckBox();
        jFormattedTextFieldCpfTreinador = new javax.swing.JFormattedTextField();
        jFormattedTextFieldDataTreinador = new javax.swing.JFormattedTextField();
        jButtonCancelarTreinador = new javax.swing.JButton();
        jButtonConfirmarTreinador = new javax.swing.JButton();
        jButtonInserirTreinador = new javax.swing.JButton();
        jButtonAlterarTreinador = new javax.swing.JButton();

        setTitle("Cadastro Treinador");
        addInternalFrameListener(new javax.swing.event.InternalFrameListener() {
            public void internalFrameActivated(javax.swing.event.InternalFrameEvent evt) {
            }

            public void internalFrameClosed(javax.swing.event.InternalFrameEvent evt) {
            }

            public void internalFrameClosing(javax.swing.event.InternalFrameEvent evt) {
            }

            public void internalFrameDeactivated(javax.swing.event.InternalFrameEvent evt) {
            }

            public void internalFrameDeiconified(javax.swing.event.InternalFrameEvent evt) {
            }

            public void internalFrameIconified(javax.swing.event.InternalFrameEvent evt) {
            }

            public void internalFrameOpened(javax.swing.event.InternalFrameEvent evt) {
                formInternalFrameOpened(evt);
            }
        });

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

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

        org.jdesktop.swingbinding.JTableBinding jTableBinding = org.jdesktop.swingbinding.SwingBindings
                .createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, treinadorList,
                        jTableTreinador);
        org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding = jTableBinding
                .addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${id}"));
        columnBinding.setColumnName("Id");
        columnBinding.setColumnClass(Integer.class);
        columnBinding.setEditable(false);
        columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${nome}"));
        columnBinding.setColumnName("Nome");
        columnBinding.setColumnClass(String.class);
        columnBinding.setEditable(false);
        columnBinding = jTableBinding
                .addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${dataNascimento}"));
        columnBinding.setColumnName("Data Nascimento");
        columnBinding.setColumnClass(java.util.Date.class);
        columnBinding.setEditable(false);
        columnBinding = jTableBinding
                .addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${administrador}"));
        columnBinding.setColumnName("Administrador");
        columnBinding.setColumnClass(Integer.class);
        columnBinding.setEditable(false);
        bindingGroup.addBinding(jTableBinding);
        jTableBinding.bind();
        jScrollPaneTreinador.setViewportView(jTableTreinador);

        jLabelProcurarTreinador.setText("Opo De Busca");

        jTextFieldProcurarTreinador.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextFieldProcurarTreinadorActionPerformed(evt);
            }
        });

        jComboBoxProcurarTreinador
                .setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Id", "Nome", "CPF", "Validade" }));

        jButtonProcurarTreinador.setText("Buscar");
        jButtonProcurarTreinador.setMaximumSize(new java.awt.Dimension(75, 23));
        jButtonProcurarTreinador.setMinimumSize(new java.awt.Dimension(75, 23));
        jButtonProcurarTreinador.setPreferredSize(new java.awt.Dimension(75, 23));

        javax.swing.GroupLayout jPanelConsultaTreinadorLayout = new javax.swing.GroupLayout(
                jPanelConsultaTreinador);
        jPanelConsultaTreinador.setLayout(jPanelConsultaTreinadorLayout);
        jPanelConsultaTreinadorLayout.setHorizontalGroup(jPanelConsultaTreinadorLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jScrollPaneTreinador, javax.swing.GroupLayout.DEFAULT_SIZE, 574, Short.MAX_VALUE)
                .addGroup(jPanelConsultaTreinadorLayout.createSequentialGroup().addContainerGap()
                        .addComponent(jLabelProcurarTreinador)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jComboBoxProcurarTreinador, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jTextFieldProcurarTreinador, javax.swing.GroupLayout.PREFERRED_SIZE, 160,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(jButtonProcurarTreinador, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
        jPanelConsultaTreinadorLayout.setVerticalGroup(jPanelConsultaTreinadorLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanelConsultaTreinadorLayout.createSequentialGroup()
                        .addComponent(
                                jScrollPaneTreinador, javax.swing.GroupLayout.DEFAULT_SIZE, 239, Short.MAX_VALUE)
                        .addGap(18, 18, 18)
                        .addGroup(jPanelConsultaTreinadorLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabelProcurarTreinador)
                                .addComponent(jTextFieldProcurarTreinador, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jButtonProcurarTreinador, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jComboBoxProcurarTreinador, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addContainerGap()));

        jTabbedPaneTreinador.addTab("Consulta", jPanelConsultaTreinador);

        jLabelNomeTreinador.setText("Nome:");

        jLabelCpfTreinador.setText("CPF:");

        jLabelDataNascimentoTreinador.setText("Data Nascimento:");

        jLabelEnderecoTreinador.setText("Endereco:");

        jLabelLoginTreinador.setText("Login:");

        jLabelSenhaTreinador.setText("Senha:");

        jLabelEmailTreinador.setText("Email:");

        jLabelAdministradorTreinador.setText(" Administrador:");

        jCheckBoxAdministradorTreinador.setText("Administrador");

        try {
            jFormattedTextFieldCpfTreinador.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(
                    new javax.swing.text.MaskFormatter("###.###.###-##")));
        } catch (java.text.ParseException ex) {
            ex.printStackTrace();
        }

        jFormattedTextFieldDataTreinador.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(
                new javax.swing.text.DateFormatter(new java.text.SimpleDateFormat("yyyy/M/dd"))));

        javax.swing.GroupLayout jPanelAlterarTreinadorLayout = new javax.swing.GroupLayout(jPanelAlterarTreinador);
        jPanelAlterarTreinador.setLayout(jPanelAlterarTreinadorLayout);
        jPanelAlterarTreinadorLayout.setHorizontalGroup(jPanelAlterarTreinadorLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanelAlterarTreinadorLayout.createSequentialGroup().addContainerGap()
                        .addGroup(jPanelAlterarTreinadorLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(jPanelAlterarTreinadorLayout.createSequentialGroup()
                                        .addGroup(jPanelAlterarTreinadorLayout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                .addComponent(jLabelDataNascimentoTreinador)
                                                .addComponent(jLabelCpfTreinador).addComponent(jLabelNomeTreinador)
                                                .addComponent(jLabelAdministradorTreinador))
                                        .addGap(97, 97, 97)
                                        .addGroup(jPanelAlterarTreinadorLayout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,
                                                        false)
                                                .addComponent(jCheckBoxAdministradorTreinador)
                                                .addComponent(jPasswordFieldSenhaTreinador)
                                                .addComponent(jTextFieldEnderecoTreinador,
                                                        javax.swing.GroupLayout.Alignment.TRAILING)
                                                .addComponent(jTextFieldLoginTreinador,
                                                        javax.swing.GroupLayout.Alignment.TRAILING)
                                                .addComponent(jTextFieldEmailTreinador,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE, 321, Short.MAX_VALUE)
                                                .addComponent(jTextFieldNomeTreinador,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE, 321, Short.MAX_VALUE)
                                                .addComponent(jFormattedTextFieldCpfTreinador)
                                                .addComponent(jFormattedTextFieldDataTreinador)))
                                .addComponent(jLabelSenhaTreinador).addComponent(jLabelLoginTreinador)
                                .addComponent(jLabelEnderecoTreinador).addComponent(jLabelEmailTreinador))
                        .addContainerGap(61, Short.MAX_VALUE)));
        jPanelAlterarTreinadorLayout.setVerticalGroup(jPanelAlterarTreinadorLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanelAlterarTreinadorLayout.createSequentialGroup().addContainerGap()
                        .addGroup(jPanelAlterarTreinadorLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabelNomeTreinador).addComponent(jTextFieldNomeTreinador,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanelAlterarTreinadorLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabelCpfTreinador).addComponent(jFormattedTextFieldCpfTreinador,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanelAlterarTreinadorLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabelDataNascimentoTreinador).addComponent(
                                        jFormattedTextFieldDataTreinador, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanelAlterarTreinadorLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabelEnderecoTreinador).addComponent(jTextFieldEnderecoTreinador,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanelAlterarTreinadorLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabelLoginTreinador).addComponent(jTextFieldLoginTreinador,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanelAlterarTreinadorLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabelSenhaTreinador).addComponent(jPasswordFieldSenhaTreinador,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanelAlterarTreinadorLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabelEmailTreinador)
                                .addComponent(jTextFieldEmailTreinador, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(7, 7, 7)
                        .addGroup(jPanelAlterarTreinadorLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabelAdministradorTreinador)
                                .addComponent(jCheckBoxAdministradorTreinador))
                        .addContainerGap(82, Short.MAX_VALUE)));

        jTabbedPaneTreinador.addTab("Alterar", jPanelAlterarTreinador);

        jButtonCancelarTreinador.setText("Cancelar");
        jButtonCancelarTreinador.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonCancelarTreinadorActionPerformed(evt);
            }
        });

        jButtonConfirmarTreinador.setText("Confirmar");
        jButtonConfirmarTreinador.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonConfirmarTreinadorActionPerformed(evt);
            }
        });

        jButtonInserirTreinador.setText("Inserir");
        jButtonInserirTreinador.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonInserirTreinadorActionPerformed(evt);
            }
        });

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

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jTabbedPaneTreinador)
                .addGroup(layout.createSequentialGroup().addContainerGap().addComponent(jButtonInserirTreinador)
                        .addGap(18, 18, 18).addComponent(jButtonAlterarTreinador).addGap(18, 18, 18)
                        .addComponent(jButtonExcluirTreinador).addGap(18, 18, 18)
                        .addComponent(jButtonConfirmarTreinador).addGap(18, 18, 18)
                        .addComponent(jButtonCancelarTreinador)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jButtonFecharTreinador).addContainerGap()));
        layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup().addComponent(jTabbedPaneTreinador)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jButtonInserirTreinador).addComponent(jButtonAlterarTreinador)
                                .addComponent(jButtonExcluirTreinador).addComponent(jButtonFecharTreinador)
                                .addComponent(jButtonCancelarTreinador).addComponent(jButtonConfirmarTreinador))
                        .addContainerGap()));

        bindingGroup.bind();

        pack();
    }// </editor-fold>//GEN-END:initComponents

    //Bind automtico no funiona como o esperado. Os mtodos abaixo circulam este problema.
    /**
     * Popula os textField da aba Alterar.
     *
     * @param t Fonte dos dados para o textField, caso seja null os campos sero
     * esvaziados.
     */
    private void popularCamposAlterar(Treinador t) {
        if (t == null) {
            jTextFieldEmailTreinador.setText("");
            jTextFieldEnderecoTreinador.setText("");
            jTextFieldLoginTreinador.setText("");
            jTextFieldNomeTreinador.setText("");
            jPasswordFieldSenhaTreinador.setText("");
            jFormattedTextFieldCpfTreinador.setValue(null);
            jCheckBoxAdministradorTreinador.setSelected(false);
            jFormattedTextFieldDataTreinador.setValue(null);
        } else {
            boolean b;
            b = t.getAdministrador() != 0; /*valor diferente de zero = true. contrrio = false.*/

            jTextFieldEmailTreinador.setText(t.getEmail());
            jTextFieldEnderecoTreinador.setText(t.getEndereco());
            jTextFieldLoginTreinador.setText(t.getLogin());
            jTextFieldNomeTreinador.setText(t.getNome());
            jPasswordFieldSenhaTreinador.setText(t.getSenha());
            jFormattedTextFieldCpfTreinador.setValue(t.getCpf());
            jCheckBoxAdministradorTreinador.setSelected(b);
            jFormattedTextFieldDataTreinador.setValue(t.getDataNascimento());
        }
    }

    /**
     * Aps a edio do objeto pega dados da aba Alterar e coloca no objeto.
     *
     * @param t Objeto a ser populado.
     */
    private void popularObjeto(Treinador t) {
        //TODO: Garantir que @param no  nulo
        /*O campo ID  gerado pelo banco de dados*/
        t.setNome(jTextFieldNomeTreinador.getText());
        t.setCpf((String) jFormattedTextFieldCpfTreinador.getText());
        t.setEndereco(jTextFieldEnderecoTreinador.getText());
        t.setLogin(jTextFieldLoginTreinador.getText());
        t.setSenha(Hashing.sha256().hashString(jPasswordFieldSenhaTreinador.getText(), Charsets.UTF_8).toString());
        t.setEmail(jTextFieldEmailTreinador.getText());
        t.setDataNascimento((Date) jFormattedTextFieldDataTreinador.getValue());
        /*Seta se o treinador sendo cadastrado  adiminstrador*/
        if (jCheckBoxAdministradorTreinador.isSelected()) {
            t.setAdministrador(1);
        } else {
            t.setAdministrador(0);
        }
    }

    /**
     * Entra na Aba de Consulta
     */
    private void abaConsulta() {
        jTabbedPaneTreinador.setSelectedIndex(0);
        jTabbedPaneTreinador.setEnabledAt(0, true);
        jTabbedPaneTreinador.setEnabledAt(1, false);
        jButtonConfirmarTreinador.setEnabled(false);
        jButtonCancelarTreinador.setEnabled(false);
        jButtonInserirTreinador.setEnabled(true);
        jButtonAlterarTreinador.setEnabled(true);
        jButtonExcluirTreinador.setEnabled(true);
    }

    /**
     * Entra na Aba de Alterar
     */
    private void abaAlterar() {
        jTabbedPaneTreinador.setSelectedIndex(1);
        jTabbedPaneTreinador.setEnabledAt(1, true);
        jTabbedPaneTreinador.setEnabledAt(0, false);
        jButtonInserirTreinador.setEnabled(false);
        jButtonAlterarTreinador.setEnabled(false);
        jButtonExcluirTreinador.setEnabled(false);
        jButtonConfirmarTreinador.setEnabled(true);
        jButtonCancelarTreinador.setEnabled(true);

    }

    /**
     * Valida os campos com as seguintes normas:
     * <ul>
     * <li> Nome: no nulo e menor que 40 caracteres;
     * <li> CPF: no nulo, vlido, e com 11 caracteres - no formato
     * ###.###.###-##;
     * <li> LOGIN: Ser menor que 10 caracteres, no nulo e nico -  realizada
     * consulta no banco de dados;
     * <li> Password: maior que 6 e menor que 15 caracteres, no sendo nulo;
     * <li> Email: no nulo e vlido, menor que 40 caracteres;
     * <li> Endereo: no nulo e menor que 40 caracteres.
     * </ul>
     *
     * @return true caso os campos estejam corretos, false caso contrrio.
     */
    private boolean validacaoDeCampos() {
        boolean valido = true;
        String msgErro = "";
        String campo;

        //Checa o campo EMAIL:
        Pattern p = Pattern.compile("^[\\w-]+(\\.[\\w-]+)*@([\\w-]+\\.)+[a-zA-Z]{2,7}$");
        Matcher m = p.matcher(jTextFieldEmailTreinador.getText());
        campo = jTextFieldEmailTreinador.getText();
        if ((!m.find()) || ("".equals(campo)) || (campo.length() > 40)) {
            valido = false;
            msgErro += "Email invlido. O campo deve ser vlido, no nulo e menor que 40 caracteres\n";
            jTextFieldEmailTreinador.setText(""); //Limpa o campo de email
        }

        //Checa o campo Nome
        campo = jTextFieldNomeTreinador.getText();
        if (("".equals(campo)) || (campo.length() > 40)) {
            valido = false;
            msgErro += "Nome invlido. O campo deve no deve ser nulo e deve ser menor que 40 caracteres\n";
            jTextFieldNomeTreinador.setText("");// Limpa o campo de nome
        }

        //Checa o campo CPF
        campo = jFormattedTextFieldCpfTreinador.getText();
        if (campo.replaceAll("[^0123456789]", "").length() != 11) {
            valido = false;
            msgErro += "CPF invlido. O campo deve ter apenas nmeros e deve ser na forma 123.123.123-99\n";
            jFormattedTextFieldCpfTreinador.setValue(null);
            ; //Limpa campo CPF
        }

        //Checa o campo login
        campo = jTextFieldLoginTreinador.getText();
        if ((campo.length() < 10) && !("".equals(campo))) {
            //Campo possivelmente vlido
            //Checar unicidade
            //INFO: Cdigo Legado modificado.
            if ((flagAnterior == INSERIR) || (!campo.equals(treinadorAlterar.getLogin()))) {
                try {
                    EntityManagerFactory emf = Persistence.createEntityManagerFactory("AcademiaVisualPU");
                    TreinadorJpaController treinadorJpaController = new TreinadorJpaController(emf);
                    Treinador resultado = (Treinador) treinadorJpaController.findLogin(campo);
                    if (resultado != null) {
                        //Encontrou um login identico
                        valido = false;
                        msgErro += "Login invlido. O campo deve ser nico\n";
                        jTextFieldLoginTreinador.setText("");
                    }
                } catch (Exception e) {
                    //TODO: Definir melhor qual tipo de exceo  lanada
                    e.printStackTrace();
                }
            }
        } else {
            valido = false;
            msgErro += "Login invlido. O campo no deve ser nulo e deve ser menor que 10 caracteres\n";
            jTextFieldNomeTreinador.setText("");
        }

        //Checa o campo password
        campo = String.valueOf(jPasswordFieldSenhaTreinador.getPassword());
        if ((campo.length() < 6) || (campo.length() > 15)) {
            valido = false;
            msgErro += "Senha invlida. O campo deve ter pelo menos 6 caracteres, mas no mais que 15\n";
            jPasswordFieldSenhaTreinador.setText("");
        }

        //Checa o campo endereo
        campo = jTextFieldEnderecoTreinador.getText();
        if (("".equals(campo)) || (campo.length() > 40)) {
            valido = false;
            msgErro += "Endereo invlido. O campo deve no deve ser nulo e deve ser menor que 40 caracteres\n";
            jTextFieldEnderecoTreinador.setText("");
        }

        if (!valido) {
            JOptionPane.showMessageDialog(null, msgErro, "Campos Errados!", JOptionPane.ERROR_MESSAGE);
        }
        return valido;
    }

    private void jButtonFecharTreinadorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonFecharTreinadorActionPerformed
        dispose();
    }//GEN-LAST:event_jButtonFecharTreinadorActionPerformed

    private void jTextFieldProcurarTreinadorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextFieldProcurarTreinadorActionPerformed
        String[] sql = { "", "SELECT t FROM Treinador t WHERE t.nome LIKE :nome ",
                "SELECT t FROM Treinador t WHERE t.cpf = :cpf " };
        try {
            Query query = null;
            if (jTextFieldProcurarTreinador.getText().length() > 0) {
                if (jComboBoxProcurarTreinador.getSelectedIndex() == 0) {
                    query = entityManagerTreinador.createNamedQuery("Aluno.findById");
                    query.setParameter("id", Long.valueOf(jTextFieldProcurarTreinador.getText()));
                }
                if (jComboBoxProcurarTreinador.getSelectedIndex() == 1) {
                    query = entityManagerTreinador.createQuery(sql[1]);
                    query.setParameter("nome", '%' + jTextFieldProcurarTreinador.getText() + '%');
                }
            } else {
                query = treinadorQuery;
            }
            treinadorList.clear();
            treinadorList.addAll(query.getResultList());
            jTableTreinador.updateUI();
            jTableTreinador.repaint();
        } catch (Exception e) {
            JOptionPane.showMessageDialog(this, e);
        }
    }//GEN-LAST:event_jTextFieldProcurarTreinadorActionPerformed

    private void jButtonInserirTreinadorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonInserirTreinadorActionPerformed
        flagAnterior = INSERIR;
        popularCamposAlterar(null);
        abaAlterar();
    }//GEN-LAST:event_jButtonInserirTreinadorActionPerformed

    private void jButtonAlterarTreinadorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAlterarTreinadorActionPerformed
        if (!treinadorList.isEmpty() && jTableTreinador.getSelectedRow() != -1) {
            flagAnterior = ALTERAR;
            treinadorAlterar = treinadorList.get(jTableTreinador.getSelectedRow());
            popularCamposAlterar(treinadorAlterar);
            abaAlterar();
        } else {
            JOptionPane.showMessageDialog(null, "Selecione um treinador !");
        }
    }//GEN-LAST:event_jButtonAlterarTreinadorActionPerformed

    private void jButtonExcluirTreinadorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonExcluirTreinadorActionPerformed
        if (!treinadorList.isEmpty() && jTableTreinador.getSelectedRow() != -1) {
            int option = JOptionPane.showConfirmDialog(this,
                    "Verifique com ateno os dados que deseja excluir!\n"
                            + "Clique em sim se esse for mesmo o aluno que deseja excluir.\n"
                            + "Clique em cancelar para voltar.");
            if (option == JOptionPane.YES_OPTION) {
                try {
                    /*
                     EXCLUIR O USUARIO DE TODOS AS TABELAS QUE UTILIZAM O MESMO !
                     Acho que no  necessrio -- Luccas.
                     */
                    treinadorList.get(jTableTreinador.getSelectedRow()).excluir();
                    treinadorList.remove(jTableTreinador.getSelectedRow());
                    jTableTreinador.updateUI();
                    jTableTreinador.repaint();
                } catch (Exception e) {
                    JOptionPane.showMessageDialog(null, e);
                }
            } else {
                JOptionPane.showMessageDialog(null, "Excluso cancelada !");
            }
        } else {
            JOptionPane.showMessageDialog(null, "Selecione um treinador !");
        }
    }//GEN-LAST:event_jButtonExcluirTreinadorActionPerformed

    private void jButtonConfirmarTreinadorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonConfirmarTreinadorActionPerformed
        boolean atualizacaoFeita = false; /*Indica que a atualizao/insero foi feita com sucesso,
                                          mantendo a aba de alterao focada.
                                          */

        if (flagAnterior == INSERIR) {
            //Verifica se os campos esto corretos antes de modific-los.
            if (validacaoDeCampos()) {
                treinador = new Treinador(); //Cria um aluno vazio
                popularObjeto(treinador); //Popula o objeto
                //Insere o objeto no banco de dados
                treinador.incluir();
                /*Coisas do bind: Para adicionar elemento por ultimo na tabela inserir na penultima posio
                 tipo: list.size() - 1 -> No faz sentido, mas  assim que o bind funciona...
                 */
                //TODO: Consertar o bug que d quando so feitas as primeiras inseres.(primeira e segunda apenas TRATAR ESSES CASOS).
                treinadorList.add(treinadorList.size() - 1, treinador);
                jTableTreinador.repaint();
                atualizacaoFeita = true;
            }
        }
        if (flagAnterior == ALTERAR) {
            //Verifica se os campos esto corretos para atualiz-los
            if (validacaoDeCampos()) {
                popularObjeto(treinadorAlterar);
                //altera o aluno no banco de dados
                treinadorAlterar.alterar();
                jTableTreinador.repaint();
                atualizacaoFeita = true;
            }
        }
        if (atualizacaoFeita) {
            abaConsulta();
        }

    }//GEN-LAST:event_jButtonConfirmarTreinadorActionPerformed

    private void jButtonCancelarTreinadorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonCancelarTreinadorActionPerformed
        abaConsulta();
    }//GEN-LAST:event_jButtonCancelarTreinadorActionPerformed

    private void formInternalFrameOpened(javax.swing.event.InternalFrameEvent evt) {//GEN-FIRST:event_formInternalFrameOpened
        if (TelaInicial.verificarAdministrador()) {
            jButtonInserirTreinador.setEnabled(false);
            jButtonAlterarTreinador.setEnabled(false);
            jButtonExcluirTreinador.setEnabled(false);
        }
    }//GEN-LAST:event_formInternalFrameOpened

    private int flagAnterior; //Define qual boto foi clicado
    private Treinador treinador; //Enderea objetos criados
    //Flags para identificar que boto foi clicado anteriormente.
    private final int INSERIR = 1;
    private final int ALTERAR = 2;
    //Aluno para ser alterado
    private Treinador treinadorAlterar;
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.persistence.EntityManager entityManagerTreinador;
    private javax.swing.JButton jButtonAlterarTreinador;
    private javax.swing.JButton jButtonCancelarTreinador;
    private javax.swing.JButton jButtonConfirmarTreinador;
    private javax.swing.JButton jButtonExcluirTreinador;
    private javax.swing.JButton jButtonFecharTreinador;
    private javax.swing.JButton jButtonInserirTreinador;
    private javax.swing.JButton jButtonProcurarTreinador;
    private javax.swing.JCheckBox jCheckBoxAdministradorTreinador;
    private javax.swing.JComboBox jComboBoxProcurarTreinador;
    private javax.swing.JFormattedTextField jFormattedTextFieldCpfTreinador;
    private javax.swing.JFormattedTextField jFormattedTextFieldDataTreinador;
    private javax.swing.JLabel jLabelAdministradorTreinador;
    private javax.swing.JLabel jLabelCpfTreinador;
    private javax.swing.JLabel jLabelDataNascimentoTreinador;
    private javax.swing.JLabel jLabelEmailTreinador;
    private javax.swing.JLabel jLabelEnderecoTreinador;
    private javax.swing.JLabel jLabelLoginTreinador;
    private javax.swing.JLabel jLabelNomeTreinador;
    private javax.swing.JLabel jLabelProcurarTreinador;
    private javax.swing.JLabel jLabelSenhaTreinador;
    private javax.swing.JPanel jPanelAlterarTreinador;
    private javax.swing.JPanel jPanelConsultaTreinador;
    private javax.swing.JPasswordField jPasswordFieldSenhaTreinador;
    private javax.swing.JScrollPane jScrollPaneTreinador;
    private javax.swing.JTabbedPane jTabbedPaneTreinador;
    private javax.swing.JTable jTableTreinador;
    private javax.swing.JTextField jTextFieldEmailTreinador;
    private javax.swing.JTextField jTextFieldEnderecoTreinador;
    private javax.swing.JTextField jTextFieldLoginTreinador;
    private javax.swing.JTextField jTextFieldNomeTreinador;
    private javax.swing.JTextField jTextFieldProcurarTreinador;
    private java.util.List<DataBase.Treinador> treinadorList;
    private javax.persistence.Query treinadorQuery;
    private org.jdesktop.beansbinding.BindingGroup bindingGroup;
    // End of variables declaration//GEN-END:variables
}