42 lines
No EOL
1.6 KiB
C#
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);
|
|
}
|
|
}
|
|
} |