Наследование: ViewModelBase, INavigateSelection
        private SearchResultsViewModel CreateViewModel()
        {
            var errors = from error in _state.ModuleExceptions
                let declaration = FindModuleDeclaration(error.Item1)
                where declaration != null
                select new SearchResultItem(declaration, error.Item2.GetNavigateCodeEventArgs(declaration), error.Item2.Message);

            var searchResultItems = errors as IList<SearchResultItem> ?? errors.ToList();
            var viewModel = new SearchResultsViewModel(_navigateCommand, "Parser Errors", null, searchResultItems);
            return viewModel;
        }
        private void RemoveTab(SearchResultsViewModel viewModel)
        {
            if (viewModel != null)
            {
                _tabs.Remove(viewModel);
            }

            if (!_tabs.Any())
            {
                OnLastTabClosed();
            }
        }
        private void RemoveTab(SearchResultsViewModel viewModel)
        {
            if (viewModel != null)
            {
                _tabs.Remove(viewModel);
            }

            if (!_tabs.Any())
            {
                OnLastTabClosed();
            }
        }
Пример #4
0
        private SearchResultsViewModel CreateViewModel(ProjectDeclaration project, ProjectDeclaration reference, IEnumerable <IdentifierReference> usages)
        {
            var results = usages.Select(usage =>
                                        new SearchResultItem(usage.ParentNonScoping,
                                                             new NavigateCodeEventArgs(usage.QualifiedModuleName, usage.Selection),
                                                             GetModuleLine(usage.QualifiedModuleName, usage.Selection.StartLine)));

            var viewModel = new SearchResultsViewModel(_navigateCommand,
                                                       string.Format(RubberduckUI.SearchResults_AllReferencesTabFormat, reference.IdentifierName), project, results);

            return(viewModel);
        }
