package net.sourceforge.pain.tools.guitool.dialog;
import net.sourceforge.pain.tools.guitool.*;
import net.sourceforge.pain.network.guitool.*;
import javax.swing.*;
import java.awt.event.*;
public class ChangePassPerformer {
ChangePassDialog d;
public void changePass() {
d = new ChangePassDialog(GuiTool.appFrame);
initDialog();
d.show();
d.dispose();
}
private void initDialog() {
MyButtonListener bl = new MyButtonListener();
d.cancelButton.addActionListener(bl);
d.changeButton.addActionListener(bl);
d.setLocationRelativeTo(null); //center of the screen
MyKeyListener kl = new MyKeyListener();
d.cancelButton.addKeyListener(kl);
d.changeButton.addKeyListener(kl);
d.oldPassField.addKeyListener(kl);
d.newPassField.addKeyListener(kl);
d.repeatNewPassField.addKeyListener(kl);
}
private class MyButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
final Object source = e.getSource();
if (source == d.cancelButton) {
d.hide();
} else if (source == d.changeButton && _changePass()) {
d.hide();
}
}
}
private void onPassChanged() {
final String message = "Password changed";
GuiTool.log(message);
JOptionPane.showMessageDialog(d, message);
}
private boolean _changePass() {
try {
String oldPass = new String(d.oldPassField.getPassword());
String newPass = new String(d.newPassField.getPassword());
String repreatNewPass = new String(d.repeatNewPassField.getPassword());
if (oldPass.length() == 0) {
JOptionPane.showMessageDialog(d, "Old pass is empty", "Error", JOptionPane.ERROR_MESSAGE);
d.oldPassField.requestFocus();
return false;
}
if (newPass.length() < 5) {
JOptionPane.showMessageDialog(d, newPass.length() == 0 ? "New pass is empty" : "New pass is too short", "Error", JOptionPane.ERROR_MESSAGE);
d.newPassField.requestFocus();
return false;
}
if (!repreatNewPass.equals(newPass)) {
JOptionPane.showMessageDialog(d, "Repeat password error", "Error", JOptionPane.ERROR_MESSAGE);
d.repeatNewPassField.requestFocus();
return false;
}
GTNetPacket reply = GlobalPerformer.getConnection().sendBlocking(new GTNetPacket("ChangePassword", new String[]{oldPass, newPass}));
if (reply.data.equals("OK")) {
onPassChanged();
return true;
} else {
JOptionPane.showMessageDialog(d, reply.data, "Error", JOptionPane.ERROR_MESSAGE);
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
private class MyKeyListener implements KeyListener {
boolean myPress = false;
public void keyPressed(KeyEvent e) {
myPress = true;
}
public void keyReleased(KeyEvent e) {
if (myPress) {
myPress = false;
final int keyCode = e.getKeyCode();
if (keyCode == KeyEvent.VK_ESCAPE) {
e.consume();
d.hide();
} else if (keyCode == KeyEvent.VK_ENTER) {
e.consume();
if (_changePass()) {
d.hide();
}
}
}
}
public void keyTyped(KeyEvent e) {
}
}
}