【问题标题】:I need to go through (iterate) ISearchResult so as to compare the results of eclipse search我需要通过(迭代) ISearchResult 以便比较 eclipse 搜索的结果
【发布时间】:2017-07-03 09:28:17
【问题描述】:

我有一个IsearchResult 对象,我需要遍历(迭代)它以便比较每个结果。

e.g. I look for (ctrl+H) add method.

and then I have this results' list

我需要遍历这个列表(它存储在 ISearchResult 对象中)并比较查询的每个结果。

我有这个代码。

NewSearchUI.addQueryListener(new IQueryListener() {

            @Override
            public void queryStarting(ISearchQuery query) {
                System.out.println("query start " + query);

            }

            @Override
            public void queryRemoved(ISearchQuery query) {
            }

            @Override
            public void queryFinished(ISearchQuery query) {
                System.out.println("query finished " + query);
                System.out.println("result " + query.getSearchResult().getLabel());
                query.getSearchResult().addListener(new ISearchResultListener() {

                    @Override
                    public void searchResultChanged(SearchResultEvent e) {
                    }
                });
            }

            @Override
            public void queryAdded(ISearchQuery query) {
            }

我需要遍历结果列表并比较或提取每个结果的信息。

【问题讨论】:

  • 你卡在哪里了?
  • 我需要用监听器迭代 ISearchResult 以便知道每个结果

标签: eclipse eclipse-plugin eclipse-rcp eclipse-pde


【解决方案1】:

您不能迭代结果。

您必须在queryStarting 方法中添加ISearchResultListener 并保存在searchResultChanged 调用中提供给您的结果。

NewSearchUI.addQueryListener(new IQueryListener() {

        @Override
        public void queryStarting(ISearchQuery query) {
            System.out.println("query start " + query);

            // Starting listening to the search query

            query.getSearchResult().addListener(new ISearchResultListener() {

                @Override
                public void searchResultChanged(SearchResultEvent e) {
                   // TODO save the results as they appear
                }
            });

        }

        @Override
        public void queryRemoved(ISearchQuery query) {
        }

        @Override
        public void queryFinished(ISearchQuery query) {
            System.out.println("query finished " + query);
            System.out.println("result " + query.getSearchResult().getLabel());
        }

        @Override
        public void queryAdded(ISearchQuery query) {
        }

【讨论】:

  • 如果我对方法进行 java 搜索,我如何知道结果列表中的方法名称?
  • 不知道。你将不得不运行代码,看看你得到了什么。
  • 它正在返回一个 org.eclipse.jdt.internal.ui.search.JavaSearchResult 类的对象。我该如何处理?
  • 我不知道,您必须阅读源代码才能看到它提供的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-25
  • 2016-11-22
  • 1970-01-01
  • 2018-08-10
  • 2016-01-04
  • 2013-10-25
  • 1970-01-01
相关资源
最近更新 更多