/* * 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 }