Imports System.Collections.ObjectModel Imports System.IO Imports EgtUILib Imports EgtWPFLib5 Imports EgtBEAMWALL.Core Public Class ProjectTypeWndVM Inherits VMBase #Region "FIELDS & PROPERTIES" Friend Event m_CloseWindow(bDialogResult As Boolean) ' recupero la lista delle Macchine da MachinePanel Private m_MachineList As ObservableCollection(Of Machine) = Map.refMachinePanelVM.MachineList Public ReadOnly Property MachineList As ObservableCollection(Of Machine) Get Return m_MachineList End Get End Property ' La Macchina selezionata di default sarà quella correntemente selezionata in MachinePanel Private m_SelMachine As Machine = MachineList.FirstOrDefault(Function(x) x.Name = Map.refMachinePanelVM.SelectedMachine.Name) Public Property SelMachine As Machine Get Return m_SelMachine End Get Set(value As Machine) If value IsNot m_SelMachine Then m_SelMachine = value Dim nMachType As MachineType = DirectCast(SelMachine, MyMachine).nType IsBoth_Visibility = If(nMachType = MachineType.BOTH, Visibility.Visible, Visibility.Collapsed) End If End Set End Property ' Se la Macchina selezionata è di tipo BOTH verrà mostrata anche la selezione del Tipo Private m_IsBoth_Visibility As Visibility = If(Not IsNothing(Map.refProjManagerVM.CurrProj) AndAlso DirectCast(SelMachine, MyMachine).nType = MachineType.BOTH, Visibility.Visible, Visibility.Collapsed) Public Property IsBoth_Visibility As Visibility Get Return m_IsBoth_Visibility End Get Set(value As Visibility) If value <> m_IsBoth_Visibility Then m_IsBoth_Visibility = value NotifyPropertyChanged(NameOf(IsBoth_Visibility)) End If End Set End Property Private m_TypeList As New ObservableCollection(Of BWType)({BWType.BEAM, BWType.WALL}) Public ReadOnly Property TypeList As ObservableCollection(Of BWType) Get Return m_TypeList End Get End Property ' Se la Macchina selezionata è di tipo BOTH verrà selezionato di default il Tipo del progetto corrente Private m_nSelType As BWType = If(Not IsNothing(Map.refProjManagerVM.CurrProj) AndAlso DirectCast(SelMachine, MyMachine).nType = MachineType.BOTH, Map.refProjManagerVM.CurrProj.nType, Nothing) Public Property nSelType As BWType Get Return m_nSelType End Get Set(value As BWType) If value <> m_nSelType Then m_nSelType = value End If End Set End Property ' Definizione comandi Private m_cmdOk As ICommand #End Region ' FIELDS & PROPERTIES #Region "MESSAGES" Public ReadOnly Property ChooseMachine_Msg As String Get Return EgtMsg(61884) End Get End Property Public ReadOnly Property ChooseType_Msg As String Get Return EgtMsg(61879) End Get End Property #End Region ' MESSAGES #Region "COMMANDS" #Region "Ok" Public ReadOnly Property Ok_Command As ICommand Get If m_cmdOk Is Nothing Then m_cmdOk = New Command(AddressOf Ok) End If Return m_cmdOk End Get End Property Public Sub Ok() If Not IsNothing(SelMachine) Then Dim nMachType As MachineType = DirectCast(SelMachine, MyMachine).nType ' se la macchina selezionata è sia travi che pareti valuto anche tipo scelto di progetto da aprire/importare If nMachType = MachineType.BOTH Then Select Case nSelType Case BWType.BEAM, BWType.WALL Map.refMachinePanelVM.SelectedMachine = MachineList(MachineList.IndexOf(SelMachine)) RaiseEvent m_CloseWindow(True) Case Else ' se non seleziono nessuna tipo progetto lo segnalo con un MessageBox MessageBox.Show(EgtMsg(61880), EgtMsg(30009)) End Select Else ' altrimenti setto la macchina e il tipo associato ad essa Map.refMachinePanelVM.SelectedMachine = MachineList(MachineList.IndexOf(SelMachine)) nSelType = nMachType RaiseEvent m_CloseWindow(True) End If Else ' se non seleziono nessuna macchina lo segnalo con un MessageBox MessageBox.Show(EgtMsg(61880), EgtMsg(30009)) End If End Sub #End Region ' Ok #End Region ' COMMANDS End Class