以前在做Eclipse插件的时候,习惯一个功能定义一个操作项。比如说在org.eclipse.ui.popupMenus扩展点上,如果有添加这个功能,但是添加的类型有多样,我们假定现在有添加A、B、C、D四个元素,在扩展点上添加一个viewerContribution扩展,添加四个Action,分别为A、B、C、D。因为这四个添加功能非常相近,所以我们可以只写一个ActionDelegate,把这四个Action的代理类都指向同一个。但是ID必须区分。声明定义如下:
上面的主要区别是在id,在所有的代理ActionDelegate中的run(IAction action)方法中都带有一个参数action,这个参数有个用途就是可以在运行时区别是对应的那个action。下面我们看一下AddTestDelegate类的定义:
我们可以在运行时通过action.getId()在识别是对应的那个Action。 总结:这个途径可以为插件开发中避免写过多的ActionDelegate,把一些功能较为接近实现代码又比较少的操作合并在一起。当然,对于操作步骤比较多的,为了代码维护的方便,还是建议单独为它定义一个代理。
Powered by: BlogJava Copyright © 寒武纪