在eclipse 3.1以后,bundle(osgi的概念)与原有的plugin成为可互换的名字.在eclipse的API里,存在Plugin类和Bundle类.其中,Plugin类里的方法已经逐步被废弃使用.
<o:p> </o:p>
建立一个可以管理bundle的类有两种方式:
a.继承 Plugin类
b.实现 BundleActivator 接口.
其中,如果我们在创建一个plug-in project时,选择了创建Activator,则该类就是继承Plugin类.
<o:p> </o:p>
在Menifest.MF文件中指定:
Bundle-Activator: com.helloworld.MyBundle<o:p></o:p>
(自动创建时为: Bundle-Activator: com.helloworld.Activator)
这样设置完成后,再次触发该bundle的时候,就可以看到在Bundle 的start()方法中System.out.println()出来的信息,说明我们的bundle已经启动。
知道了这些,我们就可以控制一个Bundle的启动与停止了,下面的代码是停止的例子:
Button bn=new Button(parent,0);
bn.setText("stop the bundle");
bn.addSelectionListener(new SelectionListener(){
public void widgetDefaultSelected(SelectionEvent e) {
}
public void widgetSelected(SelectionEvent e) {
//关闭当前view
IWorkbenchPage page=PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IViewPart v=page.findView("com.singba.learing.helloworld.views.HelloworldView");
page.hideView(v);
// 停止bundle
Bundle mybundle=Platform.getBundle("com.singba.learing.helloworld");
try {
mybundle.stop();
} catch (BundleException e1) {
e1.printStackTrace();
}
}
});