如何在Eclipse插件中以编程方式设置TextEditor的String输入?

时间:2017-02-03 15:43:08

标签: java eclipse eclipse-plugin eclipse-rcp

我想要的是什么:我想为Eclipse编辑器插件编写JUnit测试。为此,我想设置TextEditor扩展名的实例。然后我想从String设置此TextEditor的输入,以便String的内容是编辑器实例的输入。然后我想运行一些测试并声明编辑器标记错误等等。

我失败的地方:我不知道如何从字符串中设置编辑器的输入。编辑器必须执行的唯一功能是setInput(IEditorInput input),但我不知道如何使用字符串创建ÌEditorInput作为其内容。

是否有可能这样做,如果没有,还有其他任何方式将编辑器的输入设置为给定的字符串吗?

1 个答案:

答案 0 :(得分:2)

您可以创建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 );