一、添加右键菜单步骤:

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>

转载自:

http://blog.csdn.net/mwbin0219/article/details/4506816

右键菜单的过滤和启动(转载)相关推荐

  1. 硬件测试软件 桌面鼠标右键老转,去掉桌面鼠标右键菜单中显卡选项的3种方法(适用常见显卡)...

    只要我们更新过显卡驱动,或者你的现在的系统是出厂预装的,鼠标右键菜单中会有启动显卡控制中心选项.如:如果你是ATI显卡,右键菜单中便会有AMD VISION Engine Control Center ...

  2. 创建 桌面、发送到...、快速启动栏、开始菜单、程序菜单、右键菜单 快捷方式...

    {=================================================================     功    能:             创建 桌面.发送到 ...

  3. [转载]Qt之中文显示(QMessageBox、QLineEdit右键菜单等)

    原文地址:Qt之中文显示(QMessageBox.QLineEdit右键菜单等)作者:一去丶二三里 在编写Qt程序的时候,总会碰到中文问题,一直都很困惑,原本在使用QLineEdit的时候总会出现右键 ...

  4. [转载]Qt之中文显示(QMessageBox、QLineEdit右键菜单等)_vortex_新浪博客

    原文地址:Qt之中文显示(QMessageBox.QLineEdit右键菜单等)作者:一去丶二三里 在编写Qt程序的时候,总会碰到中文问题,一直都很困惑,原本在使用QLineEdit的时候总会出现右键 ...

  5. QT之桌面精灵实现(二) --- 右键菜单、开机启动、窗口Z-Order

    1.右键菜单. 这个其实用QT实现容易过头了,不过其中还是被卡了一下,就是给右键菜单选项前面打钩那个功能,首先是不知道该怎么形容,怎么搜都搜不到,后来去慢慢研究帮助文档,总算是弄出来了. 首先才创建菜 ...

  6. win10、win11中Elan触摸板滚动方向反转、启动“双指点击打开右键菜单“、“双指滚动“

    打开注册表 打开"运行",打开注册表 regedit.exe Elan启用"双指打开右键菜单" 修改以下参数 HKEY_CURRENT_USER/SOFTWAR ...

  7. Electron-vue开发实战7——命令行调用与系统级别右键菜单项的实现

    原文首发在我的博客,欢迎关注! 前言 前段时间,我用electron-vue开发了一款跨平台(目前支持主流三大桌面操作系统)的免费开源的图床上传应用--PicGo,在开发过程中踩了不少的坑,不仅来自应 ...

  8. Cygwin-添加到右键菜单脚本--一键安装、卸载

    平时习惯用一些linux命令来完成工作,在Windows上有cygwin和gitbash两个选择.这两个我都装了. 相对来说cygwin支持的功能更多一些,但是它没有默认绑定到右键菜单.为此,我想到用 ...

  9. 动手打造自己强大的右键菜单

    鼠标的右键选单中有很多快捷命令,给日常操作带来了很大的方便.但是,系统不可能做到将所有的命令都集成到右键选单中,有时需要的命令根本就不存在,这就只能*我们自己动手添加和删除进去了.下面就告诉大家几个添 ...

  10. 如何在IE右键菜单中添加自定义项

    摘要: 最近小鑫参加了名为"微软社区精英计划"的活动,这个活动给这个组织内的成员定期提供免费的最新微软内部培训.而对我们这些成员的要求则是定期地发布有关微软技术的博文和视频,当然这 ...

最新文章

  1. # 内存屏障:骇客的硬件视角(1)
  2. 每日一皮:资深程序员调试代码的样子...
  3. python3.x中的生成器generator调用next方法
  4. Servlet基础(一) Servlet基础和关键的API介绍
  5. mysql中length与char_length字符长度函数使用方法
  6. 直播系统:泛娱乐直播新趋势
  7. python文本框清空_用Python制作mini翻译器
  8. 每天一道LeetCode-----找到给定序列中所有和为某个值的集合或集合个数,序列中可以有/无重复项,集合元素顺序不同算不同集合等
  9. SpringMVC(十一) RequestMapping获取Cookie值
  10. python 双向链表_Python实现双向链表
  11. php 支付宝付款接口测试
  12. Alt+/ 快速提示快捷键修复及ecplise心得
  13. 萌新的Python练习菜鸟100例(十)暂停一秒输出,并格式化输出当前时间
  14. java小数位-DecimalFormat(转)
  15. 打通最后100米:苏宁小店如何成为家门口的“共享冰箱”
  16. 【bzoj4152: [AMPPZ2014]The Captain】最短路
  17. 适合国人的6款免费远程桌面工具,适用于电脑和手机
  18. 吉他学习教程1 之 认识吉他
  19. thinkserver ts530装centos7
  20. nexus是java的插件吗_Nexus3 OSS环境搭建以及在日常工作中的用途

热门文章

  1. Echarts多条折线可拖拽
  2. oracle18c如何创建hr用户,Oracle18c创建不带C##的用户
  3. OFFICE技术讲座:制表键(TAB)对段落布局的影响
  4. Xcode给应用开启沙箱sandbox
  5. JAVA CLASS混淆工具:ProGuard简单试用
  6. MAC编译OpenJDK8:iostream file not found(独家解决办法)
  7. 脚本都不写,不能算正式测试
  8. 全网首发:以管理员身份运行bat,自动切换盘符、目录的正确做法
  9. 不同版本的Python,如何pip
  10. 小腿抽筋了,按摩承山穴,外加念观世音菩萨是不是迷信