2013-10-20 4 views
0

Ecore 개체의 루트 요소를 묻는 가장 좋은 방법은 무엇일까요? 특정 편집인의 말을 듣고 IStructuredSelection을 얻습니다. 그러나 나는 모두 동일한 요소를 포함하고 있다고 듣고 있기 때문에 TreeViewers을 더 필터링해야합니다. 내가 볼 수있는 한 EMF 자체에서 생성 된 직접적인 방법은 없으며 루트 요소를 묻습니다. 올바른 방향으로 나를 가리켜 주시겠습니까? 감사합니다.트리/테이블 뷰어에서 듣고있는 EObject의 루트 요소 얻기

답변

1

EObject 사용자는 eContainer()을 재귀 적으로 확인하여 원하는 결과를 얻을 수 있습니다. 예를 들면 :

public static EObject getRoot(EObject eo) { 
    EObject parent = eo.eContainer(); 
    if (parent != null) { 
     return getRoot(parent); 
    } 
    return eo; 
} 

EObject를 들어이 그것을 포함하는 최상위 EObject를 반환해야합니다.

대신 자신의 롤링 대신에 을 EcoreUtil 클래스에 의존하고 싶을 수 있습니다. EMF로 작업 할 때 EcoreUtil을 간과하지 마십시오. 적어도 일부는 EMF 응용 프로그램에서 유용 할 수 있도록 도우미 메서드가 있습니다.