Eclipse Modeling Framework:将替代视图链接到模型

时间:2011-06-24 10:32:01

标签: eclipse jface eclipse-emf

我有一个用于自动生成模型源和JFace编辑包的ECore模型。我正在尝试为该模型的内容开发一个替代视图,基本上是基于JFreeChart的图形视图。我设法创建了一个基于JFreeChart的视图插件。现在我需要将视图与模型链接起来。我怎样才能做到这一点?我想使用TreeBased编辑器编辑模型,并在图表视图中查看此类编辑的效果。这可能吗?

谢谢

3 个答案:

答案 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)