2011-07-07 13 views
13

Soy nuevo en eclipse de desarrollo de plug-in. Quiero personalizar el cambio de nombre de un proyecto. Necesito validar el nuevo nombre. Entonces, ¿cómo puedo anular el método de cambio de nombre/refactorización de eclipse?Eclipse rename/refactoring override

Vi algo relacionado con RenameParticipant, pero no entendí claramente. Sería genial si alguien pudiera explicarme los pasos para anular la funcionalidad de cambio de nombre.

Muchas gracias, Ann

Respuesta

13

La refactorización de cambio de nombre tiene varios procesadores que subclase org.eclipse.ltk.core.refactoring.participants.RenameProcessor y son responsables de cambiar el nombre de los diferentes elementos. Por ejemplo, hay un procesador para cambiar el nombre de los proyectos de Java org.eclipse.jdt.internal.corext.refactoring.rename.RenameJavaProjectProcessor. Un participante de refactorización puede participar en la verificación de condición y cambiar la creación de un procesador de refactorización. Por ejemplo, para verificar algunas condiciones durante el cambio de nombre de la refactorización, debe crear la subclase org.eclipse.ltk.core.refactoring.participants.RenameParticipant, anular el método org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant.checkConditions(IProgressMonitor, CheckConditionsContext) y registrar al participante a través del punto de extensión org.eclipse.ltk.core.refactoring.renameParticipants. El participante org.eclipse.jdt.internal.corext.refactoring.nls.NLSAccessorFieldRenameParticipant le brinda un buen ejemplo de cómo participar en una refacturación de redenominación.

Cuando declara su extensión del punto de extensión org.eclipse.ltk.core.refactoring.renameParticipants, debe especificar el elemento sobre el que desea que se notifique a su participante. Por ejemplo, vea cómo el siguiente uso del punto de extensión org.eclipse.ltk.core.refactoring.renameParticipants en org.eclipse.jdt.ui/plugin.xml involucra al participante en el cambio de nombre de los campos.

<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> 
+0

Hola, gracias por su respuesta. Subclasé RenameParticipant. Overrid método checkConditions. Y registró al participante a través del punto de extensión. Ahora valida para todo (es decir, para proyectos, archivos, etc.). Quiero validación solo para el nombre del proyecto. No entendí dónde puedo colocar RenameJavaProjectProcessor. Gracias, – Angel

+0

'RenameJavaProjectProcessor' está en JDT y no tiene que preocuparse por eso. Solo necesita especificar el elemento en el que trabaja su participante cuando declare su punto de extensión en 'plugin.xml'. Vea mi respuesta actualizada sobre cómo especificar el elemento en el que opera su participante. – reprogrammer

+0

¡Gracias! Funcionó ahora. – Angel