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 EnableWriteMode();
void DisableWriteMode(); void DisableWriteMode();
void ToggleWriteMode(); void ToggleWriteMode();
void WriteMenuMode(ConsoleKeyInfo cki);
IMenu? Return(); IMenu? Return();
} }
} }

@ -13,6 +13,8 @@ namespace ConsoleApp.Menu
where T : notnull where T : notnull
{ {
protected StringBuilder _screenDisplay; protected StringBuilder _screenDisplay;
protected List<Selector<T>> _allSelectors = new List<Selector<T>>();
protected List<Selector<T>> _selectList = new List<Selector<T>>(); protected List<Selector<T>> _selectList = new List<Selector<T>>();
public string Title { get; private set; } public string Title { get; private set; }
@ -53,13 +55,48 @@ namespace ConsoleApp.Menu
return; return;
} }
_selectList = selections.ToList(); _allSelectors = selections.ToList();
CurrentSelected = _selectList[0].Item; _selectList = _allSelectors;
CurrentSelected = _allSelectors[0].Item;
} }
public abstract IMenu? Return(); 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() public void Update()
{ {

@ -29,5 +29,6 @@ namespace ConsoleApp.Menu
public void SelectPrevious() { return; } public void SelectPrevious() { return; }
public void ToggleWriteMode() { return; } public void ToggleWriteMode() { return; }
public void Update() { 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") public SearcherRecipe(RecipeCollection recipeCollection) : base("Search recipe")
{ {
_recipeCollectionOnSearch = recipeCollection; _recipeCollectionOnSearch = recipeCollection;
_selectList = SearchInSelection(); _allSelectors = ConvertRecipeCollectionInSelectors();
_selectList = _allSelectors;
} }
#region Methodes #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>>(); 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}")); newSelectors.Add(new Selector<Recipe>(recipe, $"[{recipe.Id}]: {recipe.Title}"));
} }
return newSelectors; return newSelectors;
} }

@ -20,33 +20,6 @@ namespace ConsoleApp
MenuCallStack.Push(firstMenu); 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() public void Loop()
{ {
ConsoleKeyInfo cki; ConsoleKeyInfo cki;
@ -75,7 +48,7 @@ namespace ConsoleApp
MenuCallStack.Pop(); MenuCallStack.Pop();
break; break;
default: default:
WriteMenuMode(menuOnHead, cki); menuOnHead.WriteMenuMode(cki);
break; break;
} }
} while (MenuCallStack.Count > 0); } while (MenuCallStack.Count > 0);

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

Loading…
Cancel
Save