可能最早可以獲得工作臺的方式是通過訂閱應用程序啓動完成事件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));
}
我怎麼能從那裏得到工作臺?我無法使用「PlatformUI.getWorkbench()」,因爲我運行的是純E4應用程序。我也嘗試使用「new EventHandler(){...}」來訂閱該事件,並試圖將IWorkBench作爲字段注入,但它爲空(因爲EventHandler是在WorkBench之前創建的,我想) 。非常感謝你! – rubenrumu
您將事件處理程序傳遞給IEclipseContext,當事件觸發時,上下文將包含IWorkbench - 我用來測試這個的添加示例。 –
這對我來說非常合適。謝謝! – rubenrumu