編程生活

             :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            113 隨筆 :: 0 文章 :: 18 評(píng)論 :: 0 Trackbacks
          在基于JDT做插件開(kāi)發(fā)時(shí),經(jīng)常會(huì)碰到希望根據(jù)類名直接得到ICompilationUnit或IJavaElement,來(lái)訪問(wèn)這個(gè)類的JavaModel,但發(fā)現(xiàn)要實(shí)現(xiàn)這個(gè)實(shí)在是好困難,主要是因中JDT中SearchEngine的文檔或例子代碼簡(jiǎn)直找不到,只能從eclipse的jdt源碼中學(xué)習(xí),總結(jié)了一些使用經(jīng)驗(yàn):
          1.根據(jù)類名得到符合條件SearMatch
          public class SearchEngineUtils {
              
          /**
               * 
               * 
          @param clsName
               * 
          @return
               
          */

              
          public static List<SearchMatch> searchClass(final String clsName) {
                  
          final List<SearchMatch> matchs = new ArrayList<SearchMatch>();

                  SearchRequestor requestor 
          = new SearchRequestor() {

                      @Override
                      
          public void acceptSearchMatch(SearchMatch match) throws CoreException {
                          
          if (match.getResource().getName().lastIndexOf(clsName) > -1)
                              matchs.add(match);
                      }

                  }
          ;

                  SearchPattern pattern 
          = SearchPattern.createPattern(clsName, IJavaSearchConstants.CLASS, IJavaSearchConstants.DECLARATIONS,
                          SearchPattern.R_PATTERN_MATCH 
          | SearchPattern.R_CASE_SENSITIVE);

                  IJavaSearchScope scope 
          = SearchEngine.createWorkspaceScope();
                  
          try {
                      
          new SearchEngine().search(pattern, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, scope, requestor, null);
                  }
           catch (Exception e) {
                      e.printStackTrace();
                  }

                  
          return matchs;
              }

          }

          2.從SearchMatch得到ICompilationUnit或IJavaElement
          使用org.eclipse.jdt.internal.corext.util.SearchUtils,雖然它是一個(gè)內(nèi)部類,但好象還沒(méi)找到替代它的.
          posted on 2007-11-06 09:17 wilesun 閱讀(829) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 栾川县| 剑河县| 牡丹江市| 襄樊市| 克什克腾旗| 永昌县| 临城县| 乡宁县| 广西| 武清区| 安多县| 犍为县| 凭祥市| 巴林左旗| 南投市| 上高县| 房山区| 长沙市| 化隆| 合肥市| 镇巴县| 霍林郭勒市| 平陆县| 洛宁县| 宕昌县| 平谷区| 兴安县| 五家渠市| 巴彦县| 建始县| 瓮安县| 南江县| 海口市| 宁乡县| 定安县| 临安市| 兰西县| 崇文区| 贵州省| 庆云县| 栾川县|