public TreeViewItemWithIconViewModel(FilesTreeViewItem model, int stashId, FileIconsService fileIconService, VisualStudioGitService gitService) { _internalModel = model; _fileIconService = fileIconService; _gitService = gitService; Source = IsFile ? _fileIconService.GetFileIcon("." + FileExtension) : _fileIconService.GetFolderIcon(IsExpanded); var childNodes = model.Items.Select(m => new TreeViewItemWithIconViewModel(m, stashId, fileIconService, gitService)).ToList(); Items = new ObservableCollection <TreeViewItemWithIconViewModel>(childNodes); CompareWithPreviousVersionCommand = new DelegateCommand(o => { var treeItem = o as TreeViewItemWithIconViewModel; var filePath = treeItem?.FullPath; var fileName = treeItem?.Text; var isNew = treeItem?.IsNew ?? false; var isStaged = treeItem?.IsStaged ?? false; _gitService.RunDiff(stashId, filePath, fileName, isNew, isStaged); }); }
public StashInfoChangesSectionViewModel(Stash stash, FileIconsService fileIconsService, GitCommandExecuter gitCommandExecuter, ITeamExplorer teamExplorer, IVsDifferenceService vsDiffService) { _fileIconsService = fileIconsService; _gitCommandExecuter = gitCommandExecuter; _teamExplorer = teamExplorer; _vsDiffService = vsDiffService; _stash = stash; if (stash == null) { return; } var separator = '/'; var rootNode = new TreeNode(); var paths = stash.ChangedFiles .Select(f => f.Path) .Where(x => !string.IsNullOrEmpty(x.Trim())) .ToList(); foreach (var path in paths) { var currentNode = rootNode; var pathNodes = path.Split(separator); foreach (var item in pathNodes) { var foundedNode = currentNode.Nodes.Cast <TreeNode>().FirstOrDefault(x => x.Text == item); currentNode = foundedNode ?? currentNode.Nodes.Add(item); } } var rootTreeViewItem = ToTreeViewItem(rootNode, false); ChangeItems = new ObservableCollection <TreeViewItemWithIcon>(rootTreeViewItem.Items.ToList()); }
public StashInfoChangesSectionViewModel(Stash stash, FileIconsService fileIconsService, GitCommandExecuter gitCommandExecuter, ITeamExplorer teamExplorer, IVsDifferenceService vsDiffService, DTE dte) { _fileIconsService = fileIconsService; _gitCommandExecuter = gitCommandExecuter; _teamExplorer = teamExplorer; _vsDiffService = vsDiffService; _dte = dte; _stash = stash; if (stash == null) { return; } var separator = '/'; var rootNode = new TreeNode(); foreach (var file in stash.ChangedFiles) { if (string.IsNullOrEmpty(file.Path.Trim())) { continue; } var currentNode = rootNode; var pathNodes = file.Path.Split(separator); foreach (var item in pathNodes) { var foundedNode = currentNode.Nodes.Cast <TreeNode>().FirstOrDefault(x => x.Text == item); if (foundedNode != null) { currentNode = foundedNode; } else { currentNode = currentNode.Nodes.Add(item); // Last node in the path -> file. if (item == pathNodes.LastOrDefault()) { // Additional file info currentNode.Tag = new Models.FileAttributes { IsNew = file.IsNew, IsStaged = file.IsStaged }; } } } } var rootTreeViewItem = ToTreeViewItem(rootNode, false); ChangeItems = new ObservableCollection <TreeViewItemWithIcon>(rootTreeViewItem.Items?.ToList() ?? Enumerable.Empty <TreeViewItemWithIcon>()); }
public StashInfoChangesSectionUI(Stash stash, IServiceProvider serviceProvider) { _serviceProvider = serviceProvider; _vsImageService = _serviceProvider.GetService(typeof(SVsImageService)) as IVsImageService2; _fileIconsService = new FileIconsService(_vsImageService); _gitCommandExecuter = new GitCommandExecuter(_serviceProvider); _teamExplorer = _serviceProvider.GetService(typeof(ITeamExplorer)) as ITeamExplorer; _vsDiffService = _serviceProvider.GetService(typeof(SVsDifferenceService)) as IVsDifferenceService; InitializeComponent(); DataContext = _viewModel = new StashInfoChangesSectionViewModel(stash, _fileIconsService, _gitCommandExecuter, _teamExplorer, _vsDiffService); }
public StashInfoChangesSectionViewModel(Stash stash, IServiceProvider serviceProvider) { _stash = stash; _gitService = new VisualStudioGitService(serviceProvider); if (stash?.ChangedFiles == null) { return; } var vsImageService = serviceProvider.GetService(typeof(SVsImageService)) as IVsImageService2; var fileIconsService = new FileIconsService(vsImageService); var rootTreeViewItem = stash.ChangedFiles.ToTreeViewItemStructure(); var rootViewModel = new TreeViewItemWithIconViewModel(rootTreeViewItem, stash.Id, fileIconsService, _gitService); ChangeItems = rootViewModel.Items; }