在底层模型中发生更改时,刷新自定义编辑器内容的最佳方法是什么? 最佳答案 正如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扩展,您可能希望这样做以避免必须自己实现它.