public override void OnDoubleMouseClick(TreeView treeview) { IFileFormat file = OpenFile(); if (file == null) //Format not supported so return { return; } if (Utils.HasInterface(file.GetType(), typeof(IEditor <>))) { } else if (file is IArchiveFile) { var FileRoot = new ArchiveRootNodeWrapper(file.FileName, (IArchiveFile)file); FileRoot.FillTreeNodes(); if (file is TreeNode) //It can still be both, so add all it's nodes { foreach (TreeNode n in ((TreeNode)file).Nodes) { FileRoot.Nodes.Add(n); } } ReplaceNode(this.Parent, this, FileRoot); } else if (file is TreeNode) { ReplaceNode(this.Parent, this, (TreeNode)file); } }
private void ReplaceAction(object sender, EventArgs args) { //Add folders and files from selected path FolderSelectDialog ofd = new FolderSelectDialog(); if (ofd.ShowDialog() == DialogResult.OK) { //Clear all nodes foreach (var node in TreeViewExtensions.Collect(Nodes)) { if (node is ArchiveFileWrapper) { ArchiveFile.DeleteFile(((ArchiveFileWrapper)node).ArchiveFileInfo); } } Nodes.Clear(); var proccessedFiles = TreeHelper.ReadFiles(ofd.SelectedPath); string folderPath = TreeHelper.GetFolderAbsoultePath(this, RootNode); for (int i = 0; i < proccessedFiles.Count; i++) { ArchiveFile.AddFile(new ArchiveFileInfo() { FileName = $"{folderPath}/{proccessedFiles[i].Item1}", FileData = File.ReadAllBytes(proccessedFiles[i].Item2), }); } RootNode.FillTreeNodes(); } }
public void OpenFileFormat(TreeView treeview) { IFileFormat file = ArchiveFileInfo.OpenFile(); if (file == null) //Format not supported so return { return; } if (file.IFileInfo != null) { file.IFileInfo.ArchiveParent = ArchiveFile; } if (Utils.HasInterface(file.GetType(), typeof(IEditor <>))) { OpenControlDialog(file); } else if (Utils.HasInterface(file.GetType(), typeof(IEditorForm <>))) { OpenFormDialog(file); } else if (file is IArchiveFile) { var FileRoot = new ArchiveRootNodeWrapper(file.FileName, (IArchiveFile)file); FileRoot.FillTreeNodes(); if (file is TreeNode) //It can still be both, so add all it's nodes { foreach (TreeNode n in ((TreeNode)file).Nodes) { FileRoot.Nodes.Add(n); } } ReplaceNode(this.Parent, treeview, this, FileRoot, RootNode); } else if (file is TreeNode) { ReplaceNode(this.Parent, treeview, this, (TreeNode)file, RootNode); } ArchiveFileInfo.FileFormat = file; }