IDocumentProviderExtension

IDocumentProviderExtension

当基础模型发生更改时,刷新自定义编辑器内容的最佳方法是什么?

最佳答案

正如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进行扩展,则可能需要这样做,以避免必须自己实现。

07-26 00:05