2009-10-26 9 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

threadcreateFileコールを言及しないが、また、それを開くためにFileEditorInputを参照していること:

代わりのjava.io.File、あなたはIFile.create(..)IFile.createLink(..)を使用する必要があります。最初にIProject.getFile(..)を使用してプロジェクトからIFileハンドルを取得し、そのハンドルを使用してファイルを作成する必要があります。
ファイルを作成したら、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

関連する問題