Skip to content

Commit

Permalink
Added a pre-selection functionality.
Browse files Browse the repository at this point in the history
  • Loading branch information
mikependon committed Jul 11, 2020
1 parent 0e8fb1d commit d54eefe
Show file tree
Hide file tree
Showing 14 changed files with 112 additions and 19 deletions.
99 changes: 88 additions & 11 deletions WPF/TreeViewFileExplorer/TreeViewFileExplorer/MainWindow.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.IO;
using System;
using System.IO;
using System.Linq;
using System.Windows;
using System.Windows.Input;
Expand All @@ -17,26 +18,102 @@ public MainWindow()
InitializeFileSystemObjects();
}

#region Events

private void FileSystemObject_AfterExplore(object sender, System.EventArgs e)
{
Cursor = Cursors.Arrow;
}

private void FileSystemObject_BeforeExplore(object sender, System.EventArgs e)
{
Cursor = Cursors.Wait;
}

#endregion

#region Methods

private void InitializeFileSystemObjects()
{
var drives = DriveInfo.GetDrives();
DriveInfo.GetDrives().ToList().ForEach(drive =>
DriveInfo
.GetDrives()
.ToList()
.ForEach(drive =>
{
var fileSystemObject = new FileSystemObjectInfo(drive);
fileSystemObject.BeforeExplore += FileSystemObject_BeforeExplore;
fileSystemObject.AfterExplore += FileSystemObject_AfterExplore;
treeView.Items.Add(fileSystemObject);
});
PreSelect(Environment.GetFolderPath(Environment.SpecialFolder.Desktop));
}

private void PreSelect(string path)
{
if (!Directory.Exists(path))
{
var fileSystemObject = new FileSystemObjectInfo(drive);
fileSystemObject.BeforeExplore += FileSystemObject_BeforeExplore;
fileSystemObject.AfterExplore += FileSystemObject_AfterExplore;
treeView.Items.Add(fileSystemObject);
});
return;
}
var driveFileSystemObjectInfo = GetDriveFileSystemObjectInfo(path);
driveFileSystemObjectInfo.IsExpanded = true;
PreSelect(driveFileSystemObjectInfo, path);
}

private void FileSystemObject_AfterExplore(object sender, System.EventArgs e)
private void PreSelect(FileSystemObjectInfo fileSystemObjectInfo,
string path)
{
Cursor = Cursors.Arrow;
foreach (var childFileSystemObjectInfo in fileSystemObjectInfo.Children)
{
var isParentPath = IsParentPath(path, childFileSystemObjectInfo.FileSystemInfo.FullName);
if (isParentPath)
{
if (string.Equals(childFileSystemObjectInfo.FileSystemInfo.FullName, path))
{
/* We found the item for pre-selection */
}
else
{
childFileSystemObjectInfo.IsExpanded = true;
PreSelect(childFileSystemObjectInfo, path);
}
}
}
}

private void FileSystemObject_BeforeExplore(object sender, System.EventArgs e)
#endregion

#region Helpers

private FileSystemObjectInfo GetDriveFileSystemObjectInfo(string path)
{
Cursor = Cursors.Wait;
var directory = new DirectoryInfo(path);
var drive = DriveInfo
.GetDrives()
.Where(d => d.RootDirectory.FullName == directory.Root.FullName)
.FirstOrDefault();
return GetDriveFileSystemObjectInfo(drive);
}

private FileSystemObjectInfo GetDriveFileSystemObjectInfo(DriveInfo drive)
{
foreach (var fso in treeView.Items.OfType<FileSystemObjectInfo>())
{
if (fso.FileSystemInfo.FullName == drive.RootDirectory.FullName)
{
return fso;
}
}
return null;
}

private bool IsParentPath(string path,
string targetPath)
{
return path.StartsWith(targetPath);
}

