static void RegenerateRows( UnityPendingChangesTree pendingChangesTree, TreeViewItemIds <PendingChangeCategory, PendingChangeInfo> treeViewItemIds, PendingChangesTreeView treeView, TreeViewItem rootItem, List <TreeViewItem> rows, bool expandCategories) { ClearRows(rootItem, rows); List <PendingChangeCategory> categories = pendingChangesTree.GetNodes(); if (categories == null) { return; } foreach (PendingChangeCategory category in categories) { int categoryId; if (!treeViewItemIds.TryGetCategoryItemId(category, out categoryId)) { categoryId = treeViewItemIds.AddCategoryItem(category); } ChangeCategoryTreeViewItem categoryTreeViewItem = new ChangeCategoryTreeViewItem(categoryId, category); rootItem.AddChild(categoryTreeViewItem); rows.Add(categoryTreeViewItem); if (!expandCategories && !treeView.IsExpanded(categoryTreeViewItem.id)) { continue; } foreach (PendingChangeInfo change in category.GetCurrentChanges()) { int changeId; if (!treeViewItemIds.TryGetInfoItemId(change, out changeId)) { changeId = treeViewItemIds.AddInfoItem(change); } TreeViewItem changeTreeViewItem = new ChangeTreeViewItem(changeId, change); categoryTreeViewItem.AddChild(changeTreeViewItem); rows.Add(changeTreeViewItem); } } if (!expandCategories) { return; } treeView.state.expandedIDs = treeViewItemIds.GetCategoryIds(); }
static void AddClientDiffs( TreeViewItem parentItem, ITreeViewNode parentNode, List <TreeViewItem> rows, TreeViewItemIds <IDiffCategory, ITreeViewNode> treeViewItemIds) { for (int i = 0; i < parentNode.GetChildrenCount(); i++) { ITreeViewNode child = parentNode.GetChild(i); int nodeId; if (!treeViewItemIds.TryGetInfoItemId(child, out nodeId)) { nodeId = treeViewItemIds.AddInfoItem(child); } TreeViewItem changeTreeViewItem = new ClientDiffTreeViewItem( nodeId, parentItem.depth + 1, (ClientDiffInfo)child); parentItem.AddChild(changeTreeViewItem); rows.Add(changeTreeViewItem); } }
static void RegenerateRows( UnityDiffTree diffTree, TreeViewItemIds <IDiffCategory, ITreeViewNode> treeViewItemIds, TreeView treeView, TreeViewItem rootItem, List <TreeViewItem> rows, bool expandCategories) { ClearRows(rootItem, rows); List <IDiffCategory> categories = diffTree.GetNodes(); if (categories == null) { return; } foreach (IDiffCategory category in categories) { if (category is MergeCategory) { AddMergeCategory( rootItem, category, rows, treeViewItemIds, treeView, expandCategories); } if (category is ChangeCategory) { AddChangeCategory( rootItem, category, rows, treeViewItemIds, treeView, expandCategories); } } if (!expandCategories) { return; } treeView.state.expandedIDs = treeViewItemIds.GetCategoryIds(); }
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); }
static void RegenerateRows( UnityIncomingChangesTree incomingChangesTree, TreeViewItemIds <IncomingChangesCategory, IncomingChangeInfo> treeViewItemIds, IncomingChangesTreeView treeView, TreeViewItem rootItem, List <TreeViewItem> rows, bool expandCategories) { if (incomingChangesTree == null) { return; } ClearRows(rootItem, rows); List <IncomingChangesCategory> categories = incomingChangesTree.GetNodes(); if (categories == null) { return; } List <int> categoriesToExpand = new List <int>(); foreach (IncomingChangesCategory category in categories) { int categoryId; if (!treeViewItemIds.TryGetCategoryItemId(category, out categoryId)) { categoryId = treeViewItemIds.AddCategoryItem(category); } ChangeCategoryTreeViewItem categoryTreeViewItem = new ChangeCategoryTreeViewItem(categoryId, category); rootItem.AddChild(categoryTreeViewItem); rows.Add(categoryTreeViewItem); if (!ShouldExpandCategory( treeView, categoryTreeViewItem, expandCategories, categories.Count)) { continue; } categoriesToExpand.Add(categoryTreeViewItem.id); foreach (IncomingChangeInfo changeInfo in category.GetChanges()) { int differenceId; if (!treeViewItemIds.TryGetInfoItemId(changeInfo, out differenceId)) { differenceId = treeViewItemIds.AddInfoItem(changeInfo); } TreeViewItem changeTreeViewItem = new ChangeTreeViewItem(differenceId, changeInfo); categoryTreeViewItem.AddChild(changeTreeViewItem); rows.Add(changeTreeViewItem); } } treeView.state.expandedIDs = categoriesToExpand; }