-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMenu.cs
More file actions
45 lines (35 loc) · 1.46 KB
/
Copy pathMenu.cs
File metadata and controls
45 lines (35 loc) · 1.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using System;
namespace ConsoleApplicationBuilder
{
class Menu : PageComponent
{
private SelectOptionHandler _selectOptionHandler { get; set; }
private OptionsManager _optionsManager { get; set; }
public Menu(string name) : base(name)
{
_optionsManager = new OptionsManager();
_selectOptionHandler = new SelectOptionHandler(_optionsManager, this);
Console.Clear();
}
public override void Display()
{
Console.SetCursorPosition(0, 0);
var selectedOption = _optionsManager.GetSelectedOption();
if (selectedOption is null)
_optionsManager.SelectOption(0);
DisplayHeaders();
foreach (Option option in _optionsManager.Options)
{
if(option.IsSelected)
Output.WriteLine($"< {option.Name} >", fg:ConsoleColor.Black, bg:ConsoleColor.White);
else
Console.WriteLine($"< {option.Name} >");
}
_selectOptionHandler.Handle();
}
public void AddOption(Option option) => _optionsManager.AddOption(option);
public void AddOption(string name, Action func) => _optionsManager.AddOption(new Option(name, func));
public void DeleteOption(string name) => _optionsManager.DeleteOption(name);
public void AddBackOption() => AddOption("Back", _navigation.DisplayPrevious);
}
}