public async Task <bool> TryHandleCommandAsync(IImmutableSet <IProjectTree> nodes, long commandId, bool focused, long commandExecuteOptions, IntPtr variantArgIn, IntPtr variantArgOut) { _appShell.AssertIsOnMainThread(); if (commandId != RPackageCommandId.icmdSendToRemote) { return(false); } var properties = _configuredProject.Services.ExportProvider.GetExportedValue <ProjectProperties>(); string projectDir = Path.GetDirectoryName(_configuredProject.UnconfiguredProject.FullPath); string fileFilterString = await properties.GetFileFilterAsync(); Matcher matcher = new Matcher(StringComparison.OrdinalIgnoreCase); matcher.AddIncludePatterns(fileFilterString.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries)); List <string> filteredFiles = new List <string>(); filteredFiles.AddRange(matcher.GetMatchedFiles(nodes.GetAllFolderPaths(_configuredProject.UnconfiguredProject))); // Add any file that user specifically selected. This can contain a file ignored by the filter. filteredFiles.AddRange(nodes.Where(n => n.IsFile()).Select(n => n.FilePath)); string projectName = properties.GetProjectName(); string remotePath = await properties.GetRemoteProjectPathAsync(); if (filteredFiles.Count > 0) { await SendToRemoteAsync(filteredFiles.Distinct(), projectDir, projectName, remotePath); } return(true); }
public override T GetService <T>(Type type = null) { // First try internal services var service = base.GetService <T>(type); if (service == null) { // First try MEF service = _appShell.ExportProvider.GetExportedValueOrDefault <T>(); if (service == null) { // Now try VS services. Only allowed on UI thread. _appShell.AssertIsOnMainThread(); if (_appShell.IsUnitTestEnvironment) { service = RPackage.Current.GetService(type ?? typeof(T)) as T; } else { service = VsPackage.GetGlobalService(type ?? typeof(T)) as T; } } } return(service); }
public IDisposable AddItem(UIElement element) { _shell.AssertIsOnMainThread(); EnsureItemsControlCreated(); _itemsControl.Items.Insert(0, element); return(Disposable.Create(() => _shell.DispatchOnUIThread(() => _itemsControl.Items.Remove(element)))); }
public async Task <bool> TryHandleCommandAsync(IImmutableSet <IProjectTree> nodes, long commandId, bool focused, long commandExecuteOptions, IntPtr variantArgIn, IntPtr variantArgOut) { _appShell.AssertIsOnMainThread(); if (commandId != RPackageCommandId.icmdSendToRemote) { return(false); } var properties = _configuredProject.Services.ExportProvider.GetExportedValue <ProjectProperties>(); string projectDir = Path.GetDirectoryName(_configuredProject.UnconfiguredProject.FullPath); string projectName = properties.GetProjectName(); string remotePath = await properties.GetRemoteProjectPathAsync(); await SendToRemoteAsync(nodes.GetAllFilePaths(), projectDir, projectName, remotePath); return(true); }