全球环境基金编辑中的要素移动无效

时间:2011-11-14 12:30:48

标签: eclipse-emf eclipse-gef

我目前正在使用Eclipse GEF构建编辑器。可以通过编辑器添加新零件并重命名。

但是我对元素的移动有一点问题。当用鼠标拖动它们时,当我释放鼠标并且元素不与另一个元素碰撞时它们不会被移动 元素的位置存储在EMap中(模型由EMF制作)。视图中的更改将使用地图的put方法保存。

在使用调试器时,我注意到该命令已执行,但视图尚未刷新。

我在模型中添加了一个适配器,但是没有从系统中调用它notifyChanged

public class ViewAdapter implements Adapter { 
    @Override 
    public void notifyChanged(Notification notification) { 
        refreshVisuals(); 
    } 
} 

ViewAdapter已在EditPart的激活方法中注册。

它可能是什么?

1 个答案:

答案 0 :(得分:2)

当您使用地图时,普通Adapter界面将无效,因为它只会侦听地图条目的添加或删除。

如果您想收听地图元素的更改,则应使用EContentAdapter代替:

public class ViewAdapter extends EContentAdapter {
    @Override
    public void notifyChanged(Notification notification) {
        refreshVisuals();
        super.notifyChanged(notification);
    }
}

调用super方法非常重要,因此地图条目的通知会被提供给地图本身。