2011-07-07 86 views
13

我是eclipse插件開發新手。我想自定義項目的重命名。我需要驗證新名稱。那麼我怎樣才能覆蓋eclipse的重命名/重構方法?Eclipse重命名/重構覆蓋

我看到一些與RenameParticipant相關的東西,但是不清楚。如果有人能夠解釋我重寫重命名功能的步驟,那將會很棒。

非常感謝, 安

回答

13

的重命名重構有繼承org.eclipse.ltk.core.refactoring.participants.RenameProcessor,並負責重命名不同元素的多個處理器。例如,有一個處理器用於重命名Java項目org.eclipse.jdt.internal.corext.refactoring.rename.RenameJavaProjectProcessor。重構參與者可以參與條件檢查並更改重構處理器的創建。例如,要在重命名重構過程中檢查一些條件,您應該子類org.eclipse.ltk.core.refactoring.participants.RenameParticipant,覆蓋方法org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant.checkConditions(IProgressMonitor, CheckConditionsContext)並通過擴展點org.eclipse.ltk.core.refactoring.renameParticipants註冊參與者。參與者org.eclipse.jdt.internal.corext.refactoring.nls.NLSAccessorFieldRenameParticipant爲您提供了一個如何參與重命名重構的好例子。

當您聲明擴展名爲org.eclipse.ltk.core.refactoring.renameParticipants的擴展點時,應指定您希望參與者獲得通知的元素。例如,請參閱org.eclipse.jdt.ui/plugin.xmlorg.eclipse.ltk.core.refactoring.renameParticipants擴展點的以下用法涉及參與者重命名字段的情況。

<extension point="org.eclipse.ltk.core.refactoring.renameParticipants"> 
    <renameParticipant class="org.eclipse.jdt.internal.corext.refactoring.nls.NLSAccessorFieldRenameParticipant" id="org.eclipse.jdt.ui.NLSFieldRenameParticipant" name="%Refactoring.NLSFieldRenameParticipant"> 
    <enablement> 
     <with variable="affectedNatures"> 
     <iterate operator="or"> 
      <equals value="org.eclipse.jdt.core.javanature"/> 
     </iterate> 
     </with> 
     <with variable="element"> 
     <instanceof value="org.eclipse.jdt.core.IField"/> 
     </with> 
    </enablement> 
    </renameParticipant> 
</extension> 
+0

嗨,謝謝你的回覆。我分類爲RenameParticipant。覆蓋方法checkConditions。並通過擴展點註冊參與者。現在它確認了一切(即項目,文件等)。我只想驗證項目名稱。我不明白我可以放置RenameJavaProjectProcessor的位置。謝謝, – Angel

+0

'RenameJavaProjectProcessor'在JDT中,你不必擔心它。當你在'plugin.xml'中聲明你的擴展點時,你只需要指定你的參與者工作的元素。查看我的更新答案,瞭解如何指定參與者操作的元素。 – reprogrammer

+0

謝謝!它現在有效。 – Angel