Imports EgtWPFLib5
Imports System.Collections.ObjectModel
Imports EgtUILib
Imports System.IO
Public Class SaveAsStrategyVM
Inherits VMBase
#Region "FIELDS & PROPERTIES"
' Evento per chiusura finestra
Public Event m_CloseWindow(bDialogResult As Boolean)
' Nome file json customconfig
Private m_sFileNameCustomConfig As String
Public Property sFileNameCustomConfig As String
Get
Return m_sFileNameCustomConfig
End Get
Set(value As String)
m_sFileNameCustomConfig = value
CheckJsonFile()
NotifyPropertyChanged(NameOf(sFileNameCustomConfig))
End Set
End Property
' Usato per gestire il fatto di non sovrascrivere il file
Private m_bSaveAsIsEnable As Boolean = True
Public ReadOnly Property bSaveAsIsEnable As Boolean
Get
Return m_bSaveAsIsEnable
End Get
End Property
Friend Sub SetSaveAsIsEnable(value As Boolean)
m_bSaveAsIsEnable = value
NotifyPropertyChanged(NameOf(bSaveAsIsEnable))
End Sub
' Usato per visualizzare messaggio di errore
Private m_ErrorMsgVisibility As Visibility = Visibility.Collapsed
Public ReadOnly Property ErrorMsgVisibility As Visibility
Get
Return m_ErrorMsgVisibility
End Get
End Property
Friend Sub SetErrorMsgVisibility(value As Visibility)
m_ErrorMsgVisibility = value
NotifyPropertyChanged(NameOf(ErrorMsgVisibility))
End Sub
' Messaggio di errore
Private m_sErrorMsg As String = String.Empty
Public ReadOnly Property sErrorMsg As String
Get
Return m_sErrorMsg
End Get
End Property
Friend Sub SetErrorMsg(value As String)
m_sErrorMsg = value
NotifyPropertyChanged(NameOf(sErrorMsg))
End Sub
' Lista dei file json presenti nella cartella AISetUp
Public ReadOnly Property StrategySetupList As ObservableCollection(Of StrategySetup)
Get
Return Map.refStrategyManagerVM.StrategySetupList
End Get
End Property
Private m_SelStrategySetup As StrategySetup = Map.refStrategyManagerVM.SelStrategySetup
Public Property SelStrategySetup As StrategySetup
Get
Return Map.refStrategyManagerVM.SelStrategySetup
End Get
Set(value As StrategySetup)
m_SelStrategySetup = value
CheckJsonFile()
NotifyPropertyChanged(NameOf(SelStrategySetup))
End Set
End Property
Private m_bOpen_Visibility As Visibility = Visibility.Collapsed
Public ReadOnly Property bOpen_Visibility As Visibility
Get
Return m_bOpen_Visibility
End Get
End Property
Friend Sub SetbOpen_Visibility(value As Boolean)
m_bOpen_Visibility = If(value, Visibility.Visible, Visibility.Collapsed)
NotifyPropertyChanged(NameOf(bOpen_Visibility))
End Sub
Private m_bSave_Visibility As Visibility = Visibility.Collapsed
Public ReadOnly Property bSave_Visibility As Visibility
Get
Return m_bSave_Visibility
End Get
End Property
Friend Sub SetbSave_Visibility(value As Boolean)
m_bSave_Visibility = If(value, Visibility.Visible, Visibility.Collapsed)
NotifyPropertyChanged(NameOf(bSave_Visibility))
End Sub
#Region "Messages"
Public ReadOnly Property NewToolTip As String
Get
Return EgtMsg(30501)
End Get
End Property
Public ReadOnly Property SaveAsToolTip As String
Get
Return EgtMsg(62572)
End Get
End Property
#End Region ' Messages
' Definizione Comandi
Private m_SaveAsCommand As ICommand
Private m_cmdCloseCommand As ICommand
#End Region ' Fields & Properties
#Region "METHODS"
'''
''' Funzione che controlla se il file json è già presente
'''
Private Sub CheckJsonFile()
' Controllo se il nome del file è stato scritto
Dim fileExists As Boolean = False
For Each ItemSetUp As StrategySetup In StrategySetupList
If ItemSetUp.sName = m_sFileNameCustomConfig Then
fileExists = True
End If
Next
' Imposta il messaggio di errore e la visibilità in base alla presenza del file
SetErrorMsg(If(fileExists, EgtMsg(62112), String.Empty))
' Abilito o Disabilito pulsante saveas
SetSaveAsIsEnable(Not fileExists)
' Rendo visibile o invisibile textblock messaggio
SetErrorMsgVisibility(If(fileExists, Visibility.Visible, Visibility.Collapsed))
End Sub
#End Region ' Methods
#Region "COMMANDS"
#Region "SaveAsCommand"
Public ReadOnly Property SaveAsCommand As ICommand
Get
If m_SaveAsCommand Is Nothing Then
m_SaveAsCommand = New Command(AddressOf SaveAs)
End If
Return m_SaveAsCommand
End Get
End Property
'''
''' Funzione che salva il file json CustomerConfig
'''
Public Sub SaveAs()
Dim sAISetupDirPath As String = Map.refMainWindowVM.MainWindowM.GetAISetupDirPath(ProjectManagerVM.CurrProd.nType, False)
Dim sStrategyConfigurationFilePath As String = sAISetupDirPath & "\" & sFileNameCustomConfig & ".json"
If String.IsNullOrWhiteSpace(Path.GetFileNameWithoutExtension(sFileNameCustomConfig)) Then
EgtBEAMWALL.Core.EgtMessageBoxV.Show(Application.Current.MainWindow, EgtMsg(62578), EgtMsg(15002), MessageBoxButton.OK, MessageBoxImage.Warning)
Return
End If
Dim Strategy As New StrategySetup(sFileNameCustomConfig)
Map.refStrategyManagerVM.SelStrategySetup = Strategy
Map.refStrategyManagerVM.StrategySetupList.Add(Strategy)
If m_bSave_Visibility = Visibility.Visible Then
If Not IsNothing(Map.refGeneralParametersStrategyVM) Then Map.refStrategyManagerVM.SelStrategySetup.Write(Map.refGeneralParametersStrategyVM.GeneralParametersList, False)
Map.refStrategyManagerVM.SetbIsModifyStrategy(False)
Else
Map.refStrategyManagerVM.SetbIsModifyStrategy(True)
End If
NotifyPropertyChanged(NameOf(StrategySetupList))
RaiseEvent m_CloseWindow(True)
End Sub
#End Region ' SaveAsCommand
#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