private void HandleInput() { ConsoleKeyInfo cki = Console.ReadKey(); switch (cki.Key) { case ConsoleKey.Backspace: case ConsoleKey.Escape: _running = false; break; case ConsoleKey.UpArrow: MoveUp(); break; case ConsoleKey.DownArrow: MoveDown(); break; case ConsoleKey.Enter: CurrentMenuItem.Select(); break; default: break; } }
public void Run() { _isRunning = true; Util.ConsoleUtil.WriteBlanks(); while (_isRunning) { Render(); var key = Console.ReadKey(); if (key.Key == ConsoleKey.Escape) { break; } if (key.Key == ConsoleKey.Spacebar) { ShowHelp(); Console.ReadKey(); continue; } switch (key.Key) { case ConsoleKey.UpArrow: _lineIndex = Math.Max(0, _lineIndex - 1); break; case ConsoleKey.DownArrow: _lineIndex = Math.Min(CurrentMenuItem.GetChildCount() - 1, _lineIndex + 1); break; case ConsoleKey.Enter: case ConsoleKey.RightArrow: CurrentMenuItem = CurrentMenuItem.TrySelectChild(_lineIndex, out _lineIndex); break; case ConsoleKey.LeftArrow: CurrentMenuItem = CurrentMenuItem.TrySelectParent(_lineIndex, out _lineIndex); break; default: break; } MenuItem lastMenuItem = CurrentMenuItem; for (int i = 0; i < _revertLevelCount; i++) { CurrentMenuItem = CurrentMenuItem.TrySelectParent(_lineIndex, out _lineIndex); if (CurrentMenuItem == lastMenuItem) { break; } } _revertLevelCount = 0; } Util.ConsoleUtil.WriteBlanks(); }
public void Render() { Console.Clear(); CurrentMenuItem.HoverChild(_lineIndex); _baseMenuItem.Render(0, -1 * (_baseMenuItem.Width + _baseMenuItem.Padding)); Console.SetCursorPosition(0, Console.WindowHeight - 2); Console.WriteLine("Use SPACE for help!"); }
public override void Triggered() { base.Triggered(); CurrentMenuItem.Trigger(); }