private FolderExplorerItem getFolderNode(FolderExplorerItem parentFolder, string path) { if (this.rootNode != null) { if (parentFolder.FolderInfo.FullName.Equals(path)) { return(parentFolder); } for (int i = 0; i < parentFolder.Nodes.Count; i++) { if (parentFolder.Nodes[i] is FolderExplorerItem) { FolderExplorerItem item = parentFolder.Nodes[i] as FolderExplorerItem; if (item.FolderInfo.FullName.Equals(path)) { return(item); } else { FolderExplorerItem sub = this.getFolderNode(item, path); if (sub != null) { return(sub); } } } } } return(null); }
private FolderExplorerItem createFolderNode(DirectoryInfo info) { FolderExplorerItem itemExisting = this.getFolderNode(this.rootNode, info.FullName); if (itemExisting != null) { itemExisting.FolderInfo = info; itemExisting.Text = info.Name; this.treeView1.Sort(); return(itemExisting); } else { FolderExplorerItem folderParent = this.getFolderNode(this.rootNode, info.Parent.FullName); if (folderParent != null) { FolderExplorerItem item = new FolderExplorerItem(info); folderParent.Nodes.Add(item); this.treeView1.Sort(); return(item); } return(null); } }
private void populateTree() { if (this.mainForm.CurrentProject != null) { DirectoryInfo info = new DirectoryInfo(this.mainForm.CurrentProject.ProjectPath); if (info.Exists) { rootNode = new FolderExplorerItem(info); GetDirectories(info.GetDirectories(), rootNode); treeView1.Nodes.Add(rootNode); // Create a new FileSystemWatcher and set its properties. FileSystemWatcher watcher = new FileSystemWatcher(); watcher.Path = this.mainForm.CurrentProject.ProjectPath; /* Watch for changes in LastAccess and LastWrite times, and * the renaming of files or directories. */ watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName; watcher.IncludeSubdirectories = true; // Add event handlers. watcher.Created += new FileSystemEventHandler(watcher_Changed); watcher.Deleted += new FileSystemEventHandler(watcher_Changed); watcher.Renamed += new RenamedEventHandler(watcher_Renamed); // Begin watching. watcher.EnableRaisingEvents = true; } } }
public void FolderExplorerItem_WhenFolderAdviseGroupIsChanged_SendsPropertyChangedEventForIconKind() { // Arrange var folder = new FolderModel { AdviseGroup = null, }; var target = new FolderExplorerItem(folder); var propertyChangedEvents = new List <PropertyChangedEventArgs>(); target.PropertyChanged += (_, e) => propertyChangedEvents.Add(e); // Act folder.AdviseGroup = new AdviseGroupModel { Id = new ItemId("1"), Name = "New Advise Group" }; // Assert var expectedProperties = new[] { nameof(FolderExplorerItem.IconKind), }; propertyChangedEvents.Select(e => e.PropertyName).Should().BeEquivalentTo(expectedProperties); }
private FileExplorerItem directoryHasNode(FolderExplorerItem dir, string path) { if (dir != null) { for (int i = 0; i < dir.Nodes.Count; i++) { if (dir.Nodes[i] is FileExplorerItem) { FileExplorerItem item = dir.Nodes[i] as FileExplorerItem; if (item.FileInfo.FullName.Equals(path)) { return(item); } } else if (dir.Nodes[i] is FolderExplorerItem) { FolderExplorerItem item = dir.Nodes[i] as FolderExplorerItem; FileExplorerItem itemFound = directoryHasNode(item, path); if (itemFound != null) { return(itemFound); } } } } return(null); }
public void FolderExplorerItem_WhenFolderNameIsChanged_SendsPropertyChangedEventForTitle() { // Arrange var folder = new FolderModel { Name = "Old Name", }; var target = new FolderExplorerItem(folder); var propertyChangedEvents = new List <PropertyChangedEventArgs>(); target.PropertyChanged += (_, e) => propertyChangedEvents.Add(e); // Act folder.Name = "New Name"; // Assert var expectedProperties = new[] { nameof(FolderExplorerItem.Title), }; propertyChangedEvents.Select(e => e.PropertyName).Should().BeEquivalentTo(expectedProperties); }
private bool removeFolderNode(string path) { FolderExplorerItem itemExisting = this.getFolderNode(this.rootNode, path); if (itemExisting != null) { itemExisting.Remove(); return(true); } return(false); }
private bool renameFolderNode(string oldfullName, DirectoryInfo info) { FolderExplorerItem itemExisting = this.getFolderNode(this.rootNode, oldfullName); if (itemExisting != null) { itemExisting.FolderInfo = info; itemExisting.Text = info.Name; this.treeView1.Sort(); return(true); } return(false); }
private void addFilesBt_Click_1(object sender, EventArgs e) { if (this.mainForm.CurrentProject != null && this.treeView1.SelectedNode != null && this.treeView1.SelectedNode is FolderExplorerItem) { try { FolderExplorerItem currentFolder = this.treeView1.SelectedNode as FolderExplorerItem; OpenFileDialog openF = new OpenFileDialog(); openF.Multiselect = true; openF.Filter = "All files type (*.*)|*.*"; if (openF.ShowDialog() == DialogResult.OK) { int count = 0; for (int i = 0; i < openF.FileNames.Length; i++) { string filename = openF.FileNames[i]; if (File.Exists(filename)) { File.Copy(filename, currentFolder.FolderInfo.FullName + "\\" + openF.SafeFileNames[i], true); FileExplorerItem newItem = new FileExplorerItem(new FileInfo(currentFolder.FolderInfo.FullName + "\\" + openF.SafeFileNames[i])); currentFolder.Nodes.Add(newItem); count++; } else { MessageBox.Show("The file " + filename + " does not exist!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } this.treeView1.Sort(); if (count > 1) { MessageBox.Show(count + " files have been successfully imported!", "Importation succeed!", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show(count + " file has been successfully imported!", "Importation succeed!", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } catch (Exception ex) { MessageBox.Show("Error during file importation!\n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
private void getFiles(DirectoryInfo parentDir, FolderExplorerItem nodeToAddTo) { FileExplorerItem aNode; FileInfo[] files = parentDir.GetFiles(); foreach (FileInfo file in files) { aNode = this.getFileNode(file.FullName); if (aNode == null) { aNode = new FileExplorerItem(file); nodeToAddTo.Nodes.Add(aNode); } } }
public void IsDeletedGetter_ForDeletedFolder_ReturnsTrue() { // Arrange var folder = new FolderModel { DeleteDate = new DateTime(2021, 10, 25) }; var target = new FolderExplorerItem(folder); // Act var isDeleted = target.IsDeleted; // Assert isDeleted.Should().BeTrue(); }
public void IsDeletedGetter_ForActiveFolder_ReturnsFalse() { // Arrange var folder = new FolderModel { DeleteDate = null }; var target = new FolderExplorerItem(folder); // Act var isDeleted = target.IsDeleted; // Assert isDeleted.Should().BeFalse(); }
private void GetDirectories(DirectoryInfo[] subDirs, TreeNode nodeToAddTo) { FolderExplorerItem aNode; DirectoryInfo[] subSubDirs; foreach (DirectoryInfo subDir in subDirs) { aNode = new FolderExplorerItem(subDir); subSubDirs = subDir.GetDirectories(); if (subSubDirs.Length != 0) { GetDirectories(subSubDirs, aNode); } nodeToAddTo.Nodes.Add(aNode); this.getFiles(subDir, aNode); } }
public void IconKindGetter_ForFolderWithoutAdviseGroup_ReturnsFolderIconKind() { // Arrange var folder = new FolderModel { AdviseGroup = null, }; var target = new FolderExplorerItem(folder); // Act var iconKind = target.IconKind; // Assert iconKind.Should().Be(PackIconKind.Folder); }
public void TitleGetter_ReturnsFolderName() { // Arrange var folder = new FolderModel { Name = "Folder Name", }; var target = new FolderExplorerItem(folder); // Act var title = target.Title; // Assert title.Should().Be("Folder Name"); }
public void GetContextMenuItems_ForActiveFolder_ReturnsCorrectMenuItems() { // Arrange var folder = new FolderModel { DeleteDate = null }; var adviseGroupHelperStub = new Mock <IAdviseGroupHelper>(); adviseGroupHelperStub.Setup(x => x.AdviseGroups).Returns(Array.Empty <AdviseGroupModel>()); var target = new FolderExplorerItem(folder); // Act var menuItems = target.GetContextMenuItems(Mock.Of <ILibraryExplorerViewModel>(), adviseGroupHelperStub.Object).ToArray(); // Assert var expectedSetAdviseGroupItem = new ExpandableMenuItem { Header = "Set Advise Group", IconKind = PackIconKind.FolderStar, }; var expectedMenuItems = new[] { new CommandMenuItem(() => { }, false) { Header = "Rename Folder", IconKind = PackIconKind.Pencil }, new CommandMenuItem(() => { }, false) { Header = "Delete Folder", IconKind = PackIconKind.DeleteForever }, }; // Nested items for advise group are covered by UT for BasicExplorerItem. menuItems[0].Should().BeEquivalentTo(expectedSetAdviseGroupItem, x => x.Excluding(y => y.Items)); menuItems[1..].Should().BeEquivalentTo(expectedMenuItems, x => x.WithStrictOrdering());
public void watcher_Changed(object sender, FileSystemEventArgs args) { if (this.InvokeRequired) { dwatcher_Changed d = new dwatcher_Changed(watcher_Changed); object[] arguments = { sender, args }; this.Invoke(d, arguments); } else { if (this.mainForm.Enabled == true) { if (args.ChangeType == WatcherChangeTypes.Created) { if (Directory.Exists(args.FullPath)) { DirectoryInfo folderInfo = new DirectoryInfo(args.FullPath); FolderExplorerItem folderNode = createFolderNode(folderInfo); if (folderNode != null) { GetDirectories(folderInfo.GetDirectories(), folderNode); getFiles(folderInfo, folderNode); } } else { createFileNode(new FileInfo(args.FullPath)); } } else if (args.ChangeType == WatcherChangeTypes.Deleted) { bool res = this.removeFileNode(args.FullPath); if (res == false) { this.removeFolderNode(args.FullPath); } } } } }
public void IconKindGetter_ForFolderWithFavoriteAdviseGroup_ReturnsFolderHeartIconKind() { // Arrange var folder = new FolderModel { AdviseGroup = new AdviseGroupModel { Id = new ItemId("1"), Name = "Some Advise Group", IsFavorite = true, }, }; var target = new FolderExplorerItem(folder); // Act var iconKind = target.IconKind; // Assert iconKind.Should().Be(PackIconKind.FolderHeart); }