/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
package Sirius.navigator.ui.option;
import Sirius.navigator.connection.ConnectionSession;
import Sirius.navigator.connection.SessionManager;
import Sirius.navigator.connection.proxy.ConnectionProxy;
import Sirius.navigator.ui.ComponentRegistry;
import Sirius.navigator.ui.dialog.PasswordDialog;
import org.apache.log4j.Logger;
import org.openide.util.lookup.ServiceProvider;
import java.util.Arrays;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import de.cismet.lookupoptions.AbstractOptionsPanel;
import de.cismet.lookupoptions.OptionsPanelController;
import de.cismet.lookupoptions.options.SecurityOptionsCategory;
/**
* The PasswordOptionsDialog is intended to provide the user with means for changing her password. It is displayed in
* the menu "Extras -> Optionen -> Sicherheit->Kennword ändern" and replaces {@link PasswordDialog}.
*
* @author Benjamin Friedrich (benjamin.friedrich@cismet.de)
* @version $Revision$, $Date$
*/
@ServiceProvider(service = OptionsPanelController.class)
public class PasswordOptionsDialog extends AbstractOptionsPanel {
//~ Static fields/initializers ---------------------------------------------
private static final transient Logger LOG = Logger.getLogger(PasswordOptionsDialog.class);
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btnChangePassword;
private javax.swing.Box.Filler filler1;
private javax.swing.JLabel lblDialogDescription;
private javax.swing.JLabel lblNewPassword;
private javax.swing.JLabel lblOldPassword;
private javax.swing.JLabel lblPasswordAgain;
private javax.swing.JLabel lblUser;
private javax.swing.JPasswordField pwdNewPassword;
private javax.swing.JPasswordField pwdOldPassword;
private javax.swing.JPasswordField pwdPasswordAgain;
private javax.swing.JTextField txtUser;
// End of variables declaration//GEN-END:variables
//~ Constructors -----------------------------------------------------------
/**
* Creates new form PasswordOptionsDialog.
*/
public PasswordOptionsDialog() {
super(org.openide.util.NbBundle.getMessage(
PasswordOptionsDialog.class,
"PasswordOptionsDialog.title"), // NOI18N,
SecurityOptionsCategory.class);
try {
initComponents();
this.txtUser.setText(SessionManager.getSession().getUser().getName());
this.clearPwdFields();
} catch (Exception e) {
LOG.error("Erro during Creation of Password Dialog", e);
btnChangePassword.setEnabled(false);
;
}
}
//~ Methods ----------------------------------------------------------------
/**
* DOCUMENT ME!
*/
private void clearPwdFields() {
this.pwdNewPassword.setText("");
this.pwdOldPassword.setText("");
this.pwdPasswordAgain.setText("");
}
/**
* 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() {
java.awt.GridBagConstraints gridBagConstraints;
lblUser = new javax.swing.JLabel();
lblOldPassword = new javax.swing.JLabel();
lblNewPassword = new javax.swing.JLabel();
lblPasswordAgain = new javax.swing.JLabel();
txtUser = new javax.swing.JTextField();
pwdNewPassword = new javax.swing.JPasswordField();
pwdOldPassword = new javax.swing.JPasswordField();
pwdPasswordAgain = new javax.swing.JPasswordField();
filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0),
new java.awt.Dimension(0, 0),
new java.awt.Dimension(0, 32767));
btnChangePassword = new javax.swing.JButton();
lblDialogDescription = new javax.swing.JLabel();
setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
setMaximumSize(new java.awt.Dimension(264, 177));
setMinimumSize(new java.awt.Dimension(100, 177));
setLayout(new java.awt.GridBagLayout());
lblUser.setText(org.openide.util.NbBundle.getMessage(
PasswordOptionsDialog.class,
"PasswordOptionsDialog.lblUser.text")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 0);
add(lblUser, gridBagConstraints);
lblOldPassword.setText(org.openide.util.NbBundle.getMessage(
PasswordOptionsDialog.class,
"PasswordOptionsDialog.lblOldPassword.text")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 0);
add(lblOldPassword, gridBagConstraints);
lblNewPassword.setText(org.openide.util.NbBundle.getMessage(
PasswordOptionsDialog.class,
"PasswordOptionsDialog.lblNewPassword.text")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 0);
add(lblNewPassword, gridBagConstraints);
lblPasswordAgain.setText(org.openide.util.NbBundle.getMessage(
PasswordOptionsDialog.class,
"PasswordOptionsDialog.lblPasswordAgain.text")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 0);
add(lblPasswordAgain, gridBagConstraints);
txtUser.setEditable(false);
txtUser.setEnabled(false);
txtUser.setPreferredSize(new java.awt.Dimension(100, 27));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.weightx = 0.1;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
add(txtUser, gridBagConstraints);
pwdNewPassword.setPreferredSize(new java.awt.Dimension(100, 27));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.weightx = 0.1;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
add(pwdNewPassword, gridBagConstraints);
pwdOldPassword.setPreferredSize(new java.awt.Dimension(100, 27));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.weightx = 0.1;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
add(pwdOldPassword, gridBagConstraints);
pwdPasswordAgain.setPreferredSize(new java.awt.Dimension(100, 27));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.weightx = 0.1;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
add(pwdPasswordAgain, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 6;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weighty = 0.1;
add(filler1, gridBagConstraints);
btnChangePassword.setText(org.openide.util.NbBundle.getMessage(
PasswordOptionsDialog.class,
"PasswordOptionsDialog.btnChangePassword.text")); // NOI18N
btnChangePassword.setToolTipText(org.openide.util.NbBundle.getMessage(
PasswordOptionsDialog.class,
"PasswordOptionsDialog.btnChangePassword.tooltip")); // NOI18N
btnChangePassword.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(final java.awt.event.ActionEvent evt) {
btnChangePasswordActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 5;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
add(btnChangePassword, gridBagConstraints);
lblDialogDescription.setText(org.openide.util.NbBundle.getMessage(
PasswordOptionsDialog.class,
"PasswordOptionsDialog.lblDialogDescription.text")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = 2;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 10, 4);
add(lblDialogDescription, gridBagConstraints);
} // </editor-fold>//GEN-END:initComponents
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void btnChangePasswordActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_btnChangePasswordActionPerformed
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
final JFrame mainWindow = ComponentRegistry.getRegistry().getMainWindow();
final char[] pwdOld = pwdOldPassword.getPassword();
final char[] pwdNew = pwdNewPassword.getPassword();
final char[] pwdAgain = pwdPasswordAgain.getPassword();
if ((pwdOld.length == 0)
|| (pwdNew.length == 0)
|| (pwdAgain.length == 0)) {
JOptionPane.showMessageDialog(
mainWindow,
org.openide.util.NbBundle.getMessage(
PasswordOptionsDialog.class,
"PasswordOptionsDialog.btnChangePasswordActionPerformed().missingInputError.message"), // NOI18N
org.openide.util.NbBundle.getMessage(
PasswordOptionsDialog.class,
"PasswordOptionsDialog.btnChangePasswordActionPerformed().missingInputError.title"), // NOI18N
JOptionPane.ERROR_MESSAGE);
} else if (!Arrays.equals(pwdNew, pwdAgain)) {
JOptionPane.showMessageDialog(
mainWindow,
org.openide.util.NbBundle.getMessage(
PasswordOptionsDialog.class,
"PasswordOptionsDialog.btnChangePasswordActionPerformed().passwordsDifferentError.message"), // NOI18N
org.openide.util.NbBundle.getMessage(
PasswordOptionsDialog.class,
"PasswordOptionsDialog.btnChangePasswordActionPerformed().passwordsDifferentError.title"), // NOI18N
JOptionPane.ERROR_MESSAGE);
pwdNewPassword.setText("");
pwdPasswordAgain.setText("");
} else {
try {
final ConnectionProxy proxy = SessionManager.getProxy();
final ConnectionSession session = SessionManager.getSession();
final boolean success = proxy.changePassword(
session.getUser(),
String.valueOf(pwdOld),
String.valueOf(pwdNew));
if (success) {
JOptionPane.showMessageDialog(
mainWindow,
org.openide.util.NbBundle.getMessage(
PasswordOptionsDialog.class,
"PasswordOptionsDialog.btnChangePasswordActionPerformed().passwordOK.message"), // NOI18N
org.openide.util.NbBundle.getMessage(
PasswordOptionsDialog.class,
"PasswordOptionsDialog.btnChangePasswordActionPerformed().passwordOK.title"), // NOI18N
JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(
mainWindow,
org.openide.util.NbBundle.getMessage(
PasswordOptionsDialog.class,
"PasswordOptionsDialog.btnChangePasswordActionPerformed().changePasswordError.message"), // NOI18N
org.openide.util.NbBundle.getMessage(
PasswordOptionsDialog.class,
"PasswordOptionsDialog.btnChangePasswordActionPerformed().changePasswordError.title"), // NOI18N
JOptionPane.ERROR_MESSAGE);
}
clearPwdFields();
} catch (final Exception exp) {
LOG.error("an error occurred while changing the password", exp);
JOptionPane.showMessageDialog(
mainWindow,
exp.getMessage(),
org.openide.util.NbBundle.getMessage(
PasswordOptionsDialog.class,
"PasswordOptionsDialog.btnChangePasswordActionPerformed().error.title"), // NOI18N
JOptionPane.ERROR_MESSAGE);
}
}
}
});
} //GEN-LAST:event_btnChangePasswordActionPerformed
@Override
public void update() {
this.clearPwdFields();
}
/**
* Returns tooltip text.
*
* @return tooltip text
*/
@Override
public String getTooltip() {
return org.openide.util.NbBundle.getMessage(
PasswordOptionsDialog.class,
"PasswordOptionsDialog.tooltip"); // NOI18N
}
}