RCP E4 브라우저에서 마우스 오른쪽 버튼을 클릭하여 사용자 정의하려고하는데, application.e4xmi에서 팝업 메뉴를 생성했습니다. 여기 오른쪽 클릭 이벤트를 트리거하는 코드가 있습니다. 파트 디스크립터 내부EMenuService가 @postConstruct에서 nullpointerException을 던지고 있습니다.
public void showBrowser(Composite parent, EModelService service,
MApplication application, EPartService partservice) {
MPartStack mpartstack = (MPartStack) service.find(
"com.example.e4.rcp.wizard.partstack.confps", application);
MPart navigationpart = partservice
.createPart("com.example.e4.rcp.wizard.partdescriptor.navigate_pd");
navigationpart.setLabel("Visual Navigator");
// for adding the menucontext
//
mpartstack.getChildren().add(navigationpart);
MPartStack metadata_ps = (MPartStack) service.find(
"com.example.e4.rcp.wizard.partstack.metadataPS", application);
metadata_ps.setVisible(true);
MPart metadatapart = partservice
.createPart("com.example.e4.rcp.wizard.partdescriptor.metadatadesc");
metadatapart.setLabel("Metadata");
metadata_ps.getChildren().add(metadatapart);
}
: "com.example.e4.rcp.wizard.partdescriptor.navigate_pd"
@Inject
IEclipseContext context;
EMenuService menuservice;
@PostConstruct
public void createControll(Composite parent, EModelService service,
MApplication application) {
// some other stuffs
menuservice.registerContextMenu(browser, "com.example.e4.rcp.wizard.popupmenu");
}
그 도시 NullPointerException이 일부 스택 내부의 부품을 만들기위한
런타임에 postconstruct 메서드에서도 EMenuService를 주입하려고 시도했지만 예상대로 결과가 더 나빴습니다 (이유는 알고 있습니다). 나는 RCP E4에서 꽤 새로 운다. 그래서 내가 어떤 기본적인 실수를한다면 미안하다.
이 클래스는 무엇입니까? application.e4xmi에서 선언 된 위치는 어디입니까? –
특정 부분 수가 실행 된 후에 호출되는 partDescriptor와 함께 일부 사용자 정의 값과 함께 브라우저 및 기타 자세한 정보가 열립니다. –
어떻게 만들어 졌습니까? 메뉴 서비스가 아닌 컨텍스트 (예 : 대화 컨텍스트)를 사용하는 것 같습니다. –