コード例 #1
0
ファイル: SearchRootNode.cs プロジェクト: trecio/SharpDevelop
		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();
		}
コード例 #2
0
ファイル: SearchRootNode.cs プロジェクト: ratoy/SharpDevelop
		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();
		}