JD2022-TU1/main/tools/framework/Shuttle/Servers/Managers/Events/EventManager.cs

42 lines
No EOL
1.6 KiB
C#

using System;
using Plume.Core.Logging;
using Shuttle.Servers.Managers.Clients;
namespace Shuttle.Servers.Managers.Events
{
public class EventManager : IEventNotificationListener, IAdobeEvents
{
private readonly ILogger _logger;
private readonly IClientManager _clientManager;
public event Action<TargetAppInfo, string> OnProjectOpened;
public event Action<TargetAppInfo, string> OnProjectClosed;
public event Action<TargetAppInfo> OnAppFocused;
public EventManager(ILogger logger, IClientManager clientManager)
{
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
_clientManager = clientManager ?? throw new ArgumentNullException(nameof(clientManager));
}
public void AcknowledgeProjectOpened(string connectionId, string filename)
{
var appInfo = _clientManager.GetTargetAppInfo(connectionId);
_logger.Debug($"{appInfo.ShuttleId} opened file '{filename}'.");
OnProjectOpened?.Invoke(appInfo, filename);
}
public void AcknowledgeProjectClosed(string connectionId, string filename)
{
var appInfo = _clientManager.GetTargetAppInfo(connectionId);
_logger.Debug($"{appInfo.ShuttleId} closed file '{filename}'.");
OnProjectClosed?.Invoke(appInfo, filename);
}
public void AcknowledgeWindowFocused(string connectionId)
{
var appInfo = _clientManager.GetTargetAppInfo(connectionId);
_logger.Debug($"{appInfo.ShuttleId} got focus.");
OnAppFocused?.Invoke(appInfo);
}
}
}