src/main/java/org/sanmarcux/view/JDialogTeacher.java
/*
* JDialogTeacher.java
*
* Created on 12/07/2009, 05:13:31 PM
*/
package org.sanmarcux.view;
import org.apache.log4j.Logger;
import org.sanmarcux.beans.Teacher;
import org.sanmarcux.controller.DialogAction;
import org.sanmarcux.util.FormSupport;
import org.sanmarcux.view.etc.JDialogFormBase;
import org.sanmarcux.view.etc.Toast;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/**
* @author Cesardl
*/
@Component
public class JDialogTeacher extends JDialogFormBase<Teacher> {
private static final long serialVersionUID = 4507185410828839727L;
private static final Logger LOG = Logger.getLogger(JDialogTeacher.class);
private final transient FormSupport formSupport;
private String email;
// Variables declaration - do not modify//GEN-BEGIN:variables
private com.toedter.calendar.JDateChooser dateChooserBirthday;
private javax.swing.JTextField textFieldCode;
private javax.swing.JTextField textFieldEmail;
private javax.swing.JTextField textFieldNames;
@Autowired
public JDialogTeacher(FormSupport formSupport) {
this.formSupport = formSupport;
}
@Override
public boolean validateData() {
code = textFieldCode.getText().trim();
names = textFieldNames.getText().trim();
birthday = dateChooserBirthday.getDate();
email = textFieldEmail.getText().trim();
String key;
if (code.length() == 0) {
key = "app.warning.teacher.code.empty";
LOG.warn(key);
Toast.makeText(this, bundle.getString(key), Toast.Style.WARNING).display();
selectTextField(textFieldCode);
return false;
}
if (DialogAction.INSERT.equals(dialogAction) && teacherController.existsCode(code)) {
key = "app.warning.teacher.code.already.exists";
LOG.warn(key);
Toast.makeText(this, bundle.getString(key), Toast.Style.WARNING).display();
selectTextField(textFieldCode);
return false;
}
if (names.length() == 0) {
key = "app.warning.teacher.name.empty";
LOG.warn(key);
Toast.makeText(this, bundle.getString(key), Toast.Style.WARNING).display();
selectTextField(textFieldNames);
return false;
}
if (birthday == null) {
key = "app.warning.teacher.birthday.empty";
LOG.warn(key);
Toast.makeText(this, bundle.getString(key), Toast.Style.WARNING).display();
dateChooserBirthday.requestFocusInWindow();
return false;
}
if (email.length() == 0) {
key = "app.warning.teacher.email.empty";
LOG.warn(key);
Toast.makeText(this, bundle.getString(key), Toast.Style.WARNING).display();
selectTextField(textFieldEmail);
return false;
}
if (!formSupport.isCorrectEmailFormat(email)) {
key = "app.warning.teacher.email.wrong.format";
LOG.warn(key);
Toast.makeText(this, bundle.getString(key), Toast.Style.WARNING).display();
selectTextField(textFieldEmail);
return false;
}
return true;
}
@Override
public void setData() {
code = entity.getCode();
names = entity.getNames();
birthday = entity.getBirthday();
email = entity.getEmail();
textFieldCode.setText(code);
textFieldCode.setEnabled(false);
textFieldNames.setText(names);
dateChooserBirthday.setDate(birthday);
textFieldEmail.setText(email);
}
@Override
public Teacher getEntity() {
return entity;
}
@Override
public void setEntity(Teacher entity) {
this.entity = entity;
setData();
}
/**
* 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.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
@PostConstruct
private void initComponents() {
javax.swing.JPanel panel = new javax.swing.JPanel();
javax.swing.JLabel labelCode = new javax.swing.JLabel();
javax.swing.JLabel labelNames = new javax.swing.JLabel();
javax.swing.JLabel labelBirthday = new javax.swing.JLabel();
javax.swing.JLabel labelEmail = new javax.swing.JLabel();
textFieldCode = new javax.swing.JTextField();
textFieldNames = new javax.swing.JTextField();
dateChooserBirthday = new com.toedter.calendar.JDateChooser();
textFieldEmail = new javax.swing.JTextField();
javax.swing.JButton buttonAccept = new javax.swing.JButton();
javax.swing.JButton buttonCancel = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle(bundle.getString("app.title")); // NOI18N
setResizable(false);
panel.setBorder(javax.swing.BorderFactory.createTitledBorder(bundle.getString("app.dialog.border.title"))); // NOI18N
labelCode.setText(bundle.getString("dictionary.code")); // NOI18N
labelNames.setText(bundle.getString("dictionary.names")); // NOI18N
labelBirthday.setText(bundle.getString("dictionary.birthday")); // NOI18N
labelEmail.setText(bundle.getString("dictionary.email")); // NOI18N
javax.swing.GroupLayout panelLayout = new javax.swing.GroupLayout(panel);
panel.setLayout(panelLayout);
panelLayout.setHorizontalGroup(
panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(labelBirthday, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(labelEmail, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(labelNames, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(labelCode, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(textFieldEmail)
.addComponent(dateChooserBirthday, javax.swing.GroupLayout.DEFAULT_SIZE, 253, Short.MAX_VALUE)
.addComponent(textFieldNames)
.addComponent(textFieldCode))
.addContainerGap())
);
panelLayout.setVerticalGroup(
panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
.addComponent(labelCode)
.addComponent(textFieldCode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
.addComponent(textFieldNames, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(labelNames))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
.addComponent(dateChooserBirthday, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(labelBirthday))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
.addComponent(textFieldEmail, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(labelEmail))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
buttonAccept.setText(bundle.getString("dictionary.accept")); // NOI18N
buttonAccept.addActionListener(e -> buttonAcceptActionPerformed());
buttonCancel.setText(bundle.getString("dictionary.cancel")); // NOI18N
buttonCancel.addActionListener(e -> buttonCancelActionPerformed());
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(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(buttonAccept, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(buttonCancel)
.addContainerGap())
.addGroup(layout.createSequentialGroup()
.addGap(12, 12, 12)
.addComponent(panel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(12, 12, 12))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(panel, 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)
.addComponent(buttonAccept, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(buttonCancel, javax.swing.GroupLayout.Alignment.TRAILING))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
LOG.info("Closing action in teacher form");
preparingDialogClose();
}
});
pack();
setModal(true);
setLocationRelativeTo(null);
}// </editor-fold>//GEN-END:initComponents
private void buttonAcceptActionPerformed() {//GEN-FIRST:event_buttonAcceptActionPerformed
if (validateData()) {
entity.setCode(code);
entity.setNames(names);
entity.setBirthday(birthday);
entity.setEmail(email);
boolean state = teacherController.saveOrUpdate(entity);
String key;
if (state) {
key = "app.success.teacher.save";
LOG.info(key);
Toast.makeText(this, bundle.getString(key), Toast.Style.SUCCESS).display();
dispose();
} else {
key = "app.error.teacher.save";
LOG.error(key);
Toast.makeText(this, bundle.getString(key), Toast.Style.ERROR).display();
}
}
}//GEN-LAST:event_buttonAcceptActionPerformed
private void buttonCancelActionPerformed() {//GEN-FIRST:event_buttonCancelActionPerformed
LOG.info("Canceling action in teacher form");
preparingDialogClose();
dispose();
}//GEN-LAST:event_buttonCancelActionPerformed
// End of variables declaration//GEN-END:variables
}