private async Task <IEnumerable <ResourceEntity>?> GetSelectedResourceEntitiesAsync() { await JoinableTaskFactory.SwitchToMainThreadAsync(); var monitorSelection = GetGlobalService(typeof(SVsShellMonitorSelection)) as IVsMonitorSelection; var selection = monitorSelection?.GetSelectedProjectItems(); if (selection == null) { return(null); } var files = selection .Select(item => item.GetMkDocument()) .ExceptNullItems() .Where(file => ProjectFileExtensions.IsResourceFile(file)) .ToArray(); if (!files.Any()) { return(null); } var groups = await Task.WhenAll(files.Select(GetSelectedResourceEntitiesAsync)).ConfigureAwait(true); var entities = groups .SelectMany(items => items) .ToArray(); return((entities.Length > 0) && (entities.Length == selection.Count) ? entities : null); }
private async Task <IEnumerable <ResourceEntity>?> GetSelectedResourceEntitiesAsync() { await JoinableTaskFactory.SwitchToMainThreadAsync(); var vsixCompatibility = ExportProvider.GetExportedValue <IVsixCompatibility>(); var selectedFiles = await vsixCompatibility.GetSelectedFilesAsync().ConfigureAwait(false); if (!selectedFiles.Any()) { return(null); } var resourceFiles = selectedFiles.Where(file => ProjectFileExtensions.IsResourceFile(file)); var groups = await Task.WhenAll(resourceFiles.Select(GetSelectedResourceEntitiesAsync)).ConfigureAwait(true); var entities = groups .SelectMany(items => items) .ToArray(); return((entities.Length > 0) && (entities.Length == selectedFiles.Count) ? entities : null); }
protected override bool IncludeFile(string fileName) { return(ProjectFileExtensions.IsResourceFile(fileName)); }