Imports System.Collections.ObjectModel Imports EgtBEAMWALL.Core.ConstBeam Imports EgtWPFLib5 Imports Newtonsoft.Json Imports EgtUILib Public Class JsonProjectParameters Inherits VMBase #Region "FIELDS & PROPETIES" Private m_nGroup As String Public Property nGroup As String Get Return m_nGroup End Get Set(value As String) m_nGroup = value NotifyPropertyChanged(NameOf(nGroup)) End Set End Property Private m_sName As String Public Property sName As String Get Return m_sName End Get Set(value As String) m_sName = value NotifyPropertyChanged(NameOf(sName)) End Set End Property Private m_sNameNge As String Public Property sNameNge As String Get Return m_sNameNge End Get Set(value As String) m_sNameNge = value NotifyPropertyChanged(NameOf(sNameNge)) End Set End Property Private m_sDescriptionShort As String Public Property sDescriptionShort As String Get Return m_sDescriptionShort End Get Set(value As String) m_sDescriptionShort = value NotifyPropertyChanged(NameOf(sDescriptionShort)) End Set End Property Private m_sDescriptionLong As String Public Property sDescriptionLong As String Get Return m_sDescriptionLong End Get Set(value As String) m_sDescriptionLong = value NotifyPropertyChanged(NameOf(sDescriptionLong)) End Set End Property Private m_sValue As String Public Property sValue As String Get Return m_sValue End Get Set(value As String) m_sValue = value NotifyPropertyChanged(NameOf(sValue)) End Set End Property Private m_sType As String Public Property sType As String Get Return m_sType End Get Set(value As String) m_sType = value NotifyPropertyChanged(NameOf(sType)) End Set End Property Private m_Choices As New ObservableCollection(Of JsonDefaultComboParameter) Public Property Choices As ObservableCollection(Of JsonDefaultComboParameter) Get Return m_Choices End Get Set(value As ObservableCollection(Of JsonDefaultComboParameter)) m_Choices = value NotifyPropertyChanged(NameOf(Choices)) End Set End Property Private m_sMinUserLevel As Integer Public Property sMinUserLevel As Integer Get Return m_sMinUserLevel End Get Set(value As Integer) m_sMinUserLevel = value NotifyPropertyChanged(NameOf(sMinUserLevel)) End Set End Property #End Region ' Fields & Propeties #Region "CONSTRUCTOR" Sub New(mGroup As String, sName As String, sNameNge As String, sValue As String, sType As String, sDescriptionShort As String, sDescriptionLong As String, sMinUserLevel As String) m_nGroup = nGroup m_sName = sName m_sNameNge = sNameNge m_sValue = sValue m_sType = sType m_sDescriptionShort = sDescriptionShort m_sDescriptionLong = sDescriptionLong m_sMinUserLevel = sMinUserLevel End Sub Sub New(ProjectParameters As ProjectParameters) m_sName = ProjectParameters.sName m_sNameNge = ProjectParameters.sNameNge Select Case ProjectParameters.GetType() Case GetType(BooleanGenericParameter) m_sValue = If(DirectCast(ProjectParameters, BooleanGenericParameter).bValue, "true", "false") Case GetType(DoubleGenericParameter) m_sValue = DirectCast(ProjectParameters, DoubleGenericParameter).sValue Case GetType(ComboGenericParameter) m_sValue = DirectCast(ProjectParameters, ComboGenericParameter).SelValue.sValue Case GetType(StringGenericParameter) m_sValue = DirectCast(ProjectParameters, StringGenericParameter).sValue Case GetType(ListGenericParameter) m_sValue = DirectCast(ProjectParameters, ListGenericParameter).SelValue.sName End Select m_sDescriptionShort = ProjectParameters.sDescriptionShort m_sDescriptionLong = ProjectParameters.sDescriptionLong m_sMinUserLevel = ProjectParameters.sMinUserLevel End Sub #End Region ' Constructor #Region "METHODS" Friend Function Deserialize(StrategyType As BWType) As ProjectParameters Dim ProjectParameters As ProjectParameters = Nothing Select Case m_sType Case "b" ProjectParameters = New BooleanGenericParameter() DirectCast(ProjectParameters, BooleanGenericParameter).SetValue(m_sValue) If m_sMinUserLevel = 1 Then DirectCast(ProjectParameters, BooleanGenericParameter).SetbBooleanVisibility(True) End If Case "d" ProjectParameters = New DoubleGenericParameter() DirectCast(ProjectParameters, DoubleGenericParameter).SetValue(m_sValue) If m_sMinUserLevel = 1 Then DirectCast(ProjectParameters, DoubleGenericParameter).SetbDoubleVisibility(True) End If Case "combo" ProjectParameters = New ComboGenericParameter() For Each Choice In Choices DirectCast(ProjectParameters, ComboGenericParameter).ComboList.Add(Choice.Deserialize()) Next DirectCast(ProjectParameters, ComboGenericParameter).SetSelValue(m_sValue) If m_sMinUserLevel = 1 Then DirectCast(ProjectParameters, ComboGenericParameter).SetbComboBoxVisibility(True) End If Case "tool" 'ProjectParameters = New ListGenericParameter(m_sSubType) 'DirectCast(ProjectParameters, ListGenericParameter).CreateToolsViews() 'If m_sMinUserLevel = 1 Then ' DirectCast(ProjectParameters, ListGenericParameter).SetbListBoxVisibility(True) 'End If Case "s" ProjectParameters = New StringGenericParameter() DirectCast(ProjectParameters, StringGenericParameter).SetValue(m_sValue) If m_sMinUserLevel = 1 Then DirectCast(ProjectParameters, StringGenericParameter).SetbStringVisibility(True) End If Case Else EgtOutLog("Tipo: " & m_sType & " non presente") Return Nothing End Select ProjectParameters.nGroup = nGroup ProjectParameters.sName = m_sName ProjectParameters.sNameNge = m_sNameNge ProjectParameters.sDescriptionShort = m_sDescriptionShort ProjectParameters.sDescriptionLong = m_sDescriptionLong ProjectParameters.sMinUserLevel = m_sMinUserLevel Return ProjectParameters End Function #End Region ' Methods End Class