summaryrefslogtreecommitdiff
path: root/src/main/java/design/controller/userinput/Menu.java
diff options
context:
space:
mode:
authorTyler Ferrari <69283684+Sowgro@users.noreply.github.com>2025-10-05 14:29:39 -0400
committerGitHub <noreply@github.com>2025-10-05 14:29:39 -0400
commit7ce2647830e34c61a479eebc69b679f7d20df94a (patch)
tree18fdc4d99f8f5b23baf156e7753d352607e619d4 /src/main/java/design/controller/userinput/Menu.java
parentc5cbe4ffd56b7c96d85dc1676387993c6c15af7b (diff)
parent75ef9ca83d43051616c0083af85eacbd71b4b4b6 (diff)
downloaddesignproject-design-6-7ce2647830e34c61a479eebc69b679f7d20df94a.tar.gz
designproject-design-6-7ce2647830e34c61a479eebc69b679f7d20df94a.tar.bz2
designproject-design-6-7ce2647830e34c61a479eebc69b679f7d20df94a.zip
Merge pull request #3 from RIT-SWEN-262/user-input-dev
User input dev
Diffstat (limited to 'src/main/java/design/controller/userinput/Menu.java')
-rw-r--r--src/main/java/design/controller/userinput/Menu.java30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/main/java/design/controller/userinput/Menu.java b/src/main/java/design/controller/userinput/Menu.java
new file mode 100644
index 0000000..7677793
--- /dev/null
+++ b/src/main/java/design/controller/userinput/Menu.java
@@ -0,0 +1,30 @@
+package design.controller.userinput;
+
+import java.util.*;
+
+public abstract class Menu {
+ public abstract String getTitle();
+
+ public abstract List<MenuOption> getMenuOptions();
+
+ public void present() {
+ 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());
+ }
+ Scanner sc = new Scanner(System.in);
+ var line = sc.nextLine();
+ var split = line.split(" ");
+
+ try {
+ int i = Integer.parseInt(split[0]);
+ menuOptions.get(i).onCommand(Arrays.copyOfRange(split, 1, split.length));
+ } catch (Exception ex) {
+ System.err.printf("Invalid option \"%s\"\n", line);
+ present();
+ }
+ }
+
+}