Пример #5
0
        private SearchResultsViewModel CreateViewModel(Declaration declaration)
        {
            var results = declaration.References.Distinct().Select(reference =>
                                                                   new SearchResultItem(
                                                                       reference.ParentNonScoping,
                                                                       new NavigateCodeEventArgs(reference.QualifiedModuleName, reference.Selection),
                                                                       GetModuleLine(reference.QualifiedModuleName, reference.Selection.StartLine)));

            var accessor = declaration.DeclarationType.HasFlag(DeclarationType.PropertyGet) ? "(get)"
                : declaration.DeclarationType.HasFlag(DeclarationType.PropertyLet) ? "(let)"
                : declaration.DeclarationType.HasFlag(DeclarationType.PropertySet) ? "(set)"
                : string.Empty;

            var tabCaption = $"{declaration.IdentifierName} {accessor}".Trim();


            var viewModel = new SearchResultsViewModel(_navigateCommand,
                                                       string.Format(RubberduckUI.SearchResults_AllReferencesTabFormat, tabCaption), declaration, results);

            return(viewModel);
        }
        private void ShowResults(SearchResultsViewModel viewModel)
        {
            if (viewModel.SearchResults.Count == 1)
            {
                viewModel.NavigateCommand.Execute(viewModel.SearchResults[0].GetNavigationArgs());
                return;
            }

            try
            {
                _viewModel.AddTab(viewModel);
                _viewModel.SelectedTab = viewModel;

                var presenter = _presenterService.Presenter(_viewModel);
                presenter.Show();
            }
            catch (Exception e)
            {
                _logger.Error(e);
            }
        }
 public void AddTab(SearchResultsViewModel viewModel)
 {
     viewModel.Close += viewModel_Close;
     _tabs.Add(viewModel);
 }
        private SearchResultsViewModel CreateViewModel(Declaration declaration)
        {
            var results = declaration.References.Select(reference =>
                new SearchResultItem(
                    reference.ParentNonScoping,
                    new NavigateCodeEventArgs(reference.QualifiedModuleName, reference.Selection), 
                    reference.QualifiedModuleName.Component.CodeModule.Lines[reference.Selection.StartLine, 1].Trim()));
            
            var viewModel = new SearchResultsViewModel(_navigateCommand,
                string.Format(RubberduckUI.SearchResults_AllReferencesTabFormat, declaration.IdentifierName), declaration, results);

            return viewModel;
        }
 public void AddTab(SearchResultsViewModel viewModel)
 {
     viewModel.Close += viewModel_Close;
     Tabs.Add(viewModel);
 }
        private SearchResultsViewModel CreateViewModel(Declaration declaration, string identifier = null, IEnumerable <IdentifierReference> references = null)
        {
            var nameRefs = (references ?? declaration.References)
                           .Where(reference => !reference.IsArrayAccess)
                           .Distinct()
                           .GroupBy(reference => reference.QualifiedModuleName)
                           .ToDictionary(group => group.Key);

            var argRefs = (declaration is ParameterDeclaration parameter
                    ? parameter.ArgumentReferences
                    : Enumerable.Empty <ArgumentReference>())
                          .Distinct()
                          .GroupBy(argRef => argRef.QualifiedModuleName)
                          .ToDictionary(group => group.Key);

            var results = new List <SearchResultItem>();
            var modules = nameRefs.Keys.Concat(argRefs.Keys).Distinct();

            foreach (var qualifiedModuleName in modules)
            {
                var component = _state.ProjectsProvider.Component(qualifiedModuleName);
                if (component == null)
                {
                    _logger.Warn($"Could not retrieve the IVBComponent for module '{qualifiedModuleName}'.");
                    continue;
                }
                var module = component.CodeModule;

                if (nameRefs.TryGetValue(qualifiedModuleName, out var identifierReferences))
                {
                    foreach (var identifierReference in identifierReferences)
                    {
                        var(context, selection) = identifierReference.HighlightSelection(module);
                        var result = new SearchResultItem(
                            identifierReference.ParentNonScoping,
                            new NavigateCodeEventArgs(qualifiedModuleName, identifierReference.Selection),
                            context, selection);
                        results.Add(result);
                    }
                }

                if (argRefs.TryGetValue(qualifiedModuleName, out var argReferences))
                {
                    foreach (var argumentReference in argReferences)
                    {
                        var(context, selection) = argumentReference.HighlightSelection(module);
                        var result = new SearchResultItem(
                            argumentReference.ParentNonScoping,
                            new NavigateCodeEventArgs(qualifiedModuleName, argumentReference.Selection),
                            context, selection);
                        results.Add(result);
                    }
                }
            }

            var accessor = declaration.DeclarationType.HasFlag(DeclarationType.PropertyGet) ? "(get)"
                : declaration.DeclarationType.HasFlag(DeclarationType.PropertyLet) ? "(let)"
                : declaration.DeclarationType.HasFlag(DeclarationType.PropertySet) ? "(set)"
                : string.Empty;

            var tabCaption = $"{identifier ?? declaration.IdentifierName} {accessor}".Trim();


            var viewModel = new SearchResultsViewModel(_navigateCommand,
                                                       string.Format(RubberduckUI.SearchResults_AllReferencesTabFormat, tabCaption), declaration,
                                                       results.OrderBy(item => item.ParentScope.QualifiedModuleName.ToString())
                                                       .ThenBy(item => item.Selection)
                                                       .ToList());

            return(viewModel);
        }
        private SearchResultsViewModel CreateViewModel(Declaration target)
        {
            var results = FindImplementations(target).Select(declaration =>
                new SearchResultItem(
                    declaration.ParentScopeDeclaration,
                    new NavigateCodeEventArgs(declaration.QualifiedName.QualifiedModuleName, declaration.Selection),
                    declaration.QualifiedName.QualifiedModuleName.Component.CodeModule.Lines[declaration.Selection.StartLine, 1].Trim()));

            var viewModel = new SearchResultsViewModel(_navigateCommand,
                string.Format(RubberduckUI.SearchResults_AllImplementationsTabFormat, target.IdentifierName), target, results);

            return viewModel;
        }