- 浏览: 144130 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
EclipseEye:
fair_jm 写道不错 蛮详细的 谢谢分享
SWT/JFace专题 --- SWT中Display和多线程 -
fair_jm:
不错 蛮详细的 谢谢分享
SWT/JFace专题 --- SWT中Display和多线程
1.视图(Views)
视图(实现了org.eclipse.ui.IViewPart接口)包含在视图站点(org.eclipse.ui.IViewSite)中,并通过视图站点包含在工作台页面(IWorkbenchPage)中。视图通过getViewSite()来获得视图站点,而视图站点通过实现继承自工作台站点(IWorkbenchSite)的方法getPage()来获得工作台页面。
在工作台页面中保存了视图的参考信息(org.eclipse.ui.IViewReference)的实例,通过IViewReference所提供的方法getView()来间接获得视图。这样避免了工作台页面直接保存视图本身,从而使引用视图和加载定义视图的插件分离,可以避免或延迟插件的加载。
除了IViewPart以外,IEditorPart也继承自IWorkbenchPart,这就说明了视图和编辑器共享一个共同的行为集合,使得二者有很多相似之处。
Eclipse中包含了很多预定义的视图,这些视图为开发者提供了多个角度去观察资源或编辑器的状态,为应用程序的开发带来了很大的方便。
如,
1)ResourceNavigator类实现了导航器(Navigator),提供了Eclipse工作空间资源的功能
2)抽象类PageBookView是AbstractDebugView/ContentOutline/PropertyView的父类,它支持视图显示某个工作台 组件(IWorkbenchPart)的状态信息。
3)ContentOutline大纲视图,用来显示编辑器内容的大纲,它是由Workbench创建并管理的,无法被再次实例化也无法被继承。
4)属性视图(org.eclipse.ui.views.PropertySheet)/任务视图(org.eclipsee.ui.views.TaskList)/书签视图(org.eclipse.ui.views.BookmarkNavigator)
5)项目资源管理器
使用CommonNavigation类来管理项目的资源(Eclipse3.2新增的org.eclipse.ui.navigatorContnt扩展点,为配置CommonNavigator的扩展提供了强大的支持)
----------------------------
Eclipse提供的org.eclipse.core.runtime.IAdaptable接口,它允许一个对象把他不理解的类型丢下转换成另一种可以访问和控制的类型对象。这是对Adapter模式的经典使用。
Adapter模式是一种结构型的模式,又名包装器 Wrapper,很多时候,为了复用设计的工具类不能被复用的原因仅仅是因为它的接口与专业应用领域所需要的接口不匹配,这个时候只需要实现IAdapter接口并重写getAdapter(Class adapter)方法就ok了,这样当调用getAdapter()的时候传入一个特定接口的Class对象,该方法就会返回一个具有该接口的对象。
-------------------------------------------------------
2.编辑器(Editors)
编辑器必须实现org.eclipse.ui.IEditorPart接口,通常编辑器都作为该接口的默认扩展org.eclipse.ui.part.EditorPart的子类,因而它也是org.eclipse.ui.part.WorkbenchPart的间接子类(public abstract class EditorPart extends WorkbenchPart implements IEditorPart )
编辑器必须包含在org.eclipse.ui.IEditorSite中,IEditorSite又包含在工作台页面(IWorkbench
Page)中。同视图一样,工作台页面中保存了编辑器的查考信息(org.eclipse.ui.IEditorReference)的实例,通过IEditorReference提供的方法getEditor()来间接的获得编辑器。这样就避免了工作台页面直接保存编辑器本身,从而使引用编辑器和加载定义编辑器的插件分离开,可以避免或延迟加载相关的插件。
下面介绍几个重要的编辑器类:
1)AbstractTextEditor类
基于文本的编辑器,实现了编辑器是许多基础功能(如,剪切,拷贝,粘贴,上下文管理,响应工作空间中资源的更改等)。
AbstractTextEditor将文本模型和显示分离开,当前文本为编辑器提供IDocumentProvider的实例,这样就允许不同编辑器访问同一个文本模型。IDocumentProvider实例还负责保存正在使用的文本。当在AbstractTextEditor中执行doSave()和doRevertToSaved()等保存操作时,AbstractTextEditor将调用IDocumentProvider实例相关的方法。
2)MultiEditor类
MultiEditor类在一个GUI组件中合并了不同的编辑器,当开发者需要使用不同类型的编辑器显示同一个资源模型时,可以使用这个类。
3)MultiPageEditorPart类抽象的MultiPageEditorPart类用来实现多页编辑器。
4)FormEditor类
FormEditor类也是抽象类,它继承了MultiPageEditorPart类,用来实现基于表格的编辑器。子类必须实现addPages()方法来为FormEditor填充编辑器页面。
----
编辑器页面
org.eclipse.ui.forms.editor.FormPage(class FormPage extends EditorPart implements IFormPage)是构建FormEditor的页面的一个基本类型,所有加入FormEditor的页面都必须是FormPage的子类。
FormPage的子类型可以通过重写creatFormContent(ManagedForm)来构建特定页面的内容。
1)Master-Detail(主-从)风格的FormPage。
抽象类 org.eclipse.ui.forms.MasterDetailsBlock是关键。MasterDetailsBlock类采用注册页面的方式来构建主-从块。registerPages()方法用来具体的从属页面注册到所允许的数据模型,从而建立起从属页面和数据模型的一一对应关系。从属页面也是采用注册方式在
createDetailsPart()方法中注册到主页面中。
MasterDetailsBlock创建主-从页面的过程:
创建MasterPart:createMasterPart(managedForm,sashForm)--->创建DetailsPart:
createDetailsPart(managedForm,sashForm)--->注册页面:regesterPages();--->创建工具栏Action:createToolBarActions(managedForm)
Eclipse的Form组件创建SWT元素时同普通SWT元素的创建不同,需要首先得到Form的工具包--FormTookit,然后通过Form工具包创建SWT元素,例:
FormToolKit toolkit=managedForm.getToolkit();
toolkit.createSection(parent,type);
toolkit.createComposite(parent,type);
toolkit.createButton(parent,type);
FormText rText=toolkit.createFormText(parent,true);
rText.setText(...);
... ...
构建Details部分需要实现IDetailsPage接口。
public interface IDetailsPage extends IFormPart, IPartSelectionListener {
void createContents(Composite parent);
}
Details部分作为一个特定的表格部分,它需要拥有管理表格生命周期的方法于是就继承了IFormPart接口;另外需要监听Master部分的选择做出改变,因此需要继承
IPartSelectionListener接口。
-------------------------------------------------------------
视图(实现了org.eclipse.ui.IViewPart接口)包含在视图站点(org.eclipse.ui.IViewSite)中,并通过视图站点包含在工作台页面(IWorkbenchPage)中。视图通过getViewSite()来获得视图站点,而视图站点通过实现继承自工作台站点(IWorkbenchSite)的方法getPage()来获得工作台页面。
在工作台页面中保存了视图的参考信息(org.eclipse.ui.IViewReference)的实例,通过IViewReference所提供的方法getView()来间接获得视图。这样避免了工作台页面直接保存视图本身,从而使引用视图和加载定义视图的插件分离,可以避免或延迟插件的加载。
除了IViewPart以外,IEditorPart也继承自IWorkbenchPart,这就说明了视图和编辑器共享一个共同的行为集合,使得二者有很多相似之处。
Eclipse中包含了很多预定义的视图,这些视图为开发者提供了多个角度去观察资源或编辑器的状态,为应用程序的开发带来了很大的方便。
如,
1)ResourceNavigator类实现了导航器(Navigator),提供了Eclipse工作空间资源的功能
2)抽象类PageBookView是AbstractDebugView/ContentOutline/PropertyView的父类,它支持视图显示某个工作台 组件(IWorkbenchPart)的状态信息。
3)ContentOutline大纲视图,用来显示编辑器内容的大纲,它是由Workbench创建并管理的,无法被再次实例化也无法被继承。
4)属性视图(org.eclipse.ui.views.PropertySheet)/任务视图(org.eclipsee.ui.views.TaskList)/书签视图(org.eclipse.ui.views.BookmarkNavigator)
5)项目资源管理器
使用CommonNavigation类来管理项目的资源(Eclipse3.2新增的org.eclipse.ui.navigatorContnt扩展点,为配置CommonNavigator的扩展提供了强大的支持)
----------------------------
Eclipse提供的org.eclipse.core.runtime.IAdaptable接口,它允许一个对象把他不理解的类型丢下转换成另一种可以访问和控制的类型对象。这是对Adapter模式的经典使用。
Adapter模式是一种结构型的模式,又名包装器 Wrapper,很多时候,为了复用设计的工具类不能被复用的原因仅仅是因为它的接口与专业应用领域所需要的接口不匹配,这个时候只需要实现IAdapter接口并重写getAdapter(Class adapter)方法就ok了,这样当调用getAdapter()的时候传入一个特定接口的Class对象,该方法就会返回一个具有该接口的对象。
-------------------------------------------------------
2.编辑器(Editors)
编辑器必须实现org.eclipse.ui.IEditorPart接口,通常编辑器都作为该接口的默认扩展org.eclipse.ui.part.EditorPart的子类,因而它也是org.eclipse.ui.part.WorkbenchPart的间接子类(public abstract class EditorPart extends WorkbenchPart implements IEditorPart )
编辑器必须包含在org.eclipse.ui.IEditorSite中,IEditorSite又包含在工作台页面(IWorkbench
Page)中。同视图一样,工作台页面中保存了编辑器的查考信息(org.eclipse.ui.IEditorReference)的实例,通过IEditorReference提供的方法getEditor()来间接的获得编辑器。这样就避免了工作台页面直接保存编辑器本身,从而使引用编辑器和加载定义编辑器的插件分离开,可以避免或延迟加载相关的插件。
下面介绍几个重要的编辑器类:
1)AbstractTextEditor类
基于文本的编辑器,实现了编辑器是许多基础功能(如,剪切,拷贝,粘贴,上下文管理,响应工作空间中资源的更改等)。
AbstractTextEditor将文本模型和显示分离开,当前文本为编辑器提供IDocumentProvider的实例,这样就允许不同编辑器访问同一个文本模型。IDocumentProvider实例还负责保存正在使用的文本。当在AbstractTextEditor中执行doSave()和doRevertToSaved()等保存操作时,AbstractTextEditor将调用IDocumentProvider实例相关的方法。
2)MultiEditor类
MultiEditor类在一个GUI组件中合并了不同的编辑器,当开发者需要使用不同类型的编辑器显示同一个资源模型时,可以使用这个类。
3)MultiPageEditorPart类抽象的MultiPageEditorPart类用来实现多页编辑器。
4)FormEditor类
FormEditor类也是抽象类,它继承了MultiPageEditorPart类,用来实现基于表格的编辑器。子类必须实现addPages()方法来为FormEditor填充编辑器页面。
----
编辑器页面
org.eclipse.ui.forms.editor.FormPage(class FormPage extends EditorPart implements IFormPage)是构建FormEditor的页面的一个基本类型,所有加入FormEditor的页面都必须是FormPage的子类。
FormPage的子类型可以通过重写creatFormContent(ManagedForm)来构建特定页面的内容。
1)Master-Detail(主-从)风格的FormPage。
抽象类 org.eclipse.ui.forms.MasterDetailsBlock是关键。MasterDetailsBlock类采用注册页面的方式来构建主-从块。registerPages()方法用来具体的从属页面注册到所允许的数据模型,从而建立起从属页面和数据模型的一一对应关系。从属页面也是采用注册方式在
createDetailsPart()方法中注册到主页面中。
MasterDetailsBlock创建主-从页面的过程:
创建MasterPart:createMasterPart(managedForm,sashForm)--->创建DetailsPart:
createDetailsPart(managedForm,sashForm)--->注册页面:regesterPages();--->创建工具栏Action:createToolBarActions(managedForm)
Eclipse的Form组件创建SWT元素时同普通SWT元素的创建不同,需要首先得到Form的工具包--FormTookit,然后通过Form工具包创建SWT元素,例:
FormToolKit toolkit=managedForm.getToolkit();
toolkit.createSection(parent,type);
toolkit.createComposite(parent,type);
toolkit.createButton(parent,type);
FormText rText=toolkit.createFormText(parent,true);
rText.setText(...);
... ...
构建Details部分需要实现IDetailsPage接口。
public interface IDetailsPage extends IFormPart, IPartSelectionListener {
void createContents(Composite parent);
}
Details部分作为一个特定的表格部分,它需要拥有管理表格生命周期的方法于是就继承了IFormPart接口;另外需要监听Master部分的选择做出改变,因此需要继承
IPartSelectionListener接口。
-------------------------------------------------------------
发表评论
-
再说SWT中的滚动面板ScrolledComposite实现
2013-06-19 15:43 2257记得以前写过一篇关于滚动面板的文章 SWT中 Scrolle ... -
OSGi参考资料
2013-04-18 01:11 652基于 OSGi 的面向服务的组件编程 探索 OSGi 框架的组 ... -
CDT(编辑、调试)参考资料
2013-04-17 02:15 1074CDT编辑器 --------- 构建基于 CDT 的编辑器, ... -
Workspace Resource框架专题(3)处理工作空间资源更改事件
2013-04-17 01:44 13283 处理工作空间资源更改事件 工作空间API允许工具对它 ... -
Workspace Resource框架专题(2)workspace 框架API
2013-04-17 01:27 14242 工作空间API 本 ... -
Workspace Resource框架专题(1)Resource的概念
2013-04-17 01:12 13381 Resource的概念 如 ... -
如何恢复断点及Marker
2013-03-05 00:41 0如何恢复断点及Marker -
深入Workbench框架
2013-03-01 02:10 1634深入Workbench框架(结合UIPersistent) 1 ... -
Eclipse插件开发中的Action
2013-02-24 23:10 1961插入点用来定义菜单出 ... -
SWT/JFace专题 --- 对话框向导(Dialogs Wizards)
2013-02-24 22:42 2113对话框向导(Dialogs Wizar ... -
SWT/JFace专题 --- JFace
2013-02-24 22:37 1571JFace JFace是基于SWT的一套图形工具包,它没有为 ... -
SWT/JFace专题 --- SWT中Display和多线程
2013-02-24 15:25 3160Display 1.Display 的创建 一个SWT程序 ... -
SWT/JFace专题 --- SWT API 结构
2013-02-23 18:31 1042SWT API 结构 1.布局类(l ... -
Eclipse启动过程(源码级剖析)
2013-02-20 03:24 3361双击eclipse安装目录下的eclipse.exe运行后,会 ... -
SWT/JFace专题 --- SWT结构浅析
2013-02-23 17:02 985SWT技术是一套基于Java的 ... -
Eclipse平台体系结构
2013-02-21 23:56 17751.Eclipse平台体系结构 1 ... -
RCP平台架构
2013-02-23 14:11 1403RCP 富客户端通常是指具有独立用户界面的客户端程序。富客户 ... -
Ant构建脚本相关
2013-02-18 01:26 0Ant构建脚本相关 -
CDT源码架构研究
2013-02-18 01:24 0CDT源码架构研究 -
SWT/JFace专题 --- SWT/JFace概述
2013-02-23 16:59 822SWT(Standerd Widget Toolkit,标准图 ...
相关推荐
27 重新排列视图和编辑器 23 271 放置游标 23 272 重新排列视图 24 273 并列编辑器 25 274 重新排列附加标签的视图 26 275 最大化 27 28 菜单和工具列 28 281 菜单 29 282 图标和按钮 44 29 视景 49 291 ...
2.7重新排列视图和编辑器 17 2.7.1放置游标 17 2.7.2重新排列视图 18 2.7.3并列编辑器 18 2.7.4重新排列附加标签的视图 19 2.7.5最大化 19 2.8菜单和工具列 20 2.8.1菜单 20 2.8.2图标和按钮 31 2.9视景 36 2.9.1新...
2.7重新排列视图和编辑器...............................17 2.7.1放置游标...........................................17 2.7.2重新排列视图....................................18 2.7.3并列编辑器.............
2.7 重新排列视图和编辑器.. 23 2.7.1 放置游标........ 23 2.7.2 重新排列视图.... 24 2.7.3 并列编辑器...... 25 2.7.4 重新排列附加标签的视图.................. 26 2.7.5 最大化.......... 27 2.8 菜单和...
2.7重新排列视图和编辑器...........................................................................................................................17 2.7.1放置游标.........................................
2.7 重新排列视图和编辑器.................................................. 23 2.7.1 放置游标........................................................ 23 2.7.2 重新排列视图.................................
的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...
5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...
5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...
5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...