我正在寻找一个事件或通知,当我改变(重命名或删除/添加)(java)类的方法时,我可以在Eclipse-Plugin中做出反应。 我对更改方法的IJavaElement表示特别感兴趣。
是否存在某种为我提供此类信息的事件?
答案 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
方法结束时,您会收到回调。