package design.controller.userinput; import java.util.*; public class Menu { private final String title; private final List menuOptions; public Menu(String title, List 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 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 void present() { System.out.printf("-- %s --\n", title.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(); } } }