迁移到 E4 - 相当于 PlatformUI.isWorkbenchRunning

Migrating to E4 - equivalent of PlatformUI.isWorkbenchRunning

在我们的 Eclipse RCP 3.7 应用程序中,我们调用了很多 PlatformUI.isWorkbenchRunning()。 例如,大多数调用都是围绕 Workbench API 调用的守卫,沿着 `

if (PlatformUI.isWorkbenchRunning()) {
    display = PlatformUI.getWorkbench().getDisplay();
} else {
    display = Display.getDefault();
}

我们现在正在迁移到 Eclipse RCP 4.4,我找不到用 RCP 4 兼容代码替换这些调用的正确方法。

我想我应该注入一些服务/组件并使用它,但是哪个组件呢?我Workbench 不能告诉我是不是运行。

我认为这是一个很常见的问题,但无法通过谷歌搜索找到解决方案。有人已经解决了吗?

e4 目前没有 运行 无头,所以没有真正的等价物。

要访问 Display,您可以使用

Display.getDefault()

无处不在。

如果您有从 SWT Control 派生的 class 可用,您也可以使用 Control.getDisplay()

如果您想使用 DisplayasyncExecsyncExec 方法,您可以使用 UISynchronize 作为替代方法:

@Inject
UISynchronize uiSynch;

uiSynch.asyncExec(runnable);