ComponentFactoryImpl.cs 1.0 KB

12345678910111213141516171819202122232425
  1. #nullable enable
  2. using System.Collections.Concurrent;
  3. namespace Terminal.Gui.Drivers;
  4. /// <summary>
  5. /// Abstract base class implementation of <see cref="IComponentFactory{TInputRecord}"/> that provides a default implementation of <see cref="CreateSizeMonitor"/>.</summary>
  6. /// <typeparam name="TInputRecord">The platform specific keyboard input type (e.g. <see cref="ConsoleKeyInfo"/> or <see cref="WindowsConsole.InputRecord"/></typeparam>
  7. public abstract class ComponentFactoryImpl<TInputRecord> : IComponentFactory<TInputRecord> where TInputRecord : struct
  8. {
  9. /// <inheritdoc />
  10. public abstract IInput<TInputRecord> CreateInput ();
  11. /// <inheritdoc />
  12. public abstract IInputProcessor CreateInputProcessor (ConcurrentQueue<TInputRecord> inputBuffer);
  13. /// <inheritdoc />
  14. public virtual ISizeMonitor CreateSizeMonitor (IOutput consoleOutput, IOutputBuffer outputBuffer)
  15. {
  16. return new SizeMonitorImpl (consoleOutput);
  17. }
  18. /// <inheritdoc />
  19. public abstract IOutput CreateOutput ();
  20. }