265 lines
9.2 KiB
VB.net
265 lines
9.2 KiB
VB.net
Imports System.ComponentModel
|
|
Imports System.IO
|
|
Imports System.Windows
|
|
Imports System.Windows.Controls
|
|
Imports System.Windows.Input
|
|
Imports EgtBEAMWALL.Core.ConstBeam
|
|
Imports EgtUILib
|
|
Imports EgtWPFLib5
|
|
Imports EgtBEAMWALL
|
|
Imports System.Windows.Media
|
|
|
|
Public Class NewOpenProjectFileDialogV
|
|
|
|
Private WithEvents m_OpenProjFileDialogVM As NewOpenProjectFileDialogVM
|
|
|
|
#Region "CONSTRUCTOR"
|
|
|
|
Sub New(Owner As Window, OpenProjFileDialogVM As NewOpenProjectFileDialogVM)
|
|
' Funzione che interpreta l'xaml
|
|
InitializeComponent()
|
|
Me.Owner = Owner
|
|
Me.DataContext = OpenProjFileDialogVM
|
|
' Assegno al riferimento locale al VM il VM preso dal DataContext
|
|
m_OpenProjFileDialogVM = OpenProjFileDialogVM
|
|
AddHandler Me.Loaded, AddressOf OpenProjectFileDialog_Loaded
|
|
AddHandler Me.Closing, AddressOf OpenProjectFileDialog_Closing
|
|
End Sub
|
|
|
|
#End Region ' CONSTRUCTOR
|
|
|
|
#Region "METHODS"
|
|
|
|
Public Function EgtShowDialog(ProjectType As ProjectType) As Boolean?
|
|
m_OpenProjFileDialogVM.Init(ProjectType)
|
|
' mostro la finestra di dialogo
|
|
Return Me.ShowDialog()
|
|
End Function
|
|
Public Function EgtShowDialog(ProjectType As ProjectType, ProjectList As List(Of ProjectFileVM)) As Boolean?
|
|
m_OpenProjFileDialogVM.Init(ProjectType, ProjectList)
|
|
' mostro la finestra di dialogo
|
|
Return Me.ShowDialog()
|
|
End Function
|
|
|
|
Public Function EgtShowDialog(ProjectType As ProjectType, GoToProd As Boolean) As Boolean?
|
|
m_OpenProjFileDialogVM.Init(ProjectType, Nothing, GoToProd)
|
|
' mostro la finestra di dialogo
|
|
Return Me.ShowDialog()
|
|
End Function
|
|
|
|
Private Sub OpenProjectFileDialog_Loaded(sender As Object, e As RoutedEventArgs)
|
|
' Carico e imposto posizione finestra
|
|
WinPosFromIniToWindow(S_OPENFILEDIALOG, K_VIEWOPTIMWINPLACE, Me)
|
|
End Sub
|
|
|
|
Private Sub OpenProjectFileDialog_Closing(sender As Object, e As System.ComponentModel.CancelEventArgs)
|
|
If (Keyboard.Modifiers And ModifierKeys.Alt) = ModifierKeys.Alt OrElse Keyboard.IsKeyDown(Key.F4) Then
|
|
e.Cancel = True
|
|
Return
|
|
End If
|
|
' Salvo posizione finestra (se non minimizzata)
|
|
WinPosFromWindowToIni(Me, S_OPENFILEDIALOG, K_VIEWOPTIMWINPLACE)
|
|
End Sub
|
|
|
|
#End Region ' METHODS
|
|
|
|
#Region "EVENTS"
|
|
|
|
Private Sub ProjectList_MouseDoubleClick(sender As Object, e As MouseButtonEventArgs)
|
|
m_OpenProjFileDialogVM.ProjDoubleClick()
|
|
End Sub
|
|
|
|
#End Region ' EVENTS
|
|
|
|
Private Sub OpenBtn_Click(sender As Object, e As RoutedEventArgs) Handles OpenBtn.Click
|
|
DialogResult = m_OpenProjFileDialogVM.VerifySelected()
|
|
End Sub
|
|
|
|
Private Sub CloseWindow(bDialogResult As Boolean) Handles m_OpenProjFileDialogVM.m_CloseWindow
|
|
Me.DialogResult = bDialogResult
|
|
End Sub
|
|
|
|
Private Sub MainDataGrid_CellEditEnding(sender As Object, e As DataGridCellEditEndingEventArgs)
|
|
'm_OpenProjFileDialogVM.SetIsEditNameActive(False)
|
|
End Sub
|
|
|
|
Private Sub MainDataGrid_Sorting(sender As Object, e As DataGridSortingEventArgs)
|
|
' aggiorno direziona colonna
|
|
Dim column As DataGridColumn = e.Column
|
|
column.SortDirection = If((column.SortDirection <> ListSortDirection.Ascending), ListSortDirection.Ascending, ListSortDirection.Descending)
|
|
'' ricalcolo colonne sort
|
|
'Dim datagrid As DataGrid = sender
|
|
'ProdItemComparer.RefreshColumns()
|
|
'' lancio sort custom
|
|
'm_OpenProjFileDialogVM.RefreshProdItemSort()
|
|
m_OpenProjFileDialogVM.SortPageList()
|
|
m_OpenProjFileDialogVM.UpdatePageList()
|
|
e.Handled = True
|
|
|
|
|
|
End Sub
|
|
|
|
End Class
|
|
|
|
Friend Class ProdItemComparer
|
|
Implements IComparer
|
|
|
|
Private Shared DataGrid As DataGrid
|
|
Friend Shared Sub SetDataGrid(value As DataGrid)
|
|
DataGrid = value
|
|
End Sub
|
|
|
|
Private Shared m_OpenProjFileDialogVM As NewOpenProjectFileDialogVM
|
|
Friend Shared Sub SetOpenProjFileDialogVM(value As NewOpenProjectFileDialogVM)
|
|
m_OpenProjFileDialogVM = value
|
|
End Sub
|
|
|
|
Private Shared m_ColumnList As New List(Of DataGridColumn)
|
|
Private Shared m_EgtColumnList As New List(Of EgtDataGridColumn)
|
|
|
|
Friend Shared Sub RefreshColumns()
|
|
m_ColumnList.Clear()
|
|
m_EgtColumnList.Clear()
|
|
For Each col In DataGrid.Columns
|
|
If Not IsNothing(col.SortDirection) Then
|
|
m_ColumnList.Add(col)
|
|
m_EgtColumnList.Add(m_OpenProjFileDialogVM.ProdColumns(col.DisplayIndex))
|
|
End If
|
|
Next
|
|
' Map.refRawPartListVM.SetRawPartListSorted(m_ColumnList.Count > 0)
|
|
End Sub
|
|
|
|
|
|
Public Function Compare(x As Object, y As Object) As Integer Implements IComparer.Compare
|
|
' Dim First As MyMachGroupVM = DirectCast(x, MyMachGroupVM)
|
|
' Dim Second As MyMachGroupVM = DirectCast(y, MyMachGroupVM)
|
|
' Dim bFirstProduced As Boolean = First.nProduction_State = Core.ItemState.WIP OrElse First.nProduction_State = Core.ItemState.Produced
|
|
' Dim bSecondProduced As Boolean = Second.nProduction_State = Core.ItemState.WIP OrElse Second.nProduction_State = Core.ItemState.Produced
|
|
' Dim bFirstInQueue As Boolean = First.bToBeProduced
|
|
' Dim bSecondInQueue As Boolean = Second.bToBeProduced
|
|
' ' verifico se gia' prodotti
|
|
' If bFirstProduced AndAlso bSecondProduced Then
|
|
' If First.nProductionIndex > Second.nProductionIndex Then
|
|
' Return 1
|
|
' ElseIf First.nProductionIndex < Second.nProductionIndex Then
|
|
' Return -1
|
|
' Else
|
|
' Return 0
|
|
' End If
|
|
' ElseIf bFirstProduced Then
|
|
' Return -1
|
|
' ElseIf bSecondProduced Then
|
|
' Return 1
|
|
' ElseIf bFirstInQueue AndAlso bSecondInQueue Then
|
|
' If First.nProductionIndex > Second.nProductionIndex Then
|
|
' Return 1
|
|
' ElseIf First.nProductionIndex < Second.nProductionIndex Then
|
|
' Return -1
|
|
' Else
|
|
' Return 0
|
|
' End If
|
|
' ElseIf bFirstInQueue Then
|
|
' Return -1
|
|
' ElseIf bSecondInQueue Then
|
|
' Return 1
|
|
' Else
|
|
' ' verifico ordine per colonne
|
|
' Dim ColumnIndex = 0
|
|
' While ColumnIndex <= m_EgtColumnList.Count - 1
|
|
' Dim nDir As ListSortDirection = If(m_ColumnList(ColumnIndex).SortDirection, 1, -1)
|
|
' Dim nCheck As Integer = Check(First, Second, nDir, m_EgtColumnList(ColumnIndex))
|
|
' If nCheck <> 0 Then
|
|
' Return nCheck
|
|
' End If
|
|
' ColumnIndex += 1
|
|
' End While
|
|
' ' se non trovo colonne, metto in ordine indice di produzione
|
|
' If First.nProductionIndex > Second.nProductionIndex Then
|
|
' Return 1
|
|
' ElseIf First.nProductionIndex < Second.nProductionIndex Then
|
|
' Return -1
|
|
' Else
|
|
' Return 0
|
|
' End If
|
|
' End If
|
|
End Function
|
|
|
|
Private Function Check(First As MyMachGroupVM, Second As MyMachGroupVM, nDirection As Integer, Column As EgtDataGridColumn) As Integer
|
|
Select Case Column.Name
|
|
Case COL_NAME
|
|
If First.nName > Second.nName Then
|
|
Return 1 * nDirection
|
|
ElseIf First.nName < Second.nName Then
|
|
Return -1 * nDirection
|
|
Else
|
|
Return 0
|
|
End If
|
|
Case COL_STARTCUT
|
|
If First.Id > Second.Id Then
|
|
Return 1 * nDirection
|
|
ElseIf First.Id < Second.Id Then
|
|
Return -1 * nDirection
|
|
Else
|
|
Return 0
|
|
End If
|
|
Case COL_W
|
|
If First.dW > Second.dW Then
|
|
Return 1 * nDirection
|
|
ElseIf First.dW < Second.dW Then
|
|
Return -1 * nDirection
|
|
Else
|
|
Return 0
|
|
End If
|
|
Case COL_H
|
|
If First.dH > Second.dH Then
|
|
Return 1 * nDirection
|
|
ElseIf First.dH < Second.dH Then
|
|
Return -1 * nDirection
|
|
Else
|
|
Return 0
|
|
End If
|
|
Case COL_L
|
|
If First.dL > Second.dL Then
|
|
Return 1 * nDirection
|
|
ElseIf First.dL < Second.dL Then
|
|
Return -1 * nDirection
|
|
Else
|
|
Return 0
|
|
End If
|
|
Case COL_POSZ
|
|
'If First.posz > Second.dL Then
|
|
' Return 1 * nDirection
|
|
'ElseIf First.dL < Second.dL Then
|
|
' Return -1 * nDirection
|
|
'Else
|
|
' Return 0
|
|
'End If
|
|
Case COL_MATERIAL
|
|
If First.sMATERIAL > Second.sMATERIAL Then
|
|
Return 1 * nDirection
|
|
ElseIf First.sMATERIAL < Second.sMATERIAL Then
|
|
Return -1 * nDirection
|
|
Else
|
|
Return 0
|
|
End If
|
|
Case COL_USAGE
|
|
If First.dUsage > Second.dUsage Then
|
|
Return 1 * nDirection
|
|
ElseIf First.dUsage < Second.dUsage Then
|
|
Return -1 * nDirection
|
|
Else
|
|
Return 0
|
|
End If
|
|
Case COL_WASTE
|
|
If First.dWaste > Second.dWaste Then
|
|
Return 1 * nDirection
|
|
ElseIf First.dWaste < Second.dWaste Then
|
|
Return -1 * nDirection
|
|
Else
|
|
Return 0
|
|
End If
|
|
End Select
|
|
End Function
|
|
|
|
End Class
|