/// <summary> /// Runs the menu until user makes a choice /// </summary> /// <returns>Returns user's choice</returns> public MenuOption Run() { MenuOption option = null; while (option == null) { UI.DisplayMenu(this, currentIndex); UI.DisplayLog(Log); var key = UI.GetKeyFromUser(); switch (key) { case ConsoleKey.UpArrow: if (currentIndex > 0) { currentIndex--; } break; case ConsoleKey.DownArrow: if (currentIndex < Options.Count - 1) { currentIndex++; } break; case ConsoleKey.Enter: option = Options[currentIndex]; break; } } return(option); }
/// <summary> /// Gets the entire navigation tree. /// /// This menu is a brand new idea of mine, made from scratch. /// /// Seems to work, but it would have been even better /// with the possibility to add parameters (for some of /// the action calls). Probably in a later version. /// </summary> /// <returns>Returns the tree in the form of a menu object</returns> private Menu GetMenuTree() { var quitOption = new MenuOption("Quit the application", new Action(Quit)); var backOption = new MenuOption("Go back", new Action(GoBack)); var parkingSingleMenu = Menu.Create("Parking a single vehicle"); parkingSingleMenu.Add(new MenuOption("Park a car", new Action(ParkCar))); parkingSingleMenu.Add(new MenuOption("Park a bus", new Action(ParkBus))); parkingSingleMenu.Add(new MenuOption("Park an airplane", new Action(ParkAirplane))); parkingSingleMenu.Add(new MenuOption("Park a motorcycle", new Action(ParkMotorcycle))); parkingSingleMenu.Add(new MenuOption("Park a boat", new Action(ParkBoat))); parkingSingleMenu.Add(backOption); var parkingMenu = Menu.Create("Parking new vehicles"); parkingMenu.Add(new MenuOption("Park single vehicle", parkingSingleMenu)); parkingMenu.Add(new MenuOption("Fill garage with 10 vehicles", new Action(ParkSomeVehicles))); parkingMenu.Add(backOption); var vehicleSearchMenu = Menu.Create("Search vehicles"); vehicleSearchMenu.Add(new MenuOption("Search via parameters", new Action(ParametricSearch))); vehicleSearchMenu.Add(backOption); var garageAdminMenu = Menu.Create("Building construction"); garageAdminMenu.Add(new MenuOption("Create new garage", new Action(CreateGarage))); garageAdminMenu.Add(backOption); var listSpecificMenu = Menu.Create("Listing specific vehicle types"); listSpecificMenu.Add(new MenuOption("List airplanes", new Action(ListAirplanes))); listSpecificMenu.Add(new MenuOption("List boats", new Action(ListBoats))); listSpecificMenu.Add(new MenuOption("List busses", new Action(ListBusses))); listSpecificMenu.Add(new MenuOption("List cars", new Action(ListCars))); listSpecificMenu.Add(new MenuOption("List motorcycles", new Action(ListMotorcycles))); listSpecificMenu.Add(backOption); var listingMenu = Menu.Create("Listing parked vehicles"); listingMenu.Add(new MenuOption("List all parked vehicles", new Action(ListParkedVehicles))); listingMenu.Add(new MenuOption("List specific types", listSpecificMenu)); listingMenu.Add(backOption); var mainMenu = Menu.Create("Garage ver 0.1 Main menu"); mainMenu.Add(new MenuOption("Show parked vehicles", listingMenu)); mainMenu.Add(new MenuOption("Park vehicles", parkingMenu)); mainMenu.Add(new MenuOption("Unpark vehicles", new Action(UnparkVehicle))); mainMenu.Add(new MenuOption("Search", vehicleSearchMenu)); mainMenu.Add(new MenuOption("Repaint vehicles", new Action(RepaintVehicle))); mainMenu.Add(new MenuOption("Building management", garageAdminMenu)); mainMenu.Add(quitOption); return(mainMenu); }
public void Add(MenuOption option) { Options.Add(option); }