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 OnProjectOpened; public event Action OnProjectClosed; public event Action 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); } } }