2014-04-28 4 views
0

Eclipse 4 RCP 응용 프로그램을 개발 중이며 표시되기 전에 몇 가지 작업을 수행해야합니다.Eclipse 4 RCP 응용 프로그램을 다시 시작하기 전에 다시 시작하십시오.

저는 P2 저장소를 확인하고 특정 플러그인을 자동으로 업데이트/설치/제거하는 응용 프로그램을 실행하고 있습니다. 이 단계를 사용자에게 투명하게하기 위해 LifeCycleURI 속성을 사용하여 "postContextCreate"메서드에서이 단계를 실행하고 있습니다.

이 작업이 완료되면 (플러그인을 올바르게로드하기 위해) 응용 프로그램을 다시 시작해야하지만 아직 작성되지 않았으므로 여기에 워크 벤치를 주입 할 수 없습니다. 나는 어떤 제안이나 아이디어를 주셔서 감사합니다.

미리 감사드립니다.

답변

0

아마도 가장 초기에 워크 벤치를 얻을 수있는 것은 응용 프로그램 시작 완료 이벤트 UIEvents.UILifeCycle.APP_STARTUP_COMPLETE에 이벤트 브로커를 등록하는 것입니다. 그러나 UI가 표시된 직후까지는 실행되지 않습니다.

업데이트 :

private static final class AppStartupCompleteEventHandler implements EventHandler 
{ 
    private final IEclipseContext _context; 

    AppStartupCompleteEventHandler(final IEclipseContext context) 
    { 
    _context = context; 
    } 

    @Override 
    public void handleEvent(final Event event) 
    { 
    IWorkbench workbench = _context.get(IWorkbench.class); 

    workbench.restart(); 
    } 
} 

가 @PostContextCreate 방법이 이벤트에 가입 : 이벤트 핸들러는 무언가 같이 될 것입니다.

@PostContextCreate 
public void postContextCreate(IEclipseContext context, IEventBroker eventBroker) 
{ 
    eventBroker.subscribe(UIEvents.UILifeCycle.APP_STARTUP_COMPLETE, new AppStartupCompleteEventHandler(context)); 
} 
+0

어떻게 내가 거기에서 작업대를 가져올 수 있습니까? 순수 E4 응용 프로그램을 실행 중이므로 "PlatformUI.getWorkbench()"를 사용할 수 없습니다. 또한 "새로운 EventHandler() {...}"를 사용하여 해당 이벤트를 구독하려고 시도했지만 IWorkBench를 필드로 삽입하려고 시도했지만 null입니다 (EventHandler가 WorkBench 전에 만들어 졌기 때문에) . 고마워요! – rubenrumu

+0

이벤트 핸들러에 IEclipseContext를 전달하면 이벤트가 발생하면 컨텍스트에 IWorkbench가 추가됩니다.이 예제에서는 이것을 테스트하는 데 사용됩니다. –

+0

이것은 나를 위해 완벽하게 작동합니다. 감사! – rubenrumu

관련 문제