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

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();
}
}