You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.5 KiB
61 lines
1.5 KiB
package Application;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
public class MenuManager {
|
|
|
|
private ArrayList<Menu> menuList;
|
|
private Menu currentMenu;
|
|
|
|
public MenuManager() {
|
|
menuList = new ArrayList<>();
|
|
currentMenu = null;
|
|
}
|
|
|
|
public void addMenu(Menu menu) {
|
|
menuList.add(menu);
|
|
}
|
|
|
|
public int getSize() {
|
|
if(inRootMenu())
|
|
return menuList.size();
|
|
return currentMenu.getSubMenuList().size();
|
|
}
|
|
|
|
public void select(int i) {
|
|
if(i < 0 || i >= this.getSize())
|
|
return;
|
|
if (currentMenu == null)
|
|
this.currentMenu = menuList.get(i);
|
|
else
|
|
this.currentMenu = currentMenu.getMenu(i);
|
|
}
|
|
|
|
public void back() throws Exception {
|
|
if (!this.inRootMenu())
|
|
this.currentMenu = this.currentMenu.getPreviousMenu();
|
|
else
|
|
throw new Exception("Menu is in the root menu, a previous menu doesn't exist");
|
|
}
|
|
|
|
public Menu getCurrentMenu() {
|
|
return this.currentMenu;
|
|
}
|
|
|
|
public boolean inRootMenu() {
|
|
return this.currentMenu == null;
|
|
}
|
|
|
|
public String getFormattedMenuList() {
|
|
StringBuilder result = new StringBuilder();
|
|
ArrayList<Menu> baseMenuList = this.menuList;
|
|
if (!inRootMenu())
|
|
baseMenuList = currentMenu.getSubMenuList();
|
|
|
|
for (int i = 0; i < baseMenuList.size(); i++)
|
|
result.append(i + 1).append(": ").append(baseMenuList.get(i).getName()).append("\n");
|
|
|
|
return result.toString();
|
|
}
|
|
|
|
}
|