右键菜单的过滤和启动(转载)
2012-03-29 13:05
148 查看
一、添加右键菜单步骤:
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、扩展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
相关文章推荐
- 右键菜单的过滤和启动
- 资源管理器空白处右键菜单启动命令提示符
- Delphi -- 创建 桌面、发送到...、快速启动栏、开始菜单、程序菜单、右键菜 单
- QT之桌面精灵实现(二) --- 右键菜单、开机启动、窗口Z-Order
- 使用BCDEdit修改Vista启动菜单(转载于vista天地)
- (转载)delphi实例TDBGrid用右键菜单复制行粘贴行
- Flex屏蔽并自定义鼠标右键菜单(转载)
- ExtJs grid行 右键菜单(转载)
- Windows操作系统下给文件夹右键命令菜单添加启动命令行的选项
- 转载-VB中禁用文本框右键菜单等功能
- 右键新建菜单里的office快捷启动文件没有解决办法
- 【转载】Coolite之TreePanel右键功能菜单
- Win10如何在右键菜单中添加记事本以提高启动效率
- EXTJS学习系列提高篇:第三篇(转载)作者殷良胜,在GridPanel上单击右键显示菜单的制作
- Win7 开启显示快速启动工具栏,发送到快速启动右键菜单
- 增加右键启动cmd菜单
- Delphi -- 创建 桌面、发送到...、快速启动栏、开始菜单、程序菜单、右键菜 单
- 转载:VS2012开启右键菜单创建单元测试选项(Create Unit Tests) 的方法
- 在windows右键菜单中加入自己的程序 [转载]
- 【转载于<小锋刚>博客园】C#遍历ContextMenuStrip右键菜单中包含子菜单的所有菜单并添加事件