2009-10-26 5 views
8

Я пытаюсь создать новый файл в плагине eclipse. Это не обязательно файл Java, это может быть HTML-файл, например.Плагин Eclipse: создайте новый файл

Прямо сейчас я делаю это:

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

файл будет создаваться, но проблема в том, что он не получает признан любого типа; Я не могу открыть его ни в одном внутреннем редакторе. Это до тех пор, пока я не перезапущу Eclipse (обновить или закрыть, тогда открыть проект не поможет). После перезагрузки файл отлично используется и открывается в правильном редакторе по умолчанию для его типа.

Есть ли какой-либо метод, который мне нужно вызвать, чтобы получить файл за пределами этого состояния «limbo»?

ответ

7

Это thread упоминает о createFile вызов, но также относится к FileEditorInput, чтобы открыть его:

Вместо java.io.File, вы должны использовать IFile.create(..) или IFile.createLink(..). Сначала вам нужно получить дескриптор IFile, используя IProject.getFile(..), а затем создайте файл с помощью этого дескриптора.
После создания файла вы можете создать FileEditorInput и использовать IWorkbenchPage.openEditor(..), чтобы открыть файл в редакторе.

Теперь, будет ли такой способ (из этого AbstractExampleInstallerWizard) оказать любую помощь в этом случае?

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:

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

Действительно, открыв файл в правильном редакторе сделал трюк. Спасибо! – erwan

Смежные вопросы