school/cs240/record-indexer/src/client/Client.java

108 lines
3.2 KiB
Java

package client;
import client.communication.Communicator;
import client.components.MainWindow;
import client.components.loginWindow.ErrorLoginDialog;
import client.components.loginWindow.LoginWindow;
import client.components.loginWindow.SuccessLoginDialog;
import shared.communication.params.ValidateUser_Param;
import shared.communication.responses.ValidateUser_Res;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Client {
private LoginWindow loginWindow;
private Communicator communicator;
public Client(Communicator communicator) {
this.communicator = communicator;
}
public void run() {
loginWindow = new LoginWindow(communicator);
loginWindow.addLoginListener(loginListener);
// Run
EventQueue.invokeLater(new Runnable() {
public void run() {
loginWindow.setVisible(true);
}
});
}
public static void main(String[] args) {
// Create Window
String host = args[0];
String port = args[1];
String server = "http://"+host+":"+port+"/";
Communicator communicator = new Communicator(server);
Client client = new Client(communicator);
client.run();
}
private ActionListener loginListener = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
ValidateUser_Param param = new ValidateUser_Param();
param.setUsername(loginWindow.getUsername());
param.setPassword(loginWindow.getPassword());
try {
ValidateUser_Res validateUserRes;
validateUserRes = communicator.validateUser(param);
loginWindow.setVisible(false);
SuccessLoginDialog successLoginDialog = new SuccessLoginDialog(validateUserRes);
successLoginDialog.addWindowListener(openMainWindowListener);
successLoginDialog.setVisible(true);
} catch (Exception execption) {
ErrorLoginDialog errorLoginDialog = new ErrorLoginDialog();
errorLoginDialog.setVisible(true);
}
}
};
private WindowListener openMainWindowListener = new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) {
super.windowClosed(e);
// Run
EventQueue.invokeLater(new Runnable() {
public void run() {
MainWindow frame = new MainWindow(communicator, loginWindow.getUsername(),
loginWindow.getPassword());
frame.addWindowListener(logoutListener);
frame.setVisible(true);
}
});
}
};
private WindowListener logoutListener = new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) {
super.windowClosed(e);
loginWindow = new LoginWindow(communicator);
loginWindow.addLoginListener(loginListener);
// Run
EventQueue.invokeLater(new Runnable() {
public void run() {
loginWindow.setVisible(true);
}
});
}
};
}