【发布时间】:2015-03-23 23:33:27
【问题描述】:
我正在研究 Eclipse RCP/RAP 单一来源。
我需要在ApplicationWorkbenchAdvisor 类的resotreState() 和saveState() 方法中执行一些代码,这些代码仅适用于RCP,但不适用于RAP。实现这一点的最佳方法是什么?
【问题讨论】:
我正在研究 Eclipse RCP/RAP 单一来源。
我需要在ApplicationWorkbenchAdvisor 类的resotreState() 和saveState() 方法中执行一些代码,这些代码仅适用于RCP,但不适用于RAP。实现这一点的最佳方法是什么?
【问题讨论】:
如果只应在 RCP 中执行的代码在两个平台上都编译,那么您可以像这样查询SWT#getPlatform():
if( !SWT.getPlatform().startsWith( "rap" ) ) {
// execute RCP code
}
如果 RCP 代码使用的 API 在两个平台上都不可用,那么我建议将代码提取到一个片段中,并且只将该片段与 RCP 应用程序一起部署。搜索“说唱单一来源”以了解更多信息。
【讨论】:
@Overridepublic IStatus saveState(IMemento memento) {TerminalCompatibility.saveState(memento);ServerStorageController.getInstance().saveState(memento);return super.saveState(memento);} ——这个代码依赖于IMemento。是否有可能我可以将此代码移动到 RCP 特定片段。我不想写空的兼容性类。
IMemento 在两个平台上都可用,因此您可以使用第一种方法并使用 if 条件保护保存状态的代码。