`

Eclipse Action 深入学习笔记(3)

阅读更多

filter元素是用来指定当前的contribution是否可用, 它的用法跟visibility中的objectState类似, 比如只有选择的对象为只写才可用, 那么可以这样写:

xml 代码
  1. <objectContribution ...>  
  2.    <filter name="readOnly" value="false"/>  
  3.    ... the other stuff here ...   
  4. objectContribution>  

和objectState 一样,filter使用的进行测试的对象必须实现IActionFilter接口或者能适配为IActionFilter, 然后调用testAttribute()方法来跟指定的name/value进行比对, 对于Resource来说, 它提供了下列属性让我们来进行比对
name,表示对文件名进行比对, 可使用*这种正则表达式
extension表示后缀名比对
path路径比对, 可使用*
readOnly只读比对
projectNature 对nature比对
persistentProperty 对选择的资源的持久属性进行比对, 如果他的值只是一个字符串,那么就对该资源已有的属性值拿出来进行比对, 如果是propertyName=propertyValue这种形式,那么先根据name从选择的对象中取出值,然后再跟指定的value进行比对
projectPersistentProperty 对选中对象所在工程的持久性属性进行比对
sessionProperty 对对象中对的session属性进行比对
projectSessionProperty 选中对象所在工程的session属性进行比对

selection 元素主要针对contribution中某个action是否可见来进行判断,比如说下面这样写:

xml 代码
  1. <objectContribution  
  2.       objectClass="java.lang.Object"  
  3.       id="com.qualityeclipse.favorites.popupMenu">  
  4.    <action  
  5.          label="Add to Favorites"  
  6.          tooltip="Add the selected resource(s) to the   
  7.                   Favorites view"   
  8.          class="com.qualityeclipse.favorites.actions.   
  9.                 AddToFavoritesActionDelegate"   
  10.          menubarPath="additions"  
  11.          enablesFor="+"  
  12.          id="com.qualityeclipse.favorites.addToFavorites">  
  13.       <selection  
  14.             class="org.eclipse.core.resources.IResource"  
  15.             name="*.java"/>  
  16.    action>  
  17. objectContribution>  

这里的意思是com.qualityeclipse.favorites.popupMenu下的action在任何情况下都是可见的,只有Add to Favorites只有在选中的对象实现了IResource接口且文件名后缀为java才可见

enablement元素 也是针对单个action的, 它集selection和visibility两个元素的强大于一身,举个例子就明白了:

 

xml 代码

 

  1. <objectContribution  
  2.       objectClass="java.lang.Object"  
  3.       id="com.qualityeclipse.favorites.popupMenu">  
  4.    <action  
  5.          label="Add to Favorites"  
  6.          tooltip="Add the selected resource(s)   
  7.                   to the Favorites view"   
  8.          class="com.qualityeclipse.favorites.actions.   
  9.                 AddToFavoritesActionDelegate"   
  10.          menubarPath="additions"  
  11.          enablesFor="+"  
  12.          id="com.qualityeclipse.favorites.addToFavorites">  
  13.       <enablement>  
  14.          <and>  
  15.             <objectClass  
  16.                name="org.eclipse.core.resources.IResource"/>  
  17.              <objectState name="name" value="*.java"/>  
  18.          and>  
  19.       enablement>  
  20.    action>  
  21. objectContribution>  

根据文件内容关联contribution
比如一般我们的Run Ant...菜单项是跟build.xml文件关联的, 如果要跟export.xml也关联, 那么我们就需要通过对xml的DTD声明进行判断是否可以关联, 为了处理这种情况org.eclipse.ant.core 定义了一种叫antBuildFile 的content type:

xml 代码
  1. <extension point="org.eclipse.core.runtime.contentTypes">  
  2.    <content-type  
  3.       id="antBuildFile"  
  4.       name="%antBuildFileContentType.name"  
  5.       base-type="org.eclipse.core.runtime.xml"  
  6.       file-names="build.xml"  
  7.       file-extensions="macrodef,ent,xml"  
  8.       priority="normal">  
  9.       <describer  
  10.          class="org.eclipse.ant.internal.core.   
  11.             contentDescriber.AntBuildfileContentDescriber">  
  12.       describer>  
  13.    content-type>  
  14. extension>  

在AntBuildfileContentDescriber 类中将判断xml文件是否是ant内容, 接下来我们就可以通过使用antBuildFile来指定contibution是否可用.
如果想了解如何自定义内容类型,可以参考:
eclipse.org > projects > The Eclipse Project > Platform > UI > Development Resources > Content Sensitive Object Contributions或者dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-ui-home/object-aware-contributions/objCont.htm
Help > Help Contents > Platform Plug-in Developer Guide > Programmer's Guide > Runtime overview > Content types
"A central content type catalog for Eclipse" at dev.eclipse.org/viewcvs/index.cgi/platform-core-home/documents/content_types.html?rev=1.11
"Content types in Eclipse" at eclipse.org/eclipse/platform-core/planning/3.0/plan_content_types.html

分享到:
评论
2 楼 macrochen 2007-12-26  
这个没碰到过
1 楼 solonote 2007-12-25  
我要做一个弹出菜单,这个菜单有一个Action A,如果选中的对象包含了main方法则显示不包含则不显示,好像要用
org.eclipse.core.expressions.propertyTesters扩展点
但这个扩展点如何使用还不是很明白,请问能否指点?

相关推荐

    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的强大和实用性。

    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的关键概念、核心语法、常用标签...

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

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

    韩顺平struts视频学习笔记

    ##### 3. 编写表单和Action - **表单类`UserForm`**:表单类继承自`ActionForm`,用于封装用户的输入数据。 ```java public class UserForm extends ActionForm { private String name; private String pw; /...

    Struts 1.3.8 学习笔记(五)

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

    strust2.0学习笔记

    ### Struts2.0 学习笔记 #### 引言 Struts2 是一款非常流行的 Java Web 开发框架,它基于 Struts1 进行了重大的改进与优化,不仅继承了 Struts1 的优秀特性,还在此基础上进行了扩展,支持更加丰富的功能,如拦截...

    Cocos2d-android-1学习笔记

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

    Junit In Action 学习笔记----下载不扣分,回帖加1分,童叟无欺,欢迎下载

    第2章:进一步深入研究了Junit的类,生命周期和框架。为了把这些联系起来,我们描述了一些 测试的方法和例子。 第3章:描述了一个复杂的TestCase,以使向你展示Junit较大的组件如何工作。这个案例中分析的是很多 ...

    Struts 1.3.8 学习笔记(四)

    在深入学习 Struts 1.3.8 时,我们需要了解以下几个关键知识点: 1. **MVC设计模式**:Struts 是 Model-View-Controller (MVC) 设计模式的实现,它将业务逻辑、数据和用户界面分离,提高了代码的可维护性和可扩展性...

    Struts 1.3.8 学习笔记(三)

    这个版本的学习笔记主要集中在 Struts 框架的核心概念、架构和实际应用上。Struts 1 提供了一个MVC(Model-View-Controller)设计模式的实现,帮助开发者组织应用程序的逻辑,提高代码的可维护性和可扩展性。 在...

    struts的学习笔记

    ### Struts 学习笔记 #### 一、Struts 是什么? 1. **定义与功能:** - **Struts** 是一个开源框架,用于构建基于 **MVC(Model-View-Controller)** 模式的 Web 应用。 - 它是 **Jakarta Project** 的一部分,...

    struts2入门教程和学习笔记

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

Global site tag (gtag.js) - Google Analytics