/*
* This file is part of the aidGer project.
*
* Copyright (C) 2010-2013 The aidGer Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.aidger.view.forms;
import static de.aidger.utils.Translation._;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import de.aidger.model.Runtime;
import de.aidger.model.models.Assistant;
import de.aidger.view.forms.HourlyWageEditorForm.Qualification;
/**
* A form used for editing / creating new assistants.
*
* @author aidGer Team
*/
@SuppressWarnings("serial")
public class AssistantEditorForm extends JPanel {
private static String emailSuffix = null;
/**
* Constructs an assistant editor form.
*
* @param assistant
* The assistant who will be edited
*/
public AssistantEditorForm(Assistant assistant) {
initComponents();
/* Try to get the email suffix from the xml file */
if (emailSuffix == null) {
emailSuffix = Runtime.getInstance().getOption("email-suffix", "studi.informatik.uni-stuttgart.de");
}
/* If there is no suffix defined, hide the label */
if (emailSuffix == null || emailSuffix.isEmpty()) {
lblAutoGuess.setVisible(false);
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
txtFirstName.requestFocusInWindow();
}
});
if (assistant != null) {
txtFirstName.setText(assistant.getFirstName());
txtLastName.setText(assistant.getLastName());
txtEmail.setText(assistant.getEmail());
cmbQualification.setSelectedItem(Qualification.valueOf(assistant
.getQualification()));
}
}
/**
* Get the email address of the assistant.
*
* @return The email address of the assistant
*/
public String getEmail() {
return txtEmail.getText();
}
/**
* Get the first name of the assistant.
*
* @return The first name of the assistant
*/
public String getFirstName() {
return txtFirstName.getText();
}
/**
* Get the last name of the assistant.
*
* @return The last name of the assistant.
*/
public String getLastName() {
return txtLastName.getText();
}
/**
* Get the qualification level of the assistant.
*
* @return The qualification level of the assistant
*/
public String getQualification() {
return ((Qualification) cmbQualification.getSelectedItem()).name();
}
/**
* 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
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
lblFirstName = new javax.swing.JLabel();
lblLastName = new javax.swing.JLabel();
lblEmail = new javax.swing.JLabel();
lblQualification = new javax.swing.JLabel();
txtFirstName = new javax.swing.JTextField();
txtLastName = new javax.swing.JTextField();
txtEmail = new javax.swing.JTextField();
cmbQualification = new javax.swing.JComboBox();
lblAutoGuess = new javax.swing.JLabel();
setLayout(new java.awt.GridBagLayout());
lblFirstName.setText(_("First Name"));
lblFirstName.setMaximumSize(new java.awt.Dimension(100, 17));
lblFirstName.setMinimumSize(new java.awt.Dimension(100, 17));
lblFirstName.setPreferredSize(new java.awt.Dimension(100, 17));
add(lblFirstName, new java.awt.GridBagConstraints());
lblFirstName.getAccessibleContext().setAccessibleDescription("firstName");
lblLastName.setText(_("Last Name"));
lblLastName.setMaximumSize(new java.awt.Dimension(100, 17));
lblLastName.setMinimumSize(new java.awt.Dimension(100, 17));
lblLastName.setPreferredSize(new java.awt.Dimension(100, 17));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
add(lblLastName, gridBagConstraints);
lblLastName.getAccessibleContext().setAccessibleDescription("lastName");
lblEmail.setText(_("Email"));
lblEmail.setMaximumSize(new java.awt.Dimension(100, 17));
lblEmail.setMinimumSize(new java.awt.Dimension(100, 17));
lblEmail.setPreferredSize(new java.awt.Dimension(100, 17));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
add(lblEmail, gridBagConstraints);
lblEmail.getAccessibleContext().setAccessibleDescription("email");
lblQualification.setText(_("Qualification"));
lblQualification.setMaximumSize(new java.awt.Dimension(100, 17));
lblQualification.setMinimumSize(new java.awt.Dimension(100, 17));
lblQualification.setPreferredSize(new java.awt.Dimension(100, 17));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
add(lblQualification, gridBagConstraints);
lblQualification.getAccessibleContext().setAccessibleDescription("qualification");
txtFirstName.setMinimumSize(new java.awt.Dimension(200, 25));
txtFirstName.setPreferredSize(new java.awt.Dimension(250, 25));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
add(txtFirstName, gridBagConstraints);
txtLastName.setMinimumSize(new java.awt.Dimension(200, 25));
txtLastName.setPreferredSize(new java.awt.Dimension(250, 25));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
add(txtLastName, gridBagConstraints);
txtEmail.setMinimumSize(new java.awt.Dimension(200, 25));
txtEmail.setPreferredSize(new java.awt.Dimension(250, 25));
txtEmail.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusLost(java.awt.event.FocusEvent evt) {
txtEmailFocusLost(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
add(txtEmail, gridBagConstraints);
cmbQualification.setModel(new javax.swing.DefaultComboBoxModel(Qualification.values()));
cmbQualification.setPreferredSize(new java.awt.Dimension(250, 27));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
add(cmbQualification, gridBagConstraints);
lblAutoGuess.setIcon(new javax.swing.ImageIcon(getClass().getResource("/de/aidger/res/icons/wand.png"))); // NOI18N
lblAutoGuess.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
lblAutoGuessMouseClicked(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 2;
add(lblAutoGuess, gridBagConstraints);
}// </editor-fold>//GEN-END:initComponents
/**
* Autocomplete some emailaddresses.
* Currently only studi => studi.informatik.uni-stuttgart.de
*
* @param evt
*/
private void txtEmailFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtEmailFocusLost
if (!txtEmail.getText().isEmpty() && txtEmail.getText().contains("@")) {
String[] email = txtEmail.getText().split("@", 2);
if (email[1].equals("studi")) {
txtEmail.setText(email[0]
+ "@studi.informatik.uni-stuttgart.de");
}
}
}//GEN-LAST:event_txtEmailFocusLost
/**
* Update the email address if first or last name got updated and email is
* empty or a studimail address.
*
* @param evt
*/
private void lblAutoGuessMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lblAutoGuessMouseClicked
if (!txtFirstName.getText().isEmpty()
&& !txtLastName.getText().isEmpty()) {
String lastname = replaceUmlaute(txtLastName.getText()).toLowerCase();
String firstname = replaceUmlaute(txtFirstName.getText()).toLowerCase();
if (lastname.length() >= 6) {
lastname = lastname.substring(0, 6);
}
txtEmail.setText(lastname + firstname.charAt(0)
+ firstname.charAt(firstname.length() - 1) + "@"
+ emailSuffix);
txtEmail.select(0, 0);
}
}//GEN-LAST:event_lblAutoGuessMouseClicked
/**
* Replace äöüß with ae and the like ..
*
* @param str
* The string to modify
* @return The modified string
*/
private String replaceUmlaute(String str) {
str = str.replaceAll( "Ü", "Ue");
str = str.replaceAll( "ü", "ue");
str = str.replaceAll( "Ö", "Oe");
str = str.replaceAll( "ö", "oe");
str = str.replaceAll( "Ä", "Ae");
str = str.replaceAll( "ä", "ae");
str = str.replaceAll( "ß", "ss");
return str;
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JComboBox cmbQualification;
private javax.swing.JLabel lblAutoGuess;
private javax.swing.JLabel lblEmail;
private javax.swing.JLabel lblFirstName;
private javax.swing.JLabel lblLastName;
private javax.swing.JLabel lblQualification;
private javax.swing.JTextField txtEmail;
private javax.swing.JTextField txtFirstName;
private javax.swing.JTextField txtLastName;
// End of variables declaration//GEN-END:variables
}