90 lines
3 KiB
C#
90 lines
3 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Windows.Controls;
|
|
using JD.Interfaces.Remoting;
|
|
using JD.Remoting.Services;
|
|
using JD.Remoting.WPF.Actions;
|
|
using JD.Remoting.WPF.Module.Actions;
|
|
using JD.Remoting.WPF.Module.Settings;
|
|
using JD.Remoting.WPF.View;
|
|
using Plume.Icons;
|
|
using Plume.Interfaces.Application;
|
|
using Plume.Interfaces.Modules;
|
|
using Plume.Interfaces.Settings;
|
|
using Plume.Interfaces.WPF.Actions;
|
|
using Plume.Interfaces.WPF.Dialog;
|
|
using Plume.Interfaces.WPF.Modules;
|
|
using Plume.WPF.Commands;
|
|
|
|
namespace JD.Remoting.WPF
|
|
{
|
|
[NeededService(ServiceType = typeof(IPluginService))]
|
|
public sealed class RemotingModule : IWpfModule
|
|
{
|
|
private IPluginService _pluginService;
|
|
private RemoteStatusBarItemViewModel _remoteStatusBarItemViewModel;
|
|
|
|
/// <inheritdoc />
|
|
public void Dispose()
|
|
{
|
|
//Nothing to dispose
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public void Setup(IModuleSetup setup)
|
|
{
|
|
//Nothing to setup
|
|
//todo allow the app user to setup a connection based on a strategy
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public void Initialize(IWpfModuleContext context)
|
|
{
|
|
context.SettingsManager.Register<RemotingSettings>("Engine/Connections");
|
|
|
|
_pluginService = context.ServiceManager.GetPluginService();
|
|
InitializeActions(context);
|
|
InitializeMenus(context);
|
|
|
|
foreach (IPlugin plugin in _pluginService)
|
|
{
|
|
plugin.ConnectedChanged += Plugin_ConnectedChanged;
|
|
}
|
|
|
|
|
|
_remoteStatusBarItemViewModel = new RemoteStatusBarItemViewModel(context.ServiceManager, context.NotificationManager, context.ActionManager, context.SettingsManager);
|
|
var statusBarItem = new RemoteStatusBarItem
|
|
{
|
|
DataContext = _remoteStatusBarItemViewModel
|
|
};
|
|
|
|
context.StatusBarManager.AddStatusControl(statusBarItem);
|
|
|
|
|
|
}
|
|
|
|
private static void InitializeActions(IWpfModuleContext context)
|
|
{
|
|
IActionManager actionManager = context.ActionManager;
|
|
actionManager.Register<DisconnectAction>();
|
|
actionManager.Register<ManageConnectionsAction>();
|
|
}
|
|
|
|
private void InitializeMenus(IWpfModuleContext context)
|
|
{
|
|
var menuManager = context.MenuManager;
|
|
var actionManager = context.ActionManager;
|
|
|
|
menuManager.AddMenuItem("Engine", ConnectAction.GetMenu());
|
|
menuManager.AddMenuItem("Engine", actionManager.Get<DisconnectAction>());
|
|
menuManager.AddSeparator("Engine");
|
|
menuManager.AddMenuItem("Engine", actionManager.Get<ManageConnectionsAction>());
|
|
menuManager.AddSeparator("Engine");
|
|
}
|
|
|
|
private void Plugin_ConnectedChanged(object sender, IPlugin plugin)
|
|
{
|
|
_remoteStatusBarItemViewModel.IsConnected = _pluginService.Any() && _pluginService.All(p => p.IsConnected);
|
|
}
|
|
}
|
|
}
|