右键菜单的过滤和启动(转载)
一、添加右键菜单步骤:
1、扩展org.eclipse.ui.popupMenus扩展点
2、添加一个objectContribution节点。其中的objectClass用于过滤对象,nameFilter用于条件匹配
3、在objectContribution节点下添加menu节点。Menu节点下可添加separator节点,用于菜单下的菜单项分组
4、在objectContribution节点下根据需要添加action。该action通常实现IObjectActionDelegate接口。 其中的menubarPath用于指定菜单项的路径(通常为:菜单id/seperator,无分组时seperatort可以为additions)
二、action的过滤和启动
菜单过滤:
方法一:通过上面提到的objectClass和nameFilter来实现简单的菜单过滤
方法二:菜单右键添加visibility节点,visibility包括了not, and和or逻辑表达式节点以及adapt等Boolean表达式节点
and节点只有下级子节点表达式都返回true才为true
not节点只有在下级节点返回false才为true
objectClass看上面的例子就知道了
objectState 比较选中的对象的状态是否指定的值
or节点只要下级节点中有一个为true就返回为true
pluginState节点对指定的插件的状态进行检测, 这里的状态有两种:installed或者actived
其中:objectState节点要求object对象必须实现IActionFilter接口或者能适配为IActionFilter, 然后调用testAttribute()方法来跟指定的name/value进行比对。如:对Resource来说, 它提供了下列属性让我们来进行比对
name,表示对文件名进行比对, 可使用*这种正则表达式
extension表示后缀名比对
path路径比对, 可使用*
readOnly只读比对
projectNature 对nature比对
persistentProperty 对选择的资源的持久属性进行比对, 如果他的值只是一个字符串,那么就对该资源已有的属性值拿出来进行比对, 如果是propertyName=propertyValue这种形式,那么先根据name从选择的对象中取出值,然后再跟指定的value进行比对
projectPersistentProperty 对选中对象所在工程的持久性属性进行比对
sessionProperty 对对象中对的session属性进行比对
projectSessionProperty 选中对象所在工程的session属性进行比对
菜单项启动:
方法一:action右键点击selection,用于指定什么时候启动操作
方法二:action右键添加enablement节点,用法于visibility基本一致。例:
<objectContribution objectClass="java.lang.Object" id="com.qualityeclipse.favorites.popupMenu">
<action label="Add to Favorites" tooltip="Add to the Favorites view"
class="com.qualityeclipse.favorites.actions.AddToFavoritesActionDelegate"
menubarPath="additions"
enablesFor="+"
id="com.qualityeclipse.favorites.addToFavorites">
<enablement>
<and>
<objectClass name="org.eclipse.core.resources.IResource"/>
<objectState name="name" value="*.java"/>
</and>
</enablement>
</action>
</objectContribution>
转载自:
右键菜单的过滤和启动(转载)相关推荐
- 硬件测试软件 桌面鼠标右键老转,去掉桌面鼠标右键菜单中显卡选项的3种方法(适用常见显卡)...
只要我们更新过显卡驱动,或者你的现在的系统是出厂预装的,鼠标右键菜单中会有启动显卡控制中心选项.如:如果你是ATI显卡,右键菜单中便会有AMD VISION Engine Control Center ...
- 创建 桌面、发送到...、快速启动栏、开始菜单、程序菜单、右键菜单 快捷方式...
{================================================================= 功 能: 创建 桌面.发送到 ...
- [转载]Qt之中文显示(QMessageBox、QLineEdit右键菜单等)
原文地址:Qt之中文显示(QMessageBox.QLineEdit右键菜单等)作者:一去丶二三里 在编写Qt程序的时候,总会碰到中文问题,一直都很困惑,原本在使用QLineEdit的时候总会出现右键 ...
- [转载]Qt之中文显示(QMessageBox、QLineEdit右键菜单等)_vortex_新浪博客
原文地址:Qt之中文显示(QMessageBox.QLineEdit右键菜单等)作者:一去丶二三里 在编写Qt程序的时候,总会碰到中文问题,一直都很困惑,原本在使用QLineEdit的时候总会出现右键 ...
- QT之桌面精灵实现(二) --- 右键菜单、开机启动、窗口Z-Order
1.右键菜单. 这个其实用QT实现容易过头了,不过其中还是被卡了一下,就是给右键菜单选项前面打钩那个功能,首先是不知道该怎么形容,怎么搜都搜不到,后来去慢慢研究帮助文档,总算是弄出来了. 首先才创建菜 ...
- win10、win11中Elan触摸板滚动方向反转、启动“双指点击打开右键菜单“、“双指滚动“
打开注册表 打开"运行",打开注册表 regedit.exe Elan启用"双指打开右键菜单" 修改以下参数 HKEY_CURRENT_USER/SOFTWAR ...
- Electron-vue开发实战7——命令行调用与系统级别右键菜单项的实现
原文首发在我的博客,欢迎关注! 前言 前段时间,我用electron-vue开发了一款跨平台(目前支持主流三大桌面操作系统)的免费开源的图床上传应用--PicGo,在开发过程中踩了不少的坑,不仅来自应 ...
- Cygwin-添加到右键菜单脚本--一键安装、卸载
平时习惯用一些linux命令来完成工作,在Windows上有cygwin和gitbash两个选择.这两个我都装了. 相对来说cygwin支持的功能更多一些,但是它没有默认绑定到右键菜单.为此,我想到用 ...
- 动手打造自己强大的右键菜单
鼠标的右键选单中有很多快捷命令,给日常操作带来了很大的方便.但是,系统不可能做到将所有的命令都集成到右键选单中,有时需要的命令根本就不存在,这就只能*我们自己动手添加和删除进去了.下面就告诉大家几个添 ...
- 如何在IE右键菜单中添加自定义项
摘要: 最近小鑫参加了名为"微软社区精英计划"的活动,这个活动给这个组织内的成员定期提供免费的最新微软内部培训.而对我们这些成员的要求则是定期地发布有关微软技术的博文和视频,当然这 ...
最新文章
- 怎么计算z=x+y的概率密度_amp;@*!#+用西语到底该怎么说?
- 如何最好一个管理者?
- 端口转发与代理工具 内网代理 内网反弹代理
- SRM 400(1-250pt, 1-500pt)
- Redis实战(四):redis的消息订阅、pipeline、事务、modules、布隆过滤器、缓存LRU
- 计算机应用中的CAI,????按计算机应用的分类,CAI应属于()应用。
- 根据中序和先序遍历创建一颗二叉树☆
- textCNN和lightGBM模型对景区口碑评价进行情感分析
- linux 如何开启shell,linux下开启Shell命令
- 个人博客系统的设计与实现_一个标星近 10k 的现代化的个人独立博客系统,程序员值得拥有...
- 民企信息化建设个人经历(一)
- 【混音教程】开启你的混音生涯的6个心法|MZD Studios
- source pages
- 英文构词词根表---不定式+过去式+过去分词
- 东方计算机学校老师,衡水东方计算机中等专业学校举行校园开放日活动
- springboot集成bboss操作elasticsearch索引,类型,文档(单集群)
- 一起摇摆html5游戏,和 transformjs 一起摇摆
- 公式编辑器mathpix下载及使用简介
- 神舟笔记本的拆机之旅
- WebOffice基于浏览器的Office移动办公利器