Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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);
        }