public void setFuncionario(int id) {
    FuncionarioDAO fd = new FuncionarioDAO();
    Funcionario f = fd.consultarFuncionario(id);

    TextField_Nome.setText(f.getNome());
    TextField_Sobrenome.setText(f.getSobrenome());
    TextField_RG.setText(f.getRg());
    TextField_CPF.setText(f.getCpf());
    TextField_Telefone.setText(f.getTelefone());
    PasswordField_Senha.setText(f.getSenha());

    // Seta o departamento de acordo com o id
    DepartamentoDAO dd = new DepartamentoDAO();
    Departamento d = dd.consultarDepartamento(f.getDepartamento());
    for (int i = 0; i < ComboBox_Departamento.getItemCount(); i++) {
      Departamento dc = (Departamento) ComboBox_Departamento.getItemAt(i);
      if (dc.getId() == d.getId()) {
        ComboBox_Departamento.setSelectedIndex(i);
      }
    }

    if (f.getCargo() == 1) {
      // Seta o departamentos de acordo com o id
      FuncionarioDepartamentoDAO fdd = new FuncionarioDepartamentoDAO();
      List<Departamento> dlist = fdd.consultarFuncionarioDepartamento(f.getId());

      if (dlist.size() > 0) {
        int[] indices = new int[dlist.size()];
        int c = 0;
        for (int i = 0; i < List_Departamentos.getModel().getSize(); i++) {
          Departamento dc = (Departamento) List_Departamentos.getModel().getElementAt(i);
          for (Departamento dg : dlist) {
            if (dc.getId() == dg.getId()) {
              indices[c] = i;
              c++;
            }
          }
        }

        List_Departamentos.setSelectedIndices(indices);
      }
    } else if (f.getCargo() == 2) {
      // Seta o departamento de acordo com o id
      FuncionarioDepartamentoDAO fdd = new FuncionarioDepartamentoDAO();
      List<Departamento> dlist = fdd.consultarFuncionarioDepartamento(f.getId());

      if (dlist.size() > 0) {
        Departamento dg = dlist.get(0);
        for (int i = 0; i < ComboBox_Departamentos.getItemCount(); i++) {
          Departamento dc = (Departamento) ComboBox_Departamentos.getItemAt(i);
          if (dc.getId() == dg.getId()) {
            ComboBox_Departamentos.setSelectedIndex(i);
          }
        }
      }
    }

    ComboBox_Nivel.setSelectedItem(new Integer(f.getNivel()).toString());
    ComboBox_Cargo.setSelectedIndex(f.getCargo() - 1);
  }
  public void setCargo() {
    Label_Departamento.setVisible(false);
    ComboBox_Departamentos.setVisible(false);
    Label_Departamentos.setVisible(false);
    List_Departamentos.setVisible(false);

    if (ComboBox_Cargo.getSelectedItem().equals("Diretor")) {
      Label_Departamentos.setVisible(true);
      List_Departamentos.setVisible(true);
    } else if (ComboBox_Cargo.getSelectedItem().equals("Gerente")) {
      Label_Departamento.setVisible(true);
      ComboBox_Departamentos.setVisible(true);
    }
  }
  private void salvarBtnActionPerformed(
      java.awt.event.ActionEvent evt) { // GEN-FIRST:event_salvarBtnActionPerformed

    String nome = TextField_Nome.getText();
    String sobrenome = TextField_Sobrenome.getText();
    String rg = TextField_RG.getText();
    String cpf = TextField_CPF.getText();
    String telefone = TextField_Telefone.getText();
    String senha = PasswordField_Senha.getText();

    if ("".equals(nome)
        || "".equals(sobrenome)
        || "".equals(rg)
        || "".equals(cpf)
        || "".equals(telefone)
        || "".equals(senha)) {
      JOptionPane.showMessageDialog(null, "Por favor, preencha todos os campos.");
    } else {

      int cargo = 0;
      int nivel = 0;

      List<Departamento> dl = List_Departamentos.getSelectedValuesList();

      nivel = Integer.parseInt((String) ComboBox_Nivel.getSelectedItem());

      Departamento d = (Departamento) ComboBox_Departamento.getSelectedItem();
      int departamento = d.getId();

      Departamento ds = (Departamento) ComboBox_Departamentos.getSelectedItem();
      int departamento_gerenciado = ds.getId();

      FuncionarioDAO fd = new FuncionarioDAO();

      // Verifica se é pra inserir ou fazer um update
      if (this.funcionarioId > 0) {

        int idFuncionario = this.funcionarioId;

        FuncionarioDepartamentoDAO fdd = new FuncionarioDepartamentoDAO();
        fdd.removerFuncionarioDepartamentoDeFuncionario(this.funcionarioId);

        if (ComboBox_Cargo.getSelectedItem().equals("Diretor")) {
          cargo = 1;
          Diretor f =
              new Diretor(nome, sobrenome, rg, cpf, telefone, cargo, nivel, departamento, senha);
          fd.alterarFuncionario(this.funcionarioId, f);
          if (idFuncionario > 0) {
            f.setId(idFuncionario);
            //                        fdd = new FuncionarioDepartamentoDAO();

            fdd.inserirFuncionarioDepartamento(dl, f);
          }
        } else if (ComboBox_Cargo.getSelectedItem().equals("Gerente")) {
          cargo = 2;
          Gerente f =
              new Gerente(nome, sobrenome, rg, cpf, telefone, cargo, nivel, departamento, senha);
          fd.alterarFuncionario(this.funcionarioId, f);
          if (idFuncionario > 0) {
            f.setId(idFuncionario);
            //                        FuncionarioDepartamentoDAO fdd = new
            // FuncionarioDepartamentoDAO();

            List<Departamento> dll = new ArrayList<Departamento>();
            dll.add(ds);

            fdd.inserirFuncionarioDepartamento(dll, f);
          }
        } else if (ComboBox_Cargo.getSelectedItem().equals("Analista")) {
          cargo = 3;
          Analista f =
              new Analista(nome, sobrenome, rg, cpf, telefone, cargo, nivel, departamento, senha);
          fd.alterarFuncionario(this.funcionarioId, f);
        } else if (ComboBox_Cargo.getSelectedItem().equals("Programador")) {
          cargo = 4;
          Programador f =
              new Programador(
                  nome, sobrenome, rg, cpf, telefone, cargo, nivel, departamento, senha);
          fd.alterarFuncionario(this.funcionarioId, f);
        } else {
          cargo = 5;
          nivel = 1;
          AuxiliarDeLimpeza f =
              new AuxiliarDeLimpeza(
                  nome, sobrenome, rg, cpf, telefone, cargo, nivel, departamento, senha);
          fd.alterarFuncionario(this.funcionarioId, f);
        }

        if (idFuncionario > 0) {
          JOptionPane.showMessageDialog(null, "Usuário alterado com sucesso.");
          setVisible(false);
          dispose();
        } else {
          JOptionPane.showMessageDialog(null, "Houve um erro ao alterar funcionario.");
        }

      } else {

        int idFuncionario = 0;

        if (ComboBox_Cargo.getSelectedItem().equals("Diretor")) {
          cargo = 1;
          Diretor f =
              new Diretor(nome, sobrenome, rg, cpf, telefone, cargo, nivel, departamento, senha);
          idFuncionario = fd.inserirFuncionario(f);
          if (idFuncionario > 0) {
            f.setId(idFuncionario);
            FuncionarioDepartamentoDAO fdd = new FuncionarioDepartamentoDAO();

            fdd.inserirFuncionarioDepartamento(dl, f);
          }
        } else if (ComboBox_Cargo.getSelectedItem().equals("Gerente")) {
          cargo = 2;
          Gerente f =
              new Gerente(nome, sobrenome, rg, cpf, telefone, cargo, nivel, departamento, senha);
          idFuncionario = fd.inserirFuncionario(f);
          if (idFuncionario > 0) {
            f.setId(idFuncionario);
            FuncionarioDepartamentoDAO fdd = new FuncionarioDepartamentoDAO();

            List<Departamento> dll = new ArrayList<Departamento>();
            dll.add(ds);

            fdd.inserirFuncionarioDepartamento(dll, f);
          }
        } else if (ComboBox_Cargo.getSelectedItem().equals("Analista")) {
          cargo = 3;
          Analista f =
              new Analista(nome, sobrenome, rg, cpf, telefone, cargo, nivel, departamento, senha);
          idFuncionario = fd.inserirFuncionario(f);
        } else if (ComboBox_Cargo.getSelectedItem().equals("Programador")) {
          cargo = 4;
          Programador f =
              new Programador(
                  nome, sobrenome, rg, cpf, telefone, cargo, nivel, departamento, senha);
          idFuncionario = fd.inserirFuncionario(f);
        } else {
          cargo = 5;
          nivel = 1;
          AuxiliarDeLimpeza f =
              new AuxiliarDeLimpeza(
                  nome, sobrenome, rg, cpf, telefone, cargo, nivel, departamento, senha);
          idFuncionario = fd.inserirFuncionario(f);
        }

        if (idFuncionario > 0) {
          JOptionPane.showMessageDialog(null, "Usuário inserido com sucesso.");
          setVisible(false);
          dispose();
        } else {
          JOptionPane.showMessageDialog(null, "Houve um erro ao inserir funcionario.");
        }
      }
    }
  } // GEN-LAST:event_salvarBtnActionPerformed
  /**
   * 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() {

    jLabel7 = new javax.swing.JLabel();
    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();
    jLabel6 = new javax.swing.JLabel();
    jLabel8 = new javax.swing.JLabel();
    jLabel9 = new javax.swing.JLabel();
    jLabel10 = new javax.swing.JLabel();
    ComboBox_Cargo = new javax.swing.JComboBox();
    ComboBox_Nivel = new javax.swing.JComboBox();
    ComboBox_Departamento = new javax.swing.JComboBox();
    TextField_Nome = new javax.swing.JTextField();
    TextField_Sobrenome = new javax.swing.JTextField();
    TextField_RG = new javax.swing.JTextField();
    TextField_CPF = new javax.swing.JTextField();
    TextField_Telefone = new javax.swing.JTextField();
    Label_Titulo = new javax.swing.JLabel();
    salvarBtn = new javax.swing.JButton();
    PasswordField_Senha = new javax.swing.JPasswordField();
    ComboBox_Departamentos = new javax.swing.JComboBox();
    Label_Departamento = new javax.swing.JLabel();
    Label_Departamentos = new javax.swing.JLabel();
    jScrollPane1 = new javax.swing.JScrollPane();
    List_Departamentos = new javax.swing.JList();
    jLabel11 = new javax.swing.JLabel();

    jLabel7.setText("jLabel7");

    setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

    jLabel1.setText("Nome:");

    jLabel2.setText("Sobrenome:");

    jLabel3.setText("RG:");

    jLabel4.setText("CPF:");

    jLabel5.setText("Telefone:");

    jLabel6.setText("Cargo:");

    jLabel8.setText("Nível:");

    jLabel9.setText("Departamento:");

    jLabel10.setText("Senha:");

    ComboBox_Cargo.setModel(
        new javax.swing.DefaultComboBoxModel(
            new String[] {"Diretor", "Gerente", "Analista", "Programador", "Auxiliar de Limpeza"}));
    ComboBox_Cargo.addActionListener(
        new java.awt.event.ActionListener() {
          public void actionPerformed(java.awt.event.ActionEvent evt) {
            ComboBox_CargoActionPerformed(evt);
          }
        });

    ComboBox_Nivel.setModel(new javax.swing.DefaultComboBoxModel(new String[] {"1", "2", "3"}));

    ComboBox_Departamento.setModel(deptoModel);
    ComboBox_Departamento.addActionListener(
        new java.awt.event.ActionListener() {
          public void actionPerformed(java.awt.event.ActionEvent evt) {
            ComboBox_DepartamentoActionPerformed(evt);
          }
        });

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

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

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

    Label_Titulo.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
    Label_Titulo.setText("Adicionar Funcionário");

    salvarBtn.setText("Salvar");
    salvarBtn.addActionListener(
        new java.awt.event.ActionListener() {
          public void actionPerformed(java.awt.event.ActionEvent evt) {
            salvarBtnActionPerformed(evt);
          }
        });

    ComboBox_Departamentos.setModel(deptoGerenciadoModel);
    ComboBox_Departamentos.addActionListener(
        new java.awt.event.ActionListener() {
          public void actionPerformed(java.awt.event.ActionEvent evt) {
            ComboBox_DepartamentosActionPerformed(evt);
          }
        });

    Label_Departamento.setText("Departamento Gerenc.:");

    Label_Departamentos.setText("Departamentos Gerenc.:");

    List_Departamentos.setModel(deptosGerenciadosModel);
    List_Departamentos.setToolTipText("Utilize Ctrl para selecionar múltiplos departamentos");
    jScrollPane1.setViewportView(List_Departamentos);

    jLabel11.setText("* Todos os campos são obrigatórios");

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(
                javax.swing.GroupLayout.Alignment.TRAILING,
                layout
                    .createSequentialGroup()
                    .addGroup(
                        layout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addGroup(
                                layout
                                    .createSequentialGroup()
                                    .addGap(0, 0, Short.MAX_VALUE)
                                    .addComponent(salvarBtn))
                            .addGroup(
                                javax.swing.GroupLayout.Alignment.LEADING,
                                layout
                                    .createSequentialGroup()
                                    .addGroup(
                                        layout
                                            .createParallelGroup(
                                                javax.swing.GroupLayout.Alignment.LEADING)
                                            .addGroup(
                                                layout
                                                    .createSequentialGroup()
                                                    .addGap(164, 164, 164)
                                                    .addGroup(
                                                        layout
                                                            .createParallelGroup(
                                                                javax.swing.GroupLayout.Alignment
                                                                    .TRAILING)
                                                            .addComponent(jLabel9)
                                                            .addComponent(jLabel8)
                                                            .addComponent(jLabel6)
                                                            .addComponent(jLabel5)
                                                            .addComponent(jLabel4)
                                                            .addComponent(jLabel3)
                                                            .addComponent(jLabel2)
                                                            .addComponent(jLabel1)))
                                            .addGroup(
                                                javax.swing.GroupLayout.Alignment.TRAILING,
                                                layout
                                                    .createSequentialGroup()
                                                    .addContainerGap()
                                                    .addGroup(
                                                        layout
                                                            .createParallelGroup(
                                                                javax.swing.GroupLayout.Alignment
                                                                    .LEADING)
                                                            .addComponent(
                                                                Label_Departamento,
                                                                javax.swing.GroupLayout.Alignment
                                                                    .TRAILING)
                                                            .addComponent(
                                                                jLabel10,
                                                                javax.swing.GroupLayout.Alignment
                                                                    .TRAILING)
                                                            .addComponent(
                                                                Label_Departamentos,
                                                                javax.swing.GroupLayout.Alignment
                                                                    .TRAILING))))
                                    .addPreferredGap(
                                        javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addGroup(
                                        layout
                                            .createParallelGroup(
                                                javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(TextField_CPF)
                                            .addComponent(TextField_Telefone)
                                            .addComponent(ComboBox_Cargo, 0, 264, Short.MAX_VALUE)
                                            .addComponent(
                                                ComboBox_Nivel,
                                                0,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                Short.MAX_VALUE)
                                            .addComponent(
                                                ComboBox_Departamento,
                                                0,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                Short.MAX_VALUE)
                                            .addComponent(TextField_Nome)
                                            .addComponent(TextField_Sobrenome)
                                            .addComponent(TextField_RG)
                                            .addComponent(PasswordField_Senha)
                                            .addComponent(
                                                ComboBox_Departamentos,
                                                0,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                Short.MAX_VALUE)
                                            .addComponent(jScrollPane1))))
                    .addGap(174, 174, 174))
            .addGroup(
                layout
                    .createSequentialGroup()
                    .addGap(32, 32, 32)
                    .addComponent(Label_Titulo)
                    .addPreferredGap(
                        javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                        javax.swing.GroupLayout.DEFAULT_SIZE,
                        Short.MAX_VALUE)
                    .addComponent(jLabel11)
                    .addContainerGap()));
    layout.setVerticalGroup(
        layout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(
                javax.swing.GroupLayout.Alignment.TRAILING,
                layout
                    .createSequentialGroup()
                    .addContainerGap()
                    .addGroup(
                        layout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(Label_Titulo)
                            .addComponent(jLabel11))
                    .addGap(29, 29, 29)
                    .addGroup(
                        layout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel1)
                            .addComponent(
                                TextField_Nome,
                                javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(
                        layout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel2)
                            .addComponent(
                                TextField_Sobrenome,
                                javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGap(18, 18, 18)
                    .addGroup(
                        layout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel3)
                            .addComponent(
                                TextField_RG,
                                javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addGroup(
                        layout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel4)
                            .addComponent(
                                TextField_CPF,
                                javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGap(18, 18, 18)
                    .addGroup(
                        layout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel5)
                            .addComponent(
                                TextField_Telefone,
                                javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGap(18, 18, 18)
                    .addGroup(
                        layout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel6)
                            .addComponent(
                                ComboBox_Cargo,
                                javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGap(18, 18, 18)
                    .addGroup(
                        layout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel8)
                            .addComponent(
                                ComboBox_Nivel,
                                javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGap(18, 18, 18)
                    .addGroup(
                        layout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel9)
                            .addComponent(
                                ComboBox_Departamento,
                                javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addGroup(
                        layout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(
                                PasswordField_Senha,
                                javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jLabel10))
                    .addPreferredGap(
                        javax.swing.LayoutStyle.ComponentPlacement.RELATED, 14, Short.MAX_VALUE)
                    .addGroup(
                        layout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(
                                ComboBox_Departamentos,
                                javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(
                                Label_Departamento,
                                javax.swing.GroupLayout.PREFERRED_SIZE,
                                32,
                                javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(
                        layout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(
                                Label_Departamentos,
                                javax.swing.GroupLayout.PREFERRED_SIZE,
                                32,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(
                                jScrollPane1,
                                javax.swing.GroupLayout.PREFERRED_SIZE,
                                98,
                                javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGap(18, 18, 18)
                    .addComponent(salvarBtn)
                    .addGap(196, 196, 196)));

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