Ejemplo n.º 1
0
        private static ConsoleMenuItem CreateColorMenu()
        {
            var crazyTheme = new MenuColorTheme();

            crazyTheme.Selector.Foreground                 = Color.Yellow;
            crazyTheme.MenuItem.Foreground                 = Color.DarkRed;
            crazyTheme.MenuItem.DisabledForeground         = Color.Magenta;
            crazyTheme.MenuItem.SelectedForeground         = Color.Green;
            crazyTheme.MenuItem.SelectedBackground         = Color.Blue;
            crazyTheme.MenuItem.DisabledSelectedForeground = Color.Blue;
            crazyTheme.MenuItem.DisabledSelectedBackground = Color.DarkGray;
            crazyTheme.Expander.Foreground                 = Color.Magenta;
            crazyTheme.Expander.Background                 = Color.Green;
            crazyTheme.HeaderForeground = Color.Black;
            crazyTheme.HeaderBackground = Color.Yellow;

            var chooseDefaultTheme = new ConsoleMenuItem("Default", m => ((ColoredConsoleMenu)m.Menu).Theme = new MenuColorTheme());
            var chooseBlueTheme    = new ConsoleMenuItem("Blue", m => ((ColoredConsoleMenu)m.Menu).Theme = ConsoleMenuThemes.Blue);
            var chooseRedTheme     = new ConsoleMenuItem("Red", m => ((ColoredConsoleMenu)m.Menu).Theme = ConsoleMenuThemes.Red);
            var choosePinkTheme    = new ConsoleMenuItem("Pink", m => ((ColoredConsoleMenu)m.Menu).Theme = ConsoleMenuThemes.Pink);
            var chooseCrazyTheme   = new ConsoleMenuItem("Crazy", m => ((ColoredConsoleMenu)m.Menu).Theme = crazyTheme);

            return(new ConsoleMenuItem(
                       "Choose color theme",
                       chooseBlueTheme,
                       chooseRedTheme,
                       choosePinkTheme,
                       new ConsoleMenuSeperator(),
                       chooseCrazyTheme,
                       chooseDefaultTheme,
                       new ConsoleMenuItem("Bahama", m => ((ColoredConsoleMenu)m.Menu).Theme = ConsoleMenuThemes.Bahama),
                       new ConsoleMenuItem("CloseOptions", new ConsoleMenuItem("Exit application but use a long long name", x => Environment.Exit(0))),
                       new ConsoleMenuItem("A disabled menu item using a long name")));
        }
Ejemplo n.º 2
0
        /// <summary>Finishes the creation of the menu and returns to the parent.</summary>
        /// <returns>The parent menu builder</returns>
        public ICanAddMenuItems FinishSubMenu()
        {
            var subMenu = new ConsoleMenuItem(subMenuText, menuItems.ToArray());

            ((IMenuItemParent)parent).AddItem(subMenu);

            return(parent as ICanAddMenuItems);
        }
Ejemplo n.º 3
0
        private static void ShowProgress(ConsoleMenuItem sender)
        {
            var progressBar = new ProgressBar(100, "Some long running process", ConsoleColor.DarkYellow);

            for (int i = 0; i < 100; i++)
            {
                progressBar.Tick();
                Thread.Sleep(50);
            }
        }
Ejemplo n.º 4
0
 private static void ColorSimulation(ConsoleMenuItem obj)
 {
     foreach (PropertyInfo property in typeof(Color).GetProperties(BindingFlags.Static | BindingFlags.Public))
     {
         if (property.PropertyType == typeof(Color))
         {
             var value = (Color)property.GetValue(null);
             ColoredConsole.Instance.WriteLine(property.Name, value);
             Thread.Sleep(1000);
         }
     }
 }
