|
|
|
@ -2,20 +2,22 @@ package envoy.client.ui;
|
|
|
|
|
|
|
|
|
|
import java.awt.*;
|
|
|
|
|
import java.awt.event.ItemEvent;
|
|
|
|
|
import java.awt.event.ItemListener;
|
|
|
|
|
import java.security.NoSuchAlgorithmException;
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
|
|
|
|
|
import javax.swing.*;
|
|
|
|
|
import javax.swing.border.EmptyBorder;
|
|
|
|
|
|
|
|
|
|
import envoy.client.event.HandshakeSuccessfulEvent;
|
|
|
|
|
import envoy.data.LoginCredentials;
|
|
|
|
|
import envoy.event.EventBus;
|
|
|
|
|
import envoy.event.HandshakeRejectionEvent;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Project: <strong>envoy-client</strong><br>
|
|
|
|
|
* File: <strong>LoginDialog.java</strong><br>
|
|
|
|
|
* Created: <strong>01.01.2020</strong><br>
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
* @author Kai S. K. Engelbart
|
|
|
|
|
* @author Maximilian Käfer
|
|
|
|
|
* @since Envoy v0.3-alpha
|
|
|
|
@ -28,8 +30,11 @@ public class LoginDialog extends JDialog {
|
|
|
|
|
private JTextField textField;
|
|
|
|
|
private JPasswordField passwordField;
|
|
|
|
|
|
|
|
|
|
private JPasswordField repeatPasswordField;
|
|
|
|
|
private JLabel lblRepeatPassword;
|
|
|
|
|
private JPasswordField repeatPasswordField;
|
|
|
|
|
private JLabel lblRepeatPassword;
|
|
|
|
|
private JLabel errorMessage;
|
|
|
|
|
|
|
|
|
|
private GridBagConstraints gbc_errorMessage;
|
|
|
|
|
private GridBagConstraints gbc_lblRepeatPassword;
|
|
|
|
|
private GridBagConstraints gbc_repeatPasswordField;
|
|
|
|
|
|
|
|
|
@ -37,7 +42,7 @@ public class LoginDialog extends JDialog {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Displays a dialog enabling the user to enter their user name and password.
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
* @since Envoy v0.3-alpha
|
|
|
|
|
*/
|
|
|
|
|
public LoginDialog() {
|
|
|
|
@ -97,12 +102,27 @@ public class LoginDialog extends JDialog {
|
|
|
|
|
gbc_lblRepeatPassword.gridy = 2;
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
repeatPasswordField = new JPasswordField();
|
|
|
|
|
repeatPasswordField = new JPasswordField();
|
|
|
|
|
gbc_repeatPasswordField = new GridBagConstraints();
|
|
|
|
|
gbc_repeatPasswordField.fill = GridBagConstraints.HORIZONTAL;
|
|
|
|
|
gbc_repeatPasswordField.gridx = 1;
|
|
|
|
|
gbc_repeatPasswordField.gridy = 2;
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
EventBus.getInstance().register(HandshakeRejectionEvent.class, evt -> {
|
|
|
|
|
contentPanel.remove(errorMessage);
|
|
|
|
|
clearPasswordFields();
|
|
|
|
|
// TODO delete - only for testing purposes
|
|
|
|
|
System.out.println("Caught HandshakeRejectionEvent with reason" + ((HandshakeRejectionEvent) evt).get());
|
|
|
|
|
errorMessage = new JLabel(((HandshakeRejectionEvent) evt).get());
|
|
|
|
|
gbc_errorMessage = new GridBagConstraints();
|
|
|
|
|
gbc_errorMessage.gridx = 2;
|
|
|
|
|
gbc_errorMessage.gridy = 0;
|
|
|
|
|
gbc_errorMessage.fill = GridBagConstraints.HORIZONTAL;
|
|
|
|
|
gbc_errorMessage.insets = new Insets(5, 5, 5, 5);
|
|
|
|
|
contentPanel.add(errorMessage, gbc_errorMessage);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
JPanel buttonPane = new JPanel();
|
|
|
|
|
|
|
|
|
@ -114,30 +134,24 @@ public class LoginDialog extends JDialog {
|
|
|
|
|
|
|
|
|
|
JCheckBox registerCheckBox = new JCheckBox();
|
|
|
|
|
registerCheckBox.setAlignmentX(LEFT_ALIGNMENT);
|
|
|
|
|
registerCheckBox.addItemListener(new ItemListener() {
|
|
|
|
|
registerCheckBox.addItemListener(e -> {
|
|
|
|
|
switch (e.getStateChange()) {
|
|
|
|
|
case ItemEvent.SELECTED:
|
|
|
|
|
contentPanel.add(lblRepeatPassword, gbc_lblRepeatPassword);
|
|
|
|
|
contentPanel.add(repeatPasswordField, gbc_repeatPasswordField);
|
|
|
|
|
setSize(338, 160);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void itemStateChanged(ItemEvent e) {
|
|
|
|
|
switch (e.getStateChange()) {
|
|
|
|
|
case ItemEvent.SELECTED:
|
|
|
|
|
contentPanel.add(lblRepeatPassword, gbc_lblRepeatPassword);
|
|
|
|
|
contentPanel.add(repeatPasswordField, gbc_repeatPasswordField);
|
|
|
|
|
setSize(338, 160);
|
|
|
|
|
contentPanel.revalidate();
|
|
|
|
|
contentPanel.repaint();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ItemEvent.DESELECTED:
|
|
|
|
|
if (repeatPasswordField.getParent() == contentPanel) {
|
|
|
|
|
contentPanel.remove(lblRepeatPassword);
|
|
|
|
|
contentPanel.remove(repeatPasswordField);
|
|
|
|
|
setSize(338, 123);
|
|
|
|
|
contentPanel.revalidate();
|
|
|
|
|
contentPanel.repaint();
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case ItemEvent.DESELECTED:
|
|
|
|
|
if (repeatPasswordField.getParent() == contentPanel) {
|
|
|
|
|
contentPanel.remove(lblRepeatPassword);
|
|
|
|
|
contentPanel.remove(repeatPasswordField);
|
|
|
|
|
setSize(338, 123);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
contentPanel.revalidate();
|
|
|
|
|
contentPanel.repaint();
|
|
|
|
|
});
|
|
|
|
|
buttonPane.add(registerCheckBox);
|
|
|
|
|
|
|
|
|
@ -148,18 +162,14 @@ public class LoginDialog extends JDialog {
|
|
|
|
|
okButton.addActionListener((evt) -> {
|
|
|
|
|
try {
|
|
|
|
|
if (registerCheckBox.isSelected()) {
|
|
|
|
|
if (Arrays.equals(passwordField.getPassword(), repeatPasswordField.getPassword())) {
|
|
|
|
|
// password checking
|
|
|
|
|
if (Arrays.equals(passwordField.getPassword(), repeatPasswordField.getPassword()))
|
|
|
|
|
credentials = new LoginCredentials(textField.getText(), passwordField.getPassword(), true);
|
|
|
|
|
dispose();
|
|
|
|
|
} else {
|
|
|
|
|
JOptionPane.showMessageDialog(this, "The repeated password is unequal to the origional password!");
|
|
|
|
|
passwordField.setText(null);
|
|
|
|
|
repeatPasswordField.setText(null);
|
|
|
|
|
else {
|
|
|
|
|
JOptionPane.showMessageDialog(this, "The repeated password is not the origional password!");
|
|
|
|
|
clearPasswordFields();
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
credentials = new LoginCredentials(textField.getText(), passwordField.getPassword(), false);
|
|
|
|
|
dispose();
|
|
|
|
|
}
|
|
|
|
|
} else credentials = new LoginCredentials(textField.getText(), passwordField.getPassword(), false);
|
|
|
|
|
} catch (NoSuchAlgorithmException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
@ -178,6 +188,17 @@ public class LoginDialog extends JDialog {
|
|
|
|
|
|
|
|
|
|
setModal(true);
|
|
|
|
|
setVisible(true);
|
|
|
|
|
EventBus.getInstance().register(HandshakeSuccessfulEvent.class, evt -> this.dispose());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Resets the text stored by this
|
|
|
|
|
*
|
|
|
|
|
* @since Envoy v0.3-alpha
|
|
|
|
|
*/
|
|
|
|
|
public void clearPasswordFields() {
|
|
|
|
|
passwordField.setText(null);
|
|
|
|
|
repeatPasswordField.setText(null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|