2009-10-26 13 views
8

मैं ग्रहण प्लगइन में एक नई फ़ाइल बनाने की कोशिश कर रहा हूं। यह जरूरी नहीं कि एक जावा फ़ाइल है, उदाहरण के लिए यह एक HTML फ़ाइल हो सकती है।ग्रहण प्लगइन: एक नई फ़ाइल बनाएं

अभी मैं यह कर रहा हूँ:

IProject project = ...; 
IFile file = project.getFile("/somepath/somefilename"); // such as file.exists() == false 
String contents = "Whatever"; 
InputStream source = new ByteArrayInputStream(contents.getBytes()); 
file.create(source, false, null); 

फ़ाइल बनाई हो जाता है, लेकिन समस्या यह है कि यह किसी भी प्रकार के रूप में मान्यता प्राप्त नहीं करता है; मैं इसे किसी भी आंतरिक संपादक में नहीं खोल सकता। तब तक जब तक मैं ग्रहण को पुनरारंभ नहीं करता (रीफ्रेश या बंद करें तो परियोजना को खोलने में मदद नहीं करता है)। पुनरारंभ करने के बाद, फ़ाइल पूरी तरह प्रयोग योग्य है और इसके प्रकार के लिए सही डिफ़ॉल्ट संपादक में खुलती है।

क्या ऐसी कोई विधि है जिसे मुझे उस "लिम्बो" स्थिति से बाहर फ़ाइल प्राप्त करने के लिए कॉल करने की आवश्यकता है?

उत्तर

7

thread कि createFile कॉल का उल्लेख करता है, लेकिन यह भी इसे खोलने के लिए एक FileEditorInput को दर्शाता है:

के बजाय java.io.File, आप IFile.create(..) या IFile.createLink(..) उपयोग करना चाहिए। आपको IProject.getFile(..) का उपयोग कर प्रोजेक्ट से IFile संभाल प्राप्त करने की आवश्यकता होगी, फिर उस हैंडल का उपयोग करके फ़ाइल बनाएं।
फ़ाइल बनने के बाद आप FileEditorInput बना सकते हैं और एक संपादक में फ़ाइल खोलने के लिए IWorkbenchPage.openEditor(..) का उपयोग कर सकते हैं।

अब, इस तरह की विधि (इस AbstractExampleInstallerWizard से) इस मामले में किसी भी मदद की होगी?

// Open an editor on the new file. 
    // 
    try 
    { 
    page.openEditor 
     (new FileEditorInput(modelFile), 
     workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId()); 
    } 
    catch (PartInitException exception) 
    { 
    MessageDialog.openError(workbenchWindow.getShell(), SDOEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage()); 
    return false; 
    } 
+0

दरअसल चाल थी सही संपादक में फ़ाइल खोलने,:

protected void openEditor(IFile file, String editorID) throws PartInitException { IEditorRegistry editorRegistry = getWorkbench().getEditorRegistry(); if (editorID == null || editorRegistry.findEditor(editorID) == null) { editorID = getWorkbench().getEditorRegistry().getDefaultEditor(file.getFullPath().toString()).getId(); } IWorkbenchPage page = getWorkbench().getActiveWorkbenchWindow().getActivePage(); page.openEditor(new FileEditorInput(file), editorID, true, IWorkbenchPage.MATCH_ID); } 

भी इस SDOModelWizard एक नया IFile पर एक संपादक खोलने देखें। धन्यवाद! – erwan

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