Ejemplo n.º 5
0
        private static void DisplaySubMenu(ConsoleMenuItem consoleMenuItem)
        {
            Console.Clear();

            Console.WriteLine("Please make a selection: {0}", Environment.NewLine);

            foreach (ConsoleSubMenuItem processor in consoleMenuItem.Processors)
            {
                Console.WriteLine(" ({0}) {1}", processor.Key, processor.Name);
            }

            Console.WriteLine("{0}Enter {1}{2} (enter 'h' to return to the home menu)", Environment.NewLine, consoleMenuItem.Processors.Min(s => s.Key), consoleMenuItem.Processors.Count == 1 ? string.Empty : " - " + consoleMenuItem.Processors.Last().Key);
        }
Ejemplo n.º 6
0
        private static void ConnectToServer(ConsoleMenuItem sender)
        {
            if (userName == null)
            {
                return;
            }

            var progressBar = new ProgressBar(
                100,
                "Connecting to server with username " + userName,
                new ProgressBarOptions {
                BackgroundColor = ConsoleColor.Blue, ForeGroundColor = ConsoleColor.Cyan, ProgressBarOnBottom = false, ProgressCharacter = '*'
            });

            for (int i = 0; i < 100; i++)
            {
                progressBar.Tick();
                Thread.Sleep(10);
            }

            userName = null;
        }
Ejemplo n.º 7
0
        public async Task RunAsync(CancellationToken cancellationToken)
        {
            ConsoleMenu consoleMenu = GetConsoleMenu();

            do
            {
                DisplayMainMenu(consoleMenu);

                ConsoleKeyInfo consoleKeyInfo = Console.ReadKey();

                string selection = consoleKeyInfo.KeyChar.ToString();

                if (selection.ToLower() == "x")
                {
                    break;
                }
                else
                {
                    ConsoleMenuItem consoleMenuItem =
                        consoleMenu.ConsoleMenuItems.SingleOrDefault(s => string.Equals(s.Key, selection, StringComparison.OrdinalIgnoreCase));

                    if (consoleMenuItem == null)
                    {
                        Console.Clear();
                        Console.WriteLine("Invalid selection! Please try again (press any key to continue)");
                        Console.ReadKey();
                        Console.Clear();
                    }
                    else
                    {
                        var subApp = new ProcessorSubProgramRunner(_serviceProvider);

                        await subApp.RunAsync(consoleMenuItem, cancellationToken);
                    }
                }
            } while (true);
        }
Ejemplo n.º 8
0
 public ISubMenuBuilder WithItem(ConsoleMenuItem item)
 {
     menuItems.Add(item);
     return(this);
 }
Ejemplo n.º 9
0
 private static void InsertName(ConsoleMenuItem sender)
 {
     Console.WriteLine("Enter the user name");
     userName = Console.ReadLine();
 }
Ejemplo n.º 10
0
        private ConsoleMenu GetConsoleMenu()
        {
            List <Type> processorTypes = new AssemblyScanner()
                                         .GetTypesWithAttribute <ProcessorAttribute>()
                                         .OrderBy(t => t.Name)
                                         .ToList();

            var consoleMenuItems = new List <ConsoleMenuItem>();

            List <string> categories = processorTypes
                                       .Select(t =>
            {
                ProcessorAttribute processorAttribute =
                    (ProcessorAttribute)t.GetCustomAttributes(typeof(ProcessorAttribute), true).Single();

                return(processorAttribute.Category ?? GetDefaultCategory(t));
            })
                                       .OrderBy(s => s)
                                       .Distinct()
                                       .ToList();

            for (int i = 0; i < categories.Count; i++)
            {
                string key          = (i + 1).ToString();
                string name         = categories[i];
                var    subMenuItems = new List <ConsoleSubMenuItem>();

                List <Type> processorTypesMatched = processorTypes
                                                    .Where(t =>
                {
                    ProcessorAttribute processorAttr =
                        (ProcessorAttribute)t.GetCustomAttributes(typeof(ProcessorAttribute), true).Single();

                    return((processorAttr.Category ?? GetDefaultCategory(t)) == name);
                })
                                                    .ToList();

                for (int j = 0; j < processorTypesMatched.Count; j++)
                {
                    Type t = processorTypesMatched[j];

                    ProcessorAttribute processorAttr =
                        (ProcessorAttribute)t.GetCustomAttributes(typeof(ProcessorAttribute), true).Single();

                    string k = processorAttr.Key ?? (j + 1).ToString();
                    string n = processorAttr.Name ?? t.Name;

                    k = ToSingleCharacter(k);

                    var menuItem = new ConsoleSubMenuItem(k, n, t);

                    subMenuItems.Add(menuItem);
                }

                key = ToSingleCharacter(key);

                var consoleMenuItem = new ConsoleMenuItem(key, name, subMenuItems);

                consoleMenuItems.Add(consoleMenuItem);
            }

            return(new ConsoleMenu(consoleMenuItems));
        }
