/// <summary>
        /// Public for unit testing
        /// </summary>
        /// <param name="directory"></param>
        /// <param name="listToAppend"></param>
        /// <returns></returns>
        public static List <LineDetails> GetAllFilesInFolder(string directory,
                                                             List <LineDetails> listToAppend = default(List <LineDetails>))
        {
            if (listToAppend == default(List <LineDetails>))
            {
                listToAppend = new List <LineDetails>();
            }
            if (directory == "error")
            {
                return(listToAppend);
            }


            foreach (var d in Directory.GetDirectories(directory))
            {
                //skip this iteration if the directory is blacklisted
                if (Blacklist.Folders.Any(d.Contains))
                {
                    continue;
                }
                foreach (var f in Directory.GetFiles(d))
                {
                    var file = new FileInfo(f);
                    //skip this iteration if the extension is blacklisted (most likely due to it not being a text file)
                    if (Blacklist.Extensions.Any(file.Extension.Contains) || Blacklist.Files.Any(file.Name.Contains))
                    {
                        continue;
                    }

                    var lines      = File.ReadAllLines(file.FullName);
                    var lineNumber = 0;
                    foreach (var line in lines)
                    {
                        lineNumber++;
                        var lineDetails = new LineDetails(file, lineNumber, line);
                        listToAppend.Add(lineDetails);
                    }
                }

                GetAllFilesInFolder(d, listToAppend);
            }

            return(listToAppend);
        }
        private void dataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            try
            {
                if (dataGrid.SelectedItems.Count <= 0)
                {
                    return;
                }
                DataRowView row  = (DataRowView)dataGrid.SelectedItems[0];
                LineDetails line = new LineDetails(new FileInfo(row[0].ToString()), (int)row[1], (string)row[2]);


                var dte = FileSearch.GetCurrentDTE();
                try
                {
                    //File is opened within VisualStudio
                    dte.Windows.Item(line.FileInfo.Name).Activate();
                }
                catch
                {
                    try
                    {
                        //File is not open
                        dte.ExecuteCommand("File.OpenFile", line.FileInfo.Name);
                        dte.Windows.Item(line.FileInfo.Name).Activate();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.ToString());
                    }
                }
                System.Threading.Thread.Sleep(500);
                dte.ExecuteCommand("Edit.GoTo", line.LineNo.ToString());
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }