summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2025-10-05 14:06:20 -0400
committersowgro <tpoke.ferrari@gmail.com>2025-10-05 14:06:20 -0400
commit75ef9ca83d43051616c0083af85eacbd71b4b4b6 (patch)
treeb93f11c54becbd8868959ec197c37180a4a94974
parentd97f1a846bb872db8a0954c2214fb0a757542e8b (diff)
downloaddesignproject-design-6-75ef9ca83d43051616c0083af85eacbd71b4b4b6.tar.gz
designproject-design-6-75ef9ca83d43051616c0083af85eacbd71b4b4b6.tar.bz2
designproject-design-6-75ef9ca83d43051616c0083af85eacbd71b4b4b6.zip
Reorganize menu api
-rw-r--r--src/main/java/design/controller/userinput/Menu.java34
-rw-r--r--src/main/java/design/controller/userinput/menus/MainMenu.java12
-rw-r--r--src/main/java/design/controller/userinput/menus/SelectUser.java17
-rw-r--r--src/main/java/design/controller/userinput/menus/StatisticsMenu.java13
-rw-r--r--src/main/java/design/controller/userinput/menus/UserSettings.java12
5 files changed, 45 insertions, 43 deletions
diff --git a/src/main/java/design/controller/userinput/Menu.java b/src/main/java/design/controller/userinput/Menu.java
index 407d2ca..7677793 100644
--- a/src/main/java/design/controller/userinput/Menu.java
+++ b/src/main/java/design/controller/userinput/Menu.java
@@ -2,38 +2,14 @@ package design.controller.userinput;
import java.util.*;
-public class Menu {
- private final String title;
- private final List<MenuOption> menuOptions;
+public abstract class Menu {
+ public abstract String getTitle();
- public Menu(String title, List<MenuOption> menuOptions) {
- this.title = title;
- this.menuOptions = menuOptions;
- }
-
- public Menu(String title) {
- this.title = title;
- this.menuOptions = new ArrayList<>();
- }
-
- public boolean remove(MenuOption menuOption) {
- return menuOptions.remove(menuOption);
- }
-
- public boolean addAll(List<MenuOption> c) {
- return menuOptions.addAll(c);
- }
-
- public boolean addAll(MenuOption... c) {
- return addAll(Arrays.stream(c).toList());
- }
-
- public boolean add(MenuOption menuOption) {
- return menuOptions.add(menuOption);
- }
+ public abstract List<MenuOption> getMenuOptions();
public void present() {
- System.out.printf("-- %s --\n", title.toUpperCase());
+ var menuOptions = getMenuOptions();
+ System.out.printf("-- %s --\n", getTitle().toUpperCase());
for (int i = 0; i < menuOptions.size(); i++) {
MenuOption menuOption = menuOptions.get(i);
System.out.printf("%s: %s\n", i, menuOption.getName());
diff --git a/src/main/java/design/controller/userinput/menus/MainMenu.java b/src/main/java/design/controller/userinput/menus/MainMenu.java
index b6fca7c..fb3cee9 100644
--- a/src/main/java/design/controller/userinput/menus/MainMenu.java
+++ b/src/main/java/design/controller/userinput/menus/MainMenu.java
@@ -3,11 +3,17 @@ package design.controller.userinput.menus;
import design.controller.userinput.Menu;
import design.controller.userinput.MenuOption;
+import java.util.List;
+
public class MainMenu extends Menu {
- public MainMenu() {
- super("main menu");
+ @Override
+ public String getTitle() {
+ return "main menu";
+ }
- addAll(
+ @Override
+ public List<MenuOption> getMenuOptions() {
+ return List.of(
new MenuOption("user settings...", (a) -> new UserSettings().present()),
new MenuOption("statistics...", (a) -> new StatisticsMenu().present()),
new MenuOption("log round...", (a) -> {}),
diff --git a/src/main/java/design/controller/userinput/menus/SelectUser.java b/src/main/java/design/controller/userinput/menus/SelectUser.java
index f5ddd64..1963f1d 100644
--- a/src/main/java/design/controller/userinput/menus/SelectUser.java
+++ b/src/main/java/design/controller/userinput/menus/SelectUser.java
@@ -4,17 +4,24 @@ import design.controller.userinput.Menu;
import design.controller.userinput.MenuOption;
import design.persistence.PersonalDatabase;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
public class SelectUser extends Menu {
-
PersonalDatabase personalDB = PersonalDatabase.INSTANCE;
- public SelectUser() {
- super("select user");
+ @Override
+ public String getTitle() {
+ return "select user";
+ }
- addAll(Arrays.stream(personalDB.getGolfers())
+ @Override
+ public List<MenuOption> getMenuOptions() {
+ var l = new ArrayList<MenuOption>();
+ l.addAll(Arrays.stream(personalDB.getGolfers())
.map(i -> new MenuOption(i.getUsername(), (a) -> {})).toList());
- add(new MenuOption("<create>", (a) -> {}));
+ l.add(new MenuOption("<create>", (a) -> {}));
+ return l;
}
}
diff --git a/src/main/java/design/controller/userinput/menus/StatisticsMenu.java b/src/main/java/design/controller/userinput/menus/StatisticsMenu.java
index 1d6de4b..66d60e3 100644
--- a/src/main/java/design/controller/userinput/menus/StatisticsMenu.java
+++ b/src/main/java/design/controller/userinput/menus/StatisticsMenu.java
@@ -3,11 +3,18 @@ package design.controller.userinput.menus;
import design.controller.userinput.Menu;
import design.controller.userinput.MenuOption;
+import java.util.List;
+
public class StatisticsMenu extends Menu {
- public StatisticsMenu() {
- super("statistics menu");
- addAll(
+ @Override
+ public String getTitle() {
+ return "statistics menu";
+ }
+
+ @Override
+ public List<MenuOption> getMenuOptions() {
+ return List.of(
new MenuOption("return to main menu", (c) -> new MainMenu().present())
);
}
diff --git a/src/main/java/design/controller/userinput/menus/UserSettings.java b/src/main/java/design/controller/userinput/menus/UserSettings.java
index fd9a311..a866889 100644
--- a/src/main/java/design/controller/userinput/menus/UserSettings.java
+++ b/src/main/java/design/controller/userinput/menus/UserSettings.java
@@ -3,12 +3,18 @@ package design.controller.userinput.menus;
import design.controller.userinput.Menu;
import design.controller.userinput.MenuOption;
+import java.util.List;
+
public class UserSettings extends Menu {
- public UserSettings() {
- super("user settings");
+ @Override
+ public String getTitle() {
+ return "user settings";
+ }
- addAll(
+ @Override
+ public List<MenuOption> getMenuOptions() {
+ return List.of(
new MenuOption("return to main menu", (a) -> new MainMenu().present()),
new MenuOption("switch user...", (a) -> new SelectUser().present()),
new MenuOption("set username...", (a -> {})),