223 lines
8.0 KiB
VB.net
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
|