/// <inheritdoc /> void IMenuBuilder.HasSubmenu(string name, int priority, Action <ISubmenuBuilder> configure) { if (!Submenus.Contains(name)) { Submenus.Add(name); } ISubmenuBuilder menu2; if (!Contributor.Store.TryGetValue(name, out var menu)) { Contributor.Store.Add(name, menu2 = new ConcreteSubmenuBuilder(Contributor) { Priority = priority }); } else if (menu is ISubmenuBuilder menu3) { menu2 = menu3; } else { throw new InvalidOperationException( $"\"{name}\" is not a submenu."); } configure.Invoke(menu2); }
/// <summary> /// Go Up in the menus /// do affect menu /// </summary> /// <param name="v">no use</param> private void GoUp(string v) { switch (activeMenu) { case Submenus.Second: activeMenu = Submenus.Main; break; case Submenus.DefineVehicle: activeMenu = Submenus.Second; parameters = new List <Parameter>(); actType = null; EmptyAddRemoveInstance(); break; case Submenus.GetSearchParameters: activeMenu = Submenus.Second; searchPredicateString = "(v =>"; startOnExpr = 0; searchRes = garageHandler.GetAllVehicles() .Where(p => (p != null)); EmptySearchOptions(); break; default: break; } }
/// <summary> /// Load json /// doesn't affect menu /// </summary> /// <param name="v">no use</param> private void LoadGarage(string v) { Console.WriteLine("Please provide path for the saved file"); activeFileType = FileTypes.Load; garageHandler.CreateNewGarage(1); ProcessPath(); // now the garage is defined.... subType = garageHandler.GetSubType(); GarageChildren = GetAllChildren(subType); int i = Convert.ToInt32('A'); char key; foreach (var item in GarageChildren) { key = (char)i; vehicleKeys.Add(key, item); i++; } searchRes = garageHandler.GetAllVehicles() ; activeMenu = Submenus.Second; }
public void SelectSubmenu(AntSubMenu menu) { if (menu == null) { return; } if (Accordion) { foreach (AntSubMenu item in Submenus.Where(x => x != menu && x != menu.Parent)) { item.Close(); } } if (menu.IsOpen) { menu.Close(); } else { menu.Open(); } if (OnSubmenuClicked.HasDelegate) { OnSubmenuClicked.InvokeAsync(menu); } StateHasChanged(); }
/// <summary> /// Go to AddVehicle menu Fail fast här? /// doesn't affect menu /// </summary> /// <param name="v">no use</param> private void AddVehicle(string v) { if (garageHandler.IsFull) { Console.WriteLine($"Sorry the garage is full"); Console.WriteLine("press a key"); Console.ReadKey(); } else { activeMenu = Submenus.DefineVehicle; } }
public void AddSubmenu(string MenuButtonTexturePath, Menu Submenu) { Submenus.Add(new Submenu( new MenuButton(MenuButtonTexturePath, new SlimDX.Vector2( _mbStartX, _mbStartY + (Actions.Count + Submenus.Count) * _mbSpacingBetween ), new SlimDX.Vector2( _mbStopX, _mbStartY + (Actions.Count + Submenus.Count) * _mbSpacingBetween + _mbHeight )), Submenu )); }
/// <inheritdoc /> public void Contribute() { if (Finalized) { return; } Finalized = true; var subMenus = Contributor.Store .Where(a => Submenus.Contains(a.Key)) .Select(a => a.Value) .Cast <ConcreteSubmenuBuilder>() .ToList(); subMenus.ForEach(a => a.Contribute()); Entries.ForEach(a => ((IMenuEntryBuilder)a).Contribute()); Entries.AddRange(subMenus); Entries.Sort((a, b) => a.Priority.CompareTo(b.Priority)); }
/// <summary> /// BuildGarage asks for size, and some vars /// do affect globals /// </summary> /// <param name="v">no use</param> private void BuildGarage(string v) { Console.WriteLine("Please assign the capaticy for the garage"); int capacity = -1; while (capacity < 0) { capacity = GetAll("System.Int32"); if (capacity < 0) { Console.WriteLine($"Capacity needes to be positive, {capacity} isn't that"); } } garageHandler.CreateNewGarage(capacity); // now the garage is defined.... subType = garageHandler.GetSubType(); GarageChildren = GetAllChildren(subType); int i = Convert.ToInt32('A'); char key; foreach (var item in GarageChildren) { key = (char)i; vehicleKeys.Add(key, item); i++; } searchRes = garageHandler.GetAllVehicles() ; activeMenu = Submenus.Second; }
/// <summary> /// Go to SearchVehicle meny /// doesn't affect menu /// </summary> /// <param name="v">No use</param> private void SearchVehicle(string v) { activeMenu = Submenus.GetSearchParameters; searchRes = garageHandler.GetAllVehicles(); activeSearchTypes = SearchTypes.Search; }
/// <summary> /// Go to RemoveVehicle menu /// doesn't affect menu /// </summary> /// <param name="v">no use</param> private void RemoveVehicle(string v) { activeMenu = Submenus.GetSearchParameters; activeSearchTypes = SearchTypes.Remove; }
// gives String.startsWith(string search, bool ignoreCase,CultureInfo) #endregion #region constructor public ConsoleMenu() { activeMenu = Submenus.Main; // glob actType = null; //DefineVehicle mainLoopSwitch = new SortedDictionary <char, Action <string> > { { '1', BuildGarage }, { 'L', LoadGarage }, { 'Q', Quit } }; // string bla=mainLoopSwitch[char.Q].Method.Name; secondLoopSwitch = new SortedDictionary <char, Action <string> > { { '1', ListAllVehicles }, { '2', ListPerType }, { '3', AddVehicle }, { '4', RemoveVehicle }, { '5', SearchByLicenseNumber }, { '6', ResizeGarage }, { '7', SearchVehicle }, { 'M', LoadMock }, { 'S', SaveGarage }, { 'Q', Quit } }; defineVehicleSwitch = new SortedDictionary <char, Action <string> > { { '1', VehicleType }, //{char.D2, LicensePlateNumber }, // {char.D3, Color }, // {char.D4, Wheels }, // {char.D5, Seats }, // {char.D6, SearchVehicle }, // {char.D7, SaveGarage }, // {char.Enter, Done}, { char.ToUpper('\b'), GoUp }, { 'Q', Quit } }; // add some more when D1 is set, redraw options, add save when all parametsers are set. // show choosed options in menu // DefineVehicleDesc.OrderBy((k, v) => k); defineVehicleDesc = new SortedDictionary <char, string> { { '1', "VehicleType" }, { char.ToUpper('\b'), "GoUp" }, { 'Q', "Quit" } }; getSearchParametersSwitch = new SortedDictionary <char, Action <string> > { { 'A', SearchForVehicleType }, { 'B', SearchForLicensePlateNumber }, { 'C', SearchForColor }, { 'D', SearchForWheels }, { 'E', SearchForSeats }, /* {char.A, SearchAddAnAnd }, * {char.O, SearchAddAnOr }, * {char.N, SearchAddANot}, * {char.W, SearchAddALeftParatheses }, * {char.E, SearchAddARightParatheses },*/ { char.ToUpper('\r'), Done }, { char.ToUpper('\b'), GoUp }, { 'Q', Quit } }; getSearchParametersDesc = new SortedDictionary <char, string> { { 'A', "Search for VehicleType" }, { 'B', "Search for LicensePlateNumber" }, { 'C', "Search for Color" }, { 'D', "Search for Wheels" }, { 'E', "Search for Seats" }, { char.ToUpper('\r'), "Done" }, { char.ToUpper('\b'), "Go Up" }, { 'Q', "Quit" } }; supeMenu = new SortedDictionary <Submenus, SortedDictionary <char, Action <string> > > { { Submenus.Main, mainLoopSwitch }, { Submenus.Second, secondLoopSwitch }, { Submenus.DefineVehicle, defineVehicleSwitch }, // spec 2 dir + done { Submenus.GetSearchParameters, getSearchParametersSwitch } }; int a = 0; string b = ""; float c = 0; double d = 0; var IntType = a.GetType(); var StringType = b.GetType(); var FloatType = c.GetType(); var DoubleType = d.GetType(); paramtoParamtype = new Dictionary <String, Type> { { "System.Int32", (new IntParameter()).GetType() }, { "System.String", (new StringParameter()).GetType() }, { "System.Single", (new FloatParameter()).GetType() }, { "System.Double", (new DoubleParameter()).GetType() }, { "System.DateTime", (new DateTimeParameter()).GetType() } }; /* * * public void PrintParameters() * { * var ctors = typeof(A).GetConstructors(); * // assuming class A has only one constructor * var ctor = ctors[0]; * foreach (var param in ctor.GetParameters()) * { * Console.WriteLine(string.Format( * "Param {0} is named {1} and is of type {2}", * param.Position, param.Name, param.ParameterType)); * } * } * */ }
public MenuGroup SetItems(params IMenuItem[] items) { Submenus.AddRange(items); return(this); }