Imports System.IO Imports EgtUILib Public Class OpenProjectFileDialogVM Inherits VMBase Friend Event m_CloseWindow(bDialogResult As Boolean) Private m_ProjectType As ProjectType Private m_FileNameTxBl As TextBlock Private m_sDirectory As String Public Property Directory As String Get Return m_sDirectory End Get Set(value As String) m_sDirectory = value End Set End Property Private m_sFilter As String Public Property Filter As String Get Return m_sFilter End Get Set(value As String) m_sFilter = value End Set End Property Private m_sFileNameFilter As Predicate(Of String) Public Property FileNameFilter As Predicate(Of String) Get Return m_sFileNameFilter End Get Set(value As Predicate(Of String)) m_sFileNameFilter = value End Set End Property Private m_sExtensions As New List(Of String) Public ReadOnly Property Extensions As List(Of String) Get Return m_sExtensions End Get End Property Private m_ProjectList As New List(Of ProjectFile) Public ReadOnly Property ProjectList As List(Of ProjectFile) Get Return m_ProjectList End Get 'Set(value As List(Of ProjFile)) ' m_ProjList = value ' NotifyPropertyChanged("ProjList") 'End Set End Property Private m_SelProject As ProjectFile Public Property SelProject As ProjectFile Get Return m_SelProject End Get Set(value As ProjectFile) m_SelProject = value End Set End Property Private m_FileName As String Public Property FileName As String Get Return m_FileName End Get Set(value As String) m_FileName = value End Set End Property #Region "Messages" Public ReadOnly Property OpenMsg As String Get Return EgtMsg(MSG_EGTSAVEFILEDIALOG + 6) End Get End Property Public ReadOnly Property CancelMsg As String Get Return EgtMsg(MSG_EGTSAVEFILEDIALOG + 2) End Get End Property #End Region ' Definizione comandi Private m_cmdProjectDoubleClick As ICommand Public Function Init(ProjectType As ProjectType, Optional ProjectList As List(Of ProjectFile) = Nothing) As Boolean? m_ProjectType = ProjectType If IsNothing(ProjectList) OrElse ProjectList.Count = 0 Then ' cartella da cui leggere i programmi Dim sFolderPath As String If m_ProjectType = ProjectType.PROJ Then sFolderPath = Map.refMainWindowVM.MainWindowM.sProjsDir Else sFolderPath = Map.refMainWindowVM.MainWindowM.sProdsDir End If ' leggo i file che contiene Dim AllDirsInDir As IEnumerable(Of String) = IO.Directory.EnumerateDirectories(sFolderPath) For Each CurrDirectory In AllDirsInDir VerifyFiles(CurrDirectory) Next Else m_ProjectList = ProjectList End If End Function Private Sub VerifyFiles(CurrDirectory As String) Dim AllFilesInDir As IEnumerable(Of String) = IO.Directory.EnumerateFiles(CurrDirectory) For Each File In AllFilesInDir If Path.GetExtension(File).ToLower() = ".nge" Then Dim nProjId As Integer = 0 Dim nProdId As Integer = 0 Dim sBTLFileName As String = "" If ProjectFile.VerifyProjectFile(m_ProjectType, Path.GetFileNameWithoutExtension(File), nProjId, nProdId, sBTLFileName) Then m_ProjectList.Add(New ProjectFile(m_ProjectType, nProjId, nProdId, sBTLFileName)) End If End If Next End Sub Friend Function VerifySelected() As Boolean Return Not IsNothing(SelProject) End Function 'Private Sub m_FileNameTxBl_MouseDown(sender As Object, e As Windows.Input.MouseButtonEventArgs) Handles FileNameList.MouseDoubleClick ' Dim src As DependencyObject = VisualTreeHelper.GetParent(DirectCast(e.OriginalSource, DependencyObject)) ' ' verifico che venga clickato un item, non lo spazio vuoto o la scrollbar ' If Not TypeOf src Is ListBoxItem Then ' src = Utility.FindAncestor(Of ListBoxItem)(src) ' End If ' If IsNothing(src) OrElse src.[GetType]() <> GetType(ListBoxItem) Then ' e.Handled = True ' Else ' If Not IsNothing(m_SelectedFile) Then ' m_FileName = SelectedFile ' DialogResult = True ' End If ' End If 'End Sub 'Private Sub OpenBtn_Click(sender As Object, e As RoutedEventArgs) Handles OpenBtn.Click ' If Not IsNothing(m_SelectedFile) Then ' m_FileName = SelectedFile ' DialogResult = True ' End If 'End Sub #Region "COMMANDS" #Region "ProjectDoubleClick" ''' ''' Returns a command that do New. ''' Public ReadOnly Property ProjectDoubleClick_Command As ICommand Get If m_cmdProjectDoubleClick Is Nothing Then m_cmdProjectDoubleClick = New Command(AddressOf ProjDoubleClick) End If Return m_cmdProjectDoubleClick End Get End Property ''' ''' Execute the New. This method is invoked by the NewCommand. ''' Friend Sub ProjDoubleClick(ByVal param As Object) If VerifySelected() Then RaiseEvent m_CloseWindow(True) End If End Sub #End Region ' ProjectDoubleClick #End Region ' Commands End Class