blob: 407d2cad1223caa5eb8d514f94bc088eb2cc09eb (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
package design.controller.userinput;
import java.util.*;
public class Menu {
private final String title;
private final List<MenuOption> menuOptions;
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 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();
}
}
}
|