Java tutorial
/* * 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 database.DBUtil; import database.Database; import java.awt.Cursor; import java.awt.Desktop; import java.awt.Font; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JOptionPane; import org.joda.time.LocalDate; import org.joda.time.LocalDateTime; import static view.MainFrame.eif; /** * * @author gabriel */ public class ConfigInternalFrame extends javax.swing.JInternalFrame { /** * Creates new form configInternalFrame */ public ConfigInternalFrame() { initComponents(); salvarBtn.setEnabled(false); bkpDiario.setSelected(ConfigController.isSetAutoBackup()); String last_backup = ConfigController.getLastBackupDate(); backupLabel.setText(last_backup); backupLabel.setFont(new Font("Dialog", Font.BOLD, 16)); int prazo_default = ConfigController.getPrazoDefault(); prazoField.setText(String.valueOf(prazo_default)); Double valor = ConfigController.getAppConfigTaxaJuros(); String s = String.format("%1$,.2f", valor); //String s = NumberFormat.getCurrencyInstance().format(valor); taxaField.setText("" + s); LocalDate date = new LocalDate(System.currentTimeMillis()); footer.setText(date.getYear() + " - Gabriel Dewes - JBiblioteca "); } /** * 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() { backupTab = new javax.swing.JTabbedPane(); jPanel2 = new javax.swing.JPanel(); jPanel6 = new javax.swing.JPanel(); salvarBtn = new javax.swing.JButton(); jPanel1 = new javax.swing.JPanel(); jLabel2 = new javax.swing.JLabel(); taxaField = new javax.swing.JTextField(); prazoLabel = new javax.swing.JLabel(); prazoField = new javax.swing.JTextField(); jPanel3 = new javax.swing.JPanel(); jPanel5 = new javax.swing.JPanel(); BackupBtn = new javax.swing.JButton(); jButton1 = new javax.swing.JButton(); jLabel3 = new javax.swing.JLabel(); backupLabel = new javax.swing.JLabel(); bkpDiario = new javax.swing.JCheckBox(); jPanel4 = new javax.swing.JPanel(); footer = new javax.swing.JLabel(); jLabel1 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); setClosable(true); setTitle("Configuraes"); salvarBtn.setFont(new java.awt.Font("Dialog", 0, 14)); // NOI18N salvarBtn.setText("Salvar Alteraes"); salvarBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { salvarBtnActionPerformed(evt); } }); jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Emprstimos")); jLabel2.setText("Taxa por dias de atraso: "); taxaField.setFont(new java.awt.Font("Dialog", 0, 18)); // NOI18N taxaField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { taxaFieldKeyReleased(evt); } }); prazoLabel.setText("Prazo padro para devoluo (dias):"); prazoField.setFont(new java.awt.Font("Dialog", 0, 18)); // NOI18N prazoField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { prazoFieldKeyReleased(evt); } }); 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) .addComponent(prazoLabel).addComponent(jLabel2)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 13, Short.MAX_VALUE) .addGroup(jPanel1Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(taxaField, javax.swing.GroupLayout.DEFAULT_SIZE, 168, Short.MAX_VALUE) .addComponent(prazoField)) .addContainerGap())); jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup().addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel2).addComponent(taxaField, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(prazoField, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(prazoLabel)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6); jPanel6.setLayout(jPanel6Layout); jPanel6Layout .setHorizontalGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel6Layout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(salvarBtn).addContainerGap()) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)); jPanel6Layout.setVerticalGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel6Layout.createSequentialGroup() .addContainerGap() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(salvarBtn) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup(jPanel2Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup().addContainerGap().addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap())); jPanel2Layout.setVerticalGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 15, Short.MAX_VALUE))); backupTab.addTab("Preferncias", jPanel2); jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder("")); BackupBtn.setFont(new java.awt.Font("Dialog", 0, 14)); // NOI18N BackupBtn.setText("Realizar Backup Agora"); BackupBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { BackupBtnActionPerformed(evt); } }); jButton1.setFont(new java.awt.Font("Dialog", 0, 14)); // NOI18N jButton1.setText("Restaurar arquivo de backup"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); jLabel3.setText("ltimo backup:"); backupLabel.setText("jLabel4"); bkpDiario.setSelected(true); bkpDiario.setText("Ativar backup Dirio (recomendado)"); bkpDiario.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { bkpDiarioActionPerformed(evt); } }); javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5); jPanel5.setLayout(jPanel5Layout); jPanel5Layout.setHorizontalGroup(jPanel5Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel5Layout.createSequentialGroup().addContainerGap() .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel5Layout.createSequentialGroup().addGroup(jPanel5Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(BackupBtn, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(jPanel5Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel5Layout.createSequentialGroup() .addComponent(jLabel3).addGap(0, 83, Short.MAX_VALUE)) .addComponent(backupLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addComponent(bkpDiario)) .addContainerGap())); jPanel5Layout .setVerticalGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel5Layout.createSequentialGroup().addContainerGap() .addGroup(jPanel5Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(BackupBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(jPanel5Layout.createSequentialGroup().addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(backupLabel))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(bkpDiario).addContainerGap(42, Short.MAX_VALUE))); 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().addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap())); jPanel3Layout.setVerticalGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup().addGap(15, 15, 15).addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap())); backupTab.addTab("Dados e Backup", jPanel3); footer.setText("jLabel1"); footer.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { footerMouseClicked(evt); } public void mouseEntered(java.awt.event.MouseEvent evt) { footerMouseEntered(evt); } }); jLabel1.setFont(new java.awt.Font("Dialog", 1, 48)); // NOI18N jLabel1.setText("JBiblioteca"); jLabel1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jLabel1MouseClicked(evt); } public void mouseEntered(java.awt.event.MouseEvent evt) { jLabel1MouseEntered(evt); } }); jLabel4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/view/jbiblioteca.png"))); // NOI18N javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); jPanel4.setLayout(jPanel4Layout); jPanel4Layout.setHorizontalGroup(jPanel4Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup().addContainerGap() .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 136, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel1).addComponent(footer)) .addContainerGap(15, Short.MAX_VALUE))); jPanel4Layout.setVerticalGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup().addGap(17, 17, 17).addGroup(jPanel4Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup().addGap(18, 18, 18).addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(footer)) .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 128, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(46, Short.MAX_VALUE))); backupTab.addTab("Sobre", jPanel4); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(backupTab)); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(backupTab)); pack(); }// </editor-fold>//GEN-END:initComponents private void footerMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_footerMouseClicked try { Desktop.getDesktop().browse(new URI("http://gabrieldewes.github.io")); } catch (IOException | URISyntaxException ex) { Logger.getLogger(ConfigInternalFrame.class.getName()).log(Level.SEVERE, null, ex); } }//GEN-LAST:event_footerMouseClicked private void jLabel1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel1MouseClicked try { Desktop.getDesktop().browse(new URI("http://gabrieldewes.github.io")); } catch (IOException | URISyntaxException ex) { Logger.getLogger(ConfigInternalFrame.class.getName()).log(Level.SEVERE, null, ex); } }//GEN-LAST:event_jLabel1MouseClicked private void jLabel1MouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel1MouseEntered jLabel1.setCursor(new Cursor(Cursor.HAND_CURSOR)); }//GEN-LAST:event_jLabel1MouseEntered private void footerMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_footerMouseEntered footer.setCursor(new Cursor(Cursor.HAND_CURSOR)); }//GEN-LAST:event_footerMouseEntered private void prazoFieldKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_prazoFieldKeyReleased salvarBtn.setEnabled(true); }//GEN-LAST:event_prazoFieldKeyReleased private void taxaFieldKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_taxaFieldKeyReleased salvarBtn.setEnabled(true); }//GEN-LAST:event_taxaFieldKeyReleased private void salvarBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_salvarBtnActionPerformed String taxa = taxaField.getText(); taxa = taxa.replaceAll(",", "."); String prazo = prazoField.getText(); try { Double d = Double.valueOf(taxa); int i = Integer.valueOf(prazo); Runnable t1 = () -> { try { if (ConfigController.saveTaxaJuros(d)) { String s = String.format("%1$,.2f", d); taxaField.setText("" + s); salvarBtn.setEnabled(false); if (eif != null) EmprestimoInternalFrame.juros_dia = d; } if (ConfigController.savePrazoDefault(i)) { prazoField.setText("" + i); salvarBtn.setEnabled(false); } } catch (Exception e1) { } }; new Thread(t1).start(); } catch (NumberFormatException n) { System.err.println("Exception " + n.getMessage()); JOptionPane.showMessageDialog(null, "Campo numrico invlido."); } }//GEN-LAST:event_salvarBtnActionPerformed private void bkpDiarioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bkpDiarioActionPerformed Runnable t1 = () -> { try { ConfigController.setAutoBackup(bkpDiario.isSelected()); } catch (Exception e1) { } }; new Thread(t1).start(); }//GEN-LAST:event_bkpDiarioActionPerformed private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed Runnable t1 = () -> { try { java.io.File file = new java.io.File( System.getProperty("user.home") + System.getProperty("file.separator") + ".jbiblioteca" + System.getProperty("file.separator") + "jbiblioteca_bkp.db"); Database.checkDatabase(); Database.recoverBackupDatabase(file); JOptionPane.showMessageDialog(null, "O arquivo de backup foi recuperado com xito."); } catch (Exception e1) { JOptionPane.showMessageDialog(null, "No foi encontrado arquivo de backup! "); } }; new Thread(t1).start(); }//GEN-LAST:event_jButton1ActionPerformed private void BackupBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BackupBtnActionPerformed Runnable t1 = () -> { try { java.io.File file = new java.io.File( System.getProperty("user.home") + System.getProperty("file.separator") + ".jbiblioteca" + System.getProperty("file.separator") + "jbiblioteca_bkp.db"); Database.checkDatabase(); Database.backupDatabase(file); Runnable t2 = () -> { try { LocalDateTime ldt = new LocalDateTime(System.currentTimeMillis()); ConfigController.saveLastBackupDate("'" + ldt.toString() + "'"); backupLabel.setText(ldt.toDate().toLocaleString()); } catch (Exception e1) { } }; new Thread(t2).start(); JOptionPane.showMessageDialog(null, "O arquivo de backup foi salvo com xito."); } catch (Exception e1) { } }; new Thread(t1).start(); }//GEN-LAST:event_BackupBtnActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton BackupBtn; private javax.swing.JLabel backupLabel; private javax.swing.JTabbedPane backupTab; private javax.swing.JCheckBox bkpDiario; private javax.swing.JLabel footer; 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.JPanel jPanel6; private javax.swing.JTextField prazoField; private javax.swing.JLabel prazoLabel; private javax.swing.JButton salvarBtn; private javax.swing.JTextField taxaField; // End of variables declaration//GEN-END:variables }