[zt]org.eclipse.core.runtime.contentTypes扩展点详解

FROM:http://blog.matrix.org.cn/gh_aiyz/date/20060717

org.eclipse.core.runtime.contentTypes用于扩展系统支持的内容类型。

首先看一个example:  

xml 代码
  1. <extension point="org.eclipse.core.runtime.contentTypes">  
  2. <content-type id="ABC"  base-type="org.eclipse.core.runtime.xml"  file-extensions="a,b,c">  
  3. <describer class="org.eclipse.core.runtime.content.XMLRootElementContentDescriber">  
  4. <parameter name="element" value="abc"/>  
  5. </describer>  
  6. </content-type>  
  7. </extension>  

 

该extension支持以下attribute:

  • id - 该内容类型的唯一标识(即可以是全限定名,也可以是简名,简名会被自动加上当前plugin的namespace而成为全限定名). 不可包含空格。
  • base-type - 父类型的全限定名。 父类型的文件关联,content describer和默认字符集将会被继承,除非重定义了。
  • name - 人容易读懂的类型名,主要用于界面显示之类的作用。
  • file-extensions - 和该内容类型关联的文件扩展名列表,用逗号分割。
  • file-names - 和该内容类型关联的文件名列表,用逗号分割。
  • priority - 该内容类型的优先级,用于解决冲突(当多个内容类型关联到同一个文件名或者扩展名时)。
  • default-charset - 该内容类型的默认字符集。也可以是个空字符串,如果其父类型有默认字符集而该内容类型不应该有默认字符集。很方便的一个属性。等效于: 

    xml 代码
    1. <content-type>  
    2. <property name="org.eclipse.core.runtime.charset" default="charset-name"/>  
    3. </content-type>  

    即等效于通过property元素赋值。

  • describer - 实现了org.eclipse.core.runtime.content.IContentDescriberorg.eclipse.core.runtime.content.ITextContentDescriber的全限定类型。或是一个空字符串,如果其父类型有describer而该内容类型不应该有describer。
  • alias-for - 一个内容的全限定名。当前类型是该类型的别名。

它支持2个子元素:describer(最多一个)和property(n个)。

describer有两个属性,class代表全限定类名,plugin为提供该类的插件的id,一般为空,表示这个类由该插件自己提供。describer属性的优先级比describer子元素高,所以一旦设了describer属性,describer子元素会被自动忽略。

describer支持parameter子元素,但是这个describer必须实现IExecutableExtension接口才行,参看XMLRootElementContentDescriber的代码,他实现了IExecutableExtension.setInitializationData()方法。

以下是几个相关的接口:

IContentType -- 其实我们并不需要太关心这个接口,尽管它代表着一个content type,但是我们不需要继承或实现它,但是它将在对content type敏感的插件中用到。

IContentDescription -- 同样,我们也不需要实现这个接口,它用来包含被检查的数据的属性信息。它总是包含被检查数据的content type,这个由eclipse platform设置的。它通常还有可能包含一下信息,这些信息是由describer来填充的:

  1. 字符集
  2. byte order mark
  3. 其他第三方插件提供的property。

IContentDescriber/ITextContentDescriber -- 这两个接口是content type的validator和description填充者。后者为文本类型的content types专用。describer负责从content里面读取元数据并设到description中。其describe()方法可以返回三个值,这三个值都在IContentDescriber中定义,分别为

  1. INDETERMINATE -- 模糊不清
  2. VALID -- 有效
  3. INVALID -- 无效
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值