我正在创建一个基于Sample Ecore editor (org.eclipse.emf.ecore* plugins)的自定义Ecore编辑器,并发现列表中的更改不会在模型更改通知中显示。例如,对EAnnotation.references
列表的更改不会导致模型更改通知,而EAnnotation.setSource()
方法会创建通知。我想,这是getText()
中默认EAnnotationItemProvider
方法仅使用source
字段的原因之一。
我正在使用references
字段的值来生成EAnnotation
的UI演示文稿,因此查看此字段的更改对于正确操作是必要的。
是否有一些标准方法可以观察这些变化并在模型视图上触发refresh()
?
答案 0 :(得分:0)
我发现通知已创建,但notifyChanged()
方法最初忽略了它。这对我有用:
@Override
public void notifyChanged(Notification notification) {
updateChildren(notification);
switch (notification.getFeatureID(EAnnotation.class)) {
case EcorePackage.EANNOTATION__SOURCE:
case EcorePackage.EANNOTATION__REFERENCES: /*ADDED*/
fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
return;
case EcorePackage.EANNOTATION__CONTENTS:
fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
return;
case EcorePackage.EANNOTATION__DETAILS: /*MODIFIED TO UPDATE VIEW*/
fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, true));
return;
}
super.notifyChanged(notification);
}