2011-07-07 9 views
13

Tôi mới phát triển trình cắm thêm nhật thực. Tôi muốn tùy chỉnh việc đổi tên của một dự án. Tôi cần phải xác nhận tên mới. Vậy làm thế nào tôi có thể ghi đè lên phương thức đổi tên/tái cấu trúc của eclipse?Đổi tên Eclipse/ghi đè cấu trúc lại

Tôi thấy thứ gì đó liên quan đến RenameParticipant, nhưng không hiểu rõ. Nó sẽ là tuyệt vời nếu ai đó có thể giải thích cho tôi các bước để ghi đè lên chức năng đổi tên.

Nhiều Cảm ơn, Ann

Trả lời

13

Các refactoring đổi tên có một số bộ vi xử lý mà phân lớp org.eclipse.ltk.core.refactoring.participants.RenameProcessor và chịu trách nhiệm đổi tên các yếu tố khác nhau. Ví dụ, có một bộ xử lý để đổi tên các dự án Java org.eclipse.jdt.internal.corext.refactoring.rename.RenameJavaProjectProcessor. Một người tham gia tái cấu trúc có thể tham gia vào việc kiểm tra điều kiện và thay đổi việc tạo ra một bộ xử lý tái cấu trúc. Ví dụ: để kiểm tra một số điều kiện trong quá trình tái cấu trúc lại tên, bạn nên phân lớp org.eclipse.ltk.core.refactoring.participants.RenameParticipant, ghi đè phương thức org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant.checkConditions(IProgressMonitor, CheckConditionsContext) và đăng ký người tham gia qua điểm mở rộng org.eclipse.ltk.core.refactoring.renameParticipants. Người tham gia org.eclipse.jdt.internal.corext.refactoring.nls.NLSAccessorFieldRenameParticipant cung cấp cho bạn một ví dụ tốt về cách tham gia vào quá trình tái cấu trúc lại tên.

Khi bạn khai báo tiện ích mở rộng của org.eclipse.ltk.core.refactoring.renameParticipants, bạn nên chỉ định yếu tố bạn muốn người tham gia của mình được thông báo. Ví dụ: xem cách sử dụng điểm mở rộng org.eclipse.ltk.core.refactoring.renameParticipants trong org.eclipse.jdt.ui/plugin.xml liên quan đến người tham gia đổi tên trường.

<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

Xin chào, Cảm ơn bạn đã trả lời. Tôi đã phân lớp RenameParticipant. Kiểm tra phương thức override. Và đăng ký người tham gia qua điểm mở rộng. Bây giờ nó có hiệu lực cho tất cả mọi thứ (ví dụ cho các dự án, các tập tin, vv). Tôi muốn xác nhận chỉ cho tên dự án. Tôi không hiểu nơi tôi có thể đặt RenameJavaProjectProcessor. Cảm ơn, – Angel

+0

'RenameJavaProjectProcessor' là trong JDT và bạn không phải lo lắng về nó. Bạn chỉ cần xác định phần tử mà người tham gia của bạn làm việc khi bạn khai báo điểm mở rộng của bạn trong 'plugin.xml'. Xem câu trả lời cập nhật của tôi về cách chỉ định yếu tố mà người tham gia của bạn hoạt động. – reprogrammer

+0

Cảm ơn! Nó hoạt động ngay bây giờ. – Angel