Imports System.Collections.ObjectModel
Imports EgtBEAMWALL.Core
Imports EgtUILib
Imports EgtWPFLib5
Public Class LeftPanelVM
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
Private m_LeftPanel_IsEnabled As Boolean = True
Public ReadOnly Property LeftPanel_IsEnabled As Boolean
Get
Return m_LeftPanel_IsEnabled
End Get
End Property
Public ReadOnly Property SearchFilter_IsEnabled As Boolean
Get
Return Not Map.refFreeContourManagerVM.bIsActive
End Get
End Property
Private m_OnlyProdPartManagerVisibility As Visibility = Visibility.Collapsed
Public ReadOnly Property OnlyProdPartManagerVisibility As Visibility
Get
Return m_OnlyProdPartManagerVisibility
End Get
End Property
Friend Sub SetOnlyProdPartManager_Visibility(value As Visibility)
m_OnlyProdPartManagerVisibility = value
NotifyPropertyChanged(NameOf(OnlyProdPartManagerVisibility))
End Sub
Private m_IsFilterBtnOpen As Boolean = False
Public Property IsFilterBtnOpen As Boolean
Get
Return m_IsFilterBtnOpen
End Get
Set(value As Boolean)
m_IsFilterBtnOpen = value
End Set
End Property
Friend Sub SetIsFilterBtnOpen(bIsFilterBtnOpen As Boolean)
m_IsFilterBtnOpen = bIsFilterBtnOpen
NotifyPropertyChanged(NameOf(IsFilterBtnOpen))
End Sub
' Definizione comandi
Private m_cmdVerifyAll As ICommand
Private m_cmdShowPopUpFilterBtnCmd As ICommand
Private m_cmdBackRotation As ICommand
Private m_cmdInvert As ICommand
Private m_cmdResetCalc As ICommand
#Region "Messages"
Public ReadOnly Property SearchFilter_Msg As String
Get
Return EgtMsg(61949)
End Get
End Property
Public ReadOnly Property Section_Msg As String
Get
Return EgtMsg(61771)
End Get
End Property
Public ReadOnly Property Group_Msg As String
Get
Return EgtMsg(61624)
End Get
End Property
Public ReadOnly Property SubGroup_Msg As String
Get
Return EgtMsg(61623)
End Get
End Property
Public ReadOnly Property ParType_Msg As String
Get
Return EgtMsg(61950)
End Get
End Property
Public ReadOnly Property ParValue_Msg As String
Get
Return EgtMsg(61951)
End Get
End Property
Public ReadOnly Property Pdn_Msg As String
Get
Return EgtMsg(61809)
End Get
End Property
Public ReadOnly Property Description_Msg As String
Get
Return EgtMsg(62511)
End Get
End Property
Public ReadOnly Property VerifyAll_ToolTip As String
Get
Return EgtMsg(61928)
End Get
End Property
Public ReadOnly Property FilterAll_ToolTip As String
Get
Return EgtMsg(62570)
End Get
End Property
Public ReadOnly Property ResetCalc_ToolTip As String
Get
Return EgtMsg(61940)
End Get
End Property
#End Region ' Messages
#End Region 'FIELDS & PROPERTIES
#Region "CONSTRUCTOR"
Sub New()
' imposto riferimento su mappa
Map.SetRefLeftPanelVM(Me)
' imposto dimensioni colonne/righe della Grid
DimensionsIniFile.ReadGridDimensions(ConstDims.LEFTPANEL_VIEW, GridDims)
End Sub
#End Region ' Constructor
#Region "METHODS"
Friend Sub SetLeftPanelIsEnabled(bIsEnabled As Boolean)
m_LeftPanel_IsEnabled = bIsEnabled
NotifyPropertyChanged(NameOf(LeftPanel_IsEnabled))
NotifyPropertyChanged(NameOf(SearchFilter_IsEnabled))
End Sub
' funzione che gestisce risposta da thread di verifica, aggiorna progress e segnala comando di interruzione
Private Sub ManageCalc(dProgress As Double, sProgress As String, ByRef bCancel As Boolean)
If dProgress = 0 Then
Map.refMyStatusBarVM.SetLoadingProgress_Visibility(True)
Map.refMyStatusBarVM.SetStopProgress_IsActive(True)
Map.refMyStatusBarVM.SetStopProgress_IsEnabled(True)
Map.refMyStatusBarVM.SetOutputMessage(sProgress)
Map.refMyStatusBarVM.SetStopProgress_IsActive(True)
Map.refMyStatusBarVM.SetStopProgress_IsEnabled(True)
ElseIf dProgress = 1 Then
Map.refMyStatusBarVM.SetLoadingProgress_Visibility(False)
Map.refMyStatusBarVM.SetStopProgress_IsActive(False)
Map.refMyStatusBarVM.SetStopProgress_IsEnabled(False)
Map.refMyStatusBarVM.SetOutputMessage(sProgress, 3)
End If
bCancel = Map.refMyStatusBarVM.bStopProgress
Map.refMyStatusBarVM.SetLoadingProgress(dProgress * 100)
Map.refMyStatusBarVM.SetOutputMessage(sProgress)
End Sub
#End Region ' METHODS
#Region "COMMANDS"
#Region "VerifyAll"
'''
''' Returns a command that do Open.
'''
Public ReadOnly Property VerifyAll_Command As ICommand
Get
If m_cmdVerifyAll Is Nothing Then
m_cmdVerifyAll = New Command(AddressOf VerifyAll)
End If
Return m_cmdVerifyAll
End Get
End Property
'''
''' Execute the Open. This method is invoked by the OpenCommand.
'''
Friend Sub VerifyAll()
If (IsNothing(ProjectManagerVM.CurrProd) OrElse IsNothing(Map.refProjectVM.BTLStructureVM) OrElse IsNothing(Map.refProjectVM.MachGroupPanelVM)) Then Return
Map.refCALCPanelVM.VerifyAll(ProjectType.PROJ)
Return
End Sub
#End Region ' VerifyAll
#Region "ShowPopUpFilterBtnCommand"
Public ReadOnly Property ShowPopUpFilterBtnCommand As ICommand
Get
If m_cmdShowPopUpFilterBtnCmd Is Nothing Then
m_cmdShowPopUpFilterBtnCmd = New Command(AddressOf ShowPopUpFilterBtn)
End If
Return m_cmdShowPopUpFilterBtnCmd
End Get
End Property
Public Sub ShowPopUpFilterBtn(ByVal param As Object)
If m_IsFilterBtnOpen Then
SetIsFilterBtnOpen(False)
Else
SetIsFilterBtnOpen(True)
End If
End Sub
#End Region ' ShowPopUpFilterBtnCommand
#Region "BackRotation"
'''
''' Returns a command that do Exec.
'''
Public ReadOnly Property BackRotation_Command As ICommand
Get
If m_cmdBackRotation Is Nothing Then
m_cmdBackRotation = New Command(AddressOf BackRotation)
End If
Return m_cmdBackRotation
End Get
End Property
'''
''' Execute the Exec. This method is invoked by the ExecCommand.
'''
Public Sub BackRotation()
If IsNothing(ProjectManagerVM.CurrProj) OrElse IsNothing(Map.refProjectVM.BTLStructureVM) Then Return
' salvo sezione impostata
Dim CurrSection As SectionXMaterial = Map.refProjectVM.BTLStructureVM.SelSection
' se modalita' assemblato
Dim bShowBuilding As Boolean = Map.refShowBeamPanelVM.ShowBuilding_IsChecked
If bShowBuilding AndAlso Map.refShowBeamPanelVM.bShowAll Then
' devo smontarlo prima di calcolare le travi, altrimenti non trova i pezzi
Map.refProjectVM.BTLStructureVM.ShowBuilding(False, False)
End If
' ruoto i pezzi selezionati
For Each Part In Map.refProjectVM.BTLStructureVM.SelBTLParts
Part.BackRotation(False, False)
Next
' se assemblato lo ripristino
If bShowBuilding Then Map.refProjectVM.BTLStructureVM.ShowBuilding(True, False)
' se progetto travi e sezione precedente diversa da vuota (tutti i pezzi)
If Map.refProjectVM.BTLStructureVM.nPROJTYPE = BWType.BEAM AndAlso CurrSection <> SectionXMaterial.Empty Then
' se esiste, imposto sezione inversa
Dim InverseSection As SectionXMaterial = Map.refProjectVM.BTLStructureVM.SectionList.FirstOrDefault(Function(x) x.dH = CurrSection.dW AndAlso x.dW = CurrSection.dH AndAlso x.sMaterial(0) = CurrSection.sMaterial(0))
If Not IsNothing(InverseSection) Then Map.refProjectVM.BTLStructureVM.SetSelSection(InverseSection)
End If
EgtDraw()
End Sub
#End Region ' BackRotation
#Region "Invert"
'''
''' Returns a command that do Exec.
'''
Public ReadOnly Property Invert_Command As ICommand
Get
If m_cmdInvert Is Nothing Then
m_cmdInvert = New Command(AddressOf Invert)
End If
Return m_cmdInvert
End Get
End Property
'''
''' Execute the Exec. This method is invoked by the ExecCommand.
'''
Public Sub Invert()
If IsNothing(ProjectManagerVM.CurrProd) OrElse IsNothing(Map.refProjectVM.BTLStructureVM) Then Return
' se modalita' assemblato
Dim bShowBuilding As Boolean = Map.refShowBeamPanelVM.ShowBuilding_IsChecked
If bShowBuilding AndAlso Map.refShowBeamPanelVM.bShowAll Then
' devo smontarlo prima di calcolare le travi, altrimenti non trova i pezzi
Map.refProjectVM.BTLStructureVM.ShowBuilding(False, False)
End If
' inverto i pezzi selezionati
For Each Part In Map.refProjectVM.BTLStructureVM.SelBTLParts
Part.Invert()
Next
' se assemblato lo ripristino
If bShowBuilding Then Map.refProjectVM.BTLStructureVM.ShowBuilding(True, False)
End Sub
#End Region ' Invert
#Region "ResetCalc"
'''
''' Returns a command that do Exec.
'''
Public ReadOnly Property ResetCalc_Command As ICommand
Get
If m_cmdResetCalc Is Nothing Then
m_cmdResetCalc = New Command(AddressOf ResetCalc)
End If
Return m_cmdResetCalc
End Get
End Property
'''
''' Execute the Exec. This method is invoked by the ExecCommand.
'''
Public Sub ResetCalc()
If (IsNothing(ProjectManagerVM.CurrProd) OrElse IsNothing(Map.refProjectVM.BTLStructureVM) OrElse IsNothing(Map.refProjectVM.MachGroupPanelVM)) Then Return
For Each Part In Map.refProjectVM.BTLStructureVM.BTLPartVMList
If Part.nGlobalState <> CalcStates.NOTCALCULATED Then
' resetto stato dei calcoli
Part.ResetCalcTotalPart()
End If
Next
End Sub
#End Region ' ResetCalc
#End Region ' COMMANDS
End Class