Ejemplo n.º 11
0
 private void UpdateNamesInTopRatedMoviesRunProcess(ConsoleMenuItem sender)
 {
     _updateNamesInTopRatedMoviesProcess.RunProcess();
     Console.WriteLine("Done. Press any key to return to the menu...");
     Console.ReadLine();
 }
Ejemplo n.º 12
0
 private static void DoCrash(ConsoleMenuItem sender)
 {
     throw new InvalidOperationException("Some invalid operartion was performed");
 }
Ejemplo n.º 13
0
        public async Task RunAsync(ConsoleMenuItem consoleMenuItem, CancellationToken cancellationToken)
        {
            do
            {
                DisplaySubMenu(consoleMenuItem);

                ConsoleKeyInfo consoleKeyInfo = Console.ReadKey();

                string selection = consoleKeyInfo.KeyChar.ToString();

                if (selection.ToLower() == "h")
                {
                    break;
                }
                else
                {
                    ConsoleSubMenuItem consoleSubMenuItem =
                        consoleMenuItem.Processors.SingleOrDefault(s => string.Equals(s.Key, selection, StringComparison.OrdinalIgnoreCase));

                    if (consoleSubMenuItem == null)
                    {
                        Console.Clear();
                        Console.WriteLine("Invalid selection! Please try again (press any key to continue)");
                        Console.ReadKey();
                        Console.Clear();
                    }
                    else
                    {
                        Console.Clear();

                        IServiceProvider scopedServiceProvider = _serviceProvider.CreateScope().ServiceProvider;

                        object processor = scopedServiceProvider.GetService(consoleSubMenuItem.ProcessorType);

                        if (!processor.GetType().GetInterfaces().Contains(typeof(IProcessor <,>)) && !processor.GetType().GetInterfaces().Contains(typeof(IProcessor <>)) && !processor.GetType().GetInterfaces().Contains(typeof(IProcessor)))
                        {
                            Console.WriteLine("Error! That selection is not a processor (press any key to continue)");
                            Console.ReadKey();
                            Console.Clear();
                        }
                        else if (processor.GetType().GetInterfaces().Contains(typeof(IProcessor <,>)) || processor.GetType().GetInterfaces().Contains(typeof(IProcessor <>)))
                        {
                            InitializeProcessor(processor, scopedServiceProvider);

                            Type inputType = processor.GetType().GenericTypeArguments[0];

                            object input = Activator.CreateInstance(inputType);

                            await ExecuteAsync(async() =>
                            {
                                await((dynamic)processor).ProcessAsync(input, cancellationToken);
                            });
                        }
                        else
                        {
                            InitializeProcessor(processor, scopedServiceProvider);

                            await ExecuteAsync(async() =>
                            {
                                await((IProcessor)processor).ProcessAsync(cancellationToken);
                            });
                        }

                        Console.WriteLine();
                        Console.WriteLine("***Complete***");
                        Console.WriteLine("Press any key to continue");
                        Console.ReadKey();
                    }
                }
            } while (true);
        }
Ejemplo n.º 14
0
 public ICanAddMenuItems WithItem(ConsoleMenuItem item)
 {
     menu.Add(item);
     return(this);
 }
