Exemplo n.º 1
0
        public void Start()
        {
            if (Timer != null)
            {
                return;
            }

            Timer = new Timer(state =>
            {
                var res = Message.Invoke(CurrentTime);

                if (OldMessage != null && res?.Length < OldMessage?.Length)
                {
                    ConsoleUtilities.ClearLine(Line, StartAt, OldMessage.Length);
                }

                ConsoleUtilities.SetTemporaryConsolePosition(() => Console.Write(res), Line, StartAt);
                CurrentTime--;

                OldMessage = res;

                if (CurrentTime < 0)
                {
                    Stop();
                }
            }, null, TimeSpan.Zero, TimeSpan.FromSeconds(1));
        }
Exemplo n.º 2
0
        public DateTime Draw()
        {
            while (true)
            {
                Console.WriteLine($"{Question} ({Parameters.Format})" + (Parameters.DefaultDate != null
                                      ? $" [{Parameters.DefaultDate.Value.ToString(Parameters.Format)}]"
                                      : string.Empty));

                var input = Console.ReadLine();

                if (DateTime.TryParseExact(input, Parameters.Format, null, DateTimeStyles.None, out var dateTime))
                {
                    if (Parameters.CustomValidation != null)
                    {
                        var validationResult = Parameters.CustomValidation.Invoke(dateTime);
                        if (validationResult.IsSuccess)
                        {
                            return(dateTime);
                        }

                        Console.WriteLine(validationResult.ErrorMessage);
                    }
                    else
                    {
                        return(dateTime);
                    }
                }
                else
                {
                    if (Parameters.DefaultDate != null)
                    {
                        ConsoleUtilities.SetTemporaryConsolePosition(() =>
                        {
                            Console.WriteLine(Parameters.DefaultValueMessage,
                                              Parameters.DefaultDate.Value.ToString(Parameters.Format));
                        }, Console.CursorTop - 1, 0);

                        return(Parameters.DefaultDate.Value);
                    }

                    if (!string.IsNullOrEmpty(Parameters.ErrorMessageFormat))
                    {
                        Console.WriteLine(Parameters.ErrorMessageFormat, input, Parameters.Format);
                    }
                }
            }
        }
Exemplo n.º 3
0
 public void Write(string message, int topOffset = 0)
 {
     ConsoleUtilities.SetTemporaryConsolePosition(() => Console.Write(message), Top + topOffset, Left);
 }