Files
egtbeamwall/EgtBEAMWALL.Core/Lib/MachGroupPanelM.vb
Demetrio Cassarino 46f82e0286 -pulizia codice
2024-08-07 14:10:51 +02:00

223 lines
8.0 KiB
VB.net

Imports System.Windows
Imports EgtUILib
Imports EgtWPFLib5
Public Class MachGroupPanelM
#Region "FIELDS & PROPERTIES"
' Lista delle macchine disponibili
Protected m_MachineList As List(Of Machine)
' Macchina di default
Protected m_DefaultMachine As String = String.Empty
Public ReadOnly Property DefaultMachine As String
Get
Return m_DefaultMachine
End Get
End Property
' Variabile che definisce se il nome è automatico
Protected m_IsGroupNameAutomatic As Boolean = True
' Variabile che definisce se ci sono più gruppi di lavorazione
Protected m_IsMultiMachGroup As Boolean
Public ReadOnly Property IsMultiMachGroup As Boolean
Get
Return m_IsMultiMachGroup
End Get
End Property
' Nome base dei gruppi
Protected m_BaseName As String
Protected m_MachGroupMList As New List(Of MachGroupM)
Public Property MachGroupMList As List(Of MachGroupM)
Get
Return m_MachGroupMList
End Get
Set(value As List(Of MachGroupM))
m_MachGroupMList = value
End Set
End Property
Protected m_MachGroupPanel_Visibility As Visibility
Public Property MachGroupPanel_Visibility As Visibility
Get
Return m_MachGroupPanel_Visibility
End Get
Set(value As Visibility)
m_MachGroupPanel_Visibility = value
End Set
End Property
' Variabile che permette di abilitare/disabilitare i bottoni aggiungi e togli MachGroup
Protected m_IsEnabledAddRemove As Boolean
Public Property IsEnabledAddRemove As Boolean
Get
Return m_IsEnabledAddRemove
End Get
Set(value As Boolean)
m_IsEnabledAddRemove = value
End Set
End Property
' Variabile che definisce lo stato (attivi/disattivi) di tutti i gruppi tranne quello selezionato
Protected m_IsEnabledMachGroups As Boolean
Public Property IsEnabledMachGroups As Boolean
Get
Return m_IsEnabledMachGroups
End Get
Set(value As Boolean)
m_IsEnabledMachGroups = value
End Set
End Property
#End Region ' FIELDS & PROPERTIES
#Region "CONSTRUCTOR"
Protected Sub New()
End Sub
Public Shared Function CreateNewMachGroupPanel() As MachGroupPanelM
Return New MachGroupPanelM
End Function
Public Shared Function CreateMachGroupPanel(IsMultiMachGroup As Boolean,
MachineList As List(Of Machine), DefaultMachine As String,
Optional sBaseName As String = "MachGroup_1") As MachGroupPanelM
' Assegno nome base
' Recupero lista macchine
' Assegno macchina di default
' recupero i MachGroup
Dim NewMachGroupPanelM As New MachGroupPanelM With {
.m_IsMultiMachGroup = IsMultiMachGroup,
.m_BaseName = sBaseName,
.m_MachineList = MachineList,
.m_DefaultMachine = DefaultMachine,
.m_MachGroupMList = LoadMachGroups()
}
Return NewMachGroupPanelM
End Function
Public Shared Function LoadMachGroups() As List(Of MachGroupM)
Dim TempList As New List(Of MachGroupM)
Dim nId = EgtGetFirstMachGroup()
While nId <> GDB_ID.NULL
EgtSetCurrMachGroup(nId)
Dim sName As String = String.Empty
Dim sMachine As String = String.Empty
EgtGetMachGroupName(nId, sName)
EgtGetMachGroupMachineName(nId, sMachine)
TempList.Add(MachGroupM.CreateMachGroup(nId, sName, sMachine))
nId = EgtGetNextMachGroup(nId)
End While
Return TempList
End Function
#End Region ' CONSTRUCTOR
#Region "METHODS"
Public Event MachGroupAdded As EventHandler(Of MachGroupAddedEventArgs)
Public Event MachGroupRemoved As EventHandler(Of MachGroupAddedEventArgs)
Public Overridable Sub AddMachGroup(MachGroupM As MachGroupM)
If IsNothing(MachGroupM) Then Return
If Not m_MachGroupMList.Contains(MachGroupM) Then
m_MachGroupMList.Add(MachGroupM)
RaiseEvent MachGroupAdded(Me, New MachGroupAddedEventArgs(MachGroupM))
End If
End Sub
Public Overridable Sub RemoveMachGroup(MachGroupM As MachGroupM)
If IsNothing(MachGroupM) Then Return
If m_MachGroupMList.Contains(MachGroupM) AndAlso m_MachGroupMList.Remove(MachGroupM) Then
RaiseEvent MachGroupRemoved(Me, New MachGroupAddedEventArgs(MachGroupM))
End If
End Sub
Public Function GetMachGroups() As List(Of MachGroupM)
Return New List(Of MachGroupM)(m_MachGroupMList)
End Function
Public Overridable Function NewMachGroup() As MachGroupM
' Sistemazioni preliminari
OnPreNewMachGroup()
' Se non ci sono macchine disponibili esco con errore
If m_MachineList.Count <= 0 Then Return Nothing
' Creo il VM per chiedere nome e macchina a seconda del caso in cui mi trovo
Dim NewMachGroupWndVM As NewMachGroupWndVM = Nothing
Dim sNewMGrpName As String = m_BaseName
Dim sNewMachName As String = m_MachineList(0).Name
If m_IsMultiMachGroup Then
EgtGetMachGroupNewName(sNewMGrpName)
If m_MachineList.Count = 1 Then
If Not m_IsGroupNameAutomatic Then
NewMachGroupWndVM = New NewMachGroupWndVM(sNewMGrpName)
End If
Else
If m_IsGroupNameAutomatic Then
NewMachGroupWndVM = New NewMachGroupWndVM(m_DefaultMachine, m_MachineList)
Else
NewMachGroupWndVM = New NewMachGroupWndVM(sNewMGrpName, m_DefaultMachine, m_MachineList)
End If
End If
ElseIf EgtGetMachGroupCount() = 0 Then
If m_MachineList.Count > 1 Then
NewMachGroupWndVM = New NewMachGroupWndVM(m_DefaultMachine, m_MachineList)
End If
End If
' Se necessario, lancio finestra di acquisizione dati
If Not IsNothing(NewMachGroupWndVM) Then
' Se non esistono gruppi nella lista, rendo la finestra non chiudibile senza scelta
If m_MachGroupMList.Count = 0 Then NewMachGroupWndVM.IsClosable = False
' Lancio finestra
Dim NewMachGroupWndV As New NewMachGroupWndV(Application.Current.MainWindow, NewMachGroupWndVM)
If NewMachGroupWndV.ShowDialog() = False Then Return Nothing
' Recupero dati
If Not IsNothing(NewMachGroupWndVM.Name) Then sNewMGrpName = NewMachGroupWndVM.Name
If Not IsNothing(NewMachGroupWndVM.SelectedMachine) Then sNewMachName = NewMachGroupWndVM.SelectedMachine.Name
End If
' Creo il nuovo gruppo di lavorazione con i dati ottenuti a seconda del caso in cui mi trovo
Dim MachGroupM As MachGroupM = MachGroupM.CreateMachGroup(sNewMGrpName, sNewMachName)
If IsNothing(MachGroupM) Then Return Nothing
AddMachGroup(MachGroupM)
' Sistemazioni finali
m_DefaultMachine = sNewMachName
OnPostNewMachGroup()
Return MachGroupM
End Function
Public Function NewMachGroupWithDefaults() As MachGroupM
' Sistemazioni preliminari
OnPreNewMachGroup()
' Se non ci sono macchine disponibili esco con errore
If m_MachineList.Count <= 0 Then Return Nothing
' Assegno valori di default
Dim sNewMGrpName As String = m_BaseName
Dim sNewMachName As String = If(Machine.ExistsMachine(m_DefaultMachine, m_MachineList), m_DefaultMachine, m_MachineList(0).Name)
' Creo il nuovo gruppo di lavorazione con i dati ottenuti a seconda del caso in cui mi trovo
Dim MachGroupM As MachGroupM = MachGroupM.CreateMachGroup(sNewMGrpName, sNewMachName)
If IsNothing(MachGroupM) Then Return Nothing
AddMachGroup(MachGroupM)
' Sistemazioni finali
m_DefaultMachine = sNewMachName
OnPostNewMachGroup()
Return MachGroupM
End Function
Public Overridable Function OnPreNewMachGroup() As Boolean
Return True
End Function
Public Overridable Function OnPostNewMachGroup() As Boolean
Return True
End Function
Public Overridable Function OnPreRemoveCurrMachGroup() As Boolean
Return True
End Function
#End Region ' METHODS
End Class