Eclipse重命名/重构覆盖

时间:2011-07-07 23:55:06

标签: eclipse refactoring override rename

我是eclipse插件开发的新手。我想自定义项目的重命名。我需要验证新名称。那么如何覆盖eclipse的重命名/重构方法?

我看到了与RenameParticipant相关的内容,但是并不清楚。如果有人可以向我解释覆盖重命名功能的步骤,那就太好了。

非常感谢, 安

1 个答案:

答案 0 :(得分: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>