Eclipse:更新编辑器

时间:2009-07-29 11:21:07

标签: eclipse editor

在底层模型中发生更改时,刷新自定义编辑器内容的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

正如VonC所说,并不清楚模型的确切含义。这里有几个选项。

如果您正在讨论资源更改,那么Eclipse角上的resource deltas上有一篇(旧的,但仍然有用)文章向您展示了基础知识。

如果您的意思是更改工作区选择(例如,在包浏览器中选择项目),请查看selection service上的这篇文章。

通过调试org.eclipse.ui.texteditor.AbstractTextEditor,更新处理如下:

protected void handleEditorInputChanged() {
    ...
    final IDocumentProvider provider= getDocumentProvider();
    ...
    if (provider instanceof IDocumentProviderExtension) {
        IDocumentProviderExtension extension= (IDocumentProviderExtension) provider;
        extension.synchronize(input);

请注意,在此过程中会出现大量代码,以便在发生这种情况时处理其他事件处理程序的停用和重新激活。如果您能够从AbstractTextEditor扩展,您可能希望这样做以避免必须自己实现它。

答案 1 :(得分:0)

如果您的问题确实涉及EMF(Eclipse Modeling Framework,这与“模型”有关),那么来自eclipse帮助页面的this section可能会有用,尤其是当基础模型关注中发生更改时资源(如文件)。

这意味着使用EMF MT(EMF Model Transaction),它提供:

  • 通过多个读写线程管理对编辑域的访问的能力。
  • 在不同的客户和听众之间注册和共享编辑域的工具。资源集侦听器在事务层中定义,并分批提供通知。