ComponentFactoryImpl.cs 1017 B

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