【问题标题】:How to programatically set String input of TextEditor in Eclipse plug-in?如何在 Eclipse 插件中以编程方式设置文本编辑器的字符串输入?
【发布时间】:2017-02-03 15:43:07
【问题描述】:

我想要什么:我想为我的 Eclipse 编辑器插件编写 JUnit 测试。为此,我想设置我的 TextEditor 扩展的实例。然后我想从一个String中设置这个TextEditor的输入,这样String的内容就是编辑器实例的输入。然后我想运行一些测试并断言编辑器标记了错误等等。

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

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

【问题讨论】:

  • 编辑器的很多工作取决于编辑器输入的确切细节。例如,大多数编辑都喜欢IFileEditorInput 而不仅仅是IEditorInput。所以要真正正确地测试编辑器,你需要给它一个工作区文件。
  • 以及如何使用给定的字符串作为输入创建工作区文件?
  • 你使用IFilecreate方法。

标签: java eclipse eclipse-plugin eclipse-rcp


【解决方案1】:

您可以按照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 );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    相关资源
    最近更新 更多