From 0c19489b1fe9fb5a98ff65235d5d6253558efbf7 Mon Sep 17 00:00:00 2001 From: teridax Date: Sat, 1 Jul 2023 12:47:49 +0200 Subject: [PATCH] fixed unhandled exception --- src/me/teridax/jcash/Main.java | 34 ++++++----- .../jcash/gui/account/AccountView.java | 22 +++---- .../jcash/gui/deposit/DepositView.java | 59 ++++++++----------- .../jcash/gui/takeoff/TakeoffDialog.java | 6 +- .../jcash/gui/takeoff/TakeoffView.java | 54 ++++++++--------- 5 files changed, 86 insertions(+), 89 deletions(-) diff --git a/src/me/teridax/jcash/Main.java b/src/me/teridax/jcash/Main.java index 8eac9de..75463e8 100644 --- a/src/me/teridax/jcash/Main.java +++ b/src/me/teridax/jcash/Main.java @@ -57,22 +57,28 @@ public final class Main { */ public void showLoginScreen() { SwingUtilities.invokeLater(() -> { - // select db file - var path = Loader.load(); - // read database and login - var login = new LoginController(path); + 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 -> { - var profileCont = new AccountController(account); - this.window.setContentPane(profileCont.getView()); - this.window.pack(); - }); + // when we have logged in set the account viewer as window content + login.addAccountSelectionListener(account -> { + var profileCont = new AccountController(account); + 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.pack(); - this.window.setVisible(true); + // 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) { + System.out.println("no file selected. goodbye"); + } }); } diff --git a/src/me/teridax/jcash/gui/account/AccountView.java b/src/me/teridax/jcash/gui/account/AccountView.java index 4b5af30..ecdf560 100644 --- a/src/me/teridax/jcash/gui/account/AccountView.java +++ b/src/me/teridax/jcash/gui/account/AccountView.java @@ -51,10 +51,10 @@ public class AccountView extends JPanel { this.type.setText(account.getClass().getSimpleName()); if (account instanceof Girokonto) { - this.typeSpecialLabel.setText("Überziehungsbetrag"); + this.typeSpecialLabel.setText("Overdraft"); this.typeSpecialProperty.setText( StringUtils.LOCAL_NUMBER_FORMAT.format(((Girokonto) account).getOverdraft()) + " €"); } else if (account instanceof SavingsAccount) { - this.typeSpecialLabel.setText("Zinsbetrag"); + this.typeSpecialLabel.setText("Interest rate"); this.typeSpecialProperty.setText( ((SavingsAccount) account).getInterest() + " %" ); } @@ -80,14 +80,14 @@ public class AccountView extends JPanel { accountSelectionPanel.add(iban, BorderLayout.CENTER); accountSelectionPanel.add(accountSelection, BorderLayout.EAST); - addInputRow(constraints, content, accountSelectionPanel, 1, new JLabel("Kontonummer", SwingConstants.RIGHT)); - addInputRow(constraints, content, name, 2, new JLabel("Vorname/Nachname", SwingConstants.RIGHT)); - addInputRow(constraints, content, address, 3, new JLabel("Adresse", SwingConstants.RIGHT)); + addInputRow(constraints, content, accountSelectionPanel, 1, new JLabel("IBAN", SwingConstants.RIGHT)); + addInputRow(constraints, content, name, 2, new JLabel("Name/Family-name", SwingConstants.RIGHT)); + addInputRow(constraints, content, address, 3, new JLabel("Address", SwingConstants.RIGHT)); addInputRow(constraints, content, bankName, 4, new JLabel("Bank", SwingConstants.RIGHT)); addInputRow(constraints, content, blz, 5, new JLabel("BLZ", SwingConstants.RIGHT)); - addInputRow(constraints, content, type, 6, new JLabel("Konto", SwingConstants.RIGHT)); + addInputRow(constraints, content, type, 6, new JLabel("Account", SwingConstants.RIGHT)); addInputRow(constraints, content, typeSpecialProperty, 7, typeSpecialLabel); - addInputRow(constraints, content, balance, 8, new JLabel("Kontostand", SwingConstants.RIGHT)); + addInputRow(constraints, content, balance, 8, new JLabel("Balance", SwingConstants.RIGHT)); var buttonPanel = Box.createHorizontalBox(); buttonPanel.add(Box.createHorizontalStrut(4)); @@ -127,10 +127,10 @@ public class AccountView extends JPanel { this.content = new JPanel(); - this.logout = new JButton("Abmelden"); - this.transfer = new JButton("Überweisen"); - this.deposit = new JButton("Einzahlen"); - this.takeoff = new JButton("Abheben"); + this.logout = new JButton("Logout"); + this.transfer = new JButton("Transfer"); + this.deposit = new JButton("Deposit"); + this.takeoff = new JButton("Takeoff"); } private void addInputRow(GridBagConstraints constraints, JComponent target, JComponent comp, int row, JLabel label) { diff --git a/src/me/teridax/jcash/gui/deposit/DepositView.java b/src/me/teridax/jcash/gui/deposit/DepositView.java index 7415a92..06529cc 100644 --- a/src/me/teridax/jcash/gui/deposit/DepositView.java +++ b/src/me/teridax/jcash/gui/deposit/DepositView.java @@ -1,13 +1,12 @@ package me.teridax.jcash.gui.deposit; import me.teridax.jcash.banking.Account; +import me.teridax.jcash.decode.StringUtils; import javax.swing.*; -import javax.swing.text.NumberFormatter; import java.awt.*; import java.text.NumberFormat; import java.text.ParseException; -import java.util.Locale; public class DepositView { @@ -31,70 +30,62 @@ public class DepositView { dialog.setVisible(true); } - private NumberFormatter getNumberFormat() { - var format = NumberFormat.getNumberInstance(Locale.GERMANY); - format.setParseIntegerOnly(false); - format.setMaximumFractionDigits(2); - - var formatter = new NumberFormatter(format); - formatter.setValueClass(Double.class); - formatter.setAllowsInvalid(false); - - return formatter; - } - private void layoutComponents() { dialog.getContentPane().setLayout(new GridBagLayout()); var c = new GridBagConstraints(); + c.gridx = 0; c.gridy = 0; c.weightx = 1; c.weighty = 1; - c.fill = GridBagConstraints.BOTH; + c.gridwidth = 3; + c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.CENTER; - c.insets = new Insets(10, 10, 10, 10); + c.insets = new Insets(4, 4, 4, 4); dialog.getContentPane().add(new JLabel("Deposit money"), c); c.gridx = 0; c.gridy = 1; + c.gridwidth = 1; c.fill = GridBagConstraints.NONE; c.anchor = GridBagConstraints.LAST_LINE_END; - c.insets = new Insets(10, 10, 10, 10); c.weightx = 0; - dialog.getContentPane().add(new JLabel("Betrag", SwingConstants.RIGHT), c); + dialog.getContentPane().add(new JLabel("Value", SwingConstants.RIGHT), c); c.gridx = 1; c.gridy = 1; c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.LAST_LINE_END; - c.insets = new Insets(10, 10, 10, 10); - c.weightx = 1; + c.weightx = 0.5; dialog.getContentPane().add(value, c); - c.gridx = 1; - c.gridy = 2; - c.fill = GridBagConstraints.NONE; - c.anchor = GridBagConstraints.LAST_LINE_END; - c.insets = new Insets(10, 10, 10, 10); - c.weightx = 0; - dialog.getContentPane().add(cancel, c); - c.gridx = 2; - c.gridy = 2; + c.gridy = 1; c.fill = GridBagConstraints.NONE; + c.anchor = GridBagConstraints.LINE_START; + c.weightx = 0; + dialog.getContentPane().add(new JLabel("€"), c); + + var buttonPanel = new JPanel(new FlowLayout(FlowLayout.TRAILING)); + buttonPanel.add(cancel); + buttonPanel.add(deposit); + + c.gridx = 0; + c.gridy = 2; + c.gridwidth = 3; + c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.LAST_LINE_END; c.insets = new Insets(10, 10, 10, 10); - c.weightx = 0; - dialog.getContentPane().add(deposit, c); + dialog.getContentPane().add(buttonPanel, c); } private void createComponents(Account account) { this.dialog = new JDialog(); - this.cancel = new JButton("Abbrechen"); - this.deposit = new JButton("Einzahlen"); - this.value = new JFormattedTextField(getNumberFormat()); + this.cancel = new JButton("Cancel"); + this.deposit = new JButton("Deposit"); + this.value = new JFormattedTextField(StringUtils.LOCAL_NUMBER_FORMAT); this.dialog.setContentPane(new JPanel(new GridBagLayout())); } diff --git a/src/me/teridax/jcash/gui/takeoff/TakeoffDialog.java b/src/me/teridax/jcash/gui/takeoff/TakeoffDialog.java index e53bb25..44e05c6 100644 --- a/src/me/teridax/jcash/gui/takeoff/TakeoffDialog.java +++ b/src/me/teridax/jcash/gui/takeoff/TakeoffDialog.java @@ -4,11 +4,11 @@ import me.teridax.jcash.banking.Account; public class TakeoffDialog { - public TakeoffDialog(Account account, Runnable onDeposit) { + public TakeoffDialog(Account account, Runnable onTakeoff) { var view = new TakeoffView(account); - view.getDeposit().addActionListener(e -> { + view.getTakeoff().addActionListener(e -> { account.takeoff(view.getAmount()); - onDeposit.run(); + onTakeoff.run(); view.dispose(); }); view.getCancel().addActionListener(e -> view.dispose()); diff --git a/src/me/teridax/jcash/gui/takeoff/TakeoffView.java b/src/me/teridax/jcash/gui/takeoff/TakeoffView.java index 9a77720..4eed846 100644 --- a/src/me/teridax/jcash/gui/takeoff/TakeoffView.java +++ b/src/me/teridax/jcash/gui/takeoff/TakeoffView.java @@ -4,11 +4,9 @@ import me.teridax.jcash.banking.Account; import me.teridax.jcash.decode.StringUtils; import javax.swing.*; -import javax.swing.text.NumberFormatter; import java.awt.*; import java.text.NumberFormat; import java.text.ParseException; -import java.util.Locale; import static javax.swing.JOptionPane.ERROR_MESSAGE; import static javax.swing.JOptionPane.showMessageDialog; @@ -17,7 +15,7 @@ public class TakeoffView { private JDialog dialog; private JButton cancel; - private JButton deposit; + private JButton takeoff; private JFormattedTextField value; public TakeoffView(Account account) { @@ -27,7 +25,7 @@ public class TakeoffView { public void showDialog() { dialog.setModalityType(Dialog.ModalityType.APPLICATION_MODAL); - dialog.setTitle("Deposit money"); + dialog.setTitle("Takeoff money"); dialog.pack(); dialog.setResizable(false); dialog.setLocationRelativeTo(null); @@ -36,56 +34,58 @@ public class TakeoffView { } private void layoutComponents() { - dialog.getContentPane().setLayout(new GridBagLayout()); - var c = new GridBagConstraints(); + c.gridx = 0; c.gridy = 0; c.weightx = 1; c.weighty = 1; - c.fill = GridBagConstraints.BOTH; + c.gridwidth = 3; + c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.CENTER; - c.insets = new Insets(10, 10, 10, 10); + c.insets = new Insets(4, 4, 4, 4); dialog.getContentPane().add(new JLabel("Takeoff money"), c); c.gridx = 0; c.gridy = 1; + c.gridwidth = 1; c.fill = GridBagConstraints.NONE; c.anchor = GridBagConstraints.LAST_LINE_END; - c.insets = new Insets(10, 10, 10, 10); c.weightx = 0; - dialog.getContentPane().add(new JLabel("Betrag", SwingConstants.RIGHT), c); + dialog.getContentPane().add(new JLabel("Value", SwingConstants.RIGHT), c); c.gridx = 1; c.gridy = 1; c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.LAST_LINE_END; - c.insets = new Insets(10, 10, 10, 10); - c.weightx = 1; + c.weightx = 0.5; dialog.getContentPane().add(value, c); - c.gridx = 1; - c.gridy = 2; - c.fill = GridBagConstraints.NONE; - c.anchor = GridBagConstraints.LAST_LINE_END; - c.insets = new Insets(10, 10, 10, 10); - c.weightx = 0; - dialog.getContentPane().add(cancel, c); - c.gridx = 2; - c.gridy = 2; + c.gridy = 1; c.fill = GridBagConstraints.NONE; + c.anchor = GridBagConstraints.LINE_START; + c.weightx = 0; + dialog.getContentPane().add(new JLabel("€"), c); + + var buttonPanel = new JPanel(new FlowLayout(FlowLayout.TRAILING)); + buttonPanel.add(cancel); + buttonPanel.add(takeoff); + + c.gridx = 0; + c.gridy = 2; + c.gridwidth = 3; + c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.LAST_LINE_END; c.insets = new Insets(10, 10, 10, 10); - c.weightx = 0; - dialog.getContentPane().add(deposit, c); + dialog.getContentPane().add(buttonPanel, c); } private void createComponents(Account account) { this.dialog = new JDialog(); - this.cancel = new JButton("Abbrechen"); - this.deposit = new JButton("Auszahlen"); + this.cancel = new JButton("Cancel"); + this.takeoff = new JButton("Takeoff"); this.value = new JFormattedTextField(StringUtils.LOCAL_NUMBER_FORMAT); this.dialog.setContentPane(new JPanel(new GridBagLayout())); @@ -108,8 +108,8 @@ public class TakeoffView { return cancel; } - public JButton getDeposit() { - return deposit; + public JButton getTakeoff() { + return takeoff; } public void dispose() {