view.EmprestimoAddInternalFrame.java Source code

Java tutorial

Introduction

Here is the source code for view.EmprestimoAddInternalFrame.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 control.ConfigController;
import control.EmprestimoController;
import control.ExemplarController;
import control.PessoaController;
import java.util.ArrayList;
import javax.swing.DefaultListModel;
import javax.swing.JOptionPane;
import model.Exemplar;
import model.Pessoa;
import org.joda.time.LocalDateTime;
import static view.MainFrame.eif;
import static view.MainFrame.lif;

/**
 *
 * @author gabriel
 */
public final class EmprestimoAddInternalFrame extends javax.swing.JInternalFrame {

    static ArrayList<Pessoa> pessoas;
    static ArrayList<Exemplar> exemplares;
    static ArrayList<Exemplar> filtrados;
    static ArrayList<Exemplar> selecionados;

    static DefaultListModel model;
    static LocalDateTime ldt;
    static int prazo_default;

    public EmprestimoAddInternalFrame() {
        initComponents();
        /* Passando valor default salvo em Opes>Preferencias>Prazo Default */
        prazo_default = ConfigController.getPrazoDefault();
        diaSpinner.setValue(prazo_default);

        model = new DefaultListModel();
        livroList.setModel(model);

        selecionados = new ArrayList<>();
        filtrados = new ArrayList<>();
        pessoas = PessoaController.ArrayPessoa("");
        exemplares = ExemplarController.ArrayExemplar(null, 0, "");
        updatePessoaBox();
        updateLivroBox();

        ldt = new LocalDateTime(System.currentTimeMillis());
        String date = " " + ldt.getDayOfMonth() + "/" + ldt.getMonthOfYear() + "/" + ldt.getYear() + " ";
        dataLabel.setText("" + date);

    }

    void updatePessoaBox() {
        pessoaBox.removeAllItems();
        pessoas.stream().forEach((p) -> {
            pessoaBox.addItem(p.getCodigo());
        });

    }

    void updateLivroBox() {
        livroBox.removeAllItems();
        exemplares.stream().forEach((e) -> {
            livroBox.addItem(e.getCodigo());
        });

    }

    public void updateLivroFiltradoBox() {
        livroBox.removeAllItems();
        filtrados.stream().forEach((e) -> {
            livroBox.addItem(e.getCodigo());
        });

    }

    public int insertItemList(String item) {
        model.addElement(item);
        livroList.setModel(model);
        //System.out.println("LIST INDEX ADICIONAR "+ model.indexOf(item));
        return model.indexOf(item);
    }

