|
|
|
@ -6,6 +6,7 @@ using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using ConsoleApp.Menu.Core;
|
|
|
|
|
|
|
|
|
|
namespace ConsoleApp
|
|
|
|
|
{
|
|
|
|
@ -23,7 +24,7 @@ namespace ConsoleApp
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Each menu called are push in this stack. Then, to return back, we pop this stack to retrive the previous menu.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public Stack<Menu.IMenu> MenuCallStack { get; set; }
|
|
|
|
|
public Stack<IMenu> MenuCallStack { get; set; }
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region Constructors
|
|
|
|
@ -32,11 +33,11 @@ namespace ConsoleApp
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="dataManager">The data manager needed by the menus inside.</param>
|
|
|
|
|
/// <param name="firstMenu">The starting menu, the first that will be push on the call stack.</param>
|
|
|
|
|
public MenuManager(DataManager dataManager, Menu.IMenu firstMenu)
|
|
|
|
|
public MenuManager(DataManager dataManager, IMenu firstMenu)
|
|
|
|
|
{
|
|
|
|
|
DataManager = dataManager;
|
|
|
|
|
|
|
|
|
|
MenuCallStack = new Stack<Menu.IMenu>();
|
|
|
|
|
MenuCallStack = new Stack<IMenu>();
|
|
|
|
|
MenuCallStack.Push(firstMenu);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -55,7 +56,7 @@ namespace ConsoleApp
|
|
|
|
|
public void Loop()
|
|
|
|
|
{
|
|
|
|
|
ConsoleKeyInfo cki;
|
|
|
|
|
Menu.IMenu menuOnHead;
|
|
|
|
|
IMenu menuOnHead;
|
|
|
|
|
do
|
|
|
|
|
{
|
|
|
|
|
menuOnHead = MenuCallStack.Peek();
|
|
|
|
@ -72,7 +73,7 @@ namespace ConsoleApp
|
|
|
|
|
menuOnHead.SelectPrevious();
|
|
|
|
|
break;
|
|
|
|
|
case ConsoleKey.Enter:
|
|
|
|
|
Menu.IMenu? retMenu = menuOnHead.Return();
|
|
|
|
|
IMenu? retMenu = menuOnHead.Return();
|
|
|
|
|
if (retMenu is null) MenuCallStack.Pop();
|
|
|
|
|
else MenuCallStack.Push(retMenu);
|
|
|
|
|
break;
|
|
|
|
|