From 545606deb0605938c05c436477039d7f7e401882 Mon Sep 17 00:00:00 2001 From: Zacharias Date: Mon, 24 Mar 2025 09:34:14 +0100 Subject: [PATCH] Started implementing the Account listing of a User --- src/main/java/me/zacharias/bank/Main.java | 7 ++- .../java/me/zacharias/bank/app/MainMenu.java | 36 ++++++----- .../bank/app/component/DrawManager.java | 7 +++ .../bank/app/component/InteractiveList.java | 59 +++++++++++++++++++ 4 files changed, 87 insertions(+), 22 deletions(-) create mode 100644 src/main/java/me/zacharias/bank/app/component/DrawManager.java create mode 100644 src/main/java/me/zacharias/bank/app/component/InteractiveList.java diff --git a/src/main/java/me/zacharias/bank/Main.java b/src/main/java/me/zacharias/bank/Main.java index 07fa7f4..0c7653e 100644 --- a/src/main/java/me/zacharias/bank/Main.java +++ b/src/main/java/me/zacharias/bank/Main.java @@ -13,15 +13,16 @@ public class Main { User user; public static void main(String[] args) { - String user = SHA256("user"); + String username = "user"; + String user = SHA256(username); File userFile = new File("./users/" + user + ".json"); if(!userFile.exists()) { - User u = new User("user"); + User u = new User(username); u.createAccount("Konto"); Account a = u.getAccount("Konto"); - a.DepositTransaction(104, "Deposit", UUID.randomUUID()); + a.DepositTransaction(100, "Deposit", UUID.randomUUID()); String json = gson.toJson(u); try { diff --git a/src/main/java/me/zacharias/bank/app/MainMenu.java b/src/main/java/me/zacharias/bank/app/MainMenu.java index 43593de..bf7bd9e 100644 --- a/src/main/java/me/zacharias/bank/app/MainMenu.java +++ b/src/main/java/me/zacharias/bank/app/MainMenu.java @@ -2,6 +2,8 @@ package me.zacharias.bank.app; import me.zacharias.bank.Account; import me.zacharias.bank.User; +import me.zacharias.bank.app.component.DrawManager; +import me.zacharias.bank.app.component.InteractiveList; import javax.swing.*; import java.awt.*; @@ -14,7 +16,7 @@ public class MainMenu extends JPanel { JLabel welcome; JButton logout; - JList accountList; + InteractiveList accountList; public MainMenu(User user, Main bankApplication) { this.user = user; @@ -31,23 +33,20 @@ public class MainMenu extends JPanel { bankApplication.logout(); }); - accountList = new JList<>(); - accountList.setBounds(getWidth()/2-100, 80, 200, 30); - accountList.setModel(new DefaultListModel<>()); - accountList.setBackground(Color.GRAY); - accountList.setCellRenderer(new ListCellRenderer() { - @Override - public Component getListCellRendererComponent(JList list, Account value, int index, boolean isSelected, boolean cellHasFocus) { - JButton label = new JButton(); - label.setText(value.getName() + " " + value.getBalance() + " kr"); - label.setBackground(Color.GRAY); - label.addActionListener(e -> { - bankApplication.showAccount(value); - }); - return label; - } + accountList = new InteractiveList<>(); + accountList.setBounds(0, 100, getWidth(), getHeight()-200); + accountList.setDrawManager((DrawManager) (interactiveList, item, index, isHovered, isSelected) -> { + JLabel label = new JLabel(item.getName()); + label.setOpaque(true); + label.setBackground(isSelected ? Color.GREEN : Color.WHITE); + label.setForeground(isHovered ? Color.WHITE : Color.BLACK); + return label; }); + for (Account account : user.getAccounts()) { + accountList.add(account); + } + this.add(welcome); this.add(logout); this.add(accountList); @@ -57,10 +56,9 @@ public class MainMenu extends JPanel { protected void paintComponent(Graphics g) { welcome.setBounds(getWidth()/2-100, 10, 200, 30); logout.setBounds(getWidth()/2-100, getHeight()-50, 200, 30); - accountList.setBounds(getWidth()/2-100, 80, 200, 30); + accountList.setBounds(getWidth()/2-100, getHeight()-80, 200, 300); - - accountList.setListData(user.getAccounts().toArray(new Account[0])); + accountList.setList(user.getAccounts()); super.paintComponent(g); } } diff --git a/src/main/java/me/zacharias/bank/app/component/DrawManager.java b/src/main/java/me/zacharias/bank/app/component/DrawManager.java new file mode 100644 index 0000000..bd75ee9 --- /dev/null +++ b/src/main/java/me/zacharias/bank/app/component/DrawManager.java @@ -0,0 +1,7 @@ +package me.zacharias.bank.app.component; + +import java.awt.*; + +public interface DrawManager { + Component draw(InteractiveList interactiveList, T item, int index, boolean isHovered, boolean isSelected); +} diff --git a/src/main/java/me/zacharias/bank/app/component/InteractiveList.java b/src/main/java/me/zacharias/bank/app/component/InteractiveList.java new file mode 100644 index 0000000..d88d897 --- /dev/null +++ b/src/main/java/me/zacharias/bank/app/component/InteractiveList.java @@ -0,0 +1,59 @@ +package me.zacharias.bank.app.component; + +import javax.swing.*; +import java.awt.*; +import java.util.ArrayList; + +public class InteractiveList extends JPanel { + ArrayList list; + DrawManager drawManager; + + public InteractiveList() { + list = new ArrayList<>(); + drawManager = new DrawManager() { + @Override + public Component draw(InteractiveList interactiveList, T item, int index, boolean isHovered, boolean isSelected) { + JLabel label = new JLabel(item.toString()); + label.setOpaque(true); + label.setBackground(isSelected ? Color.GREEN : Color.WHITE); + label.setForeground(isHovered ? Color.WHITE : Color.BLACK); + return label; + } + }; + } + + public void add(T item) { + list.add(item); + } + + public void remove(T item) { + list.remove(item); + } + + public void clear() { + list.clear(); + } + + public void setList(ArrayList list) { + this.list = list; + } + + public ArrayList getList() { + return list; + } + + public void setDrawManager(DrawManager drawManager) { + this.drawManager = drawManager; + } + + protected void paintComponent(Graphics g) { + super.paintComponent(g); + //this.removeAll(); + for (int i = 0; i < list.size(); i++) { + Component component = drawManager.draw(this, list.get(i), i, false, false); + component.setBounds(0, i * component.getHeight(), getWidth(), component.getHeight()); + //add(component); + component.paint(g); + } + } +}