Methods Eclipse:重命名方法时的通知?前后

Methods Eclipse:重命名方法时的通知?前后,methods,eclipse-plugin,eclipse-jdt,Methods,Eclipse Plugin,Eclipse Jdt,我正在寻找一个事件或通知,使我能够在(java)类的方法被更改(重命名或删除/添加)时在Eclipse插件中做出反应。 我对被改变的方法的IJavaElement表示特别感兴趣 是否存在某种事件向我提供此类信息 我认为您正在寻找重命名参与者。请参阅扩展点org.eclipse.ltk.core.refactoring.renameParticipant 你有机会进入重构,当重构通过checkConditions方法开始,以及通过createChange方法结束时,你会得到一个回调。我想你正在寻找

我正在寻找一个事件或通知,使我能够在(java)类的方法被更改(重命名或删除/添加)时在Eclipse插件中做出反应。 我对被改变的方法的IJavaElement表示特别感兴趣


是否存在某种事件向我提供此类信息

我认为您正在寻找重命名参与者。请参阅扩展点
org.eclipse.ltk.core.refactoring.renameParticipant


你有机会进入重构,当重构通过
checkConditions
方法开始,以及通过
createChange
方法结束时,你会得到一个回调。

我想你正在寻找重命名参与者。请参阅扩展点
org.eclipse.ltk.core.refactoring.renameParticipant

你有机会进行一次重构,当重构通过
checkConditions
方法开始时,以及通过
createChange
方法结束时,你会得到一个回调。

这是我的plugin.xml

<extension
     point="org.eclipse.ltk.core.refactoring.renameParticipants">
  <renameParticipant
        class="bookmark.renameparticipant.JavaElementRenameParticipant"
        id="bookmark-pp.bookmark.renameParticipant1"
        name="name">
     <enablement>
        <with
              variable="element">
           <or>
              <instanceof
                    value="org.eclipse.jdt.core.ICompilationUnit">
              </instanceof>
              <instanceof
                    value="org.eclipse.jdt.core.IType">
              </instanceof>
              <instanceof
                    value="org.eclipse.jdt.core.IMethod">
              </instanceof>
              <instanceof
                    value="org.eclipse.jdt.core.IField">
              </instanceof></or>
        </with>
     </enablement>
  </renameParticipant>
这是我的plugin.xml

<extension
     point="org.eclipse.ltk.core.refactoring.renameParticipants">
  <renameParticipant
        class="bookmark.renameparticipant.JavaElementRenameParticipant"
        id="bookmark-pp.bookmark.renameParticipant1"
        name="name">
     <enablement>
        <with
              variable="element">
           <or>
              <instanceof
                    value="org.eclipse.jdt.core.ICompilationUnit">
              </instanceof>
              <instanceof
                    value="org.eclipse.jdt.core.IType">
              </instanceof>
              <instanceof
                    value="org.eclipse.jdt.core.IMethod">
              </instanceof>
              <instanceof
                    value="org.eclipse.jdt.core.IField">
              </instanceof></or>
        </with>
     </enablement>
  </renameParticipant>

非常感谢。如果我通过PackageExplorer(F2或在上下文菜单中重命名)重命名IMethod、IType等,它会工作。如果我在源文件中使用CTRL+ALT+R,它也可以工作。如果重命名只是源文件CTRL+2+R中的一个本地重命名,是否有方法捕获该重命名?后一种重命名似乎不会触发renameParticipant。只要正确设置参与者,这应该没有问题。问另一个问题,粘贴到rename participant java类的扩展以及相关部分。不知道我做错了什么,但是如果元素被CTRL+2+R重命名,则不会调用我的rename participant…谢谢。如果我通过PackageExplorer(F2或在上下文菜单中重命名)重命名IMethod、IType等,它会工作。如果我在源文件中使用CTRL+ALT+R,它也可以工作。如果重命名只是源文件CTRL+2+R中的一个本地重命名,是否有方法捕获该重命名?后一种重命名似乎不会触发renameParticipant。只要正确设置参与者,这应该没有问题。问另一个问题,粘贴到rename participant java类的扩展以及相关部分。不知道我做错了什么,但是如果元素被CTRL+2+R重命名,则不会调用我的rename participant。当然,局部变量不会被包括在内,因为您的plugin.xml中没有它们。您需要为
org.eclipse.jdt.core.ILocalVariable
添加instanceof test。我对局部变量不感兴趣,只对属于类定义(private、protected、package或public)的元素感兴趣。有两种重命名方法。第一个是通过使用您建议的扩展点和Eclipse的重构,这非常有效。第二种方法是使用源文件范围的重命名功能。第二种方法不会自动更新其他源文件中重命名元素的引用,而只更新当前打开的源文件中的引用。您的扩展点包括第一条路,但不包括第二条路。如果一个方法被CTRL+2然后R重命名,我如何获得重命名通知?当然,局部变量不包括在内,因为您的plugin.xml中没有它们。您需要为
org.eclipse.jdt.core.ILocalVariable
添加instanceof test。我对局部变量不感兴趣,只对属于类定义(private、protected、package或public)的元素感兴趣。有两种重命名方法。第一个是通过使用您建议的扩展点和Eclipse的重构,这非常有效。第二种方法是使用源文件范围的重命名功能。第二种方法不会自动更新其他源文件中重命名元素的引用,而只更新当前打开的源文件中的引用。您的扩展点包括第一条路,但不包括第二条路。如果方法被CTRL+2重命名,那么如何获得重命名通知?