Плагин Eclipse: создайте новый файл
-
06-07-2019 - |
Вопрос
Я пытаюсь создать новый файл в плагине Eclipse. Это не обязательно файл Java, это может быть, например, файл 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);
Файл создается, но проблема в том, что он не распознается как любой тип; Я не могу открыть его в любом внутреннем редакторе. Пока я не перезапущу Eclipse (обновить или закрыть, а затем открыть проект не поможет). После перезапуска файл отлично подходит для использования и открывается в правильном редакторе по умолчанию для его типа.
Есть ли какой-либо метод, который мне нужно вызвать, чтобы получить файл за пределами этого " лимба " состояние?
Решение
В теме упоминается 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;
}