package Application; import java.util.ArrayList; public class MenuManager { private ArrayList 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 (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 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(); } }