我有一个用于自动生成模型源和JFace编辑包的ECore模型。我正在尝试为该模型的内容开发一个替代视图,基本上是基于JFreeChart的图形视图。我设法创建了一个基于JFreeChart的视图插件。现在我需要将视图与模型链接起来。我怎样才能做到这一点?我想使用TreeBased编辑器编辑模型,并在图表视图中查看此类编辑的效果。这可能吗?
谢谢
答案 0 :(得分:1)
如果打开Graphbased-View,请询问当前打开的编辑器的IFile。获得文件后,如果EMF模型的基础IFile发生更改,则可以加载模型(请参阅生成的编辑器如何从基础资源加载模型)附加IResourceChangeListener以获取通知。 收到通知后,您可以从文件中重新加载模型,并在视图中显示模型。
此外,如果用户将另一个emf-editor置于顶部或关闭编辑器(您还必须卸载(关闭)或刷新(另一个编辑器与您的emf模型),您必须注册PartListener以获取通知被带到了顶部。)
答案 1 :(得分:0)
是的,因为生成的EMF代码提供了通知层:使用EObject.eAdapters添加新的适配器,如果模型已更改,则会通知该适配器。
object.eAdapters().add(new Adapter() {
public void setTarget(Notifier newTarget) {
// TODO Auto-generated method stub
}
public void notifyChanged(Notification notification) {
// TODO Auto-generated method stub
}
public boolean isAdapterForType(Object type) {
// TODO Auto-generated method stub
return false;
}
public Notifier getTarget() {
// TODO Auto-generated method stub
return null;
}
});
答案 2 :(得分:0)
好的,我按照Zoltán的建议设法做到了。无论如何,我承认我会更喜欢更有条理的答案,这就是为什么我回答我自己的问题并简要总结解决方案。
基本上这个想法是视图插件实现了ViewPart接口。因此,它实际上可以调用以下方法
getSite().getWorkbenchWindow().getSelectionService()
以获取工作台选择服务。因此,您可以调用SelectionService方法
addSelectionListener(ISelectionListener listener)
传递您自己的ISelectionListener作为参数,该ISelectionListener可以是您正在实现的ViewPart。您只需实现ISelectionListener接口,从而提供selectionChanged方法的实现
public void selectionChanged(IWorkbenchPart sourcepart, ISelection selection)