2013-10-20 62 views
0

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

回答

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應用程序中有用。

相關問題