Eclipse Plug-in 通过PropertTest设置菜单权限

来源:互联网 发布:淘宝联盟去哪找客服 编辑:程序博客网 时间:2024/05/22 13:54

前段时间刚忙完一个Eclipse Plugin的项目,项目要求菜单项(包括右键菜单或试图、编辑器中的菜单)加上权限控制,而权限规则来源于数据库,并且判断规则已经封装完成。

思路: 通过propertyTesters扩展点计算对应菜单项(以菜单ID为准)的权限。

其实Eclipse 提供了比较完善的扩展机制,只是要把这些不同的扩展点根据需求串起来,确实不是件容易的事情。
经过摸索,包括上网查阅对应扩展点的Schema 和前辈们的只言片语,也算是完成了这个需求。

顺手把过程记录下来,供需要的人参考。时间仓促,加上第一次发帖,所以比较糙,见谅。图可能比较小,在word中挺清晰的。
本文对应的word文档可从我的资源列表中获取。

添加propertyTesters扩展点

作用:通过自定义的程序实现对菜单项的权限控制。





菜单项(command方式)配置如下:


以上配置表示当tester 返回true时,command对象可见。也可用false,但test实现类的test方法返回值要与之对应。

实现类如下(部分代码)


如何对自定义的右键菜单加权限控制

打开plugin.xml,在编辑器中打开“Extension”选项卡,添加一个新的扩展点”org.eclipse.ui.menus”,如果已有,可以不用添加.

菜单项(command方式)配置如下:



在“org.eclipse.ui.menus”扩展点上”new menuContribution”创建一个新的菜单项。


编辑菜单locationURL属性,

格式:<菜单类型>:<附着区域>?<位置>

其中

菜单类型:

popup   表示右键菜单

        menu  工具栏菜单

附着区域:菜单将要出现在编辑器或视图的ID

        如果要将菜单挂载在主菜单上,使用org.eclipse.ui.main.menu

位置:  用于定义菜单挂载的顺序

: 

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

 表示:该菜单加载到主菜单,位于addtions区域。(addtions表示非限定区域)

2popup:SmartBranchManagement.navigationView?after=additions

表示:将菜单增加到IDSmartBranchManagement.navigationView的视图上,并以右键菜单的形式追加在右键菜单最后。

        

创建Command对象

在”org.eclipse.ui.commands”扩展点下,右键”newàcommand”创建一个新的Command

编辑command的属性


实现defaultHandler所指向的实现类。及菜单项的功能逻辑。

在菜单下创建菜单项

选中需要增加菜单项的menuContribution,右键”new –>command”,选择一个”command”作为菜单的功能实现组件。


选择创建好的Command,并编辑MenuContribution属性,如下图所示:


设置菜单权限:

选择需要加入权限控制的菜单项(MenuContribution),右键”newàvisibleWhen”,


当tester执行结果为true时,显示菜单


创建一个”with”表达式:

设置varible:activeSite,该值不可随意改动

选中新建的with节点,右键新增一个“test”子节点

编辑Test节点属性:

其中value使用该菜单项的id,该值填写错误会导致菜单权限验证失败。



以前一直潜水,第一次发帖,比较粗糙,见谅,本文对应的文档在我的资源中可下载