Eclipse переименование / переопределение рефакторинга - PullRequest
13 голосов
/ 08 июля 2011

Я новичок в разработке плагинов Eclipse. Я хочу настроить переименование проекта. Мне нужно подтвердить новое имя. Так как же я могу переопределить метод переименования / рефакторинга eclipse?

Я видел что-то, связанное с RenameParticipant, но не понял ясно. Было бы замечательно, если бы кто-то мог объяснить мне шаги по отмене функции переименования.

Большое спасибо, Ann

1 Ответ

13 голосов
/ 09 июля 2011

Рефакторинг переименования имеет несколько процессоров, которые имеют подкласс 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>
...