2011-07-07 21 views
13

मैं प्लग-इन विकास ग्रहण करने के लिए नया हूं। मैं एक परियोजना के नामकरण को अनुकूलित करना चाहता हूं। मुझे नए नाम को प्रमाणित करने की आवश्यकता है। तो मैं ग्रहण के नाम बदलने/रीफैक्टरिंग विधि को कैसे ओवरराइड कर सकता हूं?ग्रहण नाम बदलें/रीफैक्टरिंग ओवरराइड

मैंने RenameParticipant से संबंधित कुछ देखा, लेकिन स्पष्ट रूप से समझ में नहीं आया। अगर कोई नाम बदलने की कार्यक्षमता को ओवरराइड करने के लिए मुझे कुछ कदम बता सकता है तो यह बहुत अच्छा होगा।

कई धन्यवाद, एन

उत्तर

13

नाम बदलने रिफैक्टरिंग कई प्रोसेसरों org.eclipse.ltk.core.refactoring.participants.RenameProcessor उपवर्ग और विभिन्न तत्वों का नाम बदलने के लिए जिम्मेदार हैं है। उदाहरण के लिए, जावा प्रोजेक्ट 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.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> 
+0

हाय, आपके उत्तर के लिए धन्यवाद। मैंने RenameParticipant subclassed। ओवर्रिड विधि चेक कंडीशनिंग। और प्रतिभागी को विस्तार बिंदु के माध्यम से पंजीकृत किया। अब यह सब कुछ के लिए सत्यापन करता है (यानी परियोजनाओं, फाइलों आदि के लिए)। मैं केवल परियोजना के नाम के लिए सत्यापन चाहता हूँ। मुझे समझ में नहीं आया कि मैं RenameJavaProjectProcessor कहां रख सकता हूं। धन्यवाद, – Angel

+0

'RenameJavaProjectProcessor' जेडीटी में है और आपको इसके बारे में चिंता करने की ज़रूरत नहीं है। जब आप 'setup.xml' में अपना एक्सटेंशन पॉइंट घोषित करते हैं तो आपको केवल उस प्रतिभागी को निर्दिष्ट करने की आवश्यकता होती है जब आपका प्रतिभागी काम करता है। उस तत्व को निर्दिष्ट करने के तरीके पर मेरा अद्यतन उत्तर देखें जिस पर आपका प्रतिभागी संचालित होता है। – reprogrammer

+0

धन्यवाद! यह अब काम किया। – Angel