From 60a19673cb7ab690e17665b62232fe5f83e71eaf Mon Sep 17 00:00:00 2001 From: Michael Becker Date: Mon, 18 Nov 2019 23:54:38 -0500 Subject: [PATCH] improvements to File System Editor w/r/t adding items to folders --- .../Editors/FileSystem/FileSystemEditor.cs | 48 ++++++++++++++++--- 1 file changed, 41 insertions(+), 7 deletions(-) diff --git a/CSharp/Libraries/UniversalEditor.UserInterface/Editors/FileSystem/FileSystemEditor.cs b/CSharp/Libraries/UniversalEditor.UserInterface/Editors/FileSystem/FileSystemEditor.cs index 1b1c070a..4edadfd9 100644 --- a/CSharp/Libraries/UniversalEditor.UserInterface/Editors/FileSystem/FileSystemEditor.cs +++ b/CSharp/Libraries/UniversalEditor.UserInterface/Editors/FileSystem/FileSystemEditor.cs @@ -123,7 +123,8 @@ namespace UniversalEditor.Editors.FileSystem private Folder UIAddEmptyFolder(IFileSystemContainer fsom, string fileTitle) { - Folder f = fsom.Folders.Add(fileTitle); + Folder f = new Folder(); + f.Name = fileTitle; TreeModelRow row = new TreeModelRow(new TreeModelRowColumn[] { new TreeModelRowColumn(tmTreeView.Columns[0], f.Name), @@ -133,7 +134,20 @@ namespace UniversalEditor.Editors.FileSystem }); row.SetExtraData("item", f); - tmTreeView.Rows.Add(row); + if (tv.SelectedRows.Count > 0 && tv.LastHitTest.Row != null) + { + for (int i = 0; i < tv.SelectedRows.Count; i++) + { + IFileSystemObject item = tv.SelectedRows[i].GetExtraData("item"); + AddFolderToItem(f, item); + tv.SelectedRows[i].Rows.Add(row); + } + } + else + { + AddFolderToItem(f, null); + tmTreeView.Rows.Add(row); + } return f; } private File UIAddExistingFile(IFileSystemContainer fsom, string fileTitle, byte[] data) @@ -170,10 +184,6 @@ namespace UniversalEditor.Editors.FileSystem private void FileAddItemsFromFolder_Click(object sender, EventArgs e) { - FileSystemObjectModel fsom = ObjectModel as FileSystemObjectModel; - if (fsom == null) - return; - FileDialog fd = new FileDialog(); fd.Mode = FileDialogMode.SelectFolder; if (fd.ShowDialog() == DialogResult.OK) @@ -193,6 +203,29 @@ namespace UniversalEditor.Editors.FileSystem } } } + + private void AddFolderToItem(Folder f, IFileSystemObject item) + { + FileSystemObjectModel fsom = ObjectModel as FileSystemObjectModel; + if (fsom == null) + return; + + if (item != null) + { + if (item is File) + { + } + else if (item is Folder) + { + (item as Folder).Folders.Add(f); + } + } + else + { + fsom.Folders.Add(f); + } + } + private void FileAddExistingFolder_Click(object sender, EventArgs e) { FileSystemObjectModel fsom = ObjectModel as FileSystemObjectModel; @@ -205,6 +238,7 @@ namespace UniversalEditor.Editors.FileSystem { Folder f = FolderFromPath(fd.SelectedFileNames[fd.SelectedFileNames.Count - 1]); RecursiveAddFolder(f); + AddFolderToItem(f, null); } } @@ -341,7 +375,7 @@ namespace UniversalEditor.Editors.FileSystem public override void UpdateSelections() { Selections.Clear(); - for (int i = 0; i < tv.SelectedRows.Count; i++) + for (int i = 0; i < tv.SelectedRows.Count; i++) { TreeModelRow row = tv.SelectedRows[i]; if (row == null) continue;