public void MenuAddDirectory_Click(object sender, RoutedEventArgs e)
        {
            var selected = TreeFolderBrowser.SelectedItem as PathItem;

            if (selected == null || selected.Parent == null)
            {
                // No files/folders
                selected = new PathItem()
                {
                    IsFolder = true,
                    FullPath = Sidebar.FolderPath,
                    Parent   = Sidebar.ActivePathItem.Parent,
                    Files    = Sidebar.ActivePathItem.Files
                };
                Sidebar.ActivePathItem = selected;
            }

            string path;

            if (!selected.IsFolder)
            {
                path = Path.Combine(Path.GetDirectoryName(selected.FullPath), "NewFolder");
            }
            else
            {
                var treeItem = Sidebar.GetTreeviewItem(selected);
                if (treeItem != null)
                {
                    treeItem.IsExpanded = true;
                }

                path = Path.Combine(selected.FullPath, "NewFolder");
            }

            var item = new PathItem {
                FullPath   = path,
                IsFolder   = true,
                IsEditing  = true,
                IsSelected = true
            };

            item.SetIcon();

            if (!selected.IsFolder)
            {
                item.Parent = selected.Parent;
            }
            else
            {
                item.Parent = selected;
            }

            item.Parent.Files.Insert(0, item);

            Sidebar.SetTreeViewSelectionByItem(item);
        }
        public void MenuRenameFile_Click(object sender, RoutedEventArgs e)
        {
            var selected = TreeFolderBrowser.SelectedItem as PathItem;

            if (selected == null)
            {
                return;
            }

            // Start Editing the file name
            selected.EditName  = selected.DisplayName;
            selected.IsEditing = true;

            var tvItem = Sidebar.GetTreeviewItem(selected);

            if (tvItem != null)
            {
                var tb = WindowUtilities.FindVisualChild <TextBox>(tvItem);
                tb?.Focus();
            }
        }
        public void MenuAddFile_Click(object sender, RoutedEventArgs e)
        {
            var selected = TreeFolderBrowser.SelectedItem as PathItem;

            if (selected == null)
            {
                // No files/folders
                selected = new PathItem()
                {
                    IsFolder = true, FullPath = Sidebar.FolderPath
                };
                Sidebar.ActivePathItem = selected;
            }

            string       path;
            TreeViewItem parentTreeViewItem = Sidebar.GetTreeviewItem(selected);

            if (selected.FullPath == "..")
            {
                path = Path.Combine(Sidebar.FolderPath, "README.md");
            }
            else if (!selected.IsFolder)
            {
                path = Path.Combine(Path.GetDirectoryName(selected.FullPath), "README.md");
            }
            else
            {
                if (parentTreeViewItem != null)
                {
                    parentTreeViewItem.IsExpanded = true;
                }

                path = Path.Combine(selected.FullPath, "README.md");
            }

            if (File.Exists(path))
            {
                path = Path.Combine(Path.GetDirectoryName(path), "NewFile.md");
                if (File.Exists(path))
                {
                    for (int i = 1; i < 30; i++)
                    {
                        path = Path.Combine(Path.GetDirectoryName(path), $"NewFile{i}.md");
                        if (!File.Exists(path))
                        {
                            break;
                        }
                    }
                }
            }

            var item = new PathItem
            {
                FullPath   = path,
                IsFolder   = false,
                IsFile     = true,
                IsEditing  = true,
                IsSelected = true
            };

            item.EditName = item.DisplayName;
            item.SetIcon();

            if (selected.FullPath == "..")
            {
                item.Parent = Sidebar.ActivePathItem;     // current path
            }
            else if (!selected.IsFolder)
            {
                item.Parent = selected.Parent;
            }
            else
            {
                item.Parent = selected;
            }

            item.Parent.Files.Insert(0, item);
            Sidebar.SetTreeViewSelectionByItem(item, parentTreeViewItem);
        }