protected override bool TryGetResult(out string result) { var keyInfo = ConsoleDriver.ReadKey(); if (keyInfo.Key == ConsoleKey.Enter) { result = _inputBuffer.ToString(); if (TryValidate(result, _validators)) { return(true); } } else if (keyInfo.Key == ConsoleKey.Backspace) { if (_inputBuffer.Length == 0) { ConsoleDriver.Beep(); } else { _inputBuffer.Length -= 1; } } else if (!char.IsControl(keyInfo.KeyChar)) { _inputBuffer.Append(keyInfo.KeyChar); } result = null; return(false); }
protected override bool TryGetResult(out T result) { var keyInfo = ConsoleDriver.ReadKey(); switch (keyInfo.Key) { case ConsoleKey.Enter when _selector.TryGetSelectedItem(out result): return(true); case ConsoleKey.Enter: Renderer.SetValidationResult(new ValidationResult("Value is required")); break; case ConsoleKey.UpArrow: _selector.PreviousItem(); break; case ConsoleKey.DownArrow: _selector.NextItem(); break; case ConsoleKey.LeftArrow: _selector.PreviousPage(); break; case ConsoleKey.RightArrow: _selector.NextPage(); break; case ConsoleKey.Backspace when _filterBuffer.Length == 0: ConsoleDriver.Beep(); break; case ConsoleKey.Backspace: _filterBuffer.Length -= 1; _selector.UpdateFilter(_filterBuffer.ToString()); break; default: { if (!char.IsControl(keyInfo.KeyChar)) { _filterBuffer.Append(keyInfo.KeyChar); _selector.UpdateFilter(_filterBuffer.ToString()); } break; } } result = default; return(false); }
protected override bool TryGetResult(out T result) { var keyInfo = ConsoleDriver.ReadKey(); if (keyInfo.Key == ConsoleKey.Enter) { if (_selector.IsSelected) { result = _selector.SelectedItem; return(true); } Renderer.SetValidationResult(new ValidationResult("Value is required")); } else if (keyInfo.Key == ConsoleKey.UpArrow) { _selector.PreviousItem(); } else if (keyInfo.Key == ConsoleKey.DownArrow) { _selector.NextItem(); } else if (keyInfo.Key == ConsoleKey.LeftArrow) { _selector.PreviousPage(); } else if (keyInfo.Key == ConsoleKey.RightArrow) { _selector.NextPage(); } else if (keyInfo.Key == ConsoleKey.Backspace) { if (_filterBuffer.Length == 0) { ConsoleDriver.Beep(); } else { _filterBuffer.Length -= 1; _selector.UpdateFilter(_filterBuffer.ToString()); } } else if (!char.IsControl(keyInfo.KeyChar)) { _filterBuffer.Append(keyInfo.KeyChar); _selector.UpdateFilter(_filterBuffer.ToString()); } result = default; return(false); }
protected override bool TryGetResult(out string result) { var keyInfo = ConsoleDriver.ReadKey(); switch (keyInfo.Key) { case ConsoleKey.Enter: { result = _inputBuffer.ToString(); if (TryValidate(result, _options.Validators)) { return(true); } break; } case ConsoleKey.Backspace when _inputBuffer.Length == 0: ConsoleDriver.Beep(); break; case ConsoleKey.Backspace: _inputBuffer.Length -= 1; break; default: { if (!char.IsControl(keyInfo.KeyChar)) { _inputBuffer.Append(keyInfo.KeyChar); } break; } } result = null; return(false); }
protected override bool TryGetResult(out IEnumerable <T> result) { var keyInfo = ConsoleDriver.ReadKey(); switch (keyInfo.Key) { case ConsoleKey.Enter when _selectedItems.Count >= _minimum: result = _selectedItems; return(true); case ConsoleKey.Enter: Renderer.SetValidationResult(new ValidationResult($"A minimum selection of {_minimum} items is required")); break; case ConsoleKey.Spacebar when _paginator.TryGetSelectedItem(out var currentItem): { if (_selectedItems.Contains(currentItem)) { _selectedItems.Remove(currentItem); } else { _selectedItems.Add(currentItem); } break; } case ConsoleKey.UpArrow: _paginator.PreviousItem(); break; case ConsoleKey.DownArrow: _paginator.NextItem(); break; case ConsoleKey.LeftArrow: _paginator.PreviousPage(); break; case ConsoleKey.RightArrow: _paginator.NextPage(); break; case ConsoleKey.Backspace when _filterBuffer.Length == 0: ConsoleDriver.Beep(); break; case ConsoleKey.Backspace: _filterBuffer.Length -= 1; _paginator.UpdateFilter(_filterBuffer.ToString()); break; default: { if (!char.IsControl(keyInfo.KeyChar)) { _filterBuffer.Append(keyInfo.KeyChar); _paginator.UpdateFilter(_filterBuffer.ToString()); } break; } } result = null; return(false); }
protected override bool TryGetResult(out T result) { var keyInfo = ConsoleDriver.ReadKey(); switch (keyInfo.Key) { case ConsoleKey.Enter: { var input = _inputBuffer.ToString(); try { if (string.IsNullOrEmpty(input)) { if (_targetType.IsValueType && _underlyingType == null && _defaultValue == null) { Renderer.SetValidationResult(new ValidationResult("Value is required")); result = default; return(false); } result = (T)_defaultValue; } else { result = (T)Convert.ChangeType(input, _underlyingType ?? _targetType); } if (!TryValidate(result, _validators)) { result = default; return(false); } return(true); } catch (Exception ex) { Renderer.SetException(ex); } break; } case ConsoleKey.LeftArrow when _startIndex > 0: _startIndex -= 1; break; case ConsoleKey.LeftArrow: ConsoleDriver.Beep(); break; case ConsoleKey.RightArrow when _startIndex < _inputBuffer.Length: _startIndex += 1; break; case ConsoleKey.RightArrow: ConsoleDriver.Beep(); break; case ConsoleKey.Backspace when _startIndex > 0: _startIndex -= 1; _inputBuffer.Remove(_startIndex, 1); break; case ConsoleKey.Backspace: ConsoleDriver.Beep(); break; case ConsoleKey.Delete when _startIndex < _inputBuffer.Length: _inputBuffer.Remove(_startIndex, 1); break; case ConsoleKey.Delete: ConsoleDriver.Beep(); break; default: { if (!char.IsControl(keyInfo.KeyChar)) { _inputBuffer.Insert(_startIndex, keyInfo.KeyChar); _startIndex += 1; } break; } } result = default; return(false); }
protected override bool TryGetResult(out IEnumerable <T> result) { var keyInfo = ConsoleDriver.ReadKey(); if (keyInfo.Key == ConsoleKey.Enter) { if (_selectedItems.Count >= _minimum) { result = _selectedItems; return(true); } Renderer.SetValidationResult(new ValidationResult($"A minimum selection of {_minimum} items is required")); } else if (keyInfo.Key == ConsoleKey.Spacebar) { var currentItem = _selector.SelectedItem; if (currentItem == null) { result = null; return(false); } if (_selectedItems.Contains(currentItem)) { _selectedItems.Remove(currentItem); } else { _selectedItems.Add(currentItem); } } else if (keyInfo.Key == ConsoleKey.UpArrow) { _selector.PreviousItem(); } else if (keyInfo.Key == ConsoleKey.DownArrow) { _selector.NextItem(); } else if (keyInfo.Key == ConsoleKey.LeftArrow) { _selector.PreviousPage(); } else if (keyInfo.Key == ConsoleKey.RightArrow) { _selector.NextPage(); } else if (keyInfo.Key == ConsoleKey.Backspace) { if (_filterBuffer.Length == 0) { ConsoleDriver.Beep(); } else { _filterBuffer.Length -= 1; _selector.UpdateFilter(_filterBuffer.ToString()); } } else if (!char.IsControl(keyInfo.KeyChar)) { _filterBuffer.Append(keyInfo.KeyChar); _selector.UpdateFilter(_filterBuffer.ToString()); } result = null; return(false); }