이클립스 RCP:모델 객체를 어디에 보관해야 하며 뷰와 어떻게 대화합니까?

StackOverflow https://stackoverflow.com/questions/277291

문제

Eclipse RCP 작업 방식에서 모델 객체를 어디에 보관해야 합니까?그리고 로드되거나 변경될 때 뷰와 어떻게 대화해야 합니까?

기존 애플리케이션을 Eclipse RCP로 포팅하려고 합니다.IDE와 유사한 애플리케이션으로 볼 수 있습니다.소스 파일에 대한 링크가 포함된 파일을 엽니다.소스 파일이 트리 보기에 표시됩니다.소스를 편집하고 소스를 일부 출력으로 빌드할 수 있습니다.

예를 들어, Open 명령을 처리할 때 뷰에서 볼 수 있도록 모델 객체를 어디에서 생성해야 합니까?나는 싱글톤 관리자 클래스를 사용하는 것을 피하고 싶지만 이것이 아마도 가장 간단한 방법일 것입니다.

JDT의 소스 코드를 탐색하면서 발견한 흥미로운 코드는 JavaCore, JavaModel, JavaModelManager입니다.그리고 자바프로젝트.


IProject[] projects= ResourcesPlugin.getWorkspace().getRoot().getProjects();

public static IJavaProject create(IProject project) {
    if (project == null) {
        return null;
    }
    JavaModel javaModel = JavaModelManager.getJavaModelManager().getJavaModel();
    return javaModel.getJavaProject(project);
}

관련된:

도움이 되었습니까?

해결책

나는 이것이 청취자를 통해 가장 잘 달성된다고 믿습니다.

귀하의 데이터(모델)는 비공개 패키지에 있으며, 해당 데이터의 인터페이스만 공개 패키지에 노출됩니다.

alt text

당신은 이것에서 찾을 것입니다 위키 섹션 원칙 뿐만 아니라 구체적인 예는 여기.


모델과 관련하여 osgi와 유사한 접근 방식은 호스트 플러그인을 액세스 가능한 개체로 사용하는 것입니다.즉:

MyPlugin.getDefault().getModel()

이를 통해 플러그인 수명 주기와 함께 모델을 설정/폐기할 수 있습니다.

모델이 하나의 플러그인에 있는 경우 청취자를 위한 확장 지점을 정의할 수 있습니다.뷰는 모델 플러그인 로딩 시 자동으로 등록되는 확장 지점을 확장할 수 있습니다.뷰는 모델로부터 첫 번째 메시지를 받자마자 모델에 필요한 정보를 쿼리할 수 있습니다.

데이터 바인딩의 좋은 예는 다음에서 찾을 수 있습니다. 이 기사.

다른 팁

우리는 사용하는 경향이 있습니다 IEditorParts 스토리지는 모델의 사본을 보관합니다 ( IEditorInput).

보기가 모델에 대해 알아야하는 경우, 선택 프레임 워크를 사용하고 집중하여 모델을 편집기에서보기로 이동하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top