編程生活

             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            113 隨筆 :: 0 文章 :: 18 評論 :: 0 Trackbacks
          在基于JDT做插件開發時,經常會碰到希望根據類名直接得到ICompilationUnit或IJavaElement,來訪問這個類的JavaModel,但發現要實現這個實在是好困難,主要是因中JDT中SearchEngine的文檔或例子代碼簡直找不到,只能從eclipse的jdt源碼中學習,總結了一些使用經驗:
          1.根據類名得到符合條件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,雖然它是一個內部類,但好象還沒找到替代它的.
          posted on 2007-11-06 09:17 wilesun 閱讀(829) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 镇远县| 尚义县| 江安县| 重庆市| 全南县| 张掖市| 石景山区| 涟水县| 玉田县| 巍山| 陇西县| 桓仁| 工布江达县| 浑源县| 延吉市| 天水市| 望城县| 临漳县| 自治县| 曲沃县| 揭东县| 永年县| 新蔡县| 桓仁| 竹山县| 皮山县| 西乌珠穆沁旗| 遵义县| 宁波市| 龙南县| 商洛市| 泊头市| 饶阳县| 慈溪市| 巴彦淖尔市| 土默特右旗| 通州市| 东辽县| 日土县| 六枝特区| 陆丰市|