public void Add(SearchedFile searchedFile) { var results = searchedFile.Matches.Select(m => new SearchResultNode(m)).ToList(); resultNodes.AddRange(results); this.fileNodes.Add(new SearchFileNode(searchedFile.FileName, results)); InvalidateText(); }
public void Add(SearchedFile searchedFile) { var results = searchedFile.Matches.Select(m => new SearchResultNode(m)).ToList(); resultNodes.AddRange(results); this.fileNodes.Add(new SearchFileNode(searchedFile.FileName, results)); foreach (var g in results.GroupBy(r => SD.ProjectService.FindProjectContainingFile(r.FileName))) { var p = projectNodes.FirstOrDefault(n => n.Project == g.Key); var p2 = projectAndFileNodes.FirstOrDefault(n => n.Project == g.Key); if (p == null) { projectNodes.Add(new SearchProjectNode(g.Key, g.OfType<SearchNode>().ToList())); } else { p.Children = new List<SearchNode>(p.Children.Concat(g.AsEnumerable())); } if (p2 == null) { projectAndFileNodes.Add(new SearchProjectNode(g.Key, g.GroupBy(r => r.FileName).Select(g2 => new SearchFileNode(g2.Key, g2.ToList())).OfType<SearchNode>().ToList())); } else { var f = p2.Children.OfType<SearchFileNode>().FirstOrDefault(n => n.FileName == searchedFile.FileName); if (f == null) { var list = new List<SearchNode>(p2.Children); list.Add(new SearchFileNode(searchedFile.FileName, g.ToList())); p2.Children = list; } else { f.Children = new List<SearchNode>(f.Children.Concat(g.AsEnumerable())); } } } InvalidateText(); }