插件开发――菜单
RCP插件开发中,创建菜单的方式有多种,可以在程序中用代码编写,也可以通过插件扩展点进行菜单扩展,通过扩展点添加菜单也有多种方式,详细的扩展方式请查阅相关资料。
在此介绍Eclipse推荐的菜单添加方式,应用命令模式,将命令与界面分离,共分为三步:
- 创建命令:扩展org.eclipse.ui.commands,创建命令定义。
- 创建实现:扩展org.eclipse.ui.handlers,创建命令实现。
- 添加到界面:扩展org.eclipse.ui.menus,将命令与界面菜单或工具栏绑定。
- 创建命令定义
双击打开插件项目下的plugin.xml文件,选择"扩展"标签,点击"添加"按钮,添加命令定义扩展。
在弹出的窗口中选择"org.eclipse.ui.commands",点击"完成"。
图 39 选择命令定义扩展点
在新建的org.eclipse.ui.commands扩展上点击右键,选择"新建"->"command",新建一个命令定义。
设置命令定义的属性,id要求全局唯一,name是默认的命令名称,其他的可选。
设置完命令定义的属性后,点击保存按钮,保存设置。
- 创建命令实现
和创建命令定义类似,添加命令实现扩展。在弹出的窗口中选择"org.eclipse.ui.handlers",点击"完成"
设置命令实现"handler"属性,commandId中输入前面定义的命令ID,点击class标签,创建命令的实现类(如果已存在实现类,可以点击"浏览"按钮选择已有的实现类)。
在弹出的对话框中设置实现类的包和类名,默认实现org.eclipse.core.commands.IHandler接口,为了实现的方便,建议继承抽象类org.eclipse.core.command.AbstractHandler,点击"完成",创建对应的实现类。
类TestHandler中的execute()方法就是命令实现代码。
- 添加命令到菜单
以上两步只是定义命令和实现命令,此节介绍如何将创建的命令添加到程序界面上。
添加"org.eclipse.ui.menus"扩展。
在新建的"org.eclipse.ui.menus"扩展上点击右键,选择"新建"->"menuContribution",新建一个"menuContribution"。
设置"menuContribution"属性:
-
locationURI是设定所在位置,由一个字符串定义,字符串的格式为:[Scheme]:[ID]?[Query]分为三部分:
常见的locationURI有:
- 主菜单栏:menu:org.eclipse.ui.main.menu
- 主工具栏:toolbar:org.eclipse.ui.main.toolbar
- 所有弹出菜单:popup:org.eclipse.ui.popup.any
在"menuContribution"上点击右键,选择"新建"->"menu"。
设置菜单的属性,label为菜单的显示名称,icon为显示图标,tooltip为显示提示。
在菜单上点击右键,选择"新建"->"command",创建一个菜单项。
设置菜单项属性,commandId为前面定义的命令ID(即点击此菜单项执行哪个命令),label为显示的菜单项名称(如果不设置,采用命令定义的名称),icon为显示的菜单项图标,disableIcon为菜单项不可用时的图标,hoverIcon为当鼠标移动到菜单项上的图标,tooltip是菜单项提示信息,style是菜单项的样式(例如单选,带状态等)。