protected BetterTreeView.BetterTreeNode CreateFileNode(string path, object tag)
        {
            string filename = Path.GetFileName(path);

            BetterTreeView.BetterTreeNode newNode = new BetterTreeView.BetterTreeNode(filename);
            newNode.CollapsedImageIndex = 3;
            newNode.ExpandedImageIndex  = 3;
            newNode.SelectedImageIndex  = newNode.CollapsedImageIndex;
            newNode.ImageIndex          = newNode.CollapsedImageIndex;

            FileEntryInformation fileInfo = new FileEntryInformation(FileEntryType.File, path);

            fileInfo.Tag = tag;
            newNode.Tag  = fileInfo;

            return(newNode);
        }
        protected void InitializeTree()
        {
            tagTree.BeginUpdate();
            tagTree.Nodes.Clear();

            // TODO: Move BetterTreeNode outside of BetterTreeView class.
            BetterTreeView.BetterTreeNode rootNode = new BetterTreeView.BetterTreeNode("Archive");
            rootNode.CollapsedImageIndex = 0;
            rootNode.ExpandedImageIndex  = 0;
            FileEntryInformation fileInfo = new FileEntryInformation(FileEntryType.Folder, "\\");

            rootNode.Tag = fileInfo;
            tagTree.Nodes.Add(rootNode);

            AddFiles(rootNode, "\\");
            CreateSubLevel(rootNode);
            tagTree.Nodes[0].Expand();
            tagTree.SelectedNode = tagTree.Nodes[0];
            tagTree.EndUpdate();
        }
        protected BetterTreeView.BetterTreeNode CreateFolderNode(string path, object tag)
        {
            // TODO: We need to standardize how these files are named.
            // Slashes are a bit unneccessary IMO, and we have to keep removing them
            // for parsing paths - which sucks.
            // HACK: For now, we need to add a leading and trailing backslash.
            if (!path.StartsWith("\\"))
            {
                path = "\\" + path;
            }
            if (!path.EndsWith("\\"))
            {
                path = path + "\\";
            }

            string trimmedFolder = path.TrimEnd('\\');
            int    slashIndex    = trimmedFolder.LastIndexOf('\\');
            string folderName    = trimmedFolder;

            if (slashIndex > -1)
            {
                folderName = trimmedFolder.Substring(slashIndex);
            }

            string nodeTitle = folderName.Replace("\\", "");

            BetterTreeView.BetterTreeNode newNode = new BetterTreeView.BetterTreeNode(nodeTitle);
            newNode.CollapsedImageIndex = 2;
            newNode.ExpandedImageIndex  = 1;
            newNode.SelectedImageIndex  = newNode.CollapsedImageIndex;
            newNode.ImageIndex          = newNode.CollapsedImageIndex;

            FileEntryInformation fileInfo = new FileEntryInformation(FileEntryType.Folder, path);

            fileInfo.Tag = tag;
            newNode.Tag  = fileInfo;

            return(newNode);
        }