我正在开发Eclipse 4 RCP应用程序,我需要它在可见之前执行某些任务,然后重新启动。
我正在运行检查P2存储库并自动更新/安装/卸载某些插件的应用程序。我希望这一步对用户透明,所以我在" postContextCreate"中运行它。方法,使用LifeCycleURI属性。
一旦完成,我需要重新启动应用程序(为了正确加载插件),但我不能在这里注入工作台,因为它尚未创建。我将不胜感激任何建议或想法。
提前致谢!
答案 0 :(得分: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));
}