Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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;
            }
        }
Пример #3
0
        /// <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;
        }
Пример #4
0
        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();
        }
Пример #5
0
 /// <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;
     }
 }
Пример #6
0
 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
                      ));
 }
Пример #7
0
        /// <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));
        }
Пример #8
0
        /// <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;
        }
Пример #9
0
 /// <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;
 }
Пример #10
0
        /// <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;
        }
Пример #11
0
        // 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));
             * }
             * }
             *
             */
        }
Пример #12
0
 public MenuGroup SetItems(params IMenuItem[] items)
 {
     Submenus.AddRange(items);
     return(this);
 }