Files
egtbeamwall/EgtBEAMWALL.Optimizer/GeneralParametersStrategy/GeneralParametersStrategyVM.vb
T
2026-08-07 09:12:01 +02:00

1062 lines
33 KiB
VB.net

Imports System.Collections.ObjectModel
Imports System.ComponentModel
Imports System.Globalization
Imports System.IO
Imports System.Reflection
Imports EgtBEAMWALL.Core
Imports EgtBEAMWALL.Optimizer.MainMenuVM
Imports EgtUILib
Imports EgtWPFLib5
Imports Newtonsoft.Json
Public Class GeneralParametersStrategyVM
Inherits VMBase
#Region "FIELDS & PROPERTIES"
Private PADLOCK_IMAGE As String = "pack://application:,,,/Resources/NewPage/padlock.png"
' Evento per chiusura finestra
Public Event m_CloseWindow(bDialogResult As Boolean)
Private m_GeneralParametersList As New ObservableCollection(Of ProjectParameters)
Public Property GeneralParametersList As ObservableCollection(Of ProjectParameters)
Get
Return m_GeneralParametersList
End Get
Set(value As ObservableCollection(Of ProjectParameters))
m_GeneralParametersList = value
End Set
End Property
' Definizione Comandi
Private m_cmdOk_Command As ICommand
Private m_cmdCloseCommand As ICommand
#Region "Messages"
Public ReadOnly Property UserMsg As String
Get
Return EgtMsg(61748)
End Get
End Property
Public ReadOnly Property AdvanceMsg As String
Get
Return EgtMsg(61749)
End Get
End Property
#End Region ' Messages
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
Sub New()
Map.SetRefGeneralParametersStrategyVM(Me)
Read()
End Sub
#End Region ' Constructor
#Region "METHODS"
Friend Sub Read()
Dim sStrategiesDirPath As String = Map.refMainWindowVM.MainWindowM.GetStrategiesDirPath(Map.refStrategyManagerVM.SelStrategyType.Id)
Dim sGeneralParametersFilePath As String = sStrategiesDirPath & "\" & GENERALPARAMETERS_FILE & ".json"
If File.Exists(sGeneralParametersFilePath) Then
Dim sReadedFiles As String = File.ReadAllText(sGeneralParametersFilePath)
Dim JsonGeneralParametersList As List(Of JsonGeneralParameters) = JsonConvert.DeserializeObject(Of List(Of JsonGeneralParameters))(sReadedFiles)
m_GeneralParametersList = New ObservableCollection(Of ProjectParameters)((From JsonGeneralParameter In JsonGeneralParametersList
Select JsonGeneralParameter.Deserialize(Map.refStrategyManagerVM.SelStrategyType.Id)).ToList())
For Each GenericItem As ProjectParameters In m_GeneralParametersList
Select Case GenericItem.sMinUserLevel
Case UserLevel.ADVANCED
Map.refMainMenuVM.UserLevelGenericVisibility(GenericItem, If(Map.refMainMenuVM.UserAdmin_IsChecked, True, False))
Case UserLevel.ADMINISTRATOR
Map.refMainMenuVM.UserLevelGenericVisibility(GenericItem, If(Map.refMainMenuVM.UnlockAllIsChecked, True, False))
Case Else
If Not Map.refMainMenuVM.UserAdmin_IsChecked Then
Map.refMainMenuVM.UserLevelGenericVisibility(GenericItem, If(GenericItem.sMinUserLevel = UserLevel.USER, True, False))
Map.refMainMenuVM.SetUnloackImage(PADLOCK_IMAGE)
End If
End Select
Next
NotifyPropertyChanged(NameOf(GeneralParametersList))
End If
Dim sAISetupDirPath As String = Map.refMainWindowVM.MainWindowM.GetAISetupDirPath(Map.refStrategyManagerVM.SelStrategyType.Id, False)
If Not IsNothing(Map.refStrategyManagerVM.SelStrategySetup) Then
Dim sStrategyConfigurationFilePath As String = sAISetupDirPath & "\" & Map.refStrategyManagerVM.SelStrategySetup.sName & ".json"
If File.Exists(sStrategyConfigurationFilePath) Then
Dim sReadedFile As String = File.ReadAllText(sStrategyConfigurationFilePath)
Dim JsonRoot As CustomJsonRoot = Nothing
Try
JsonRoot = JsonConvert.DeserializeObject(Of CustomJsonRoot)(sReadedFile)
Catch ex As Exception
JsonRoot = Nothing
Return
End Try
For Each ProjectItem In JsonRoot.GENERAL
Dim DefaultProject As ProjectParameters = m_GeneralParametersList.FirstOrDefault(Function(x) x.sName = ProjectItem.sName)
If Not IsNothing(DefaultProject) Then
DefaultProject.ReadConfiguration(ProjectItem, m_GeneralParametersList)
Else
EgtOutLog("Parametro Generale: " & ProjectItem.sName & " non presente")
End If
Next
End If
End If
End Sub
#End Region ' Methods
#Region "COMMANDS"
#Region "Ok_Command"
Public ReadOnly Property Ok_Command As ICommand
Get
If m_cmdOk_Command Is Nothing Then
m_cmdOk_Command = New Command(AddressOf Ok)
End If
Return m_cmdOk_Command
End Get
End Property
Public Sub Ok()
For Each ProjectItem As ProjectParameters In m_GeneralParametersList
Select Case ProjectItem.GetType()
Case GetType(BooleanGenericParameter)
ProjectItem.sValue = If(DirectCast(ProjectItem, BooleanGenericParameter).bValue, "true", "false")
Case GetType(DoubleGenericParameter)
ProjectItem.sValue = DirectCast(ProjectItem, DoubleGenericParameter).sValue
Case GetType(ComboGenericParameter)
ProjectItem.sValue = DirectCast(ProjectItem, ComboGenericParameter).SelValue.sValue
Case GetType(StringGenericParameter)
ProjectItem.sValue = DirectCast(ProjectItem, StringGenericParameter).sValue
Case GetType(ListGenericParameter)
ProjectItem.sValue = DirectCast(ProjectItem, ListGenericParameter).SelValue.sName
End Select
Next
Map.refStrategyManagerVM.Save(m_GeneralParametersList)
Map.refStrategyManagerVM.SetbIsModifyStrategy(True)
' Chiudo finestra
RaiseEvent m_CloseWindow(True)
End Sub
#End Region ' Ok_Command
#Region "CloseCommand"
Public ReadOnly Property CloseCommand As ICommand
Get
If m_cmdCloseCommand Is Nothing Then
m_cmdCloseCommand = New Command(AddressOf Close)
End If
Return m_cmdCloseCommand
End Get
End Property
Public Sub Close()
' Chiudo finestra senza fare niente
RaiseEvent m_CloseWindow(False)
End Sub
#End Region ' CloseCommand
#End Region ' Commands
End Class
Public Class ParametersProject
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()
End Sub
Sub New(JsonProjectParameters As JsonProjectParameters)
If IsNothing(JsonProjectParameters) Then Return
m_sName = JsonProjectParameters.sName
m_sNameNge = JsonProjectParameters.sNameNge
End Sub
#End Region ' Constructor
#Region "METHODS"
Friend Function Serialize() As JsonParameters
Dim JsonParameters As New JsonParameters(m_sName, m_sNameNge, m_sValue)
Return JsonParameters
End Function
#End Region ' Methods
End Class
Public MustInherit Class ProjectParameters
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()
End Sub
Sub New(JsonProjectParameters As JsonProjectParameters)
If IsNothing(JsonProjectParameters) Then Return
m_sName = JsonProjectParameters.sName
m_sNameNge = JsonProjectParameters.sNameNge
m_idDescriptionShortMsg = JsonProjectParameters.idDescriptionShortMsg
m_idDescriptionLongMsg = JsonProjectParameters.idDescriptionLongMsg
End Sub
#End Region ' Constructor
#Region "METHODS"
Friend MustOverride Function Serialize() As JsonParametersHelper
Friend Sub ReadConfiguration(ProjectParameters As JsonParameters, GeneralParametersList As ObservableCollection(Of ProjectParameters))
Dim DefaultProject As ProjectParameters = GeneralParametersList.FirstOrDefault(Function(x) x.sName = ProjectParameters.sName)
If IsNothing(DefaultProject) Then
' verifico indici!!
Else
Select Case DefaultProject.GetType()
Case GetType(BooleanGenericParameter)
DirectCast(DefaultProject, BooleanGenericParameter).SetValue(ProjectParameters.sValue)
If m_sMinUserLevel = 1 Then
DirectCast(DefaultProject, BooleanGenericParameter).SetbBooleanVisibility(True)
End If
Case GetType(DoubleGenericParameter)
DirectCast(DefaultProject, DoubleGenericParameter).SetValue(ProjectParameters.sValue)
If m_sMinUserLevel = 1 Then
DirectCast(DefaultProject, DoubleGenericParameter).SetbDoubleVisibility(True)
End If
Case GetType(ComboGenericParameter)
DirectCast(DefaultProject, ComboGenericParameter).SetSelValue(ProjectParameters.sValue)
If m_sMinUserLevel = 1 Then
DirectCast(DefaultProject, ComboGenericParameter).SetbComboBoxVisibility(True)
End If
Case GetType(StringGenericParameter)
DirectCast(DefaultProject, StringGenericParameter).SetValue(ProjectParameters.sValue)
If m_sMinUserLevel = 1 Then
DirectCast(DefaultProject, StringGenericParameter).SetbStringVisibility(True)
End If
Case GetType(ListGenericParameter)
DirectCast(DefaultProject, ListGenericParameter).SetSelValue(ProjectParameters.sValue)
DirectCast(DefaultProject, ListGenericParameter).CreateToolsViews()
DirectCast(DefaultProject, ListGenericParameter).ToolView()
If DefaultProject.sMinUserLevel = 1 Then
DirectCast(DefaultProject, ListGenericParameter).SetbListBoxVisibility(True)
End If
End Select
End If
End Sub
#End Region ' Methods
End Class
Public Class BooleanGenericParameter
Inherits ProjectParameters
#Region "FIELDS & PROPERTIES"
Friend m_bValue As Boolean = False
Public Property bValue As Boolean
Get
Return m_bValue
End Get
Set(value As Boolean)
If m_bValue <> value Then
If Not Map.refBTLDataWndVM.IsBTLDataWnd Then Map.refStrategyManagerVM.SetbIsModifyStrategy(True)
SetbIsBooleanModify(True)
End If
m_bValue = value
NotifyPropertyChanged(NameOf(bValue))
End Set
End Property
Friend Sub SetValue(bValue As Boolean)
m_bValue = bValue
End Sub
Friend Sub SetValue(sValue As String)
m_bValue = sValue.ToLower() = "true"
End Sub
Private m_bBooleanVisibility As Visibility = Visibility.Collapsed
Public ReadOnly Property bBooleanVisibility As Visibility
Get
Return m_bBooleanVisibility
End Get
End Property
Friend Sub SetbBooleanVisibility(value As Boolean)
m_bBooleanVisibility = If(value, Visibility.Visible, Visibility.Collapsed)
NotifyPropertyChanged(NameOf(bBooleanVisibility))
End Sub
Private m_bIsBooleanModify As Boolean = False
Public ReadOnly Property bIsBooleanModify As Boolean
Get
Return m_bIsBooleanModify
End Get
End Property
Friend Sub SetbIsBooleanModify(value As Boolean)
m_bIsBooleanModify = value
If m_bIsBooleanModify AndAlso Not IsNothing(Map.refProjectVM.BTLStructureVM.SelBTLPart) AndAlso Map.refProjectVM.bSaveGeneralParameters Then
Map.refProjectVM.BTLStructureVM.SelBTLPart.SetStrategyModify_Visibility(True)
End If
NotifyPropertyChanged(NameOf(bIsBooleanModify))
End Sub
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
Sub New()
End Sub
Sub New(JsonProjectParameters As JsonProjectParameters)
MyBase.New(JsonProjectParameters)
If IsNothing(JsonProjectParameters) Then Return
m_bValue = JsonProjectParameters.sValue.ToLower() = "true"
End Sub
#End Region ' Constructor
#Region "METHODS"
Friend Overrides Function Serialize() As JsonParametersHelper
Dim sValue As String = If(bValue, "true", "false")
Dim JsonParametersHelper As New JsonParametersHelper(sName, sNameNge, sValue, "b")
Return JsonParametersHelper
End Function
#End Region ' Methods
End Class
Public Class DoubleGenericParameter
Inherits ProjectParameters
#Region "FIELDS & PROPERTIES"
Private m_dValue As Double? = Nothing
Public Overloads Property sValue As String
Get
Return If(Not IsNothing(m_dValue), DoubleToString(m_dValue, 2), "")
End Get
Set(value As String)
Dim dValue As Double
If String.IsNullOrWhiteSpace(value) Then
m_dValue = Nothing
ElseIf StringToDouble(value, dValue) Then
If m_dValue <> dValue Then
If Not Map.refBTLDataWndVM.IsBTLDataWnd Then Map.refStrategyManagerVM.SetbIsModifyStrategy(True)
SetbIsDoubleModify(True)
NotifyPropertyChanged(NameOf(sValue))
End If
m_dValue = dValue
Else
NotifyPropertyChanged(NameOf(sValue))
End If
End Set
End Property
Friend Sub SetValue(dValue As Double)
m_dValue = dValue
End Sub
Friend Sub SetValue(sValue As String)
Dim dValue As Double
If String.IsNullOrWhiteSpace(sValue) Then
m_dValue = Nothing
ElseIf StringToDouble(sValue, dValue) Then
m_dValue = dValue
Else
NotifyPropertyChanged(NameOf(sValue))
EgtOutLog("Error reading DoubleStrategyParameter " & sValue)
End If
End Sub
Private m_bDoubleVisibility As Visibility = Visibility.Collapsed
Public ReadOnly Property bDoubleVisibility As Visibility
Get
Return m_bDoubleVisibility
End Get
End Property
Friend Sub SetbDoubleVisibility(value As Boolean)
m_bDoubleVisibility = If(value, Visibility.Visible, Visibility.Collapsed)
NotifyPropertyChanged(NameOf(bDoubleVisibility))
End Sub
Private m_bIsDoubleModify As Boolean = False
Public ReadOnly Property bIsDoubleModify As Boolean
Get
Return m_bIsDoubleModify
End Get
End Property
Friend Sub SetbIsDoubleModify(value As Boolean)
m_bIsDoubleModify = value
If m_bIsDoubleModify AndAlso Not IsNothing(Map.refProjectVM.BTLStructureVM.SelBTLPart) AndAlso Map.refProjectVM.bSaveGeneralParameters Then
Map.refProjectVM.BTLStructureVM.SelBTLPart.SetStrategyModify_Visibility(True)
End If
NotifyPropertyChanged(NameOf(bIsDoubleModify))
End Sub
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
Sub New()
End Sub
Sub New(JsonProjectParameters As JsonProjectParameters)
MyBase.New(JsonProjectParameters)
If IsNothing(JsonProjectParameters) Then Return
If Not StringToDouble(JsonProjectParameters.sValue, m_dValue) Then
EgtOutLog("Error reading DoubleStrategyParameter " & JsonProjectParameters.sValue)
End If
End Sub
#End Region ' Constructor
#Region "METHODS"
Friend Overrides Function Serialize() As JsonParametersHelper
Dim JsonParametersHelper As New JsonParametersHelper(sName, sNameNge, sValue, "d")
Return JsonParametersHelper
End Function
#End Region ' Methods
End Class
Public Class StringGenericParameter
Inherits ProjectParameters
#Region "FIELDS & PROPERTIES"
Private m_sValue As String = String.Empty
Public Overloads Property sValue As String
Get
Return m_sValue
End Get
Set(value As String)
If m_sValue <> value Then
If Not Map.refBTLDataWndVM.IsBTLDataWnd Then Map.refStrategyManagerVM.SetbIsModifyStrategy(True)
SetbIsStringModify(True)
End If
m_sValue = value
NotifyPropertyChanged(NameOf(sValue))
End Set
End Property
Friend Sub SetValue(dValue As String)
m_sValue = dValue
End Sub
Private m_bStringVisibility As Visibility = Visibility.Collapsed
Public ReadOnly Property bStringVisibility As Visibility
Get
Return m_bStringVisibility
End Get
End Property
Friend Sub SetbStringVisibility(value As Boolean)
m_bStringVisibility = If(value, Visibility.Visible, Visibility.Collapsed)
NotifyPropertyChanged(NameOf(bStringVisibility))
End Sub
Private m_bIsStringModify As Boolean = False
Public ReadOnly Property bIsStringModify As Boolean
Get
Return m_bIsStringModify
End Get
End Property
Friend Sub SetbIsStringModify(value As Boolean)
m_bIsStringModify = value
If m_bIsStringModify AndAlso Not IsNothing(Map.refProjectVM.BTLStructureVM.SelBTLPart) AndAlso Map.refProjectVM.bSaveGeneralParameters Then
Map.refProjectVM.BTLStructureVM.SelBTLPart.SetStrategyModify_Visibility(True)
End If
NotifyPropertyChanged(NameOf(bIsStringModify))
End Sub
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
Sub New()
End Sub
Sub New(JsonProjectParameters As JsonProjectParameters)
MyBase.New(JsonProjectParameters)
If IsNothing(JsonProjectParameters) Then Return
If Not StringToDouble(JsonProjectParameters.sValue, m_sValue) Then
EgtOutLog("Error reading StringStrategyParameter " & JsonProjectParameters.sValue)
End If
End Sub
#End Region ' Constructor
#Region "METHODS"
Friend Overrides Function Serialize() As JsonParametersHelper
Dim JsonParametersHelper As New JsonParametersHelper(sName, sNameNge, sValue, "s")
Return JsonParametersHelper
End Function
#End Region ' Methods
End Class
Public Class ComboGenericParameter
Inherits ProjectParameters
#Region "FIELDS & PROPERTIES"
Private m_ComboList As New List(Of ComboParameter)
Public Property ComboList As List(Of ComboParameter)
Get
Return m_ComboList
End Get
Set(value As List(Of ComboParameter))
m_ComboList = value
End Set
End Property
' Seleziona elemento nella combobox Choices
Private m_SelValue As ComboParameter
Public Property SelValue As ComboParameter
Get
Return m_SelValue
End Get
Set(value As ComboParameter)
If Not IsNothing(value) AndAlso Not IsNothing(m_SelValue) Then
If m_SelValue.sValue <> value.sValue Then
If Not Map.refBTLDataWndVM.IsBTLDataWnd Then Map.refStrategyManagerVM.SetbIsModifyStrategy(True)
SetbIsComboBoxModify(True)
End If
End If
m_SelValue = value
NotifyPropertyChanged(NameOf(SelValue))
End Set
End Property
Friend Sub SetSelValue(sValue As String)
m_SelValue = m_ComboList.FirstOrDefault(Function(x) x.sValue = sValue)
If IsNothing(m_SelValue) Then m_SelValue = m_ComboList(0)
End Sub
Private m_bComboBoxVisibility As Visibility = Visibility.Collapsed
Public ReadOnly Property bComboBoxVisibility As Visibility
Get
Return m_bComboBoxVisibility
End Get
End Property
Friend Sub SetbComboBoxVisibility(value As Boolean)
m_bComboBoxVisibility = If(value, Visibility.Visible, Visibility.Collapsed)
NotifyPropertyChanged(NameOf(bComboBoxVisibility))
End Sub
Private m_bIsComboBoxModify As Boolean = False
Public ReadOnly Property bIsComboBoxModify As Boolean
Get
Return m_bIsComboBoxModify
End Get
End Property
Friend Sub SetbIsComboBoxModify(value As Boolean)
m_bIsComboBoxModify = value
If m_bIsComboBoxModify AndAlso Not IsNothing(Map.refProjectVM.BTLStructureVM.SelBTLPart) AndAlso Map.refProjectVM.bSaveGeneralParameters Then
Map.refProjectVM.BTLStructureVM.SelBTLPart.SetStrategyModify_Visibility(True)
End If
NotifyPropertyChanged(NameOf(bIsComboBoxModify))
End Sub
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
Sub New()
End Sub
Sub New(JsonProjectParameters As JsonProjectParameters)
MyBase.New(JsonProjectParameters)
If IsNothing(JsonProjectParameters) Then Return
ComboList = JsonProjectParameters.Choices.Select(Function(jsonChoice) New ComboParameter(jsonChoice)).ToList()
SelValue = ComboList.FirstOrDefault(Function(x) x.sValue = JsonProjectParameters.sValue)
End Sub
#End Region ' Constructor
#Region "METHODS"
Friend Overrides Function Serialize() As JsonParametersHelper
Dim JsonParametersHelper As New JsonParametersHelper(sName, sNameNge, m_SelValue.sValue, "combo")
Return JsonParametersHelper
End Function
#End Region ' Methods
End Class
Public Class ListGenericParameter
Inherits ProjectParameters
#Region "FIELDS & PROPERTIES"
Private m_ListValue As New List(Of ToolParameter)
Public Property ListValue As List(Of ToolParameter)
Get
Return m_ListValue
End Get
Set(value As List(Of ToolParameter))
m_ListValue = value
End Set
End Property
Private m_SelValue As ToolParameter
Public Property SelValue As ToolParameter
Get
Return m_SelValue
End Get
Set(value As ToolParameter)
If Not IsNothing(value) AndAlso Not IsNothing(m_SelValue) Then
If m_SelValue.sUUID <> value.sUUID Then
If Not Map.refBTLDataWndVM.IsBTLDataWnd Then Map.refStrategyManagerVM.SetbIsModifyStrategy(True)
SetbIsListModify(True)
End If
End If
m_SelValue = value
NotifyPropertyChanged(NameOf(SelValue))
End Set
End Property
Friend Sub SetSelValue(sValue As String)
Dim sTrimValue As String = sValue.TrimEnd(";"c)
Dim sTmpValue As String() = sTrimValue.Split(";"c)
Dim sSplitValue As String()
For Each ItemValue As String In sTmpValue
sSplitValue = ItemValue.Split(","c)
For Each ItemTool As ToolParameter In m_ListValue
If sSplitValue(0) = ItemTool.sUUID AndAlso sSplitValue(1) = ItemTool.sName Then
ItemTool.bIsActive = True
End If
Next
Next
End Sub
Private m_ToolList_View As ICollectionView = Nothing
Public ReadOnly Property ToolList_View As ICollectionView
Get
Return m_ToolList_View
End Get
End Property
Private m_bOpenToolListIsEnable As Boolean = True
Public ReadOnly Property OpenToolListIsEnable As Boolean
Get
Return m_bOpenToolListIsEnable
End Get
End Property
Friend Sub SetOpenToolListIsEnable(value As Boolean)
m_bOpenToolListIsEnable = value
NotifyPropertyChanged(NameOf(OpenToolListIsEnable))
End Sub
Private m_bListBoxVisibility As Visibility = Visibility.Collapsed
Public ReadOnly Property bListBoxVisibility As Visibility
Get
Return m_bListBoxVisibility
End Get
End Property
Friend Sub SetbListBoxVisibility(value As Boolean)
m_bListBoxVisibility = If(value, Visibility.Visible, Visibility.Collapsed)
NotifyPropertyChanged(NameOf(bListBoxVisibility))
End Sub
Private m_bIsListModify As Boolean = False
Public ReadOnly Property bIsListModify As Boolean
Get
Return m_bIsListModify
End Get
End Property
Friend Sub SetbIsListModify(value As Boolean)
m_bIsListModify = value
If m_bIsListModify AndAlso Not IsNothing(Map.refProjectVM.BTLStructureVM.SelBTLPart) AndAlso Map.refProjectVM.bSaveGeneralParameters Then
Map.refProjectVM.BTLStructureVM.SelBTLPart.SetStrategyModify_Visibility(True)
End If
NotifyPropertyChanged(NameOf(bIsListModify))
End Sub
Private m_OpenToolList_IsChecked As Boolean
Public Property OpenToolList_IsChecked As Boolean
Get
Return m_OpenToolList_IsChecked
End Get
Set(value As Boolean)
m_OpenToolList_IsChecked = value
For Each ItemList In m_ListValue
If m_OpenToolList_IsChecked Then
ItemList.SetTool_Visibility(True)
ElseIf Not ItemList.bIsActive Then
ItemList.SetTool_Visibility(False)
End If
Next
NotifyPropertyChanged(NameOf(OpenToolList_IsChecked))
End Set
End Property
#Region "Messages"
Public ReadOnly Property SelectAllToolTip As String
Get
Return EgtMsg(63034)
End Get
End Property
Public ReadOnly Property DeselectAllToolTip As String
Get
Return EgtMsg(63035)
End Get
End Property
Public ReadOnly Property OpenToolListToolTip As String
Get
Return EgtMsg(63036)
End Get
End Property
Public ReadOnly Property CloseToolListToolTip As String
Get
Return EgtMsg(63037)
End Get
End Property
#End Region ' Messages
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
Sub New(sSubType As String)
' Recupero lista utensili per sottotipo
Dim nSubType As Integer = 0
Dim nType As Integer = 0
Dim sName As String = String.Empty
Dim sUUID As String = String.Empty
Dim sInfo As String = String.Empty
StringToInt(sSubType, nSubType)
Dim bNext As Boolean = EgtTdbGetFirstTool(nSubType, sName, nType)
While bNext
EgtTdbSetCurrTool(sName)
EgtTdbGetCurrToolParam(MCH_TP.UUID, sUUID)
m_ListValue.Add(New ToolParameter(sUUID, sName, Me))
bNext = EgtTdbGetNextTool(nSubType, sName, nType)
End While
End Sub
#End Region ' Constructor
#Region "METHODS"
Friend Overrides Function Serialize() As JsonParametersHelper
Dim sInfo As String = String.Empty
'If Not IsNothing(sSubType) Then
' For Each ItemTool As ToolParameter In m_ListValue
' If ItemTool.bIsActive Then
' sInfo &= ItemTool.sUUID & "," & ItemTool.sName & ";"
' End If
' Next
'End If
Dim JsonParametersHelper As New JsonParametersHelper(sName, sNameNge, sInfo, "tool")
Return JsonParametersHelper
End Function
Friend Sub CreateToolsViews()
m_ToolList_View = New ListCollectionView(m_ListValue)
m_ToolList_View.SortDescriptions.Add(New SortDescription("bIsActive", ListSortDirection.Descending))
End Sub
''' <summary>
''' Funzione per visualizzare le liste available e active tool
''' </summary>
Friend Sub ToolView()
For Each ItemList In m_ListValue
If ItemList.bIsActive AndAlso Not m_OpenToolList_IsChecked Then
ItemList.SetTool_Visibility(True)
Else
ItemList.SetTool_Visibility(False)
End If
Next
End Sub
#End Region ' Methods
End Class
Class GroupVisibilityConverter
Implements IMultiValueConverter
Public Function Convert(values() As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IMultiValueConverter.Convert
Dim items = TryCast(values(0), ReadOnlyObservableCollection(Of Object))
If IsNothing(items) OrElse items.Count = 0 Then
Return Visibility.Collapsed
End If
For Each item In items
Dim prop As PropertyInfo = item.GetType().GetProperty("sMinUserLevel")
If Not IsNothing(prop) Then
Dim levelObj = prop.GetValue(item)
Dim level As Integer = 0
If Not IsNothing(levelObj) AndAlso Integer.TryParse(levelObj.ToString(), level) AndAlso level <> 5 AndAlso level <> 10 Then
Return Visibility.Visible
ElseIf Map.refMainMenuVM.UserAdmin_IsChecked Then
Return Visibility.Visible
End If
End If
Next
Return Visibility.Collapsed
End Function
Public Function ConvertBack(value As Object, targetTypes() As Type, parameter As Object, culture As CultureInfo) As Object() Implements IMultiValueConverter.ConvertBack
Throw New NotImplementedException()
End Function
End Class