static void AddMergeCategory( TreeViewItem rootItem, IDiffCategory category, List <TreeViewItem> rows, TreeViewItemIds <IDiffCategory, ITreeViewNode> treeViewItemIds, TreeView treeView, bool expandCategories) { int categoryId; if (!treeViewItemIds.TryGetCategoryItemId(category, out categoryId)) { categoryId = treeViewItemIds.AddCategoryItem(category); } MergeCategoryTreeViewItem mergeCategoryTreeViewItem = new MergeCategoryTreeViewItem( categoryId, rootItem.depth + 1, (MergeCategory)category); rootItem.AddChild(mergeCategoryTreeViewItem); rows.Add(mergeCategoryTreeViewItem); if (!expandCategories && !treeView.IsExpanded(mergeCategoryTreeViewItem.id)) { return; } for (int i = 0; i < category.GetChildrenCount(); i++) { IDiffCategory child = (IDiffCategory)((ITreeViewNode)category) .GetChild(i); AddChangeCategory( mergeCategoryTreeViewItem, child, rows, treeViewItemIds, treeView, expandCategories); } }
static void AddChangeCategory( TreeViewItem parentItem, IDiffCategory category, List <TreeViewItem> rows, TreeViewItemIds <IDiffCategory, ITreeViewNode> treeViewItemIds, TreeView treeView, bool expandCategories) { int categoryId; if (!treeViewItemIds.TryGetCategoryItemId(category, out categoryId)) { categoryId = treeViewItemIds.AddCategoryItem(category); } ChangeCategoryTreeViewItem changeCategoryTreeViewItem = new ChangeCategoryTreeViewItem( categoryId, parentItem.depth + 1, (ChangeCategory)category); parentItem.AddChild(changeCategoryTreeViewItem); rows.Add(changeCategoryTreeViewItem); if (!expandCategories && !treeView.IsExpanded(changeCategoryTreeViewItem.id)) { return; } AddClientDiffs( changeCategoryTreeViewItem, (ITreeViewNode)category, rows, treeViewItemIds); }