用于Windows和Mac OS的Eclispe RCP SWT菜单

如何configurationEclipse RCP命令样式菜单以匹配Windows和Mac OS上的不同菜单结构?

Mac OS X菜单示例http://images.apple.com/macosx/refinements/images/services_menu_20090902.jpg

Windows菜单示例http://img.zgserver.com/java/psp8menu.gif

在这个例子中,你会看到菜单结构的差异。 例如在其应用程序菜单中有Mac的preference命令,about命令和exit命令。 这些在Windows下通常在文件菜单中,about命令可以在帮助菜单中find。 RCP程序有没有“标准”的方法? 它应该以某种方式成为可能,因为Eclipse自己做到了。 但我不知道如何。

虽然我自己还没有做过,但应该可以使用操作系统相关的插件片段来完成这个任务。 我已经看到Eclipse Delta Pack中用于操作系统相关SWT代码的那些代码。

1)对于您要支持的每个操作系统,定义一个由该操作系统命名的插件片段。

2)MANIFEST.MF文件可以包含一个平台的过滤器,正如另一个问题的答案中所解释的 。 通过将以下行之一添加到片段的MANIFEST.MF来设置Eclipse-PlatformFilter:

  • Eclipse-PlatformFilter:(osgi.os = win32)
  • Eclipse-PlatformFilter:(osgi.os = macosx)

org.osgi.framework.os.name(在上面提到的答案中推荐)使用OSGi过滤器,但是在288页规范中找不到如何声明该过滤器。

3)每个片段在其fragment.xml中包含该OS的菜单结构。 原始插件的plugin.xml仅包含通用配置,如命令和处理程序。

如果您知道菜单ID,您可以将自己的菜单添加到预定义的菜单中。 请参阅菜单贡献中的Eclipse Wiki和org.eclipse.ui.menus的Eclipse帮助。