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);
            }
        }
Exemple #2
0
        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();
            }
        }
Exemple #3
0
        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;
        }