#endregion
}
}
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#pragma checksum "..\..\App.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "2C9C1DD8388E9E2A086C90D03FBA8DAB005E90E0"
#pragma checksum "..\..\App.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "6513D88DE627D2BE30832AB5B221A247CB9C06235F292553A6D0CB9D1A3E1DDE"
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#pragma checksum "..\..\App.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "2C9C1DD8388E9E2A086C90D03FBA8DAB005E90E0"
#pragma checksum "..\..\App.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "6513D88DE627D2BE30832AB5B221A247CB9C06235F292553A6D0CB9D1A3E1DDE"
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#pragma checksum "..\..\MainWindow.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "047D3C8B72BD13739C89617D9B6797681B2B7F84"
#pragma checksum "..\..\MainWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "10F0F0C95B270C5F08F2BE7C4F5EF66E48EBE1E67AC956725ADDDC6CD75DDCDB"
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#pragma checksum "..\..\MainWindow.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "047D3C8B72BD13739C89617D9B6797681B2B7F84"
#pragma checksum "..\..\MainWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "10F0F0C95B270C5F08F2BE7C4F5EF66E48EBE1E67AC956725ADDDC6CD75DDCDB"
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1 @@
6b8de9424a0554c7fbb77eba3fda67a3061c4505
7c3810b2afb66e5c1fc2a46b930b1762e1367b43
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,19 @@ C:\Users\MichaelP\Source\Repos\TreeViewFileExplorer\TreeViewFileExplorer\obj\Deb
C:\Users\MichaelP\Source\Repos\TreeViewFileExplorer\TreeViewFileExplorer\obj\Debug\TreeViewFileExplorer.pdb
C:\Users\MichaelP\Source\Repos\TreeViewFileExplorer\TreeViewFileExplorer\obj\Debug\GeneratedInternalTypeHelper.g.cs
C:\Users\MichaelP\Source\Repos\TreeViewFileExplorer\TreeViewFileExplorer\obj\Debug\TreeViewFileExplorer.csprojAssemblyReference.cache
C:\Users\MichaelP\Source\Repos\GitHub\Tutorials\WPF\TreeViewFileExplorer\TreeViewFileExplorer\bin\Debug\TreeViewFileExplorer.exe.config
C:\Users\MichaelP\Source\Repos\GitHub\Tutorials\WPF\TreeViewFileExplorer\TreeViewFileExplorer\bin\Debug\TreeViewFileExplorer.exe
C:\Users\MichaelP\Source\Repos\GitHub\Tutorials\WPF\TreeViewFileExplorer\TreeViewFileExplorer\bin\Debug\TreeViewFileExplorer.pdb
C:\Users\MichaelP\Source\Repos\GitHub\Tutorials\WPF\TreeViewFileExplorer\TreeViewFileExplorer\obj\Debug\TreeViewFileExplorer.csprojAssemblyReference.cache
C:\Users\MichaelP\Source\Repos\GitHub\Tutorials\WPF\TreeViewFileExplorer\TreeViewFileExplorer\obj\Debug\MainWindow.g.cs
C:\Users\MichaelP\Source\Repos\GitHub\Tutorials\WPF\TreeViewFileExplorer\TreeViewFileExplorer\obj\Debug\App.g.cs
C:\Users\MichaelP\Source\Repos\GitHub\Tutorials\WPF\TreeViewFileExplorer\TreeViewFileExplorer\obj\Debug\GeneratedInternalTypeHelper.g.cs
C:\Users\MichaelP\Source\Repos\GitHub\Tutorials\WPF\TreeViewFileExplorer\TreeViewFileExplorer\obj\Debug\TreeViewFileExplorer_MarkupCompile.cache
C:\Users\MichaelP\Source\Repos\GitHub\Tutorials\WPF\TreeViewFileExplorer\TreeViewFileExplorer\obj\Debug\TreeViewFileExplorer_MarkupCompile.lref
C:\Users\MichaelP\Source\Repos\GitHub\Tutorials\WPF\TreeViewFileExplorer\TreeViewFileExplorer\obj\Debug\MainWindow.baml
C:\Users\MichaelP\Source\Repos\GitHub\Tutorials\WPF\TreeViewFileExplorer\TreeViewFileExplorer\obj\Debug\TreeViewFileExplorer.g.resources
C:\Users\MichaelP\Source\Repos\GitHub\Tutorials\WPF\TreeViewFileExplorer\TreeViewFileExplorer\obj\Debug\TreeViewFileExplorer.Properties.Resources.resources
C:\Users\MichaelP\Source\Repos\GitHub\Tutorials\WPF\TreeViewFileExplorer\TreeViewFileExplorer\obj\Debug\TreeViewFileExplorer.csproj.GenerateResource.cache
C:\Users\MichaelP\Source\Repos\GitHub\Tutorials\WPF\TreeViewFileExplorer\TreeViewFileExplorer\obj\Debug\TreeViewFileExplorer.csproj.CoreCompileInputs.cache
C:\Users\MichaelP\Source\Repos\GitHub\Tutorials\WPF\TreeViewFileExplorer\TreeViewFileExplorer\obj\Debug\TreeViewFileExplorer.exe
C:\Users\MichaelP\Source\Repos\GitHub\Tutorials\WPF\TreeViewFileExplorer\TreeViewFileExplorer\obj\Debug\TreeViewFileExplorer.pdb
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@
winexe
C#
.cs
C:\Users\MichaelP\Source\Repos\TreeViewFileExplorer\TreeViewFileExplorer\obj\Debug\
C:\Users\MichaelP\Source\Repos\GitHub\Tutorials\WPF\TreeViewFileExplorer\TreeViewFileExplorer\obj\Debug\
TreeViewFileExplorer
none
false
DEBUG;TRACE
C:\Users\MichaelP\Source\Repos\TreeViewFileExplorer\TreeViewFileExplorer\App.xaml
C:\Users\MichaelP\Source\Repos\GitHub\Tutorials\WPF\TreeViewFileExplorer\TreeViewFileExplorer\App.xaml
11151548125

19-586021596
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@


FC:\Users\MichaelP\Source\Repos\TreeViewFileExplorer\TreeViewFileExplorer\MainWindow.xaml;;
FC:\Users\MichaelP\Source\Repos\GitHub\Tutorials\WPF\TreeViewFileExplorer\TreeViewFileExplorer\MainWindow.xaml;;

0 comments on commit d54eefe

Please sign in to comment.