Ответ 1
Рефакторинг переименования имеет несколько процессоров, подклассы 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.ltk.core.refactoring.renameParticipants
в org.eclipse.jdt.ui/plugin.xml
включает участника в переименование полей.
<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>