插件开发――菜单

RCP插件开发中,创建菜单的方式有多种,可以在程序中用代码编写,也可以通过插件扩展点进行菜单扩展,通过扩展点添加菜单也有多种方式,详细的扩展方式请查阅相关资料。

在此介绍Eclipse推荐的菜单添加方式,应用命令模式,将命令与界面分离,共分为三步:

  • 创建命令:扩展org.eclipse.ui.commands,创建命令定义。
  • 创建实现:扩展org.eclipse.ui.handlers,创建命令实现。
  • 添加到界面:扩展org.eclipse.ui.menus,将命令与界面菜单或工具栏绑定。

 

  1. 创建命令定义

双击打开插件项目下的plugin.xml文件,选择"扩展"标签,点击"添加"按钮,添加命令定义扩展。

在弹出的窗口中选择"org.eclipse.ui.commands",点击"完成"。

图 39 选择命令定义扩展点

在新建的org.eclipse.ui.commands扩展上点击右键,选择"新建"->"command",新建一个命令定义。

设置命令定义的属性,id要求全局唯一,name是默认的命令名称,其他的可选。

设置完命令定义的属性后,点击保存按钮,保存设置。

  1. 创建命令实现

和创建命令定义类似,添加命令实现扩展。在弹出的窗口中选择"org.eclipse.ui.handlers",点击"完成"

设置命令实现"handler"属性,commandId中输入前面定义的命令ID,点击class标签,创建命令的实现类(如果已存在实现类,可以点击"浏览"按钮选择已有的实现类)。

在弹出的对话框中设置实现类的包和类名,默认实现org.eclipse.core.commands.IHandler接口,为了实现的方便,建议继承抽象类org.eclipse.core.command.AbstractHandler,点击"完成",创建对应的实现类。

类TestHandler中的execute()方法就是命令实现代码。

  1. 添加命令到菜单

以上两步只是定义命令和实现命令,此节介绍如何将创建的命令添加到程序界面上。

添加"org.eclipse.ui.menus"扩展。

在新建的"org.eclipse.ui.menus"扩展上点击右键,选择"新建"->"menuContribution",新建一个"menuContribution"。

设置"menuContribution"属性:

  • locationURI是设定所在位置,由一个字符串定义,字符串的格式为:[Scheme]:[ID]?[Query]分为三部分:
    • Scheme:类型,取值为menu、popup或toolbar
    • ID:基准,已存在的菜单ID、工具栏ID或视图ID等,常见的包括:
      • 主菜单:org.eclipse.ui.main.menu
      • 主工具栏:org.eclipse.ui.main.toolbar
      • 弹出菜单:org.eclipse.ui.popup.any
    • Query:格式为<placement>=<id>,placement为before、after或endof,id为一个已存在的菜单项。

常见的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是菜单项的样式(例如单选,带状态等)。

重新运行应用程序,可以看到添加的菜单。

posted on 2010-11-23 13:43  Benjac  阅读(984)  评论(0)    收藏  举报

导航