上篇文章简单写了下怎么新建一个eclipse插件工程,这次写一下怎么在上次的工程中添加几个菜单,如菜单栏菜单、工具栏菜单、右键菜单等。
创建一个完成的菜单需要了解三个扩展点,即menus、commands、handlers,其中menus为菜单的扩展点,在引入菜单扩展点后,添加一个menu即添加了一个菜单;commands为行为扩展点,即声明一个行为操作,如:吃饭、跑步等,handlers为具体的行为操作扩展点,吃饭跑步的具体实施。一个menu与一个command相关联,一个command与一个handler相关联。
通过PDE插件打开上次创建项目的plugin.xml文件,打开 Extensions 标签页,如图:
创建Command
点击Add按钮
引入commands扩展点,在扩展点上右键新建一个command:
设置command相关信息
其他的信息可以先不填写,如要了解更多,Google一下吧,command创建到这里基本上完成了。
创建menu
点击Add按钮
引入了一个menus扩展点,添加完扩展点后,在扩展点上面右键添加一个menuContribution
设置菜单类型及位置
设置菜单类型及位置时通过uri参数拼接进行配置,其中popup为弹出菜单类型,也可以为menu、toolbar分别为主菜单与工具栏菜单,org.eclipse.ui.popup.any 为菜单显示视图位置,这儿的配置为可以在任何视图显示;after=additions为菜单显示位置
在menuContribution右键添加一个command,将上面创建的command放置到菜单中:
配置command的相关信息
label:菜单显示的文字,如果没有则使用对应command的名字
id:为menu的唯一标识,
mnemonic:菜单的快捷键,按住Alt+F为本菜单的快捷键
icon:菜单的图标
tooltip:当鼠标移入菜单项上面时的提示文字
commandId:对应上面创建的command
创建Handler
handler对应的是行为的实际执行者,如:command对应java语言中的接口,handler对应实现类。
首先创建一个handler执行类,新建一个java类,继承自AbstractHandler:
package com.yunzaipiao.menu.handler;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.jface.dialogs.MessageDialog;
public class SampleHandler extends AbstractHandler {
public SampleHandler() {
// TODO Auto-generated constructor stub
}
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
MessageDialog.openInformation(
null,
"测试插件",
"测试右键弹出菜单成功!");
return null;
}
}
创建完实现类后,引入handler扩展点,将扩展点与改实现类关联起来。打开刚才添加menu与command标签页,点击Add:
新增一个handler,选中后配置信息:
commandId:对应上面创建的command
class:对应执行类,刚刚创建的执行类
运行一下,看看效果吧:
在插件项目上右键 Run as > Eclipse Application,在打开的新的eclipse 中随便找个地方,点击右键,出现菜单
点击菜单会弹出一个提示框