2008-05-23

控制Bundle的启动

在开放RCP程序时, 由于ActivationPolicy的存在(这是个优点, 保证OSGi只加载需要的Bundle), spring的osgi-extender并不能自动start, 这导致所有基于spring-osgi的bundle只能愣在那起不了作用.

启动osgi-extender的方法是: 在config.ini里的osgi.bundles项里, 加入

org.springframework.bundle.osgi.extender@start

这个OSGi能识别并且确保会执行Activator.start()方法.
目前, 俺仅找到这么一个方式被证明是正确的, 之前也尝试过写另一个Bundle来激活它, 可那个bundle本身都没被激活...
小发现: osgi.extender被start过一次后(通过console), 之后每次都会自动启动.
小小发现: org.eclipse.update.configurator不依赖于org.eclipse.update.core, 并且, 是它负责启动plugins/目录下的所有插件, 这就是为啥它的启动顺序排第三:

org.eclipse.update.configurator@3:start


2008-05-16

Eclipse Monkey -- Eclipse 的脚本

Eclipse Monkey 是Dash下的兴趣项目, 由Aptana贡献,提供给Eclipse插件开发者使用。

它是用javascript书写的, 用来支持在Eclipse运行时期执行一些操作, 就像可以通过Firebug提供的JS输入接口可以窥探页面DOM信息,  Eclipse Monkey可以访问整个运行时的上下文,  比如获得当前选中的Editor并插入一段数字,  激活/停止某个bundle/plugin.

1.安装与运行
通过update site , 安装后重启. 在菜单栏会出现"script"项, 选sample, 会自动在生成出一些sample脚本. 然后再看菜单栏的"script"项, 就会看到sample脚本已经可以执行了.如果想写自己的脚本, 就复制任意一个sample, 然后选"script"项下的"paste new script"
2.语法与规则
注意文件最上几行的注释是元数据, 譬如Menu, Listener, DOM等, 不能省略.一般情况下main方法是执行入口, 如果是listener, 则依赖所触发的事件去调用相应的方法.
DOM里有已经定义好的对象, 比如editors, views等. 如获得当前激活的Editor的代码就是:
var ae = editors.activEditor;
这个不好用, 限制太多. 通过Packages就非常灵活了.Packages后面跟类的全限定名, 就能访问到这个类, 俺的喜好, 从Packages.org.eclipse.core.runtime.Platform基本上什么都能访问到.
Listener可以监听并执行脚本, 比如键盘监听, Editor/View被选中的监听.
3.延伸阅读
Aptana在EclipseCon的PPT以及Demo代码