Imports System.Collections.ObjectModel
Imports System.Threading
Imports EgtBEAMWALL.Core
Imports EgtUILib
Imports EgtWPFLib5
Public Class OptimizePanelVM
Inherits VMBase
#Region "FIELDS & PROPERTIES"
Friend m_bNestingRunning As Boolean = False
Friend m_StopNesting As Boolean = False
Public Enum PartType As Integer
MATERIAL = 0
ALL = 1
End Enum
Friend Enum OriginType As Integer
STANDARD = 0
FROM_BTL = 1
End Enum
Private m_PartTypeList As New List(Of IdNameStruct)({New IdNameStruct(PartType.MATERIAL, "Materiale"),
New IdNameStruct(PartType.ALL, "Tutti")})
Public ReadOnly Property PartTypeList As List(Of IdNameStruct)
Get
Return m_PartTypeList
End Get
End Property
Private m_SelPartType As IdNameStruct
Public Property SelPartType As IdNameStruct
Get
Return m_SelPartType
End Get
Set(value As IdNameStruct)
m_SelPartType = value
End Set
End Property
Private m_OriginTypeList As New List(Of IdNameStruct)({New IdNameStruct(OriginType.STANDARD, "Standard"),
New IdNameStruct(OriginType.FROM_BTL, "Da BTL")})
Public ReadOnly Property OriginTypeList As List(Of IdNameStruct)
Get
Return m_OriginTypeList
End Get
End Property
Private m_SelOriginType As IdNameStruct
Public Property SelOriginType As IdNameStruct
Get
Return m_SelOriginType
End Get
Set(value As IdNameStruct)
m_SelOriginType = value
End Set
End Property
Private m_OptimizePanel_IsEnabled As Boolean = True
Public ReadOnly Property OptimizePanel_IsEnabled As Boolean
Get
Return m_OptimizePanel_IsEnabled
End Get
End Property
#Region "Messages"
Public ReadOnly Property Optimize_Msg As String
Get
Return EgtMsg(61833)
End Get
End Property
Public ReadOnly Property Warehouse_ToolTip As String
Get
Return EgtMsg(61920)
End Get
End Property
#End Region ' Messages
' Definizione comandi
Private m_cmdOptimize As ICommand
Private m_cmdWarehouse As ICommand
#End Region ' FIELDS & PROPERTIES
#Region "CONSTRUCTOR"
Sub New()
' aggiungo riferimento a Map
Map.SetRefOptimizePanelVM(Me)
m_SelPartType = PartTypeList(0)
m_SelOriginType = OriginTypeList(0)
NotifyPropertyChanged(NameOf(SelPartType))
End Sub
#End Region ' CONSTRUCTOR
#Region "METHODS"
Friend Sub SetOptimizePanelIsEnabled(bIsEnabled As Boolean)
m_OptimizePanel_IsEnabled = bIsEnabled
NotifyPropertyChanged(NameOf(OptimizePanel_IsEnabled))
End Sub
Friend Function ProcessEvents(ByVal nProg As Integer, ByVal nPause As Integer) As Integer
If nProg > 0 And nProg <= 100 Then
NestingRunningWndVM.m_CurrState = SectionProgress.NestStates.NEST
NestingRunningWndVM.m_CurrTime = nProg
ElseIf nProg > 100 And nProg <= 200 Then
NestingRunningWndVM.m_CurrState = SectionProgress.NestStates.ADDPART
NestingRunningWndVM.m_CurrTime = nProg - 100
ElseIf nProg > 200 And nProg <= 300 Then
NestingRunningWndVM.m_CurrState = SectionProgress.NestStates.CALCRAWPART
NestingRunningWndVM.m_CurrTime = nProg - 200
End If
' Costringo ad aggiornare
UpdateUI()
' Eventuale attesa
Thread.Sleep(nPause)
' Ritorno eventuale stop
If m_StopNesting Then
m_StopNesting = False
Return 1
Else
Return 0
End If
End Function
#End Region ' METHODS
#Region "COMMANDS"
#Region "Optimize"
'''
''' Returns a command that do Open.
'''
Public ReadOnly Property Optimize_Command As ICommand
Get
If m_cmdOptimize Is Nothing Then
m_cmdOptimize = New Command(AddressOf Optimize)
End If
Return m_cmdOptimize
End Get
End Property
'''
''' Execute the Open. This method is invoked by the OpenCommand.
'''
Friend Sub Optimize()
If IsNothing(m_SelPartType) OrElse IsNothing(m_SelOriginType) Then Return
If IsNothing(Map.refProjectVM.BTLStructureVM) OrElse IsNothing(Map.refProjectVM.BTLStructureVM.BTLPartVMList) OrElse Map.refProjectVM.BTLStructureVM.BTLPartVMList.Count = 0 Then Return
' apro finestra di attesa nesting
m_bNestingRunning = True
Dim NestingRunninWndVM As New NestingRunningWndVM(m_SelPartType.Id)
Dim NestingRunningWnd As New NestingRunningWndV(Application.Current.MainWindow, NestingRunninWndVM)
NestingRunningWnd.ShowDialog()
m_bNestingRunning = False
End Sub
#End Region ' Optimize
#Region "Warehouse"
'''
''' Returns a command that do Open.
'''
Public ReadOnly Property Warehouse_Command As ICommand
Get
If m_cmdWarehouse Is Nothing Then
m_cmdWarehouse = New Command(AddressOf Warehouse)
End If
Return m_cmdWarehouse
End Get
End Property
'''
''' Execute the Open. This method is invoked by the OpenCommand.
'''
Friend Sub Warehouse()
If Not IsNothing(Map.refProjectVM.BTLStructureVM) Then 'If Not IsNothing(Map.refProdManagerVM.CurrProd) Then
Dim WarehouseWnd As New WarehouseWndV(Application.Current.MainWindow, New WarehouseWndVM())
WarehouseWnd.ShowDialog()
End If
End Sub
#End Region ' Warehouse
#End Region ' COMMANDS
End Class