diff options
| author | sowgro <tpoke.ferrari@gmail.com> | 2025-10-05 14:06:20 -0400 |
|---|---|---|
| committer | sowgro <tpoke.ferrari@gmail.com> | 2025-10-05 14:06:20 -0400 |
| commit | 75ef9ca83d43051616c0083af85eacbd71b4b4b6 (patch) | |
| tree | b93f11c54becbd8868959ec197c37180a4a94974 /src/main | |
| parent | d97f1a846bb872db8a0954c2214fb0a757542e8b (diff) | |
| download | designproject-design-6-75ef9ca83d43051616c0083af85eacbd71b4b4b6.tar.gz designproject-design-6-75ef9ca83d43051616c0083af85eacbd71b4b4b6.tar.bz2 designproject-design-6-75ef9ca83d43051616c0083af85eacbd71b4b4b6.zip | |
Reorganize menu api
Diffstat (limited to '')
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 -> {})), |
