logout button now brings one back to the login screen
This commit is contained in:
parent
f1f743d233
commit
d0557a2a6d
|
@ -1,5 +1,6 @@
|
||||||
package me.teridax.jcash;
|
package me.teridax.jcash;
|
||||||
|
|
||||||
|
import me.teridax.jcash.banking.management.BankingManagementSystem;
|
||||||
import me.teridax.jcash.gui.IconProvider;
|
import me.teridax.jcash.gui.IconProvider;
|
||||||
import me.teridax.jcash.gui.Loader;
|
import me.teridax.jcash.gui.Loader;
|
||||||
import me.teridax.jcash.gui.account.AccountController;
|
import me.teridax.jcash.gui.account.AccountController;
|
||||||
|
@ -7,17 +8,19 @@ import me.teridax.jcash.gui.login.LoginController;
|
||||||
import me.teridax.jcash.lang.Locales;
|
import me.teridax.jcash.lang.Locales;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import static javax.swing.JOptionPane.ERROR_MESSAGE;
|
|
||||||
import static javax.swing.JOptionPane.showMessageDialog;
|
|
||||||
import static me.teridax.jcash.Logging.LOGGER;
|
import static me.teridax.jcash.Logging.LOGGER;
|
||||||
import static me.teridax.jcash.Logging.initializeSystemLogger;
|
import static me.teridax.jcash.Logging.initializeSystemLogger;
|
||||||
import static me.teridax.jcash.lang.Translator.translate;
|
import static me.teridax.jcash.lang.Translator.translate;
|
||||||
|
|
||||||
public final class Main {
|
public final class Main {
|
||||||
|
|
||||||
|
private static final String LOGIN_SCREEN_STRING_IDENT = "LoginScreen";
|
||||||
|
private static final String PROFILE_SCREEN_STRING_IDENT = "ProfileScreen";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Main instance of this program. Contains the primary window.
|
* Main instance of this program. Contains the primary window.
|
||||||
*/
|
*/
|
||||||
|
@ -27,6 +30,12 @@ public final class Main {
|
||||||
* Primary window of this program
|
* Primary window of this program
|
||||||
*/
|
*/
|
||||||
private final JFrame window;
|
private final JFrame window;
|
||||||
|
private final CardLayout layout;
|
||||||
|
|
||||||
|
private BankingManagementSystem bms;
|
||||||
|
|
||||||
|
private LoginController loginMask;
|
||||||
|
private AccountController accountController;
|
||||||
|
|
||||||
private Main() {
|
private Main() {
|
||||||
// create main window and set defaults
|
// create main window and set defaults
|
||||||
|
@ -35,6 +44,35 @@ public final class Main {
|
||||||
this.window.setLocationByPlatform(true);
|
this.window.setLocationByPlatform(true);
|
||||||
this.window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
this.window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
this.window.setIconImage(IconProvider.getWindowIcon());
|
this.window.setIconImage(IconProvider.getWindowIcon());
|
||||||
|
|
||||||
|
this.layout = new CardLayout();
|
||||||
|
this.window.getContentPane().setLayout(this.layout);
|
||||||
|
|
||||||
|
initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initialize() {
|
||||||
|
this.loginMask = new LoginController();
|
||||||
|
|
||||||
|
// when we have logged in set the account viewer as window content
|
||||||
|
this.loginMask.addAccountSelectionListener(account -> {
|
||||||
|
LOGGER.finer("account selected: " + Objects.toString(account, "null"));
|
||||||
|
accountController.setProfile(account, bms);
|
||||||
|
layout.show(window.getContentPane(), PROFILE_SCREEN_STRING_IDENT);
|
||||||
|
});
|
||||||
|
|
||||||
|
this.window.getContentPane().add(loginMask.getView(), LOGIN_SCREEN_STRING_IDENT);
|
||||||
|
|
||||||
|
this.accountController = new AccountController();
|
||||||
|
this.window.getContentPane().add(accountController.getView(), PROFILE_SCREEN_STRING_IDENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void loadDatabase() {
|
||||||
|
this.bms = Loader.load();
|
||||||
|
this.loginMask.setBankingManagementSystem(bms);
|
||||||
|
showLoginScreen();
|
||||||
|
this.window.setSize(800, 600);
|
||||||
|
this.window.setVisible(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
@ -46,7 +84,7 @@ public final class Main {
|
||||||
|
|
||||||
// create main instance and show the login screen
|
// create main instance and show the login screen
|
||||||
instance();
|
instance();
|
||||||
getInstance().showLoginScreen();
|
getInstance().loadDatabase();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -115,44 +153,14 @@ public final class Main {
|
||||||
* This method is non-blocking and all work described is performed asynchronously on the AWT Event dispatcher.
|
* This method is non-blocking and all work described is performed asynchronously on the AWT Event dispatcher.
|
||||||
*/
|
*/
|
||||||
public void showLoginScreen() {
|
public void showLoginScreen() {
|
||||||
SwingUtilities.invokeLater(() -> {
|
this.layout.show(this.window.getContentPane(), LOGIN_SCREEN_STRING_IDENT);
|
||||||
LOGGER.finer("showing login screen");
|
|
||||||
|
|
||||||
try {
|
|
||||||
// select db file
|
|
||||||
var path = Loader.load();
|
|
||||||
// read database and login
|
|
||||||
var login = new LoginController(path);
|
|
||||||
|
|
||||||
// when we have logged in set the account viewer as window content
|
|
||||||
login.addAccountSelectionListener(account -> {
|
|
||||||
LOGGER.finer("account selected: " + Objects.toString(account, "null"));
|
|
||||||
|
|
||||||
var profileCont = new AccountController(account, login.getData().getBms());
|
|
||||||
this.window.setContentPane(profileCont.getView());
|
|
||||||
this.window.revalidate();
|
|
||||||
this.window.repaint();
|
|
||||||
});
|
|
||||||
|
|
||||||
// we are not logged in yet, so show the login prompt on the main window
|
|
||||||
this.window.setContentPane(login.getView());
|
|
||||||
this.window.setSize(800, 600);
|
|
||||||
this.window.setVisible(true);
|
|
||||||
|
|
||||||
} catch (IllegalStateException e) {
|
|
||||||
LOGGER.fine("Unable to show login mask: " + e.getMessage());
|
|
||||||
showMessageDialog(null, e.getMessage(), translate("Closing JCash"), ERROR_MESSAGE);
|
|
||||||
System.exit(0);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Logs the user out of the database, hiding the main window.
|
* Logs the user out of the database, hiding the main window.
|
||||||
*/
|
*/
|
||||||
public void logout() {
|
public void logout() {
|
||||||
window.setContentPane(new JLabel(translate("you're logged out")));
|
this.layout.show(this.window.getContentPane(), LOGIN_SCREEN_STRING_IDENT);
|
||||||
window.setVisible(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public JFrame getWindow() {
|
public JFrame getWindow() {
|
||||||
|
|
|
@ -18,18 +18,21 @@ public class AccountController {
|
||||||
*/
|
*/
|
||||||
private final AccountView view;
|
private final AccountView view;
|
||||||
|
|
||||||
private final Profile profile;
|
private Profile profile;
|
||||||
|
|
||||||
public AccountController(Profile profile, BankingManagementSystem bms) {
|
public AccountController() {
|
||||||
this.profile = profile;
|
|
||||||
this.view = new AccountView();
|
this.view = new AccountView();
|
||||||
this.view.setProfile(profile);
|
this.data = new AccountData();
|
||||||
this.data = new AccountData(bms);
|
|
||||||
|
|
||||||
createListeners(profile);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createListeners(Profile profile) {
|
public void setProfile(Profile profile, BankingManagementSystem bms) {
|
||||||
|
this.profile = profile;
|
||||||
|
this.view.setProfile(profile);
|
||||||
|
this.data.setBms(bms);
|
||||||
|
this.createListeners();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createListeners() {
|
||||||
this.view.getAccountSelection().addActionListener(e -> changeAccount());
|
this.view.getAccountSelection().addActionListener(e -> changeAccount());
|
||||||
this.view.getLogout().addActionListener(e -> logout());
|
this.view.getLogout().addActionListener(e -> logout());
|
||||||
this.view.getDeposit().addActionListener(e -> depositMoney());
|
this.view.getDeposit().addActionListener(e -> depositMoney());
|
||||||
|
|
|
@ -4,13 +4,13 @@ import me.teridax.jcash.banking.management.BankingManagementSystem;
|
||||||
|
|
||||||
public class AccountData {
|
public class AccountData {
|
||||||
|
|
||||||
private final BankingManagementSystem bms;
|
private BankingManagementSystem bms;
|
||||||
|
|
||||||
public AccountData(BankingManagementSystem bms) {
|
|
||||||
this.bms = bms;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BankingManagementSystem getBms() {
|
public BankingManagementSystem getBms() {
|
||||||
return bms;
|
return bms;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setBms(BankingManagementSystem bms) {
|
||||||
|
this.bms = bms;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,13 +18,17 @@ public class LoginController {
|
||||||
|
|
||||||
private AccountSelectionListener listener;
|
private AccountSelectionListener listener;
|
||||||
|
|
||||||
public LoginController(BankingManagementSystem bms) {
|
public LoginController() {
|
||||||
this.view = new LoginView();
|
this.view = new LoginView();
|
||||||
this.data = new LoginData(bms);
|
this.data = new LoginData();
|
||||||
|
|
||||||
addActionListeners();
|
addActionListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setBankingManagementSystem(BankingManagementSystem bms) {
|
||||||
|
this.data.setBms(bms);
|
||||||
|
}
|
||||||
|
|
||||||
private void addActionListeners() {
|
private void addActionListeners() {
|
||||||
this.view.getLogin().addActionListener(this::login);
|
this.view.getLogin().addActionListener(this::login);
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,11 +12,7 @@ import java.util.Optional;
|
||||||
*/
|
*/
|
||||||
public class LoginData {
|
public class LoginData {
|
||||||
|
|
||||||
private final BankingManagementSystem bms;
|
private BankingManagementSystem bms;
|
||||||
|
|
||||||
public LoginData(BankingManagementSystem bms) {
|
|
||||||
this.bms = bms;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* authenticate the specified account with the provided pin.
|
* authenticate the specified account with the provided pin.
|
||||||
|
@ -53,4 +49,8 @@ public class LoginData {
|
||||||
public BankingManagementSystem getBms() {
|
public BankingManagementSystem getBms() {
|
||||||
return bms;
|
return bms;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setBms(BankingManagementSystem bms) {
|
||||||
|
this.bms = bms;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue