一、组成
一个扩展点(Extension Point)包括ID、Name及Schema文件,shema文件以ID命名,后缀为.exsd,存放在插件schema目录下。
使用eclipse的向导创建扩展点后会自动生成一个extension元素(element),这个元素由三项属性(attribute):point、id、name。可以通过choice和sequence的组合向extension元素添加子元素来增强扩展点的含义。关于元素、属性、choice和sequence的含义可参考w3school的xml教程及schema教程。
二、属性详情
Name 属性的名称
Deprecated 指示是否废除该属性
Use 指示这项属性是否在拓展拓展点时是否是必须填写,
可以选择required、optional和default,
如果选择default,那么如果该属性没被填写,将使用Value的值填充。
Type 属性的类型,可以是:boolean、string、java、resource。
如果属性只有true或false两种选择,使用boolean类型,
如果属性为java的类或接口,使用java,
如果属性代表文件,使用resource,
其他情况通通选择string
Extends 如果Type选择java,那么填写必须被继承的类的全限制类名(即类名+包名)
Implements 如果Type选择java,那么填写必须被实现的接口的全限制接口名
Translatable 如果Type选择string,指示该字符串是否应该被翻译
Restrictions 如果Type选择string,可以添加该字符串的枚举值
Description 属性的文档
Value 如果Use选择default,那么这里填写属性的默认值
常见的组合如下:
----------------------------------------------------------------------------------
XML格式 在schema对应的声明
----------------------------------------------------------------------------------
<父元素 ... > + Sequence
<子元素 ... /> 子元素
</父元素>
----------------------------------------------------------------------------------
<父元素 ... > + Sequence
<子元素 ... /> 子元素
<子元素 ... /> [minOccurs = "0"]
... [maxOccurs = "unbounded"]
</父元素>
----------------------------------------------------------------------------------
<父元素 ... > + Sequence
<子元素1 ... /> 子元素1
<子元素1 ... /> [minOccurs = "0"]
... [maxOccurs = "unbounded"]
<子元素2 ... /> 子元素2
<子元素2 ... /> [minOccurs = "0"]
... [maxOccurs = "unbounded"]
</父元素>
----------------------------------------------------------------------------------
<父元素 ... > + Sequence
<子元素1 ... /> 子元素1
<子元素2 ... /> + Choice
或是 子元素2
<子元素1 ... /> 子元素3
<子元素3 ... />
</父元素>
四、获取扩展点属性及实例
IExtension[] extensions = Platform.getExtensionRegistry()
.getExtensionPoint("自定义扩展点的插件ID","扩展点ID")
.getExtensions();
......
IConfigurationElement[] configElements =
extensions[i].getConfigurationElements();
......
//获取属性的值
configElements[j].getAttribute("属性名");
......
//获取属性中声明的类或接口的实例
configElements[j].createExecutableExtension("属性名");
原连接:http://www.cnblogs.com/maxupeng/archive/2011/07/27/2118975.html