示例#1
0
        protected void DrawMenu(ConsoleMenu menu)
        {
            lock (LockUiObject)
            {
                Console.WriteLine();
                DrawMenuTitle(menu.Title);

                if (menu.MenuItems == null)
                    menu.MenuItems = new List<ConsoleMenuItem>();

                // loop through items (adjusted for special items like exit)
                for(var i = 0; i <= menu.MenuItems.Count; i++)
                {
                    // exit item is first
                    var menuItem = i == 0
                        ? menu.ExitMenuItem
                        : menu.MenuItems[i - 1];

                    // default to index value if no selection is provided
                    if (string.IsNullOrWhiteSpace(menuItem.MenuSelection))
                        menuItem.MenuSelection = i.ToString();

                    DrawMenuItem(menuItem);
                }
            }
        }
示例#2
0
        protected ConsoleMenuItem WaitForMenuSelection(ConsoleMenu menu)
        {
            lock (LockUiObject)
            {
                Console.WriteLine();
                Write("{0}> ", ConsoleColor.DarkGray, menu.Title);
            }

            var selection = (Console.ReadLine() ?? string.Empty).Trim();

            var matchingItem = menu.MenuItems
                .FirstOrDefault(m => m.MenuSelection.Equals(selection, StringComparison.InvariantCultureIgnoreCase));

            if(matchingItem != null)
            {
                DrawSystemText(string.Format("Selected: {0}", matchingItem.Label));
                Console.WriteLine();

                if (matchingItem.Method != null)
                    matchingItem.Method(menu, matchingItem);

                return matchingItem;
            }

            if(selection.Equals(menu.ExitMenuItem.MenuSelection, StringComparison.InvariantCultureIgnoreCase))
            {
                DrawSystemText(string.Format("Selected: {0}", menu.ExitMenuItem.Label));
                Console.WriteLine();
                return menu.ExitMenuItem;
            }

            DrawError("Invalid menu option.");
            return null;
        }
示例#3
0
 public void RunMenu(ConsoleMenu menu)
 {
     while (true)
     {
         DrawMenu(menu);
         var selection = WaitForMenuSelection(menu);
         if (selection == menu.ExitMenuItem)
             break;
     }
 }