2011-10-05 4 views
7

कहें कि मैंने अपना खुद का TextEditorX extends TextEditor परिभाषित किया है। ठेठ ग्रहण-आरसीपी परिदृश्य में (मानक प्लगइन्स, परियोजना एक्सप्लोरर/नेविगेटर के साथ कार्यक्षेत्र) व्यवहार करते हैं जब कोई है कि कुछ संपादक खोल दिया है एक फ़ाइल (परियोजना एक्सप्लोरर या नेविगेटर के माध्यम से) का नाम बदलने की कोशिश करता है:एक गंदे संपादकपार्ट ग्रहण को अपने संसाधन का नाम बदलने से कैसे रोकता है?

  • हैं संपादक dirty नहीं है, नामकरण की अनुमति है। बाद में editor.setInput() को नए फ़ाइल नाम के साथ तर्क के रूप में बुलाया जाएगा।

  • यदि यह dirty है, एक त्रुटि फेंक दिया जाता है ("संसाधन का नाम बदलकर": doc.txt न सहेजा गया है ":" मिले समस्याओं "एक गंभीर त्रुटि जबकि रिफैक्टरिंग प्रदर्शन हुआ")।

मेरे सवालों का:

  • जो स्तर पर इस व्यवहार परिभाषित किया गया है? मुझे लगता है कि पैकेज org.eclipse.ltk.ui.refactoring.resource शामिल है ... लेकिन, उदाहरण के लिए मान लीजिए कि जब भी संपादक गंदा नहीं होता है तब भी मैं नाम को अस्वीकार करना चाहता हूं: क्या यह व्यवहार संपादक (या दस्तावेज़ प्रदाता) में कुछ विधि द्वारा निर्धारित किया जा सकता है, या क्या मुझे कुछ RenameParticipant कोड/विस्तार करना चाहिए?

  • पुनर्विक्रेता कैसे जानता है कि संसाधन doc.txt उस संपादक उदाहरण द्वारा खोला गया है? क्या यह सिर्फ सभी खुले संपादकों की जांच करता है और प्रत्येक को अपने editorInput के लिए पूछता है, या documentProviders शामिल हैं? विशेष रूप से, मान लीजिए कि मेरे पास एक विशेष संपादक है कि, "मुख्य" फ़ाइल के अलावा, अन्य संसाधनों (एक बहु-फ़ाइल इनपुट) पर निर्भर करता है, और यह चाहता है कि नामांकनकर्ता किसी भी इनपुट को नाम बदलने से पहले उससे पूछे। आप इस परिदृश्य से कैसे संपर्क करेंगे?

+0

यहां स्रोत कोड नहीं मिला है, इसलिए यह देखना मुश्किल है कि कक्षाएं कहां शामिल हैं, लेकिन आपके पहले प्रश्न के लिए, क्या आपने अपने संपादक में 'सत्य' वापस करने के लिए 'isDirty() 'को ओवरराइड करने पर विचार किया है? यदि आप वास्तव में बदल गए हैं या नहीं, तो आप 'super.isDirty() 'का उपयोग कर सकते हैं ... –

+0

इसका दुष्प्रभाव नहीं होगा कि संपादक भाग के टैब पर छोटी" यह चीज़ गंदा है "तारांकन कभी दुर नही जाना? यह उपयोगकर्ताओं को अपने सिर खरोंच कर सकता है। – stracka

उत्तर

0

ग्रहण के लिए किसी संशोधित फ़ाइल के नाम को रोकने के लिए कोई सैद्धांतिक कारण नहीं है। एक के लिए, संपादक वर्कस्पेस के साथ एक रिसोर्स चेंजलिस्टर पंजीकृत कर सकता है, और एक MOVE अधिसूचना के जवाब में बस अपने आईडिटर इनपुट को अपडेट कर सकता है। सुनिश्चित नहीं है कि यह एक अच्छा जवाब है लेकिन शायद जाने के लिए एक अच्छा तरीका है।

संबंधित मुद्दे