首页 > 代码库 > 2014年8月24日 菜单 工具条 右键菜单(上下文菜单)

2014年8月24日 菜单 工具条 右键菜单(上下文菜单)

    今天说说菜单 工具条 右键菜单吧,总的来说这些东西其实就是同一个东西。以前我们在做插件的时候遇到右键菜单啊,菜单什么的都会习惯性地去用actionSets这个拓展点。不过现在官方却把这个扩展点已经被deprecated弃用了。。官方的说明:

Do not use this extension point, it will be removed in future versions of this product. Instead, use the extension point org.eclipse.ui.commands

官方推荐使用command这个拓展点去代替actionSets,至于为什么,可以往下看。

做一个主菜单如果分别用两种方式的话可以这么做:

主菜单的扩展点

1、主菜单(Commands 方式)

通过 Commands 方式把菜单项添加到主菜单及其工具栏上,和视图菜单一样,也是通过扩展点 org.eclipse.ui.menus 实现,需要设定其 menuContribution 的 locationURI。

例如,添加一个菜单(菜单可以包含若干个菜单项)到主菜单一栏中,其 locationURI 为:

menu:org.eclipse.ui.main.menu?after=additions

添加一个菜单到工具栏之中,其 locationURI 为:

toolbar:org.eclipse.ui.main.toolbar?after=additions

当然,我们也可以把菜单项添加到已经存在的菜单当中,例如添加一个菜单项到 Eclipse 的 Search 主菜单当中,其 locationURI 为:

menu:org.eclipse.search.menu?dialogGroup

2、主菜单(Actions 方式)

通过 Actions 方式把菜单项添加到主菜单及其工具栏上,和视图菜单一样,也是通过扩展点 org.eclipse.ui.actionSets 实现,需要设定 action 的 menubarPath 和 toolbarPath 实现。

例如,添加一个菜单项到 Eclipse 的 Search 主菜单中,其 menubarPath 应为:

org.eclipse.search.menu/dialogGroup

注意:如果采用上述方式添加一个菜单项到 Search 主菜单,当我们运行时并没有出现添加的菜单项,这时候需要换一个 workspace,其原因是 Eclipse 缓存了与其相关的某些信息在 workspace 当中。

用command方式的话还需要定义command类和handler类,由此看出如果使用command方式实现一个菜单,需要实现三部

1、定义command

2、指定handler类(可以使用默认的handler类也可以重新定义)

3、这个command存在的位置

看到这里,是不是感觉有点似曾相识的感觉,对,MVC。command方式就是把控制和展现分离开,不再像是以前写action那样把代码写死。

这就不难理解为什么官方现在主推command方式而弃用actionSets了

 

2014年8月24日 菜单 工具条 右键菜单(上下文菜单)