示例#1
0
        public override Action GetSearchesExecution(IDataContext dataContext, INavigationExecutionHost host)
        {
            var searches = new[] { new FindUsagesOfElementContextSearch(declaredElement) };

            if (searches.Any())
            {
                return(() => Execute(dataContext, searches, host));
            }
            return(null);
        }
        protected override void ShowResults(IDataContext context, INavigationExecutionHost host, string title, ICollection <IOccurence> occurences, Func <TDescriptor> descriptorBuilder, IComparer <IOccurence> customSearchRequestComparer)
        {
            var occurencesList = occurences.ToList();

            occurencesList.Sort((occurence, occurence1) =>
            {
                var result = customSearchRequestComparer.Compare(occurence, occurence1);
                if (result != 0)
                {
                    return(result);
                }
                return(OccurenceUtil.CompareOccurences(occurence, occurence1, OccurencePresentationOptions.DefaultOptions));
            });

            host.ShowResultsPopupMenu(context, occurencesList, descriptorBuilder, ProvideFeatureSpecificPresentationOptions(), true, title);
        }
        protected override void Execute(IDataContext dataContext, IEnumerable <T> searches,
                                        INavigationExecutionHost host)
        {
            var request     = searches.SelectNotNull(item => item.CreateSearchRequest(dataContext)).SingleOrDefault();
            var occurrences = request?.Search();

            if (occurrences == null)
            {
                return;
            }

            if (occurrences.IsEmpty())
            {
                ShowToolTip(dataContext, NoResultsFoundText);
                return;
            }

            if (host.ProcessImmediateResultHighlightUsages(dataContext, occurrences))
            {
                return;
            }

            host.ShowContextPopupMenu(
                dataContext,
                occurrences,
                () => new LinkedTypesSearchDescriptor(request, occurrences),
                OccurrencePresentationOptions.DefaultOptions,
                skipMenuIfSingleEnabled: true,
                request.Title,
                () =>
            {
                var typeElementsForDiagram =
                    OccurrenceUtil.GetTypeElementsForDiagram(request, occurrences).ToList();
                return(new Pair <ICollection <ITypeElement>, TypeDependenciesOptions>(typeElementsForDiagram,
                                                                                      new TypeDependenciesOptions(new[] { TypeElementDependencyType.ReturnType },
                                                                                                                  TypeDependenciesOptions.CollapseBigFoldersFunc)));
            });
        }
        protected override void ExecuteSearchRequest(IDataContext context, SearchRequest searchRequest, INavigationExecutionHost host)
        {
            var provider    = searchRequest.Solution.GetComponent <FindUsagesAsyncViewProviderBase>();
            var viewFactory = provider.GetFactoryGotoUsages(searchRequest, host, this);
            var executer    = new SearchRequestExecuter(context, searchRequest, this, host, viewFactory);

            executer.Execute();
        }
        protected override void Execute(IDataContext dataContext, IEnumerable <IRegisteredComponentsContextSearch> searches, INavigationExecutionHost host)
        {
            List <RegisteredComponentsSearchRequest> requests = searches.SelectNotNull(item => item.GetRegisteredComponentsRequest(dataContext)).ToList();
            ITextControl textControl = dataContext.GetData(JetBrains.TextControl.DataContext.DataConstants.TEXT_CONTROL);

            if (textControl != null && requests.Any())
            {
                RegisteredComponentsSearchRequest requestToExecute = requests.First();
                ICollection <IOccurence>          occurences       = requestToExecute.Search();
                if (occurences.IsEmpty())
                {
                    Shell.Instance.Components.Tooltips().ShowAtCaret(EternalLifetime.Instance, NoRegisteredTypesFound, textControl, locks, Shell.Instance.GetComponent <IActionManager>());
                }
                else
                {
                    Func <SearchRegisteredComponentsDescriptor> descriptorBuilder = () => new SearchRegisteredComponentsDescriptor(requestToExecute, occurences);
#if !SDK80
                    host.ShowResultsPopupMenu(dataContext, occurences, descriptorBuilder, null, true, requestToExecute.Title);
#else
                    host.ShowContextPopupMenu(dataContext, occurences, descriptorBuilder, null, true, requestToExecute.Title);
#endif
                }
            }
        }