- 浏览: 149491 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
EclipseEye:
fair_jm 写道不错 蛮详细的 谢谢分享
SWT/JFace专题 --- SWT中Display和多线程 -
fair_jm:
不错 蛮详细的 谢谢分享
SWT/JFace专题 --- SWT中Display和多线程
插入点用来定义菜单出现的位置。由于Eclipse由插件组成,而每个插件又都可以添加操作,这些插件直接可能不会彼此知道。为此,Eclipse仿照标示符的使用方法,使用“插入点”(insertion point)来指定菜单或操作将在工作台的什么位置出现。
Eclipse系统中定义了标准的插入标示符additions,用来将新创建的操作插入指定的位置,这个标示符作为常量定义在org.eclipse.ui的IWorkbenchActionConstants中,可以使用IWorkbenchActionConstant.MB_ADDITIONS来获得。例如,如果希望将某个菜单放入“帮助”菜单中,就应该将其属性设置为help/additions
-------------
IAction和IActionDelegate接口
----------------------------
IActionDelegate接口的子类型IWorkbenchWindowDelegate为工作台窗口的菜单栏和工具栏提供生命周期事件,还有其他的几个子类型:
--IEditorActionDelegate,为编辑器中的操作代理提供生命周期事件;
--IObjectActionDelegate,为快捷键相关联的的操作代理提供生命周期事件;
--IViewActionDelegate,为视图中的操作代理提供生命周期事件;
Eclipse的Action由几个部分组成,包括插件清单中操作的XML声明,用来代表这个操作的由Eclipse UI实例化的IAction对象,以及在插件清单中定义的实现了IActionDelegate的类。
Eclipse工作台根据清单中描述的信息(标题,图标,工具提示等)实例化一个IAction对象(WWinPluginAction,继承了抽象类PluginAction,该抽象类可以将Action对象变为真正动作的代理对象),这个对象具备Action的所有信息。
执行Action的任务由具体的实现了IActionDelegate的类来定义。在用户单击某个工具栏的按钮时,PluginAction对象会加载这个实现了IActionDelegate的类,并且调用其run方法,使操作真正得到执行。Eclipse通过这种方式成功地将显示和实现相分离,延迟了对象的加载。
下图显示的就是workbench action bars 的结构,正方形的框表示的是IActionBars的实现类(主要就是ActionSetActionBars、EditorActionBars、ViewActionBars);椭圆形的表示操作(创建、更新等)ActionBars的类。
另外,WorkbenchWindow有一个最高级别的IActionBars的实现,可以通过
WorkbenchWindow.getActionBars()获得。它主要是控制菜单栏、工具栏的Action的集合。
---------------------------
对象操作
在Eclipse视图中创建的Action可以分为两种,一种是指向特定对象类型的Action,另一种是在视图的专用菜单中提供的Action。
Eclipse的“包资源管理器”视图的树状结构中的操作就是基于对象的。
添加org.eclipse.ui.popupMenus扩展--->新建objectContribution-->实现IObjectActionDelegate代理类接口
这个代理来中要实现三个方法:
setActivePart()--为代理指定当前活动的部分,
selectionChanged()--响应选择部分的更改
run()--Action运行的主要方法
----------------------------
视图操作
同objectContribution不同的是,viewerContribution不是针对视图中的对象决定应出现的上下文菜单,而是根据查看器(Viewer)的类型而选择的,也就是说,viewerContribution规定的是针对该视图中所有对象的通用操作。
1)添加视图的上下文菜单
添加org.eclipse.ui.popupMenus扩展--->新建viewerContribution--->实现
org.eclipse.ui.IViewerActionDelegate接口,要实现init()和run()方法
2)添加视图的工具栏
添加org.eclipse.ui.viewActions扩展--》这个扩展包含viewContribution(注意和上面提到的viewerContribution的区别,它们是不同扩展点的元素,在不同的位置添加操作)
3)添加视图的下拉菜单
视图的下拉菜单一般进行过滤、排序等操作。添加视图下拉菜单的操作很简单,只需要定义一个菜单,将其path设置为additions,然后在添加menubarPath
-----------------------------
编辑器操作
1)创建编辑器上下文操作
要在编辑器中添加上下文菜单项,仍需要使用org.eclipse.ui.popupMenus的viewerContribution元素,只要将其targetID的值设置为“#TextEditorContent”---这是Eclipse默认文件编辑器的上下文菜单标示符。
2)添加顶层工作台编辑器菜单
添加顶层工作台菜单,可以使用org.eclipse.ui.editorActoins扩展点。为编辑器添加的顶层工作台菜单与org.eclipse.ui.actionSets扩展实现的顶层工作台菜单的不同之处是,actionSets实现的是所有情况下均可见的工作台菜单,而为编辑器添加的顶层工作台菜单只有当使用与之关联的特定的编辑器时才会出现。
添加org.eclipse.ui.editorActoins扩展-->添加editorContribution元素---》在editorContribution中创建一个Menu--》添加Action,实现了IEditorActionDelegate接口,并在menubarPath中设置所放的菜单
实现IEditorActionDelegate接口需要重写setActivePart()方法和run()方法
3)添加顶层工作台工具栏编辑器相关的工具项
类似于工作台菜单操作,可以为编辑器定制工作台工具栏按钮。
添加Action配置时,设置toolbarPath="Normal/additoins",Normal是工具栏的标识符,"Normal/additoins"表示将工具栏按钮添加在所有已定义的按钮之后。
-------------------------------
快捷键映射
-------------
为了解决快捷键设置冲突的问题,Eclipse引用了Command的概念,使用命令来定义语义操作。
命令就是Action及其相关联类别的声明。可以使用命令与键绑定、操作和处理程序相关联,但它并不定义操作的具体实现。这样做的好处就是将命令从操作实现中分离处理,以便允许多个插件定义实现相同语义命令的操作。
添加org.eclipse.ui.commands扩展---》创建command元素,设置id-----》添加
org.eclipse.ui.bindings扩展---》新建Key元素,设置key元素的属性(sequence:指定绑定的键序列;schemeId:激活该键序列使用的配置,一般设置默认的配置org.eclipse.ui.defaultAcceleratorConfiguration;contextId:激活该序列使用的上下文环境的标识符,默认使用的上下文环境标识符为org.eclipse.ui.context.windows;commandId:该键激活后,所触发的命令)----》最后命令和操作的关联,找到org.eclipse.ui.actionSets下对应的Action设置其definitionId属性为刚才设置的commandId,这样就可以通过设置的快捷键打开action了
Eclipse系统中定义了标准的插入标示符additions,用来将新创建的操作插入指定的位置,这个标示符作为常量定义在org.eclipse.ui的IWorkbenchActionConstants中,可以使用IWorkbenchActionConstant.MB_ADDITIONS来获得。例如,如果希望将某个菜单放入“帮助”菜单中,就应该将其属性设置为help/additions
-------------
IAction和IActionDelegate接口
----------------------------
IActionDelegate接口的子类型IWorkbenchWindowDelegate为工作台窗口的菜单栏和工具栏提供生命周期事件,还有其他的几个子类型:
--IEditorActionDelegate,为编辑器中的操作代理提供生命周期事件;
--IObjectActionDelegate,为快捷键相关联的的操作代理提供生命周期事件;
--IViewActionDelegate,为视图中的操作代理提供生命周期事件;
Eclipse的Action由几个部分组成,包括插件清单中操作的XML声明,用来代表这个操作的由Eclipse UI实例化的IAction对象,以及在插件清单中定义的实现了IActionDelegate的类。
Eclipse工作台根据清单中描述的信息(标题,图标,工具提示等)实例化一个IAction对象(WWinPluginAction,继承了抽象类PluginAction,该抽象类可以将Action对象变为真正动作的代理对象),这个对象具备Action的所有信息。
执行Action的任务由具体的实现了IActionDelegate的类来定义。在用户单击某个工具栏的按钮时,PluginAction对象会加载这个实现了IActionDelegate的类,并且调用其run方法,使操作真正得到执行。Eclipse通过这种方式成功地将显示和实现相分离,延迟了对象的加载。
下图显示的就是workbench action bars 的结构,正方形的框表示的是IActionBars的实现类(主要就是ActionSetActionBars、EditorActionBars、ViewActionBars);椭圆形的表示操作(创建、更新等)ActionBars的类。
另外,WorkbenchWindow有一个最高级别的IActionBars的实现,可以通过
WorkbenchWindow.getActionBars()获得。它主要是控制菜单栏、工具栏的Action的集合。
/** * Returns the action bars for this window. */ public WWinActionBars getActionBars() { if (actionBars == null) { actionBars = new WWinActionBars(this); } return actionBars; }
---------------------------
对象操作
在Eclipse视图中创建的Action可以分为两种,一种是指向特定对象类型的Action,另一种是在视图的专用菜单中提供的Action。
Eclipse的“包资源管理器”视图的树状结构中的操作就是基于对象的。
添加org.eclipse.ui.popupMenus扩展--->新建objectContribution-->实现IObjectActionDelegate代理类接口
这个代理来中要实现三个方法:
setActivePart()--为代理指定当前活动的部分,
selectionChanged()--响应选择部分的更改
run()--Action运行的主要方法
----------------------------
视图操作
同objectContribution不同的是,viewerContribution不是针对视图中的对象决定应出现的上下文菜单,而是根据查看器(Viewer)的类型而选择的,也就是说,viewerContribution规定的是针对该视图中所有对象的通用操作。
1)添加视图的上下文菜单
添加org.eclipse.ui.popupMenus扩展--->新建viewerContribution--->实现
org.eclipse.ui.IViewerActionDelegate接口,要实现init()和run()方法
2)添加视图的工具栏
添加org.eclipse.ui.viewActions扩展--》这个扩展包含viewContribution(注意和上面提到的viewerContribution的区别,它们是不同扩展点的元素,在不同的位置添加操作)
3)添加视图的下拉菜单
视图的下拉菜单一般进行过滤、排序等操作。添加视图下拉菜单的操作很简单,只需要定义一个菜单,将其path设置为additions,然后在添加menubarPath
-----------------------------
编辑器操作
1)创建编辑器上下文操作
要在编辑器中添加上下文菜单项,仍需要使用org.eclipse.ui.popupMenus的viewerContribution元素,只要将其targetID的值设置为“#TextEditorContent”---这是Eclipse默认文件编辑器的上下文菜单标示符。
2)添加顶层工作台编辑器菜单
添加顶层工作台菜单,可以使用org.eclipse.ui.editorActoins扩展点。为编辑器添加的顶层工作台菜单与org.eclipse.ui.actionSets扩展实现的顶层工作台菜单的不同之处是,actionSets实现的是所有情况下均可见的工作台菜单,而为编辑器添加的顶层工作台菜单只有当使用与之关联的特定的编辑器时才会出现。
添加org.eclipse.ui.editorActoins扩展-->添加editorContribution元素---》在editorContribution中创建一个Menu--》添加Action,实现了IEditorActionDelegate接口,并在menubarPath中设置所放的菜单
实现IEditorActionDelegate接口需要重写setActivePart()方法和run()方法
3)添加顶层工作台工具栏编辑器相关的工具项
类似于工作台菜单操作,可以为编辑器定制工作台工具栏按钮。
添加Action配置时,设置toolbarPath="Normal/additoins",Normal是工具栏的标识符,"Normal/additoins"表示将工具栏按钮添加在所有已定义的按钮之后。
-------------------------------
快捷键映射
-------------
为了解决快捷键设置冲突的问题,Eclipse引用了Command的概念,使用命令来定义语义操作。
命令就是Action及其相关联类别的声明。可以使用命令与键绑定、操作和处理程序相关联,但它并不定义操作的具体实现。这样做的好处就是将命令从操作实现中分离处理,以便允许多个插件定义实现相同语义命令的操作。
添加org.eclipse.ui.commands扩展---》创建command元素,设置id-----》添加
org.eclipse.ui.bindings扩展---》新建Key元素,设置key元素的属性(sequence:指定绑定的键序列;schemeId:激活该键序列使用的配置,一般设置默认的配置org.eclipse.ui.defaultAcceleratorConfiguration;contextId:激活该序列使用的上下文环境的标识符,默认使用的上下文环境标识符为org.eclipse.ui.context.windows;commandId:该键激活后,所触发的命令)----》最后命令和操作的关联,找到org.eclipse.ui.actionSets下对应的Action设置其definitionId属性为刚才设置的commandId,这样就可以通过设置的快捷键打开action了
发表评论
-
再说SWT中的滚动面板ScrolledComposite实现
2013-06-19 15:43 2328记得以前写过一篇关于滚动面板的文章 SWT中 Scrolle ... -
OSGi参考资料
2013-04-18 01:11 683基于 OSGi 的面向服务的组件编程 探索 OSGi 框架的组 ... -
CDT(编辑、调试)参考资料
2013-04-17 02:15 1115CDT编辑器 --------- 构建基于 CDT 的编辑器, ... -
Workspace Resource框架专题(3)处理工作空间资源更改事件
2013-04-17 01:44 13803 处理工作空间资源更改事件 工作空间API允许工具对它 ... -
Workspace Resource框架专题(2)workspace 框架API
2013-04-17 01:27 14902 工作空间API 本 ... -
Workspace Resource框架专题(1)Resource的概念
2013-04-17 01:12 13931 Resource的概念 如 ... -
如何恢复断点及Marker
2013-03-05 00:41 0如何恢复断点及Marker -
深入Workbench框架
2013-03-01 02:10 1729深入Workbench框架(结合UIPersistent) 1 ... -
Eclipse开发中编辑器(Editors)和视图(View)总结
2013-02-24 22:58 29141.视图(Views) 视图( ... -
SWT/JFace专题 --- 对话框向导(Dialogs Wizards)
2013-02-24 22:42 2242对话框向导(Dialogs Wizar ... -
SWT/JFace专题 --- JFace
2013-02-24 22:37 1645JFace JFace是基于SWT的一套图形工具包,它没有为 ... -
SWT/JFace专题 --- SWT中Display和多线程
2013-02-24 15:25 3242Display 1.Display 的创建 一个SWT程序 ... -
SWT/JFace专题 --- SWT API 结构
2013-02-23 18:31 1081SWT API 结构 1.布局类(l ... -
Eclipse启动过程(源码级剖析)
2013-02-20 03:24 3423双击eclipse安装目录下的eclipse.exe运行后,会 ... -
SWT/JFace专题 --- SWT结构浅析
2013-02-23 17:02 1023SWT技术是一套基于Java的 ... -
Eclipse平台体系结构
2013-02-21 23:56 18951.Eclipse平台体系结构 1 ... -
RCP平台架构
2013-02-23 14:11 1488RCP 富客户端通常是指具有独立用户界面的客户端程序。富客户 ... -
Ant构建脚本相关
2013-02-18 01:26 0Ant构建脚本相关 -
CDT源码架构研究
2013-02-18 01:24 0CDT源码架构研究 -
SWT/JFace专题 --- SWT/JFace概述
2013-02-23 16:59 868SWT(Standerd Widget Toolkit,标准图 ...
相关推荐
《Eclipse插件开发》由浅入深、有重点、有针对性地介绍了Eclipse插件开发技术,全书分为4篇共24章。第一篇介绍Eclipse平台界面开发的基础知识,包括SWT控件的使用、界面布局、事件处理等内容;第二篇是插件开发核心...
第二篇是插件开发核心技术,主要介绍插件开发的核心知识要点,包括行为(Action)、视图(ViewPart)、编辑器(Editor)、透视图(Perspective)等10章的内容;第三篇主要讲述插件开发的高级内容,包括开发高级内容...
本书由浅入深、有重点、有针对性地介绍了Eclipse插件开发技术,全书分为4篇共24章。第一篇介绍Eclipse平台界面开发的基础知识,包括SWT控件的使用、界面布局、事件处理等内容;第二篇是插件开发核心技术,主要介绍...
本书由浅入深、有重点、有针对性地介绍了Eclipse插件开发技术,全书分为4篇共24章。第一篇介绍Eclipse平台界面开发的基础知识,包括SWT控件的使用、界面布局、事件处理等内容;第二篇是插件开发核心技术,主要介绍...
本书由浅入深、有重点、有针对性地介绍了Eclipse插件开发技术,全书分为4篇共24章。第一篇介绍Eclipse平台界面开发的基础知识,包括SWT控件的使用、界面布局、事件处理等内容;第二篇是插件开发核心技术,主要介绍...
Eclipse插件开发系列 Eclipse作为一款强大的集成开发环境(IDE),其强大的扩展性得益于其插件架构。本系列将深入探讨Eclipse插件的开发技术,帮助开发者充分利用Eclipse的功能,定制属于自己的开发环境。 一、...
本书由浅入深、有重点、有针对性地介绍了Eclipse插件开发技术,全书分为4篇共24章。第一篇介绍Eclipse平台界面开发的基础知识,包括SWT控件的使用、界面布局、事件处理等内容;第二篇是插件开发核心技术,主要介绍...
Eclipse插件开发 学习笔记 第一篇 开发基础(01-05).rar Eclipse插件开发 学习笔记 第一篇 开发基础(06-10).rar Eclipse插件开发 学习笔记 第二篇 核心技术(11-16).rar Eclipse插件开发 学习笔记 第二篇 核心技术(17-...
本书由浅入深、有重点、有针对性地介绍了Eclipse插件开发技术,全书分为4篇共24章。第一篇介绍Eclipse平台界面开发的基础知识,包括SWT控件的使用、界面布局、事件处理等内容;第二篇是插件开发核心技术,主要介绍...
本书由浅入深、有重点、有针对性地介绍了Eclipse插件开发技术,全书分为4篇共24章。第一篇介绍Eclipse平台界面开发的基础知识,包括SWT控件的使用、界面布局、事件处理等内容;第二篇是插件开发核心技术,主要介绍...
本书由浅入深、有重点、有针对性地介绍了Eclipse插件开发技术,全书分为4篇共24章。第一篇介绍Eclipse平台界面开发的基础知识,包括 SWT控件的使用、界面布局、事件处理等内容;第二篇是插件开发核心技术,主要介绍...
Eclipse插件开发的核心是通过利用Eclipse平台提供的各种扩展点来实现。本资源"**Eclipse插件开发扩展点大全(中文)**"正是针对这一主题,提供了详尽的中文指南,帮助开发者深入理解和利用这些扩展点。 Eclipse的...
本篇文章将深入探讨如何在Eclipse插件开发中实现Action和Dialog,这两个元素是构建用户交互界面的关键组件。 首先,我们来理解Action的概念。在Eclipse插件开发中,Action代表了一个可执行的操作,它可以是菜单项、...
【Eclipse插件开发教程】 Eclipse是一款广泛使用的开源集成开发环境(IDE),以其高度可扩展性和灵活性闻名。Eclipse插件是增强Eclipse功能的关键,开发者可以通过编写插件来定制自己的开发环境,以满足特定的编程...
【eclipse插件开发指南】是一份详细的教程,旨在帮助开发者了解并实践Eclipse插件的开发流程。本文档覆盖了从环境准备到插件发布的整个过程,由于Eclipse插件开发的相关资源较为稀缺,这份指南显得尤为珍贵。 1. **...
第二篇是插件开发核心技术,主要介绍插件开发的核心知识要点,包括行为(Action)、视图(ViewPart)、编辑器(Editor)、透视图(Perspective)等10章的内容;第三篇主要讲述插件开发的高级内容,包括开发高级内容...
通过使用Eclipse RCP,开发者可以创建高度可定制和扩展的应用程序,这些应用不仅具有强大的功能,而且还能与其他Eclipse插件无缝集成。 ##### Eclipse Workbench Eclipse Workbench 是 Eclipse RCP 的核心组成部分...
【Eclipse插件开发之Common Navigator View】是关于在Eclipse插件开发中创建和定制一个基于Common Navigator View(CNV)的视图的过程。Common Navigator View是一种通用的视图结构,通常用于显示项目的资源层次结构...
第二篇是插件开发核心技术,主要介绍插件开发的核心知识要点,包括行为(Action)、视图(ViewPart)、编辑器(Editor)、透视图(Perspective)等10章的内容;第三篇主要讲述插件开发的高级内容,包括开发高级内容...
本篇将基于"《Eclipse插件开发学习笔记》(ch11-12)"的内容,深入讲解Eclipse插件开发中的两个关键概念——视图(Views)和操作(Actions)。 **第11章 操作(Actions)** 在Eclipse插件开发中,操作(Actions)是...