迁移到 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()
如果您想使用 Display
的 asyncExec
或 syncExec
方法,您可以使用 UISynchronize
作为替代方法:
@Inject
UISynchronize uiSynch;
uiSynch.asyncExec(runnable);
在我们的 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()
如果您想使用 Display
的 asyncExec
或 syncExec
方法,您可以使用 UISynchronize
作为替代方法:
@Inject
UISynchronize uiSynch;
uiSynch.asyncExec(runnable);