介绍
如果你的插件写的有特色,想拿来用,但是还不能或者不适合直接修改你的代码,怎么办呢?解决方案当然是Eclipse插件系统最推荐的了——增加扩展点。
概念
一个扩展点(Extension Point)包括ID、Name及Schema文件,shema文件以ID命名,后缀为.exsd,存放在插件schema目录下。
定义
[codesyntax lang="xml"]
对bundle列表的扩展
测试啊
新增一列
列名
对列表操作的扩展
停止bundle
[Enter the first release in which this extension point appears.]
[Enter extension point usage example here.]
[Enter API information here.]
[Enter information about supplied implementation of this extension point.]
http://surenpi.com
[/codesyntax]
上面的定义文件org.suren.littlebird.bundles.list.exsd,放在schema目录中。
注册
[codesyntax lang="xml"]
[/codesyntax]
上面的文件是plugin.xml
挂载扩展点
[codesyntax lang="java"]
private void regExtension()
{
IExtensionRegistry reg = Platform.getExtensionRegistry();
IConfigurationElement[] extensions = reg.getConfigurationElementsFor("org.suren.littlebird.bundles.list");
if(extensions != null)
{
for(IConfigurationElement ele : extensions)
{
if("column".equals(ele.getName()))
{
String textAttr = ele.getAttribute("text");
String sorterCls = ele.getAttribute("sorter");
TableColumn col = new TableColumn(table, SWT.None);
col.setText(textAttr);
try {
SorterAdapter ext = (SorterAdapter) WorkbenchPlugin.createExtension(ele, "sorter");
ext.setViewer(viewer);
col.addSelectionListener(ext);
} catch (CoreException e) {
e.printStackTrace();
}
}
}
}
}
[/codesyntax]
使用扩展点
这时候,你需要新建一个插件工程,不知道怎么新建插件工程?这里有入门教程。
[codesyntax lang="xml"]
point="org.suren.littlebird.bundles.list">
[/codesyntax]
上面的类test.extension.TestSorter是对列排序的扩展,然后增加了两列——test、two。
参考