0

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

谢谢你

4

3 回答 3

1

如果您打开 Graphbased-View 请求当前打开的编辑器的 IFile。获得文件后,如果您的 EMF 模型的基础 IFile 发生更改,您可以加载模型(请参阅生成的编辑器如何从基础资源加载模型)附加 IResourceChangeListener 以获取通知。收到通知后,您可以从文件中重新加载模型并在视图中显示模型。

此外,如果用户将另一个 emf 编辑器置于顶部或他关闭编辑器(您还必须卸载(关闭时)或刷新(另一个带有您的 emf 模型的编辑器被带到最佳)。

于 2011-06-24T11:46:50.310 回答
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;
        }
    });
于 2011-06-24T11:22:43.687 回答
0

好的,我已经按照 Zoltán 的建议做到了这一点。无论如何,我承认我更喜欢一个更有条理的答案,这就是为什么我用一个简短的解决方案摘要来回答我自己的问题。

基本上这个想法是视图插件实现了 ViewPart 接口。因此,它实际上可以调用以下方法

getSite().getWorkbenchWindow().getSelectionService()

以获得工作台选择服务。因此,您可以调用 SelectionService 方法

addSelectionListener(ISelectionListener listener)

将您自己的 ISelectionListener 作为参数传递,它可以是您正在实现的同一 ViewPart。您只需实现 ISelectionListener 接口,从而提供 selectionChanged 方法的实现

public void selectionChanged(IWorkbenchPart sourcepart, ISelection selection)
于 2011-06-27T17:50:41.270 回答