Eclipse的组件架构师基于插件的,这就意味着将一组代码组件化为一个单一的组件,然后利用Eclipse框架注册为组件之一,其他组件可以绑定该组件或者调用该组件。
扩展点是插件允许其他插件向公开扩展点的插件提供附加功能的方法。
插件(Plug-in):
Eclipse功能实现的最小单位,包含了Java代码或者其他文件。插件位于plugins目录下,使用清单文件plugin.xml向系统说明如何继承到平台中。
扩展点(Extension point):
本插件为其他插件提供的接口,插件可以自定义扩展点,也可以实现其他插件的扩展点。
扩展(Extension):
对其他插件公开的扩展点进行的实现。
Eclipse扩展机制实践:
以下代码均在文章:http://489291468.iteye.com/blog/1887290 描述工程的基础实践。
整个工程目录:
PluginMgrCenter Bundle:
创建ExtensionMgr.java文件:
/**
*
*/
package extensionservice;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.Platform;
import sayhello.ISayHello;
/**
* @author Administrator
*
*/
public class ExtensionMgr
{
private static final String MY_EXTENSION_POINT_ID = "PluginMgrCenter.sayHello";
private static ExtensionMgr extensionMgr = new ExtensionMgr();
public static final ExtensionMgr getExtensionMgr()
{
return extensionMgr;
}
private boolean flag = false;
public void execute()
{
if (!flag)
{
try
{
Thread.sleep(10000);
}
catch (Exception e)
{
e.printStackTrace();
}
IExtensionRegistry registry = Platform.getExtensionRegistry();
evaluate(registry);
flag = true;
}
}
private void evaluate(IExtensionRegistry registry)
{
IConfigurationElement[] config = registry
.getConfigurationElementsFor(MY_EXTENSION_POINT_ID);
for (IConfigurat