start Entry + changes on research/write mode

pull/38/head
Alexandre AGOSTINHO 2 years ago
parent b0b7dec22d
commit 65a3c8feea

@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp.Menu
{
internal abstract partial class Entry
{
public class EntryStep
{
private Type _entryType;
public string Description { get; private set; }
public string? Input { get; private set; }
internal EntryStep(string description, Type type)
{
Description = description;
Input = null;
_entryType = type;
}
public object GetEntry()
{
Input = Console.ReadLine();
if (Input is null)
throw new ArgumentException("Error: input is null.");
try
{
if (_entryType == typeof(string))
return Input;
if (_entryType == typeof(int))
return Int32.Parse(Input);
if (_entryType == typeof(DateTime))
return DateTime.Parse(Input);
}
catch (FormatException fe)
{
Console.Error.WriteLine(fe);
}
throw new NotImplementedException("Error: parse of this type is not implemented.");
}
}
}
}

@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp.Menu
{
internal abstract partial class Entry : Menu<Entry.EntryStep>
{
private List<Selector<EntryStep>> _allSelectors;
protected Entry(string title) : base(title)
{
_allSelectors = _selectList;
}
protected override List<Selector<EntryStep>> SearchInSelection()
{
return _allSelectors;
}
public override IMenu? Return()
{
if (CurrentSelected == null)
throw new Exception("Error: CurrentSelected is null.");
return null;
}
}
}

@ -19,6 +19,7 @@ namespace ConsoleApp.Menu
void EnableWriteMode();
void DisableWriteMode();
void ToggleWriteMode();
void WriteMenuMode(ConsoleKeyInfo cki);
IMenu? Return();
}
}

@ -13,6 +13,8 @@ namespace ConsoleApp.Menu
where T : notnull
{
protected StringBuilder _screenDisplay;
protected List<Selector<T>> _allSelectors = new List<Selector<T>>();
protected List<Selector<T>> _selectList = new List<Selector<T>>();
public string Title { get; private set; }
@ -53,13 +55,48 @@ namespace ConsoleApp.Menu
return;
}
_selectList = selections.ToList();
CurrentSelected = _selectList[0].Item;
_allSelectors = selections.ToList();
_selectList = _allSelectors;
CurrentSelected = _allSelectors[0].Item;
}
public abstract IMenu? Return();
protected abstract List<Selector<T>> SearchInSelection();
protected virtual List<Selector<T>> SearchInSelection()
{
if (_allSelectors is null)
throw new Exception("Error: _allSelector is null.");
return _allSelectors.FindAll(x =>
x.Line.ToLower().Contains(InputStr.ToString().ToLower()));
}
public void WriteMenuMode(ConsoleKeyInfo cki)
{
if (!WriteMode && cki.Key == ConsoleKey.R)
{
EnableWriteMode();
return;
}
if (WriteMode)
{
if (cki.Key == ConsoleKey.Escape)
{
DisableWriteMode();
InputStr.Clear();
return;
}
if (cki.Key == ConsoleKey.Backspace && InputStr.Length > 0)
{
InputStr.Remove(InputStr.Length - 1, 1);
return;
}
InputStr.Append(cki.KeyChar);
}
}
public void Update()
{

@ -29,5 +29,6 @@ namespace ConsoleApp.Menu
public void SelectPrevious() { return; }
public void ToggleWriteMode() { return; }
public void Update() { return; }
public void WriteMenuMode(ConsoleKeyInfo cki) { return; }
}
}

@ -19,21 +19,18 @@ namespace ConsoleApp.Menu
public SearcherRecipe(RecipeCollection recipeCollection) : base("Search recipe")
{
_recipeCollectionOnSearch = recipeCollection;
_selectList = SearchInSelection();
_allSelectors = ConvertRecipeCollectionInSelectors();
_selectList = _allSelectors;
}
#region Methodes
protected override List<Selector<Recipe>> SearchInSelection()
private List<Selector<Recipe>> ConvertRecipeCollectionInSelectors()
{
RecipeCollection newRCSearchView =
_recipeCollectionOnSearch.ResearchByName(InputStr.ToString());
List<Selector<Recipe>> newSelectors = new List<Selector<Recipe>>();
foreach (Recipe recipe in newRCSearchView)
foreach (Recipe recipe in _recipeCollectionOnSearch)
{
newSelectors.Add(new Selector<Recipe>(recipe, $"[{recipe.Id}]: {recipe.Title}"));
}
return newSelectors;
}

@ -20,33 +20,6 @@ namespace ConsoleApp
MenuCallStack.Push(firstMenu);
}
private void WriteMenuMode(Menu.IMenu menu, ConsoleKeyInfo cki)
{
if (!menu.WriteMode && cki.Key == ConsoleKey.R)
{
menu.EnableWriteMode();
return;
}
if (menu.WriteMode)
{
if (cki.Key == ConsoleKey.Escape)
{
menu.DisableWriteMode();
menu.InputStr.Clear();
return;
}
if (cki.Key == ConsoleKey.Backspace && menu.InputStr.Length > 0)
{
menu.InputStr.Remove(menu.InputStr.Length - 1, 1);
return;
}
menu.InputStr.Append(cki.KeyChar);
}
}
public void Loop()
{
ConsoleKeyInfo cki;
@ -75,7 +48,7 @@ namespace ConsoleApp
MenuCallStack.Pop();
break;
default:
WriteMenuMode(menuOnHead, cki);
menuOnHead.WriteMenuMode(cki);
break;
}
} while (MenuCallStack.Count > 0);

@ -89,7 +89,7 @@ namespace Model
public override int GetHashCode()
{
return this.GetHashCode();
return Description.GetHashCode();
}
public override string ToString()

Loading…
Cancel
Save