Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
 public void Add(MenuOption option)
 {
     Options.Add(option);
 }