private void Tree_Click(object sender, RoutedEventArgs args)
        {
            Button i = (sender as Button);

            // This bit here is to stop all the parent tree view items from opening new tabs
            foreach (CloseableTab t in Tabs.Items)
            {
                if (t.Title.Equals(i.Content))
                {
                    t.Focus();
                    return;
                }
            }

            CloseableTab tab;

            if (args.RoutedEvent.Name.Equals("ContextMenuOpening") ||
                Tabs.SelectedItem == null)
            {
                tab = new CloseableTab();
                Tabs.Items.Add(tab);
            }
            else
            {
                tab = Tabs.SelectedItem as CloseableTab;
            }

            DirectoryInfo info = null;

            if (i.Tag as DirectoryInfo != null)
            {
                info = i.Tag as DirectoryInfo;
            }
            else if ((i.Tag as DriveInfo).IsReady)
            {
                info = (i.Tag as DriveInfo).RootDirectory;
            }

            if (info != null)
            {
                Populate(tab, info);
                Title            = info.Name;
                LocationBox.Text = info.FullName;
                tab.Focus();
            }
        }
        /*
         * @param tab Closeable tab to populate
         * @param info DirectoryInfo object to get all the file and directory info from.
         */
        private void Populate(CloseableTab tab, DirectoryInfo info)
        {
            // TO DO:
            //          Account for forbidden folders/files
            //          Add caching in some form.
            //

            tab.Title        = info.Name;
            LocationBox.Text = info.FullName;
            tab.Panel.Children.Clear();
            foreach (FileSystemInfo file in info.GetFileSystemInfos())
            {
                FileButton btn = new FileButton(file, config);
                btn.MouseEnter += FileBtn_MouseEnter;
                btn.MouseLeave += FileBtn_MouseLeave;
                btn.Click      += FileBtn_Click;
                tab.Panel.Children.Add(btn);
            }
        }