在底层模型中发生更改时,刷新自定义编辑器内容的最佳方法是什么?
答案 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),它提供: