package cobaia.gui; import cobaia.model.Animal; import cobaia.persistence.AnimalDAO; import java.awt.Component; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.text.DateFormat; import java.text.ParseException; import javax.swing.JOptionPane; public class AnimalEditarFrame extends javax.swing.JFrame { private Animal animal = new Animal(); private AnimalDAO dao = new AnimalDAO(); private DateFormat df = DateFormat.getDateInstance(); public AnimalEditarFrame() { initComponents(); setVisible(true); setDefaultCloseOperation(DISPOSE_ON_CLOSE); this.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { dao.close(); } }); } public AnimalEditarFrame(int id) { this(); disableAllComponents(); try { lbRegistroBloqueado.setVisible(true); animal = dao.load(id); lbRegistroBloqueado.setVisible(false); modelToUi(); } catch (Exception e) { System.err.println("Não foi possível editar o animal com o id " + id); showErrorMessage(e.toString()); this.dispose(); } enableAllComponents(); } @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { 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(); tfCodigo = new javax.swing.JTextField(); tfNome = new javax.swing.JTextField(); tfDono = new javax.swing.JTextField(); tfTipo = new javax.swing.JTextField(); tfRaca = new javax.swing.JTextField(); tfDataNascimento = new javax.swing.JTextField(); btSalvar = new javax.swing.JButton(); lbRegistroBloqueado = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel1.setText("Código:"); jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel2.setText("Nome:"); jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel3.setText("Dono:"); jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel4.setText("Tipo:"); jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel5.setText("Raça:"); jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel6.setText("Data de nascimento:"); tfCodigo.setEditable(false); tfNome.setColumns(50); tfDono.setColumns(50); tfTipo.setColumns(20); tfRaca.setColumns(20); tfDataNascimento.setColumns(10); btSalvar.setText("Salvar"); btSalvar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btSalvarActionPerformed(evt); } }); lbRegistroBloqueado.setText("O registro está bloqueado, aguarde ..."); lbRegistroBloqueado.setVisible(false); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jLabel2) .addComponent(jLabel3) .addComponent(jLabel4) .addComponent(jLabel5) .addComponent(jLabel6)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(tfDataNascimento, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(tfNome, javax.swing.GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE) .addComponent(tfDono, javax.swing.GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(tfTipo, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(tfRaca, javax.swing.GroupLayout.Alignment.LEADING)))) .addGroup(layout.createSequentialGroup() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(tfCodigo, javax.swing.GroupLayout.PREFERRED_SIZE, 82, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(lbRegistroBloqueado, javax.swing.GroupLayout.PREFERRED_SIZE, 327, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(btSalvar))) .addContainerGap()) ); layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel1, jLabel2, jLabel3, jLabel4, jLabel5, jLabel6}); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(16, 16, 16) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 15, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(tfCodigo, 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.LEADING, false) .addGroup(layout.createSequentialGroup() .addGap(4, 4, 4) .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 15, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(tfNome, 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.LEADING, false) .addGroup(layout.createSequentialGroup() .addGap(4, 4, 4) .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 15, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(tfDono, 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.LEADING, false) .addGroup(layout.createSequentialGroup() .addGap(4, 4, 4) .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 15, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(tfTipo, 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.LEADING, false) .addGroup(layout.createSequentialGroup() .addGap(4, 4, 4) .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 15, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(tfRaca, 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.LEADING, false) .addGroup(layout.createSequentialGroup() .addGap(4, 4, 4) .addComponent(jLabel6)) .addComponent(tfDataNascimento, 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(btSalvar, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(lbRegistroBloqueado)) .addContainerGap()) ); pack(); }// </editor-fold>//GEN-END:initComponents private void btSalvarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btSalvarActionPerformed uiToModel(); try { dao.save(animal); this.dispose(); } catch (Exception e) { showErrorMessage(e.toString()); } }//GEN-LAST:event_btSalvarActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton btSalvar; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel lbRegistroBloqueado; private javax.swing.JTextField tfCodigo; private javax.swing.JTextField tfDataNascimento; private javax.swing.JTextField tfDono; private javax.swing.JTextField tfNome; private javax.swing.JTextField tfRaca; private javax.swing.JTextField tfTipo; // End of variables declaration//GEN-END:variables private void showErrorMessage(String message) { JOptionPane.showMessageDialog(null, message, "Erro", JOptionPane.ERROR_MESSAGE); } private void modelToUi() { tfCodigo.setText(animal.getId() == null ? null : animal.getId().toString()); tfNome.setText(animal.getNome()); tfDono.setText(animal.getDono()); tfRaca.setText(animal.getRaca()); tfDataNascimento.setText(animal.getDataNascimento() == null ? null : df.format(animal.getDataNascimento())); tfTipo.setText(animal.getTipo()); } private void uiToModel() { try { animal.setDataNascimento(df.parse(tfDataNascimento.getText())); } catch (ParseException ex) { System.err.println("Data inválida " + tfDataNascimento.getText()); animal.setDataNascimento(null); } animal.setDono(tfDono.getText()); animal.setNome(tfNome.getText()); animal.setRaca(tfRaca.getText()); animal.setTipo(tfTipo.getText()); } private void disableAllComponents() { for (Component c : this.getContentPane().getComponents()) { c.setEnabled(false); } } private void enableAllComponents() { for (Component c : this.getContentPane().getComponents()) { c.setEnabled(true); } } }