Imports System.IO Imports System.Windows.Threading Imports Supervisor.Plugin.Interface Public Class MainWindowVM Friend m_PluginTestInfo As Integer = 764 ' Riferimento al Model della MainWindow Private m_MainWindowM As MainWindowM Friend ReadOnly Property MainWindowM As MainWindowM Get Return m_MainWindowM End Get End Property ' Riferimento al gestore delle macchine a stati Private m_FiniteStateMachineManager As FiniteStateMachineManager Friend ReadOnly Property FiniteStateMachineManager As FiniteStateMachineManager Get Return m_FiniteStateMachineManager End Get End Property ' Riferimento al gestore del server Redis Private m_RedisManager As RedisManager Friend ReadOnly Property RedisManager As RedisManager Get Return m_RedisManager End Get End Property Private m_ContentPanel As Panel Public Property ContentPanel As Panel Get Return m_ContentPanel End Get Set(value As Panel) m_ContentPanel = value End Set End Property Sub New() ' Avvio l'inizializzazione della mappa passandogli il riferimento al MainWindowVM Map.BeginInit(Me) ' Creo Model della MainWindow m_MainWindowM = New MainWindowM ' creo gestore delle macchine a stati m_FiniteStateMachineManager = New FiniteStateMachineManager m_RedisManager = New RedisManager Dim PluginUI As IPluginControl = GetControlByName(Of IPluginControl)("Supervisor.Plugin.FiveLakes") ContentPanel = PluginUI End Sub #Region "Plugin" Private m_Loader As MEFLoader = New MEFLoader() Private Function GetPathByName(ByVal name As String) As String 'Dim PluginNameSplit() As String = name.Split("."c) 'Dim res = MainWindowM.sDataRoot & "\Plugin\" & PluginNameSplit(0) Dim res = MainWindowM.sDataRoot & "\Plugin\" & name Return res End Function Friend Function GetControlByName(Of T)(sName As String) As Panel Dim PlugInControl As Object = m_Loader.LoadByTag(Of T)(GetPathByName(sName), sName).FirstOrDefault() Dim PluginPanel As Panel = Nothing If PlugInControl.GetType().BaseType.FullName = GetType(Panel).FullName OrElse PlugInControl.GetType().BaseType.FullName = GetType(Grid).FullName Then PluginPanel = TryCast(PlugInControl, Panel) End If Return PluginPanel End Function #End Region ' Plugin End Class