Ejemplo n.º 15
0
        /// <inheritdoc />
        public void Run(IConsole console)
        {
            console.Clear();
            var exitGuid = new Guid(@"a7725515-7f82-4c18-9c36-343003bdf20d");

            var menuItems = new ConsoleMenuItem[]
            {
                new ConsoleMenuItem
                {
                    Enabled = true,
                    Caption = "menu item number one",
                    Code    = Guid.NewGuid()
                },
                new ConsoleMenuItem
                {
                    Enabled = true,
                    Caption = "menu item number two",
                    Code    = Guid.NewGuid()
                },
                new ConsoleMenuItem
                {
                    Enabled = false,
                    Caption = "menu item number three",
                    Code    = Guid.NewGuid()
                },
                new ConsoleMenuItem
                {
                    Enabled = true,
                    Caption = "menu item number four with very long description",
                    Code    = Guid.NewGuid()
                },
                new ConsoleMenuItem
                {
                    Enabled = false,
                    Caption = "menu item number five",
                    Code    = Guid.NewGuid()
                },
                new ConsoleMenuItem
                {
                    Enabled = true,
                    Caption = "menu item number six",
                    Code    = Guid.NewGuid()
                },
                new ConsoleMenuItem
                {
                    Enabled = true,
                    Caption = "Exit menu DEMO",
                    Code    = exitGuid
                }
            };

            var menuStyling = new MenuStyles
            {
                ActiveItem   = new ConsoleFontColor(Color.Red, Color.Black),
                DisabledItem = new ConsoleFontColor(Color.Gray, Color.Black),
                NormalItem   = new ConsoleFontColor(Color.WhiteSmoke, Color.Black),
                SelectedItem = new ConsoleFontColor(Color.Black, Color.LightGray),
                Alignment    = TextAlign.Center
            };

            var aConsole = new AtomicConsole(console);

            int menuStartY       = 6;
            int menuStartX       = 5;
            int menuContentWidth = 25;

            var frameColors    = new ConsoleFontColor(Color.Yellow, Color.Black);
            var boxInnerColors = new ConsoleFontColor(Color.WhiteSmoke, Color.Black);
            var frameStyle     = new FrameStyle(frameColors, boxInnerColors, @"┌─┐││└─┘", ' ');

            var ops = new ConsoleOperations(aConsole);

            ops.WriteTextBox(new Rectangle(menuStartX - 1, menuStartY - 1, menuContentWidth + 2, menuItems.Length + 2), "", frameStyle);

            var menu = new ConsoleMenu(aConsole, new Rectangle(menuStartX, menuStartY, menuContentWidth, 0), menuItems, menuStyling);

            menu.RenderAll();

            ConsoleMenuItem result = null;

            while (result == null || result.Code != exitGuid)
            {
                result = menu.Focus(resetActiveItem: true);

                aConsole.CleanLineSync(0, Color.Black);
                aConsole.RunAtomicOperations(ac =>
                {
                    aConsole.SetCursorPosition(0, 0);
                    aConsole.PrintColorfullText(
                        new KeyValuePair <ConsoleFontColor, string>(new ConsoleFontColor(Color.BlanchedAlmond, Color.Black), @"Selected menu: "),
                        new KeyValuePair <ConsoleFontColor, string>(new ConsoleFontColor(Color.Gold, Color.Black), result?.Caption ?? "#NULL#")
                        );
                });
                Thread.Sleep(1000);
            }

            aConsole.SetCursorPosition(0, menuStartY + menuItems.Length + 1);
            aConsole.ShowCursor();

            aConsole.WaitForNextPage();
        }
Ejemplo n.º 16
0
 public void AddItem(ConsoleMenuItem item)
 {
     menuItems.Add(item);
 }
Ejemplo n.º 17
0
 public ConsoleMenu(ConsoleMenuItem[] menuItems)
 {
     this.menuItems = menuItems;
 }
Ejemplo n.º 18
0
 void IMenuItemParent.AddItem(ConsoleMenuItem item)
 {
     WithItem(item);
 }
Ejemplo n.º 19
0
 public MenuItemChangedHandlerArgs(ConsoleMenuItem activeItem, ConsoleMenuItem previousItem)
 {
     this.ActiveItem   = activeItem;
     this.PreviousItem = previousItem;
 }