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

时间:2012-03-25 18:42:03

标签: methods eclipse-plugin eclipse-jdt

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

是否存在某种为我提供此类信息的事件?

2 个答案:

答案 0 :(得分:1)

这是我的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>

和我的重命名参与者的来源:

我在参与者的init方法中设置了一个断点,但如果我在Eclipse中使用CTRL + 2 + R,甚至不会调用init:

@Override
    protected boolean initialize(Object element) {

        if (!(element instanceof IJavaElement)) {
            return false;
        }

        oldHandleId = ((IJavaElement) element).getHandleIdentifier();
        detectElementType((IJavaElement) element);

        newHandleId = generateNewHandleId(oldHandleId);

        if (!initSuccessful()) {
            return false;
        }

        return true;
    }

答案 1 :(得分:0)

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

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