From e297879f977503b4807e60fccd2479df13ad36b0 Mon Sep 17 00:00:00 2001 From: Mads Gjengaar Date: Tue, 16 Jan 2024 11:15:46 +0100 Subject: [PATCH 1/6] Modeled User Requests --- MODEL.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 MODEL.md diff --git a/MODEL.md b/MODEL.md new file mode 100644 index 00000000..7f2a7b7f --- /dev/null +++ b/MODEL.md @@ -0,0 +1,7 @@ +### class Basket + +| Methods | Members | Scenario | Output | +|--------------------------------------|---------------------------|--------------------------------------------------------------------------------------------------|---------| +| `add(String bagelName)` | `ArrayList items` | Adds a bagel item to basket
If basket is full, we tell the user it is | boolean | +| `remove(String bagleName)` | `ArrayList items` | Removes a bagel item from the basket and returns true
In case the bagel is not in the list we | boolean | +| `changeBasketCapacity(int capacity)` | `int capacity` | Alters the basket's capacity | void | From de6d05489be8a74de031d0047aa79d26c1dc0791 Mon Sep 17 00:00:00 2001 From: Mads Gjengaar Date: Tue, 16 Jan 2024 11:16:24 +0100 Subject: [PATCH 2/6] Added my own basic terminal menu --- .../com/migzus/terminal/menus/Button.java | 17 +++ .../com/migzus/terminal/menus/Callable.java | 39 ++++++ .../java/com/migzus/terminal/menus/Menu.java | 119 ++++++++++++++++++ 3 files changed, 175 insertions(+) create mode 100644 src/main/java/com/migzus/terminal/menus/Button.java create mode 100644 src/main/java/com/migzus/terminal/menus/Callable.java create mode 100644 src/main/java/com/migzus/terminal/menus/Menu.java diff --git a/src/main/java/com/migzus/terminal/menus/Button.java b/src/main/java/com/migzus/terminal/menus/Button.java new file mode 100644 index 00000000..c31e4e4e --- /dev/null +++ b/src/main/java/com/migzus/terminal/menus/Button.java @@ -0,0 +1,17 @@ +package com.migzus.terminal.menus; + +public class Button { + public boolean disabled = false; + public final String displayName; + + private final Callable callable; + + public Button(String name, Callable callback) { + displayName = name; + callable = callback; + } + + public void onSelect() { + callable.call(); + } +} diff --git a/src/main/java/com/migzus/terminal/menus/Callable.java b/src/main/java/com/migzus/terminal/menus/Callable.java new file mode 100644 index 00000000..8d3eac57 --- /dev/null +++ b/src/main/java/com/migzus/terminal/menus/Callable.java @@ -0,0 +1,39 @@ +package com.migzus.terminal.menus; + +import java.lang.reflect.Method; + +public class Callable { + private Method method; + private final Object obj; + + public Callable(Object obj, String methodName) { + try { + method = obj.getClass().getMethod(methodName); + } + catch (Exception e) { + System.out.println(e.getMessage()); + System.out.println("There are no methods with the name " + methodName + " in the " + obj.getClass().getName() + " class!"); + } + + this.obj = obj; + } + + public Object call(Object...args) { + if (method == null) { + System.out.println("Invalid call. Method was not found therefore you cannot invoke the method."); + return null; + } + + try { + return method.invoke(obj, args); + } + catch (Exception e) { + System.out.println(e.getMessage()); + System.out.println("Cannot invoke call on callback! method variable is: " + method); + } + + return null; + } + + public Object getTargetReference() { return obj; } +} diff --git a/src/main/java/com/migzus/terminal/menus/Menu.java b/src/main/java/com/migzus/terminal/menus/Menu.java new file mode 100644 index 00000000..9e3687c7 --- /dev/null +++ b/src/main/java/com/migzus/terminal/menus/Menu.java @@ -0,0 +1,119 @@ +package com.migzus.terminal.menus; + +import java.util.ArrayList; +import java.util.Scanner; + +public class Menu { + public static Menu currentActiveMenu; + public Menu parentMenu; + + public Callable afterMenuPrintCallback; + + public String name = "Menu"; + + private int selectIndex; + private final ArrayList