当基础模型发生更改时,刷新自定义编辑器内容的最佳方法是什么?
最佳答案
正如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进行扩展,则可能需要这样做,以避免必须自己实现。