diff --git a/src/me/teridax/jcash/Main.java b/src/me/teridax/jcash/Main.java index dfef7c1..82358c1 100644 --- a/src/me/teridax/jcash/Main.java +++ b/src/me/teridax/jcash/Main.java @@ -9,6 +9,7 @@ import me.teridax.jcash.lang.Locales; import javax.swing.*; import java.awt.*; +import java.io.IOException; import java.util.Objects; import java.util.logging.Level; @@ -78,15 +79,27 @@ public final class Main { public static void main(String[] args) { initializeSystemLogger(Level.FINE); - Locales.autodetectDefaultLocale(); - setPlatformDependingTheme(); + loadExtraFont(); + + Locales.autodetectDefaultLocale(); + // create main instance and show the login screen instance(); getInstance().loadDatabase(); } + private static void loadExtraFont() { + try { + var font = Font.createFont(Font.TRUETYPE_FONT, IconProvider.class.getResourceAsStream("res/Circus.ttf")); + GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); + ge.registerFont(font); + } catch (IOException | FontFormatException e) { + e.printStackTrace(); + } + } + /** * Set the look and feel via the ui manager. * This function will select a look and feel so that the application will diff --git a/src/me/teridax/jcash/gui/IconProvider.java b/src/me/teridax/jcash/gui/IconProvider.java index b2e1b2b..abece0e 100644 --- a/src/me/teridax/jcash/gui/IconProvider.java +++ b/src/me/teridax/jcash/gui/IconProvider.java @@ -25,4 +25,8 @@ public class IconProvider { return DEFAULT_IMAGE; } + + public static Image getSetupIcon() { + return loadIcon("res/login.jpg"); + } } diff --git a/src/me/teridax/jcash/gui/account/AccountView.java b/src/me/teridax/jcash/gui/account/AccountView.java index e314a0c..094f75e 100644 --- a/src/me/teridax/jcash/gui/account/AccountView.java +++ b/src/me/teridax/jcash/gui/account/AccountView.java @@ -1,6 +1,7 @@ package me.teridax.jcash.gui.account; import me.teridax.jcash.Logging; +import me.teridax.jcash.banking.accounts.Account; import me.teridax.jcash.banking.accounts.CurrentAccount; import me.teridax.jcash.banking.accounts.SavingsAccount; import me.teridax.jcash.banking.management.Profile; @@ -8,6 +9,8 @@ import me.teridax.jcash.decode.StringDecoder; import javax.swing.*; import java.awt.*; +import java.util.Arrays; +import java.util.Comparator; import static javax.swing.SwingConstants.RIGHT; import static me.teridax.jcash.gui.Utils.addGridBagRow; @@ -42,9 +45,9 @@ public class AccountView extends JPanel { this.accountSelection.removeAllItems(); - for (var otherAccount : profile.getAccounts()) { - this.accountSelection.addItem(otherAccount.getDescription()); - } + var accounts = profile.getAccounts(); + Arrays.stream(accounts).sorted(Comparator.comparingInt(Account::getIban)).forEach(a -> this.accountSelection.addItem(a.getDescription())); + this.accountSelection.setSelectedItem(profile.getPrimaryAccount().getDescription()); } diff --git a/src/me/teridax/jcash/gui/login/LoginView.java b/src/me/teridax/jcash/gui/login/LoginView.java index e159336..c8cfb90 100644 --- a/src/me/teridax/jcash/gui/login/LoginView.java +++ b/src/me/teridax/jcash/gui/login/LoginView.java @@ -1,8 +1,11 @@ package me.teridax.jcash.gui.login; +import me.teridax.jcash.gui.IconProvider; + import javax.swing.*; import javax.swing.text.*; import java.awt.*; +import java.io.IOException; import java.text.NumberFormat; import static java.awt.BorderLayout.NORTH; @@ -60,6 +63,10 @@ public class LoginView extends JPanel { this.pin = new JPasswordField(); this.login = new JButton(translate("Login")); + this.login.setFont(new Font("Circus", Font.PLAIN, 72)); + this.login.setBackground(Color.RED); + this.login.setForeground(Color.CYAN); + restrictPasswordToDigits(); } diff --git a/src/me/teridax/jcash/gui/res/Circus.ttf b/src/me/teridax/jcash/gui/res/Circus.ttf new file mode 100644 index 0000000..705f7b8 Binary files /dev/null and b/src/me/teridax/jcash/gui/res/Circus.ttf differ diff --git a/src/me/teridax/jcash/gui/res/login.jpg b/src/me/teridax/jcash/gui/res/login.jpg new file mode 100644 index 0000000..3f2bec1 Binary files /dev/null and b/src/me/teridax/jcash/gui/res/login.jpg differ diff --git a/src/me/teridax/jcash/gui/takeoff/TakeoffController.java b/src/me/teridax/jcash/gui/takeoff/TakeoffController.java index 71a465a..4a2c7bb 100644 --- a/src/me/teridax/jcash/gui/takeoff/TakeoffController.java +++ b/src/me/teridax/jcash/gui/takeoff/TakeoffController.java @@ -2,6 +2,7 @@ package me.teridax.jcash.gui.takeoff; import me.teridax.jcash.Logging; import me.teridax.jcash.banking.accounts.Account; +import me.teridax.jcash.banking.accounts.CurrentAccount; import me.teridax.jcash.gui.InvalidInputException; import me.teridax.jcash.gui.Utils; @@ -18,8 +19,13 @@ public class TakeoffController { public TakeoffController(Account account) { this.account = account; + var overdraft = 0.0; + if (account instanceof CurrentAccount) { + overdraft += ((CurrentAccount) account).getOverdraft(); + } + this.data = new TakeoffData(account.getBalance()); - this.view = new TakeoffView(this.data.getMaxValue()); + this.view = new TakeoffView(this.data.getMaxValue() + overdraft); this.view.getTakeoff().addActionListener(e -> takeOff()); this.view.getCancel().addActionListener(e -> view.dispose()); diff --git a/src/me/teridax/jcash/gui/transfer/TransferController.java b/src/me/teridax/jcash/gui/transfer/TransferController.java index 9aaa3c1..253a231 100644 --- a/src/me/teridax/jcash/gui/transfer/TransferController.java +++ b/src/me/teridax/jcash/gui/transfer/TransferController.java @@ -3,6 +3,7 @@ package me.teridax.jcash.gui.transfer; import me.teridax.jcash.Logging; import me.teridax.jcash.Main; import me.teridax.jcash.banking.accounts.Account; +import me.teridax.jcash.banking.accounts.CurrentAccount; import me.teridax.jcash.banking.management.BankingManagementSystem; import me.teridax.jcash.gui.InvalidInputException; import me.teridax.jcash.gui.Utils; @@ -23,7 +24,12 @@ public class TransferController { public TransferController(Account account, BankingManagementSystem bms) { this.account = account; - this.view = new TransferView(account.getBalance()); + var overdraft = 0.0; + if (account instanceof CurrentAccount) { + overdraft += ((CurrentAccount) account).getOverdraft(); + } + + this.view = new TransferView(account.getBalance() + overdraft); this.transferData = new TransferData(bms); this.view.getTransfer().addActionListener(e -> transfer()); this.view.getCancel().addActionListener(e -> view.dispose());this.view.getValue().getDocument().addDocumentListener(new DocumentListener() {