public void Update(List <string> pendingChanges, string solutionDir) { ViewModel.Root.Clear(); if (!string.IsNullOrEmpty(solutionDir)) { var root = new TSVNTreeViewFolderItem { Label = $"Changes ({pendingChanges.Count})", Foreground = ToBrush(EnvironmentColors.ToolWindowTextColorKey), IsExpanded = true }; var solutionDirItem = CreateFolderTreeViewItem(solutionDir, "S"); foreach (var change in pendingChanges) { ProcessChange(solutionDirItem, solutionDir, change); } root.Items.Add(solutionDirItem); ViewModel.Root.Add(root); commitButton.IsEnabled = true; revertButton.IsEnabled = true; } else { commitButton.IsEnabled = false; revertButton.IsEnabled = false; } }
private void ProcessChange(TSVNTreeViewFolderItem root, string solutionDir, string change) { if (change.Length <= 8) { return; } var path = change.Substring(8); var pathParts = path.Split('\\'); for (var i = 0; i < pathParts.Length; i++) { var item = FindItem(root, pathParts[i]); if (item == null) { TSVNTreeViewItem newItem; if (i == pathParts.Length - 1 && File.Exists(Path.Combine(solutionDir, path))) { newItem = CreateFileTreeViewItem(pathParts[i], solutionDir, path, change); } else { newItem = CreateFolderTreeViewItem(pathParts[i], change); } root.Items.Add(newItem); root = newItem as TSVNTreeViewFolderItem; } else if (item is TSVNTreeViewFolderItem folderItem) { root = folderItem; } } }
private TSVNTreeViewItem FindItem(TSVNTreeViewFolderItem root, string text) { if (root?.Items == null) { return(null); } foreach (var item in root.Items) { if (item.Label.Equals(text)) { return(item); } } return(null); }