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) { } } }