要求Ecore-Object的根元素的最佳方法是什么?我正在听某些编辑并从中获取IStructuredSelection
。但是我需要进一步过滤TreeViewers
,因为我所听到的并不是所有的都包含相同的元素。据我所知,没有直接的方法,它由EMF本身生成,要求根元素。你能指点我正确的方向吗?谢谢。
答案 0 :(得分:1)
如果您有EObject
,只需递归检查eContainer()
即可获得所需的结果。如:
public static EObject getRoot(EObject eo) {
EObject parent = eo.eContainer();
if (parent != null) {
return getRoot(parent);
}
return eo;
}
对于任何EObject
,这应该返回包含它的顶级EObject
。
但是,您可能希望依赖getRootContainer()
课程中的EcoreUtil
,而不是像您那样滚动自己。使用EMF时不要忽略EcoreUtil
,它有辅助方法,其中至少有一些方法在EMF应用程序中必不可少。