public bool PrintMenu(string UserInput = "") { try { if (UserInput != "") { MenuItem currentMenuItem = this.GetCurrentMenuItem(); if (UserInput.ToLower() == "back") { if (this.MenuStack.Count > 1) { currentMenuItem.LeavingMenuItem(); this.MenuStack.RemoveAt(this.MenuStack.Count - 1); currentMenuItem = this.GetCurrentMenuItem(); currentMenuItem.ValidateMenuParameters(new string[] {}, false); } else { currentMenuItem.PrintInvalidOptionError(UserInput); } } else if (UserInput.ToLower() == "exit") { EliteConsole.PrintFormattedWarning("Exit Elite console? [y/N] "); string input = EliteConsole.Read(); if (input.ToLower().StartsWith("y")) { return(false); } } else { MenuItem newMenuLevelItem = currentMenuItem.GetMenuOption(UserInput); if (newMenuLevelItem != null) { this.MenuStack.Add(newMenuLevelItem); newMenuLevelItem.PrintMenu(); } else { MenuCommand menuCommandOption = currentMenuItem.GetMenuCommandOption(UserInput); if (menuCommandOption != null) { menuCommandOption.Command(currentMenuItem, UserInput); } else { currentMenuItem.PrintInvalidOptionError(UserInput); } } } currentMenuItem = this.GetCurrentMenuItem(); ReadLine.AutoCompletionHandler = currentMenuItem.TabCompletionHandler; } this.PrintMenuLevel(); return(true); } catch (HttpRequestException) { EliteConsole.PrintFormattedWarning("Covenant has disconnected. Quit? [y/N] "); string input = EliteConsole.Read(); if (input.ToLower().StartsWith('y')) { return(false); } } catch (Exception e) { EliteConsole.PrintFormattedErrorLine("EliteMenu Exception: " + e.Message); EliteConsole.PrintErrorLine(e.StackTrace); this.PrintMenuLevel(); return(true); } this.PrintMenuLevel(); return(true); }