0
請求Ecore-Object的根元素的最佳方法是什麼?我正在聽某些編輯,並從中獲得IStructuredSelection
。但是我需要進一步過濾TreeViewers
,因爲我所聽到的並非都包含相同的元素。據我所見,沒有直接的方法,它是由EMF本身產生的,它要求根元素。你能否指點我正確的方向?謝謝。獲取在Tree-/TableViewer中正在偵聽的EObject的根元素
請求Ecore-Object的根元素的最佳方法是什麼?我正在聽某些編輯,並從中獲得IStructuredSelection
。但是我需要進一步過濾TreeViewers
,因爲我所聽到的並非都包含相同的元素。據我所見,沒有直接的方法,它是由EMF本身產生的,它要求根元素。你能否指點我正確的方向?謝謝。獲取在Tree-/TableViewer中正在偵聽的EObject的根元素
如果您有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應用程序中有用。