Imports System.Collections.ObjectModel Imports System.ComponentModel Imports System.IO Imports EgtBEAMWALL.Core Imports EgtUILib Imports EgtWPFLib5 Public Class MyMachGroupPanelVM Inherits NewMachGroupPanelVM #Region "FIELDS & PROPERTIES" Public ReadOnly Property m_MyMachGroupPanelM As MyMachGroupPanelM Get Return m_MachGroupPanelM End Get End Property #End Region ' FIELDS & PROPERTIES #Region "CONSTRUCTOR" Sub New(MachGroupPanelM As MachGroupPanelM) MyBase.New(MachGroupPanelM) ' Recupero la macchina di default Dim sDefaultMachine As String = String.Empty GetMainPrivateProfileString(S_MACH, K_CURRMACH, "", sDefaultMachine) ' Creo riferimento a questa classe in Map Map.SetRefMachGroupPanelVM(Me) '''InitMachGroupPanel(True, Map.refMachinePanelVM.MachineList.ToList(), sDefaultMachine) End Sub #End Region ' CONSTRUCTOR #Region "METHODS" Protected Overrides Sub CreateMachGroupVMList() Dim all As List(Of MachGroupVM) = (From MachGroupM In m_MachGroupPanelM.GetMachGroups() Select If(DirectCast(MachGroupM, MyMachGroupM).nMachineType = MachineType.BEAM, New BeamMachGroupVM(MachGroupM), New MachGroupVM(MachGroupM))).ToList() For Each MachGroupvM As MachGroupVM In all AddHandler MachGroupvM.PropertyChanged, AddressOf OnMachGroupVMPropertyChanged Next MachGroupVMList = New ObservableCollection(Of MachGroupVM)(all) AddHandler MachGroupVMList.CollectionChanged, AddressOf OnMachGroupVMListChanged End Sub Public Overrides Function InitMachGroupList(Optional bUseDefaults As Boolean = False) As Boolean ' Svuoto precedente lista di MachGroup MachGroupVMList.Clear() ' aggiorno copie m_MyMachGroupPanelM.UpdateDuplo() ' verifico se esistono già gruppi di lavorazione o se devo creare il primo Dim bOk As Boolean = False Dim nId = EgtGetFirstMachGroup() If nId <> GDB_ID.NULL Then bOk = EgtSetCurrMachGroup(nId) End If If Not bOk Then Return True ' carico lista dei gruppi di lavorazione m_MachGroupPanelM.MachGroupMList = MyMachGroupPanelM.LoadMyMachGroups(Map.refMachinePanelVM.MachineList.ToList()) ' elimino copie da cancellare m_MyMachGroupPanelM.DeleteDuplo() If bOk Then SelectedMachGroup = MachGroupVMList(0) EgtZoom(ZM.ALL) Return True End Function Public Function RefreshMachGroupList() As Boolean End Function Public Overrides Sub AddMachGroup() Dim SelMyMachine As MyMachine = Map.refMachinePanelVM.SelectedMachine Dim MyMachGroupM As MyMachGroupM = m_MyMachGroupPanelM.NewMyMachGroup(SelMyMachine.Name, SelMyMachine.nType) '' creo oggetto gruppo creato 'Dim sNewMachGroupName As String = String.Empty 'Dim sNewMachGroupMachineName As String = String.Empty 'EgtGetMachGroupName(nNewMachGroupID, sNewMachGroupName) 'EgtGetMachGroupMachineName(nNewMachGroupID, sNewMachGroupMachineName) 'Dim MyMachGroup As MyMachGroupM 'If Map.refMachinePanelVM.SelectedMachine.nType = MachineType.BEAM Then ' MyMachGroup = New BeamMachGroupVM(nNewMachGroupID, sNewMachGroupName, sNewMachGroupMachineName) 'Else ' MyMachGroup = New WallMachGroup(nNewMachGroupID, sNewMachGroupName, sNewMachGroupMachineName) 'End If '' lo aggiungo alla lista 'MachGroupList.Add(MyMachGroup) ' e lo seleziono SelectedMachGroup = MachGroupVMList.FirstOrDefault(Function(x) x.MachGroupM Is MyMachGroupM) End Sub Public Overrides Function OnPreSetCurrMachGroup() As Boolean EgtSetCurrentContext(Map.refSceneHostVM.MainScene.GetCtx()) Return True End Function Public Overrides Function OnPostSetCurrMachGroup() As Boolean ' Imposto vista solo tavola EgtSetMachineLook(MCH_LOOK.TAB) EgtSetView(VT.ISO_SW, False) EgtZoom(ZM.ALL) Return True End Function ' funzione che seleziona primo gruppo Friend Sub SelFirstMachGroup() If Not IsNothing(Me) AndAlso Not IsNothing(MachGroupVMList) AndAlso MachGroupVMList.Count > 0 Then SelectedMachGroup = MachGroupVMList(0) Else SelectedMachGroup = Nothing EgtResetCurrMachGroup() ' nascondo tutti i pezzi Map.refProjectVM.BTLStructureVM.HideAll() End If End Sub ' funzione che seleziona ultimo gruppo Friend Sub SelLastMachGroup() If Not IsNothing(Me) AndAlso Not IsNothing(MachGroupVMList) AndAlso MachGroupVMList.Count > 0 Then SelectedMachGroup = MachGroupVMList(MachGroupVMList.Count - 1) End If End Sub Friend Function GetLastMachGroup() As MachGroupVM If Not IsNothing(Me) AndAlso Not IsNothing(MachGroupVMList) AndAlso MachGroupVMList.Count > 0 Then Return MachGroupVMList(MachGroupVMList.Count - 1) End If Return Nothing End Function #End Region ' METHODS #Region "EVENTS" Protected Overrides Sub OnMachGroupAdded(sender As Object, e As MachGroupAddedEventArgs) Dim MachGroupVM As MachGroupVM = Nothing Select Case DirectCast(e.NewMachGroupM, MyMachGroupM).nMachineType Case Core.ConstBeam.MachineType.BEAM MachGroupVM = New BeamMachGroupVM(e.NewMachGroupM) Case Core.ConstBeam.MachineType.WALL 'MachGroupVM = New wallMachGroupVM(e.NewMachGroupM) Case Core.ConstBeam.MachineType.NULL Return End Select MachGroupVMList.Add(MachGroupVM) NotifyPropertyChanged(NameOf(MachGroupVMList)) End Sub Protected Overrides Sub OnMachGroupVMPropertyChanged(sender As Object, e As PropertyChangedEventArgs) Select Case e.PropertyName 'Case nameof(sender.sMATERIAL) End Select End Sub #End Region ' EVENTS End Class