Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        public IDisposable AddItem(UIElement element)
        {
            _shell.AssertIsOnMainThread();
            EnsureItemsControlCreated();

            _itemsControl.Items.Insert(0, element);
            return(Disposable.Create(() => _shell.DispatchOnUIThread(() => _itemsControl.Items.Remove(element))));
        }
Example #4
0
        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);
        }