资源描述:
《eclipse action 深入学习笔记》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、EclipseAction深入学习笔记(1)以前做插件用到的ActionSet都只是依葫芦画瓢,没有真正理解它,现在开始好好学习学习,主要是看"BuildingCommercial-QualityPlug-ins"写的Action的组成包括几个部分,一个是在plugin.xml中的声明,一个是在EclipseUI中会用到的IAction实例化对象,另一个是封装在IActionDelegate中的action执行代码.action的实例化是基于plugin.xml配置文件和IActionDelegate定义的,Eclipse可以先在界面上将action显示出来,直到
2、用户点击了菜单或者工具条按钮才会去真正的加载插件,这也就是所谓的Eclipse的延迟加载机制IActionDelegate有几个子类需要说明一下:IActionDelegate2如果实现IActionDelegate需要一些其他的信息,而这些信息在IActionDelegate销毁时需要同时被销毁时,它可以提供相关是生命周期事件方法来处理IEditorActionDelegate是跟editor相关的IObjectActionDelegate是跟上下文菜单相关的IViewActionDelegate是跟view相关的IWorkbenchWindowActionDe
3、legate是跟menubar和toolbar相关的Actions和Eclipse中的其他东东一样,也是通过扩展点org.eclipse.ui.actionSets来添加到EclipseIDE的各个地方,actions的外在表现形式主要有menubar,toolbar,contextmenu这样几种在actionSets的下级节点是actionSet,它有几个属性,id,label都不用说了,还有一个visible属性,表示在打开Eclipse时是否显示该action,通常我们可以通过Window>CustomizePerspective...来设置action是
4、否可见在actionSet下可以添加menu节点,它的id,label属性不用说了,其中的path是用来指定菜单的显示位置的,一般设置为additionsaction并不是直接添加到menu上的,而是跟menu内部的group关联的,所以我们必须先在menu下创建group,即新建groupMarker,其name必须保证在当前menu下唯一,menu还有一种叫separator的group,在separatorgroup处添加的menuitem会在这个组中的第一个菜单项上面添加一条水平线.而groupMarker则不会有线,当其他action要添加到该menug
5、roup下时,使用水平线进行分组就显得非常必要group只是用来标识menu的位置,即指这个位置可以添加菜单项,而不是实际的menuitem,实际的menuitem是action因为menu会有层次关系,所以actionSet中专门用一个menu节点来表现这种层次关系,而toolbar则没有这种情况,所以这里没有提供toolbar节点在actionSet下添加action就是最终我们要toolbar上显示的按钮和menubar上的menuitem,这里有几个属性,id和label不用说了,menuBarPath是menu要显示的位置,loanapprovaland
6、postcreditapprovalofficer/atalllevelsinaccordancewithcreditapprovalrules,licensingandeventualexerciseofcreditdecisionpowerofpersonsorinstitutions.Reviewfindingsandreviewcomments,accordingtotheBank'scredit比如"com.qualityeclipse.favorites.workbenchMenu/content",这个值就是actionSet+"/"+groupna
7、me,toolbarPath就是toolbaritem的显示位置,比如"Normal/additions",还有几个属性不常用到,但是有必要解释一下allowLabelUpdate这个要在retarget属性为true的时候有效,还不是很清楚class是menu或button要执行的动作,如果使用的是pulldown风格的action,还需要实现IWorkbenchWindowPulldownDelegate接口,它的构造函数是无参数的,如果要传递参数,还需要是要实现IExecutableExtension接口,这个接口还不是很清楚definitionId这个是用
8、来指定ac