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_idDescriptionShortMsg As Integer Public Property idDescriptionShortMsg As Integer Get Return m_idDescriptionShortMsg End Get Set(value As Integer) m_idDescriptionShortMsg = value NotifyPropertyChanged(NameOf(idDescriptionShortMsg)) End Set End Property Private m_idDescriptionLongMsg As Integer Public Property idDescriptionLongMsg As Integer Get Return m_idDescriptionLongMsg End Get Set(value As Integer) m_idDescriptionLongMsg = value NotifyPropertyChanged(NameOf(idDescriptionLongMsg)) 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, idDescriptionShortMsg As Integer, idDescriptionLongMsg As Integer, 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_idDescriptionShortMsg = idDescriptionShortMsg m_idDescriptionLongMsg = idDescriptionLongMsg 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_idDescriptionShortMsg = ProjectParameters.idDescriptionShortMsg m_idDescriptionLongMsg = ProjectParameters.idDescriptionLongMsg 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 If m_idDescriptionShortMsg < 0 OrElse EgtMsg(m_idDescriptionShortMsg).StartsWith("Msg") Then ProjectParameters.sDescriptionShort = m_sDescriptionShort Else ProjectParameters.sDescriptionShort = EgtMsg(m_idDescriptionShortMsg) End If If m_idDescriptionLongMsg < 0 OrElse EgtMsg(m_idDescriptionLongMsg).StartsWith("Msg") Then ProjectParameters.sDescriptionLong = m_sDescriptionLong Else ProjectParameters.sDescriptionLong = EgtMsg(m_idDescriptionLongMsg) End If ProjectParameters.sDescriptionShort = m_sDescriptionShort ProjectParameters.sDescriptionLong = m_sDescriptionLong ProjectParameters.sMinUserLevel = m_sMinUserLevel Return ProjectParameters End Function #End Region ' Methods End Class