Eclipse4 RCP 指南

菜单以及工具条应用程序对象

添加菜单和工具条

你可以通过应用程序模型添加菜单和工具条到你的 RCP 应用程序,这些项可以放在不同的位置,你可以,例如,添加菜单到窗口或 Part。

应用程序模型提供几个选项来贡献菜单和工具条项目,对于简单的情况,你可以用 Direct MenuItem 或者 Direct ToolItem 模型元素,它们包含一个引用到一个类,当相应的项选择时被执行,下面的描述称这些元素为: direct items。

如果你用 Handled MenuItem 以及 Handled ToolItem 模型元素,你引用到 Command 模型元素,Command 模型元素是在后面描述。

应用程序模型也支持在运行时创建菜单,通过 DynamicMenuContribution 模型元素。

应用程序的工具条通过 Trimbars 模型元素封装在应用程序模型中,一个 trimbar 可以为 TrimmedWindow 模型元素定义,通过他的 Side 属性,你可以定义它放在窗口的顶部,左边,右边,或者底部。

菜单和工具条支持分隔符,并且可以有子菜单。

Command 和 Handler 是什么?

Eclipse 应用程序模型允许你指定 commands 以及 handlers。

一个 command 是一个抽象的可以执行的动作的声明,例如,保存、编辑、或者拷贝。一个 command 与它的实现细节是分离的。

command 的行为通过 handler 定义,一个 handler 模型元素通过 handler 的contributionURI属性指向一个类,这个属性在模型编辑器中显示为 Class URI,本书中,这样的类叫做 handler 类。

Commands 被 Handled MenuItem 以及 Handled ToolItem 模型元素使用。

提示:优先使用 commands,而不是 direct items,用 commands 结合 handlers 允许你为不同的范围(应用程序或者 Part)定义不同的 handlers,并且你可以为 handlers 关联的 command 定义 key 绑定。

助记符

应用程序模型允许你定义助记符,一个助记符通过菜单中一个下划线字母表示,用户按下 ALT 键可以快速通关键盘访问菜单项。

你通过在字母前加上&符号来表述助记符,例如,&Save,当 ALT 键按下时,S 有下划线。

标准的 commands

Eclipse 4 没有提供标准的命令,也就是说,你必须在你的应用程序模型中建立所有需要的命令。

commands 和 handlers IDs 的命名方案

一个好的习惯是用你的项目的顶级包名作为 ID 的前缀,并且只用小写字母。

Commands 和 handlers 的 ID 应该表现它们的关系,例如,如果实现了一个 ID 为 com.example.contacts.commands.show的 command,你应该为 handler 使用 ID com.example.contacts.handler.show。如果一个 command 有多个 handlers,在它们的 ID 后面添加后缀来描述它的用途,例如:com.example.contacts.handler.show.details

在你视线公用功能时,例如,保存、拷贝,你应该用存在的平台 ID,某些 Eclipse 贡献期盼这些 ID 来更好的与 OS 整合(例如,在 Mac OS 中,Preferences 通常放在第一个菜单中),command ID 的完整列表在org.eclipse.ui.IWorkbenchCommandConstants中有效。

Command ID
Save org.eclipse.ui.file.save
Save All org.eclipse.ui.file.saveAll
Undo org.eclipse.ui.edit.undo
Redo org.eclipse.ui.edit.redo
Cut org.eclipse.ui.edit.cut
Copy org.eclipse.ui.edit.copy
Paste org.eclipse.ui.edit.paste
Delete org.eclipse.ui.edit.delete
Import org.eclipse.ui.file.import
Export org.eclipse.ui.file.export
Select All org.eclipse.ui.edit.selectAll
About org.eclipse.ui.help.aboutAction
Preferences org.eclipse.ui.window.preferences
Exit org.eclipse.ui.file.exit