Ecore 개체의 루트 요소를 묻는 가장 좋은 방법은 무엇일까요? 특정 편집인의 말을 듣고 IStructuredSelection
을 얻습니다. 그러나 나는 모두 동일한 요소를 포함하고 있다고 듣고 있기 때문에 TreeViewers
을 더 필터링해야합니다. 내가 볼 수있는 한 EMF 자체에서 생성 된 직접적인 방법은 없으며 루트 요소를 묻습니다. 올바른 방향으로 나를 가리켜 주시겠습니까? 감사합니다.트리/테이블 뷰어에서 듣고있는 EObject의 루트 요소 얻기
0
A
답변
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 응용 프로그램에서 유용 할 수 있도록 도우미 메서드가 있습니다.