Imports System.Collections.ObjectModel
Imports EgtBEAMWALL.Core
Imports EgtUILib
Imports EgtWPFLib5
Public Class TopPanelVM
Inherits VMBase
#Region "FIELDS & PROPERTIES"
Private Property m_GridDims As New ObservableCollection(Of GridDimension)
Public Property GridDims As ObservableCollection(Of GridDimension)
Get
Return m_GridDims
End Get
Set
m_GridDims = Value
NotifyPropertyChanged(NameOf(GridDims))
End Set
End Property
Friend Enum Tabs As Integer
OPTIMIZATION = 0
STATISTICS = 1
End Enum
Private m_SelTab As Tabs = Tabs.OPTIMIZATION
Public Property SelTab As Integer
Get
Return m_SelTab
End Get
Set(value As Integer)
m_SelTab = value
End Set
End Property
Friend Sub SetSelTab(SelTab As Tabs)
If m_SelTab = Tabs.STATISTICS Then
Map.refInstrumentPanelVM.SetStatisticsIsChecked(False)
End If
m_SelTab = SelTab
NotifyPropertyChanged(NameOf(SelTab))
End Sub
Private m_TopPanel_IsEnabled As Boolean = True
Public ReadOnly Property TopPanel_IsEnabled As Boolean
Get
Return m_TopPanel_IsEnabled
End Get
End Property
' Definizione comandi
Private m_cmdProduceAllRawPart As ICommand
Private m_cmdProduceRawPart As ICommand
Private m_cmdResetCALCRawPart As ICommand
Private m_cmdCopyRawPart As ICommand
Private m_cmdRemoveRawPart As ICommand
Private m_cmdRemovePart As ICommand
Private m_cmdMoveUpPart As ICommand
Private m_cmdMoveDownPart As ICommand
Private m_cmdReOrderPart As ICommand
Public ReadOnly Property MovePart_Visibility As Visibility
Get
If Not IsNothing(Map.refProjectVM) AndAlso Not IsNothing(Map.refProjectVM.BTLStructureVM) Then
Return If(Map.refProjectVM.BTLStructureVM.nPROJTYPE = BWType.BEAM, Visibility.Visible, Visibility.Collapsed)
End If
Return Visibility.Collapsed
End Get
End Property
#Region "Messages"
Public ReadOnly Property ProduceRawPart_ToolTip As String
Get
Return EgtMsg(61912)
End Get
End Property
Public ReadOnly Property ResetCALCRawPart_ToolTip As String
Get
Return EgtMsg(61924)
End Get
End Property
Public ReadOnly Property ProduceAllRawPart_ToolTip As String
Get
Return EgtMsg(61913)
End Get
End Property
Public ReadOnly Property CopyRawPart_ToolTip As String
Get
Return EgtMsg(61914)
End Get
End Property
Public ReadOnly Property RemoveRawPart_ToolTip As String
Get
Return EgtMsg(61915)
End Get
End Property
Public ReadOnly Property ReOrderPart_ToolTip As String
Get
Return EgtMsg(61916)
End Get
End Property
Public ReadOnly Property MoveUpPart_ToolTip As String
Get
Return EgtMsg(61917)
End Get
End Property
Public ReadOnly Property MoveDownPart_ToolTip As String
Get
Return EgtMsg(61918)
End Get
End Property
Public ReadOnly Property RemovePart_ToolTip As String
Get
Return EgtMsg(61919)
End Get
End Property
#End Region ' Messages
#End Region 'FIELDS & PROPERTIES
Sub New()
' imposto riferimento su mappa
Map.SetRefTopPanelVM(Me)
' imposto dimensioni colonne/righe della Grid
DimensionsIniFile.ReadGridDimensions(ConstDims.TOPPANEL_OPTIMIZER, GridDims)
End Sub
#Region "METHODS"
Friend Sub SetTopPanelIsEnabled(bIsEnabled As Boolean)
m_TopPanel_IsEnabled = bIsEnabled
NotifyPropertyChanged(NameOf(TopPanel_IsEnabled))
End Sub
#End Region ' METHODS
#Region "COMMANDS"
#Region "ProduceRawPart"
'''
''' Returns a command that do Exec.
'''
Public ReadOnly Property ProduceRawPart_Command As ICommand
Get
If m_cmdProduceRawPart Is Nothing Then
m_cmdProduceRawPart = New Command(AddressOf ProduceRawPart)
End If
Return m_cmdProduceRawPart
End Get
End Property
'''
''' Execute the Exec. This method is invoked by the ExecCommand.
'''
Public Sub ProduceRawPart()
If IsNothing(Map.refProdManagerVM.CurrProd) Then Return
Produce(Map.refMachGroupPanelVM.SelectedMachGroup)
End Sub
Private Sub Produce(MachGroup As MyMachGroupVM)
If IsNothing(MachGroup) Then Return
' se barra gia' assegnata a supervisore, esco
If MachGroup.nProduction_State >= ItemState.Assigned Then Return
If MachGroup.nGlobalState = CalcStates.OK Or MachGroup.nGlobalState = CalcStates.INFO Then
' se ci sono modifiche, salvo il pogetto
If EgtGetModified() Then
Map.refProdManagerVM.Save()
End If
' mando al supervisore
DbControllers.m_MachGroupController.UpdateSupervisor(Map.refProdManagerVM.CurrProd.nProdId, MachGroup.Id, DbControllers.m_SupervisorId)
DbControllers.m_MachGroupController.UpdateOrder(Map.refProdManagerVM.CurrProd.nProdId, MachGroup.Id, DbControllers.m_MachGroupController.GetMinIndex(Map.refProdManagerVM.CurrProd.nProdId) + 1)
MachGroup.SentToSupervisor()
For Each Part As PartVM In MachGroup.PartVMList
DbControllers.m_PartController.UpdateStatus(Map.refProdManagerVM.CurrProd.nProdId, MachGroup.Id, Part.nPartId, ItemState.Assigned)
Part.nProduction_State = ItemState.Assigned
Part.NotifyPropertyChanged(NameOf(Part.Background))
Next
Else
MessageBox.Show("Impossibile mandarlo in produzione perche' non lavorabile!")
End If
End Sub
#End Region ' ProduceRawPart
#Region "ProduceAllRawPart"
'''
''' Returns a command that do Exec.
'''
Public ReadOnly Property ProduceAllRawPart_Command As ICommand
Get
If m_cmdProduceAllRawPart Is Nothing Then
m_cmdProduceAllRawPart = New Command(AddressOf ProduceAllRawPart)
End If
Return m_cmdProduceAllRawPart
End Get
End Property
'''
''' Execute the Exec. This method is invoked by the ExecCommand.
'''
Public Sub ProduceAllRawPart()
If IsNothing(Map.refProdManagerVM.CurrProd) Then Return
If Map.refMachGroupPanelVM.MachGroupVMList.Count > 0 Then
For Each Machgroup In Map.refMachGroupPanelVM.MachGroupVMList
Produce(Machgroup)
Next
End If
End Sub
#End Region ' ProduceAllRawPart
#Region "ResetCALCRawPart"
'''
''' Returns a command that do Exec.
'''
Public ReadOnly Property ResetCALCRawPart_Command As ICommand
Get
If m_cmdResetCALCRawPart Is Nothing Then
m_cmdResetCALCRawPart = New Command(AddressOf ResetCALCRawPart)
End If
Return m_cmdResetCALCRawPart
End Get
End Property
'''
''' Execute the Exec. This method is invoked by the ExecCommand.
'''
Public Sub ResetCALCRawPart()
If IsNothing(Map.refProdManagerVM.CurrProd) Then Return
Dim SelMachGroup As MyMachGroupVM = Map.refMachGroupPanelVM.SelectedMachGroup
If IsNothing(SelMachGroup) Then Return
' se barra gia' assegnata a supervisore, esco
If SelMachGroup.nProduction_State >= ItemState.Assigned Then Return
If SelMachGroup.nGlobalState <> CalcStates.NOTCALCULATED Then
SelMachGroup.ResetCalcMachGroup()
End If
End Sub
#End Region ' ResetCALCRawPart
#Region "CopyRawPart"
'''
''' Returns a command that do Exec.
'''
Public ReadOnly Property CopyRawPart_Command As ICommand
Get
If m_cmdCopyRawPart Is Nothing Then
m_cmdCopyRawPart = New Command(AddressOf CopyRawPart)
End If
Return m_cmdCopyRawPart
End Get
End Property
'''
''' Execute the Exec. This method is invoked by the ExecCommand.
'''
Public Sub CopyRawPart()
If IsNothing(Map.refProdManagerVM.CurrProd) Then Return
Dim SelMachGroup As MyMachGroupVM = Map.refMachGroupPanelVM.SelectedMachGroup
If IsNothing(SelMachGroup) Then Return
' creo copia
Dim NewMachGroup As MyMachGroupVM = SelMachGroup.Copy()
If Not IsNothing(NewMachGroup) Then
' lo seleziono
Map.refProjectVM.MachGroupPanelVM.SelectedMachGroup = NewMachGroup
End If
End Sub
#End Region ' CopyRawPart
#Region "RemoveRawPart"
'''
''' Returns a command that do Exec.
'''
Public ReadOnly Property RemoveRawPart_Command As ICommand
Get
If m_cmdRemoveRawPart Is Nothing Then
m_cmdRemoveRawPart = New Command(AddressOf RemoveRawPart)
End If
Return m_cmdRemoveRawPart
End Get
End Property
'''
''' Execute the Exec. This method is invoked by the ExecCommand.
'''
Public Sub RemoveRawPart()
If IsNothing(Map.refProdManagerVM.CurrProd) Then Return
' se premuto shift
If (Keyboard.Modifiers And ModifierKeys.Shift) = ModifierKeys.Shift Then
' cancello tutti
For Index = Map.refMachGroupPanelVM.MachGroupVMList.Count - 1 To 0 Step -1
Dim CurrMachGroup As MyMachGroupVM = Map.refMachGroupPanelVM.MachGroupVMList(Index)
' se barra gia' assegnata a supervisore, esco
If CurrMachGroup.nProduction_State >= ItemState.Assigned Then Continue For
CurrMachGroup.DeleteMachGroup()
Next
Else
Dim SelMachGroup As MyMachGroupVM = Map.refMachGroupPanelVM.SelectedMachGroup
If IsNothing(SelMachGroup) Then Return
' se barra gia' assegnata a supervisore, esco
If SelMachGroup.nProduction_State >= ItemState.Assigned Then Return
SelMachGroup.DeleteMachGroup()
End If
End Sub
#End Region ' RemoveRawPart
#Region "RemovePart"
'''
''' Returns a command that do Exec.
'''
Public ReadOnly Property RemovePart_Command As ICommand
Get
If m_cmdRemovePart Is Nothing Then
m_cmdRemovePart = New Command(AddressOf RemovePart)
End If
Return m_cmdRemovePart
End Get
End Property
'''
''' Execute the Exec. This method is invoked by the ExecCommand.
'''
Public Sub RemovePart()
If IsNothing(Map.refProdManagerVM.CurrProd) Then Return
Dim SelMachGroup As MyMachGroupVM = Map.refMachGroupPanelVM.SelectedMachGroup
If IsNothing(SelMachGroup) Then Return
' se barra gia' assegnata a supervisore, esco
If SelMachGroup.nProduction_State >= ItemState.Assigned Then Return
Dim SelPart As PartVM = SelMachGroup.SelPart
If IsNothing(SelPart) Then Return
SelPart.DeletePart()
SelMachGroup.ResetCalcMachGroup()
End Sub
#End Region ' RemovePart
#Region "MoveUpPart"
'''
''' Returns a command that do Exec.
'''
Public ReadOnly Property MoveUpPart_Command As ICommand
Get
If m_cmdMoveUpPart Is Nothing Then
m_cmdMoveUpPart = New Command(AddressOf MoveUpPart)
End If
Return m_cmdMoveUpPart
End Get
End Property
'''
''' Execute the Exec. This method is invoked by the ExecCommand.
'''
Public Sub MoveUpPart()
If IsNothing(Map.refProdManagerVM.CurrProd) Then Return
Dim SelMachGroup As MyMachGroupVM = Map.refMachGroupPanelVM.SelectedMachGroup
If IsNothing(SelMachGroup) Then Return
' se barra gia' assegnata a supervisore, esco
If SelMachGroup.nProduction_State >= ItemState.Assigned Then Return
Dim SelPart As PartVM = SelMachGroup.SelPart
If IsNothing(SelPart) Then Return
If SelMachGroup.nType = MachineType.BEAM Then
SelMachGroup.MoveBeam(SelPart, MoveDirections.UP)
EgtDraw()
' riseleziono trave
SelMachGroup.SelPart = SelPart
End If
SelMachGroup.ResetCalcMachGroup()
End Sub
#End Region ' MoveUpPart
#Region "MoveDownPart"
'''
''' Returns a command that do Exec.
'''
Public ReadOnly Property MoveDownPart_Command As ICommand
Get
If m_cmdMoveDownPart Is Nothing Then
m_cmdMoveDownPart = New Command(AddressOf MoveDownPart)
End If
Return m_cmdMoveDownPart
End Get
End Property
'''
''' Execute the Exec. This method is invoked by the ExecCommand.
'''
Public Sub MoveDownPart()
If IsNothing(Map.refProdManagerVM.CurrProd) Then Return
Dim SelMachGroup As MyMachGroupVM = Map.refMachGroupPanelVM.SelectedMachGroup
If IsNothing(SelMachGroup) Then Return
' se barra gia' assegnata a supervisore, esco
If SelMachGroup.nProduction_State >= ItemState.Assigned Then Return
Dim SelPart As PartVM = SelMachGroup.SelPart
If IsNothing(SelPart) Then Return
If SelMachGroup.nType = MachineType.BEAM Then
SelMachGroup.MoveBeam(SelPart, MoveDirections.DOWN)
EgtDraw()
' riseleziono trave
SelMachGroup.SelPart = SelPart
End If
SelMachGroup.ResetCalcMachGroup()
End Sub
#End Region ' MoveDownPart
#Region "ReOrderPart"
'''
''' Returns a command that do Exec.
'''
Public ReadOnly Property ReOrderPart_Command As ICommand
Get
If m_cmdReOrderPart Is Nothing Then
m_cmdReOrderPart = New Command(AddressOf ReOrderPart)
End If
Return m_cmdReOrderPart
End Get
End Property
'''
''' Execute the Exec. This method is invoked by the ExecCommand.
'''
Public Sub ReOrderPart()
If IsNothing(Map.refProdManagerVM.CurrProd) Then Return
Dim SelMachGroup As MyMachGroupVM = Map.refMachGroupPanelVM.SelectedMachGroup
If IsNothing(SelMachGroup) Then Return
' se barra gia' assegnata a supervisore, esco
If SelMachGroup.nProduction_State >= ItemState.Assigned Then Return
Dim SelPart As PartVM = SelMachGroup.SelPart
If IsNothing(SelPart) Then Return
If SelMachGroup.nType = MachineType.BEAM Then
SelMachGroup.ReorderBeam()
' riseleziono trave
If Not IsNothing(SelPart) AndAlso (IsNothing(SelMachGroup.SelPart) OrElse SelPart.nPartId <> SelMachGroup.SelPart.nPartId) Then
SelMachGroup.SelPart = SelPart
End If
End If
SelMachGroup.ResetCalcMachGroup()
End Sub
#End Region ' ReOrderPart
#End Region ' COMMANDS
End Class