`

Eclipse Action 深入学习笔记(2)

阅读更多

Object Action
这种Action是跟弹出的上下文菜单相关的, 因此它主要用在org.eclipse.ui.popupMenus扩展点下的objectContribution 节点中, 这里有几个属性需要做一下说明:
adaptable:true表示能将选中对象适配为objectClass中指定的类型
nameFilter:这个是用来指定哪种文件类型为当前contribution可用, 比如设置为*.java表示当前action只针对java文件
objectClass:指定contribution只用于那种对象类型
contribution的其他属性跟前面介绍的大同小异

对contribition过滤和可用性的控制
只有当前选中的文件类型是nameFilter指定的类型, 或者选中的对象是objectClass指定的类型,contribution才会在右键菜单中出现,而是否可用则要通过判断选中的对象是否和enablesFor属性中表达式规定的数量, 表达式的定义包括:!表示选中0个, ?表示0个或1个, +表示1个或多个, multiple, 2+两个或多个, n表示具体个数, *表示任意个

objectContribution还提供visibility节点来控制contribution可见性, 它比通过nameFilter 和objectClass控制功能更强, 比如要达到和objectClass="org.eclipse.core.resources.IResource"同样的效果可以这样写:

xml 代码
  1. <objectContribution ...   
  2.   <visibility>  
  3.       <objectClass  
  4.          name="org.eclipse.core.resources.IResource"/>  
  5.   visibility>  
  6.    ...the other stuff here...   
  7. objectContribution>  

如果当前contribution只用于可写的对象,可以这样写:

xml 代码
  1. <objectContribution ...>  
  2.    <visibility>  
  3.       <and>  
  4.          <objectClass  
  5.             name="org.eclipse.core.resources.IResource"/>  
  6.          <objectState name="readOnly" value="false"/>  
  7.       and>  
  8.     visibility>  
  9.    ... the other stuff here ...   
  10. objectContribution>  

visibility包括了not, and和or逻辑表达式节点以及adapt等Boolean表达式节点, adapt节点会先将选中对象适配为指定类型然后给其下级节点使用,比如这里:

xml 代码
  1. <adapt type="org.eclipse.core.resources.IResource">  
  2.    <objectState name="readOnly" value="false"/>  
  3. adapt>  


首先适配成IResource,然后判断其状态,该节点通常和and操作符结合使用, 如果适配器或者引用的类型没有加载,那么将返回EvaluationResult.NOT_LOADED, 如果指定的类型不存在,将抛出ExpressionException 异常
and节点只有下级子节点表达式都返回true才为true
instanceof节点 只有选中的对象是指定的名称时才为true, 和objectClass不同之处在于,它还可以与其他的元素通过and和or元素一起使用
not节点只有在下级节点返回false才为true
objectClass看上面的例子就知道了
objectState 比较选中的对象的状态是否指定的值
or节点只要下级节点中有一个为true就返回为true
pluginState节点对指定的插件的状态进行检测, 这里的状态有两种:installed或者actived, 比如这样写:

xml 代码
  1. <pluginState id="org.eclipse.pde" value="installed"/>   


表示只有org.eclipse.pde插件安装才可见
systemProperty 举个例子就知道怎么用了

xml 代码
  1. <systemProperty name="user.language" value="en"/>  


systemTest 跟systemProperty大同小异,只不过它可以通过and和or与其他的节点联合使用
test节点举个例子来说吧:

xml 代码
  1. <test  
  2.     property="org.eclipse.debug.ui.projectNature"  
  3.     value="org.eclipse.jdt.core.javanature"/>  


表示只有选中的是java项目下的对象当前contribution才可见, 如果进行比较的property没有加载,将返回EvaluationResult.NOT_LOADED, 这里指定的进行比较的属性能通过使用org.eclipse.core.expressions.propertyTesters进行扩展,具体的实现可参考org.eclipse.debug.internal.ui.ResourceExtender类

分享到:
评论

相关推荐

    EclipseAction深入学习笔记.pdf

    Eclipse Action 深入学习涉及了许多核心概念和机制,它是Eclipse插件开发中不可或缺的部分,用于构建用户界面的交互元素,如菜单、工具栏和上下文菜单。以下是对这些概念的详细解释: 1. **IActionDelegate**: ...

    Eclipse插件开发学习笔记

    【Eclipse插件开发学习笔记】 Eclipse插件开发是一个涉及多方面技术的过程,主要包含以下几个核心知识点: 1. **Eclipse平台结构体系**:Eclipse是一个基于插件的架构,其核心是一个小型的内核,大部分功能由各种...

    Eclipse插件开发学习笔记(ch11-12)

    本篇将基于"《Eclipse插件开发学习笔记》(ch11-12)"的内容,深入讲解Eclipse插件开发中的两个关键概念——视图(Views)和操作(Actions)。 **第11章 操作(Actions)** 在Eclipse插件开发中,操作(Actions)是...

    eclipse rcp 插件开发学习笔记.pdf 1-14章

    以下是对Eclipse RCP插件开发学习笔记1-14章的详细知识点解析: 1. **第1章 Eclipse平台简介**: - Eclipse平台是基于OSGi(Open Service Gateway Initiative)标准的,提供了插件模型,使得开发者可以构建、运行...

    struts2学习笔记

    以上就是Struts2学习笔记中涵盖的主要知识点,这些内容涵盖了从基础到进阶的应用,对于理解和掌握Struts2框架至关重要。尽管对于初学者来说可能有些复杂,但随着深入学习,你会发现Struts2的强大和实用性。

    Cocos2d-android-1学习笔记

    这个“Cocos2d-android-1学习笔记”正是针对初学者或者正在深入学习Cocos2d-x在Android平台应用的开发者所准备的资料。 首先,笔记可能会涵盖Cocos2d-x的安装与环境配置,这包括下载源码、设置NDK路径、配置Android...

    struts2入门教程和学习笔记

    这个入门教程和学习笔记是针对初学者设计的,帮助他们快速理解和掌握Struts2的核心概念和实践操作。 Struts2的学习首先需要理解MVC模式。MVC模式将应用逻辑分为三个部分:模型负责业务逻辑,视图负责展示数据,而...

    strust2.0学习笔记

    ### Struts2.0 学习笔记 ...对于初学者而言,熟悉这些基础知识对于后续深入学习 Struts2 至关重要。随着实践的深入,相信你会逐渐掌握 Struts2 的更多高级特性和技巧,从而能够更高效地进行 Java Web 应用程序的开发。

    struts2学习笔记二(第2讲.Struts2入门与配置续)

    本篇学习笔记将深入探讨Struts2的入门与配置,继续上一讲的内容。 首先,Struts2的基础入门涉及到以下几个核心概念: 1. **Action类**:在Struts2中,业务逻辑通常封装在Action类中。Action类是处理用户请求的主体...

    Liferay_Portal_6学习之路-学习笔记完整版

    通过对 Liferay Portal 6 的深入学习和实践,开发者不仅可以掌握其核心技术和开发流程,还能了解相关的行业标准和技术趋势。无论是对于个人能力的提升还是项目的成功实施,都有着重要的意义。希望本篇学习笔记能够...

    晒一下,我以前struts2学习笔记

    本笔记将重点介绍Struts2的核心概念、配置、动作(Action)以及拦截器(Interceptor)。 一、Struts2核心概念 1. **Action类**:在Struts2中,业务逻辑通常封装在Action类中,它是处理用户请求的入口点。Action类...

    JBoss ESB 学习笔记

    ### JBoss ESB 学习笔记知识点概览 #### 一、搭建ESB开发环境 - **工具准备**: - Eclipse-JEE 3.5:集成开发环境,支持Java EE标准,适合企业级应用程序开发。 - jbossesb-server-4.7:JBoss ESB的具体版本,为...

    JSP 完全学习笔记 全

    **JSP完全学习笔记概述** JSP(JavaServer Pages)是一种动态网页技术,它结合了HTML、Java代码和脚本语言,使得开发者可以方便地创建交互式的Web应用程序。本学习笔记全面涵盖了JSP的关键概念、核心语法、常用标签...

    韩顺平struts视频学习笔记

    ##### 2. 编写前端表单 - **创建JSP页面**:在`web-inf`目录下创建一个名为`login.jsp`的文件,用于展示登录表单。 - **HTML表单代码**: ```html &lt;form action="??" method="post"&gt; name pw 登录"&gt; ``` ...

    struts2学习笔记1-HelloWorld项目

    本篇学习笔记将引导我们从零开始,通过一个简单的"HelloWorld"项目,了解Struts2的基础知识。 首先,我们需要在本地环境中搭建Struts2的开发环境。这包括安装JDK、配置Java环境变量、下载Apache Struts2的最新版本...

    Struts 1.3.8 学习笔记(五)

    6. **源码解析**:深入学习 Struts 1.3.8 的源码有助于理解框架内部的工作流程,例如 ActionServlet、Dispatcher、PlugIn 等关键类的作用。通过源码分析,开发者可以更好地定制和扩展框架功能,解决特定场景下的问题...

Global site tag (gtag.js) - Google Analytics