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