using Model; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp { internal class MenuManager { public DataManager DataManager { get; private set; } public Stack MenuCallStack { get; set; } public MenuManager(DataManager dataManager, Menu.IMenu firstMenu) { DataManager = dataManager; MenuCallStack = new Stack(); MenuCallStack.Append(firstMenu); } public void Loop() { ConsoleKeyInfo cki; Menu.IMenu menuOnHead; do { menuOnHead = MenuCallStack.Peek(); menuOnHead.Update(); menuOnHead.Display(); cki = Console.ReadKey(true); switch (cki.Key) { case ConsoleKey.DownArrow: menuOnHead.SelectNext(); break; case ConsoleKey.UpArrow: menuOnHead.SelectPrevious(); break; case ConsoleKey.Enter: menuOnHead.Return(); MenuCallStack.Pop(); break; case ConsoleKey.R: if (menuOnHead.WriteMode) menuOnHead.DisableWriteMode(); else menuOnHead.EnableWriteMode(); break; default: if (menuOnHead.WriteMode) { menuOnHead.InputStr.Append(cki.KeyChar); } break; } } while (MenuCallStack.Count > 0); } } }