如何以编程方式在 Eclipse 插件中设置文本编辑器的字符串输入?
How to programatically set String input of TextEditor in Eclipse plug-in?
我想要什么:我想为我的 Eclipse 编辑器插件编写 JUnit 测试。为此,我想设置一个 TextEditor
扩展的实例。然后我想把这个TextEditor
的输入设置成一个String,这样String的内容就是编辑器实例的输入。然后我想 运行 一些测试并断言编辑器标记错误等等。
我失败的地方:我不知道如何从字符串设置编辑器的输入。编辑器必须这样做的唯一功能是 setInput(IEditorInput input)
,但我不知道如何创建一个 ÌEditorInput
内容为字符串。
是否有可能这样做,如果没有,是否有任何其他方法可以将编辑器的输入设置为给定的字符串?
您可以按照 Greg 的建议创建(工作区)文件,或者实施专门的 IEditorInput
并使用此输入打开文本编辑器。
例如:
// uninteresting methods left out for brevity
class StringEditorInput implements IStorageEditorInput {
@Override
public boolean exists() {
return true;
}
@Override
public IStorage getStorage() throws CoreException {
return new StringStorage();
}
}
class StringStorage implements IStorage {
@Override
public InputStream getContents() throws CoreException {
return new ByteArrayInputStream( "Hello editor!".getBytes( StandardCharsets.UTF_8 ) );
}
}
String editorId = "org.eclipse.ui.DefaultTextEditor";
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IEditorPart editor = IDE.openEditor( page , new StringEditorInput(), editorId );
我想要什么:我想为我的 Eclipse 编辑器插件编写 JUnit 测试。为此,我想设置一个 TextEditor
扩展的实例。然后我想把这个TextEditor
的输入设置成一个String,这样String的内容就是编辑器实例的输入。然后我想 运行 一些测试并断言编辑器标记错误等等。
我失败的地方:我不知道如何从字符串设置编辑器的输入。编辑器必须这样做的唯一功能是 setInput(IEditorInput input)
,但我不知道如何创建一个 ÌEditorInput
内容为字符串。
是否有可能这样做,如果没有,是否有任何其他方法可以将编辑器的输入设置为给定的字符串?
您可以按照 Greg 的建议创建(工作区)文件,或者实施专门的 IEditorInput
并使用此输入打开文本编辑器。
例如:
// uninteresting methods left out for brevity
class StringEditorInput implements IStorageEditorInput {
@Override
public boolean exists() {
return true;
}
@Override
public IStorage getStorage() throws CoreException {
return new StringStorage();
}
}
class StringStorage implements IStorage {
@Override
public InputStream getContents() throws CoreException {
return new ByteArrayInputStream( "Hello editor!".getBytes( StandardCharsets.UTF_8 ) );
}
}
String editorId = "org.eclipse.ui.DefaultTextEditor";
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IEditorPart editor = IDE.openEditor( page , new StringEditorInput(), editorId );