    public void removeItemList(int index) {
        model.removeElementAt(index);
        livroList.setModel(model);
        //System.out.println("LIST INDEX REMOVER "+ index);
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jScrollBar1 = new javax.swing.JScrollBar();
        jPanel1 = new javax.swing.JPanel();
        pessoaLabel = new javax.swing.JLabel();
        buscaPessoaField = new javax.swing.JTextField();
        pessoaBox = new javax.swing.JComboBox<>();
        escolhePessoaBtn = new javax.swing.JButton();
        codigoLabel = new javax.swing.JLabel();
        jPanel4 = new javax.swing.JPanel();
        removerLivroList = new javax.swing.JButton();
        limparLivroList = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        livroList = new javax.swing.JList<>();
        jPanel2 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        buscaLivroField = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        addListLivroBtn = new javax.swing.JButton();
        livroBox = new javax.swing.JComboBox<>();
        jPanel3 = new javax.swing.JPanel();
        jLabel3 = new javax.swing.JLabel();
        dataLabel = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        diaSpinner = new javax.swing.JSpinner();
        semanaRadio = new javax.swing.JRadioButton();
        mesRadio = new javax.swing.JRadioButton();
        jPanel5 = new javax.swing.JPanel();
        salvarEmprestimoBtn = new javax.swing.JButton();
        jButton1 = new javax.swing.JButton();
        loadLabel = new javax.swing.JLabel();

        setClosable(true);
        setResizable(true);
        setTitle("Novo Emprstimo");

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "  Pessoa  ",
                javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.DEFAULT_POSITION,
                new java.awt.Font("Dialog", 1, 14))); // NOI18N

        pessoaLabel.setFont(new java.awt.Font("Dialog", 0, 14)); // NOI18N
        pessoaLabel.setText("Cdigo, nome ou turma:");

        buscaPessoaField.setFont(new java.awt.Font("Dialog", 0, 14)); // NOI18N
        buscaPessoaField.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                buscaPessoaFieldKeyReleased(evt);
            }
        });

        pessoaBox.setFont(new java.awt.Font("Dialog", 1, 14)); // NOI18N
        pessoaBox.setModel(
                new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));

        escolhePessoaBtn.setFont(new java.awt.Font("Dialog", 1, 14)); // NOI18N
        escolhePessoaBtn.setText("Selecionar");
        escolhePessoaBtn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                escolhePessoaBtnActionPerformed(evt);
            }
        });

        codigoLabel.setFont(new java.awt.Font("Dialog", 0, 14)); // NOI18N
        codigoLabel.setText("Selecione o cdigo:");

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(jPanel1Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup().addContainerGap().addGroup(jPanel1Layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(jPanel1Layout.createSequentialGroup().addGroup(jPanel1Layout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(jPanel1Layout.createSequentialGroup().addGap(0, 0, Short.MAX_VALUE)
                                        .addComponent(pessoaLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 152,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addGap(91, 91, 91))
                                .addGroup(jPanel1Layout.createSequentialGroup().addComponent(buscaPessoaField)
                                        .addGap(6, 6, 6)))
                                .addComponent(escolhePessoaBtn).addGap(74, 74, 74))
                        .addGroup(
                                jPanel1Layout.createSequentialGroup()
                                        .addGroup(jPanel1Layout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                .addComponent(codigoLabel)
                                                .addComponent(pessoaBox, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))));
        jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup().addContainerGap().addComponent(pessoaLabel)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(buscaPessoaField, javax.swing.GroupLayout.PREFERRED_SIZE, 37,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(escolhePessoaBtn, javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(codigoLabel)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(pessoaBox, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(8, 8, 8)));

        jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "  Livros  ",
                javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.DEFAULT_POSITION,
                new java.awt.Font("Dialog", 1, 14))); // NOI18N

        removerLivroList.setFont(new java.awt.Font("Dialog", 0, 14)); // NOI18N
        removerLivroList.setText("Remover");
        removerLivroList.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                removerLivroListActionPerformed(evt);
            }
        });

        limparLivroList.setFont(new java.awt.Font("Dialog", 0, 14)); // NOI18N
        limparLivroList.setText("Limpar");
        limparLivroList.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                limparLivroListActionPerformed(evt);
            }
        });

        livroList.setFont(new java.awt.Font("Dialog", 0, 14)); // NOI18N
        livroList.setModel(new javax.swing.AbstractListModel<String>() {
            String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };

            public int getSize() {
                return strings.length;
            }

            public String getElementAt(int i) {
                return strings[i];
            }
        });
        livroList.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                livroListMouseClicked(evt);
            }
        });
        jScrollPane1.setViewportView(livroList);

        jPanel2.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(204, 204, 204)));

        jLabel1.setFont(new java.awt.Font("Dialog", 0, 14)); // NOI18N
        jLabel1.setText("Cdigo, ttulo, autor:");

        buscaLivroField.setFont(new java.awt.Font("Dialog", 0, 14)); // NOI18N
        buscaLivroField.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                buscaLivroFieldKeyReleased(evt);
            }
        });

        jLabel2.setFont(new java.awt.Font("Dialog", 0, 14)); // NOI18N
        jLabel2.setText("Selecione o cdigo: ");

        addListLivroBtn.setFont(new java.awt.Font("Dialog", 1, 14)); // NOI18N
        addListLivroBtn.setText("Adicionar  lista");
        addListLivroBtn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                addListLivroBtnActionPerformed(evt);
            }
        });

        livroBox.setFont(new java.awt.Font("Dialog", 1, 14)); // NOI18N
        livroBox.setModel(
                new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(jPanel2Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                        .addGap(12, 12, 12)
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(jLabel1).addComponent(jLabel2))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(livroBox, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGroup(jPanel2Layout.createSequentialGroup()
                                        .addComponent(buscaLivroField, javax.swing.GroupLayout.PREFERRED_SIZE, 222,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(addListLivroBtn)))
                        .addContainerGap(96, Short.MAX_VALUE)));
        jPanel2Layout.setVerticalGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel2Layout.createSequentialGroup().addContainerGap().addGroup(jPanel2Layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(buscaLivroField, javax.swing.GroupLayout.Alignment.TRAILING,
                                javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jLabel1).addComponent(addListLivroBtn, javax.swing.GroupLayout.PREFERRED_SIZE,
                                37, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(livroBox, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jLabel2))
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

        javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
        jPanel4.setLayout(jPanel4Layout);
        jPanel4Layout.setHorizontalGroup(jPanel4Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel4Layout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                .addComponent(removerLivroList).addComponent(limparLivroList))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jScrollPane1))
                .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
                        Short.MAX_VALUE));
        jPanel4Layout.setVerticalGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel4Layout.createSequentialGroup()
                        .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(jPanel4Layout.createSequentialGroup().addComponent(removerLivroList)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(limparLivroList).addContainerGap(12, Short.MAX_VALUE))
                                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 0,
                                        Short.MAX_VALUE))));

        jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "  Devoluo  ",
                javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.DEFAULT_POSITION,
                new java.awt.Font("Dialog", 1, 14))); // NOI18N

        jLabel3.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N
        jLabel3.setText("Data de Incio");

        dataLabel.setFont(new java.awt.Font("Dialog", 1, 18)); // NOI18N
        dataLabel.setText("jLabel4");

        jLabel4.setText("Dias para Devoluo:");

        diaSpinner.setFont(new java.awt.Font("Dialog", 1, 18)); // NOI18N
        diaSpinner.setModel(new javax.swing.SpinnerNumberModel(0, 0, null, 1));

        semanaRadio.setText("Semana");
        semanaRadio.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                semanaRadioActionPerformed(evt);
            }
        });

        mesRadio.setText("Ms");
        mesRadio.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                mesRadioActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(jPanel3Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel3Layout.createSequentialGroup().addContainerGap().addGroup(jPanel3Layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(jPanel3Layout.createSequentialGroup().addComponent(jLabel3)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(
                                        dataLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 139, Short.MAX_VALUE))
                        .addGroup(jPanel3Layout.createSequentialGroup()
                                .addGroup(jPanel3Layout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                        .addGroup(jPanel3Layout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                                .addComponent(jLabel4).addComponent(diaSpinner,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE, 102,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                                        .addGroup(jPanel3Layout.createSequentialGroup().addComponent(mesRadio)
                                                .addGap(18, 18, 18).addComponent(semanaRadio,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE, 89,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE)))
                                .addGap(0, 0, Short.MAX_VALUE)))
                        .addContainerGap()));
        jPanel3Layout.setVerticalGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel3Layout.createSequentialGroup().addContainerGap()
                        .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(dataLabel).addComponent(jLabel3))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED).addComponent(jLabel4)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(diaSpinner)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(semanaRadio).addComponent(mesRadio))));

        salvarEmprestimoBtn.setFont(new java.awt.Font("Dialog", 1, 14)); // NOI18N
        salvarEmprestimoBtn.setText("  Salvar  Emprstimo");
        salvarEmprestimoBtn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                salvarEmprestimoBtnActionPerformed(evt);
            }
        });

        jButton1.setFont(new java.awt.Font("Dialog", 0, 14)); // NOI18N
        jButton1.setText("Cancelar");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
        jPanel5.setLayout(jPanel5Layout);
        jPanel5Layout
                .setHorizontalGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
                                jPanel5Layout.createSequentialGroup().addComponent(salvarEmprestimoBtn)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(jButton1).addContainerGap()));
        jPanel5Layout.setVerticalGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup()
                        .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(salvarEmprestimoBtn).addComponent(jButton1))
                        .addContainerGap()));

        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().addGap(0, 0, Short.MAX_VALUE).addComponent(loadLabel)
                                .addGap(213, 213, 213))
                .addGroup(layout.createSequentialGroup().addContainerGap().addGroup(layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                        .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addGroup(layout.createSequentialGroup()
                                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 381, Short.MAX_VALUE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addContainerGap()));
        layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(loadLabel)));

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

    private void buscaPessoaFieldKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_buscaPessoaFieldKeyReleased
        escolhePessoaBtn.setEnabled(true);
        pessoaLabel.setText("Cdigo, nome, turma:");
        codigoLabel.setText("Selecione o Cdigo: ");
        pessoaBox.setEnabled(true);
        String str = buscaPessoaField.getText();
        if (!"".equals(str) && str.length() > 2) {
            pessoas = PessoaController.ArrayPessoa(str);
            updatePessoaBox();
        } else {
            pessoas = PessoaController.ArrayPessoa("");
            updatePessoaBox();
        }
    }//GEN-LAST:event_buscaPessoaFieldKeyReleased

    private void escolhePessoaBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_escolhePessoaBtnActionPerformed
        if (pessoaBox.getSelectedIndex() != -1) {
            String codigo = pessoaBox.getSelectedItem().toString();
            if (!"".equals(codigo) && codigo != null) {
                if (!pessoas.isEmpty()) {
                    for (Pessoa p : pessoas) {
                        if (codigo.equals(p.getCodigo())) {
                            buscaPessoaField.setText(p.getNome());
                            escolhePessoaBtn.setEnabled(false);
                            pessoaLabel.setText("Selecionado: ");
                            codigoLabel.setText("Cdigo: ");
                            pessoaBox.setEnabled(false);
                        }
                    }
                }
            }
        } else
            JOptionPane.showMessageDialog(null, "No h pessoas cadastradas! . ", "Ateno",
                    JOptionPane.WARNING_MESSAGE);
    }//GEN-LAST:event_escolhePessoaBtnActionPerformed

    private void limparLivroListActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_limparLivroListActionPerformed
        if (model.getSize() > 0) {
            model.removeAllElements();
            livroList.setModel(model);
            selecionados.clear();
            exemplares = ExemplarController.ArrayExemplar(null, 0, "");
            updateLivroBox();
            //System.out.println(" LISTA VAZIA? "+ selecionados.isEmpty() );
        } else
            limparLivroList.setEnabled(false);
    }//GEN-LAST:event_limparLivroListActionPerformed

    private void removerLivroListActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removerLivroListActionPerformed
        if (livroList.getSelectedIndex() > -1) {
            int index = livroList.getSelectedIndex();
            removeItemList(index);
            for (Exemplar s : selecionados) {
                if (selecionados.indexOf(s) == index) {
                    selecionados.remove(s);
                    exemplares.add(s);
                    updateLivroBox();
                    //System.out.println(" INDEX "+ selecionados.indexOf(s) +" - REMOVER "+ s.toString() );
                    break;
                }
            }
        } else
            removerLivroList.setEnabled(false);
    }//GEN-LAST:event_removerLivroListActionPerformed

    private void livroListMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_livroListMouseClicked
        if (livroList.getSelectedIndex() > -1) {
            limparLivroList.setEnabled(true);
            removerLivroList.setEnabled(true);
        } else {
            limparLivroList.setEnabled(false);
            removerLivroList.setEnabled(false);
        }
    }//GEN-LAST:event_livroListMouseClicked

    private void salvarEmprestimoBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_salvarEmprestimoBtnActionPerformed
        if (model.getSize() > 0 && !selecionados.isEmpty()) {
            if (pessoaBox.getSelectedIndex() > -1) {
                salvarEmprestimoBtn.setEnabled(false);
                String codigo_pessoa = pessoaBox.getSelectedItem().toString();
                Pessoa alugador = new Pessoa(0, 0, null, null, null);
                for (Pessoa p : pessoas) {
                    if (codigo_pessoa.equals(p.getCodigo())) {
                        alugador = p;
                        pessoas.remove(p);
                        break;
                    }
                }
                int plus_days = Integer.valueOf(diaSpinner.getValue().toString());
                LocalDateTime inicio = new LocalDateTime(System.currentTimeMillis());
                LocalDateTime fim = inicio.plusDays(plus_days);
                if (EmprestimoController.Salvar(alugador.getId_pessoa(), selecionados, inicio, fim)) {
                    Runnable t1 = () -> {
                        if (eif != null)
                            eif.updateEmprestimoTable("");
                        if (lif != null)
                            lif.updateExemplarTableModel("");
                        exemplares.removeAll(selecionados);
                        updateLivroBox();
                        updatePessoaBox();
                        selecionados.clear();
                        model = new DefaultListModel();
                        diaSpinner.setValue(prazo_default);
                        livroList.setModel(model);
                    };
                    new Thread(t1).start();

                    salvarEmprestimoBtn.setEnabled(true);
                    //pessoaBox.setSelectedIndex(0);
                    pessoaLabel.setText("Cdigo, nome, turma:");
                    buscaPessoaField.setText("");
                    buscaLivroField.setText("");
                    //livroBox.setSelectedIndex(0);
                    codigoLabel.setText("Selecione o Cdigo:");
                    escolhePessoaBtn.setEnabled(true);
                    pessoaBox.setEnabled(true);
                } else
                    salvarEmprestimoBtn.setEnabled(true);
            } else
                JOptionPane.showMessageDialog(null, "Selecione uma pessoa. ", "Ateno",
                        JOptionPane.WARNING_MESSAGE);
        } else
            JOptionPane.showMessageDialog(null, "Selecione ao menos um exemplar. ", "Ateno",
                    JOptionPane.WARNING_MESSAGE);

    }//GEN-LAST:event_salvarEmprestimoBtnActionPerformed

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

    private void mesRadioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mesRadioActionPerformed
        diaSpinner.setValue(30);
        semanaRadio.setSelected(false);
    }//GEN-LAST:event_mesRadioActionPerformed

    private void semanaRadioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_semanaRadioActionPerformed
        diaSpinner.setValue(7);
        mesRadio.setSelected(false);
    }//GEN-LAST:event_semanaRadioActionPerformed

    private void addListLivroBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addListLivroBtnActionPerformed
        boolean add = false;
        if (livroBox.getSelectedItem() != null) {
            String codigo = livroBox.getSelectedItem().toString();
            if (!selecionados.isEmpty()) {
                for (Exemplar s : selecionados) {
                    if (s.getCodigo().equals(codigo)) {
                        JOptionPane.showMessageDialog(null, "Exemplar j est selecionado. ", "Ateno",
                                JOptionPane.WARNING_MESSAGE);
                        //System.out.println("Livro ja esta na lista "+ s.toString());
                        add = false;
                        break;
                    } else
                        add = true;
                }
            } else
                add = true;
            if (add) {
                for (Exemplar e : exemplares) {
                    if (e.getCodigo().equals(codigo)) {
                        int i = insertItemList(e.getCodigo() + " - " + e.getL().getTitulo());
                        selecionados.add(i, e);
                        exemplares.remove(e);
                        updateLivroBox();
                        //System.out.println(" INDEX "+ selecionados.indexOf(e) +" - ADICIONAR "+ e.toString() );
                        break;
                    }
                }
            }

        }
    }//GEN-LAST:event_addListLivroBtnActionPerformed

    private void buscaLivroFieldKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_buscaLivroFieldKeyReleased
        filtrados = ExemplarController.ArrayExemplar(null, 0, "");
        String str = buscaLivroField.getText();
        if (!"".equals(str) && str.length() > 2) {
            filtrados = ExemplarController.ArrayExemplar(null, 0, str);
            updateLivroFiltradoBox();
        } else {
            updateLivroBox();
        }
    }//GEN-LAST:event_buscaLivroFieldKeyReleased

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton addListLivroBtn;
    private javax.swing.JTextField buscaLivroField;
    private javax.swing.JTextField buscaPessoaField;
    private javax.swing.JLabel codigoLabel;
    private javax.swing.JLabel dataLabel;
    private javax.swing.JSpinner diaSpinner;
    private javax.swing.JButton escolhePessoaBtn;
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JScrollBar jScrollBar1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JButton limparLivroList;
    private javax.swing.JComboBox<String> livroBox;
    private javax.swing.JList<String> livroList;
    private javax.swing.JLabel loadLabel;
    private javax.swing.JRadioButton mesRadio;
    private javax.swing.JComboBox<String> pessoaBox;
    private javax.swing.JLabel pessoaLabel;
    private javax.swing.JButton removerLivroList;
    private javax.swing.JButton salvarEmprestimoBtn;
    private javax.swing.JRadioButton semanaRadio;
    // End of variables declaration//GEN-END:variables
}