2009-10-26 15 views
8

Eclipse eklentisinde yeni bir dosya oluşturmaya çalışıyorum. Bu bir Java dosyası değil, örneğin bir HTML dosyası olabilir.Eclipse eklentisi: yeni bir dosya oluştur

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); 

dosya oluşturulur alır, fakat sorun herhangi türü olarak tanınan elde olmamasıdır;:

Şu anda yapıyorum Herhangi bir dahili düzenleyicide açamıyorum. Bu Eclipse'i yeniden başlatana kadar (yenilemeyi veya kapatmayı, sonra da projeyi açmaz). Yeniden başlatmanın ardından, dosya mükemmel kullanılabilir ve türü için doğru varsayılan düzenleyicide açılır.

Dosyayı "limbo" durumunun dışına almak için çağırmam gereken herhangi bir yöntem var mı?

cevap

7

thread O createFile çağrıyı bahsetmektedir ki, aynı zamanda açmak için bir FileEditorInput atıfta:

yerine java.io.File, sen IFile.create(..) veya IFile.createLink(..) kullanmalıdır. İlk olarak IProject.getFile(..) kullanarak projeden bir IFile tutamacını almanız, ardından bu tanıtıcıyı kullanarak dosyayı oluşturmanız gerekir.
Dosya oluşturulduktan sonra, bu dosyayı FileEditorInput oluşturabilir ve dosyayı bir düzenleyicide açmak için IWorkbenchPage.openEditor(..) kullanabilirsiniz.

Şimdi, bu tür bir yöntem (bu AbstractExampleInstallerWizard'dan itibaren) bu durumda herhangi bir yardıma sahip olabilir mi?

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); 
    } 

de bu SDOModelWizard yeni IFile üzerinde bir editör açılış bakınız: Nitekim

// 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

, hüner doğru düzenleyicisinde dosyayı vermedi açarak. Teşekkür ederim! – erwan