Eclipse RCP基本概念

一、 Display

Display对象代表了底层图形系统的实现,它是SWT与操作系统沟通的一座桥梁,它负责SWT和操作系统之间的通信,将SWT/JFace的各种调用转化为系统的底层调用,控制操作系统为SWT分配的资源,同时我们也可以通过Display对象得到操作系统的一些信息。其中,Display的主要任务是事件处理,它负责从操作系统的事件队列中读取事件,传递给RCP的事件监听器以便完成具体的任务。Display是一个幕后工作者,它为SWT/JFace提供支持,但是你并不能够从某个用户界面中看到它的影子,所以,需要注意的是,Display不代表应用程序窗口的任何可视控件,在应用程序主窗口打开之前,Display是不可获得的。应用程序主窗口打开之后,才可以通过一个被称作Shell的对象获取它。

其获取方法有:Display display = new Display();

或者Display display = Display.getCurrent();

一般来说,一个程序只需要一个Display对象,当然没有人禁止你创建多个Display对象。但是在SWTjavadoc中,我们可以看到关于这个问题一些描述:“Applications which are built with SWT will almost always require only a single display. In particular, some platforms which SWT supports will not allow more than one active display. In other words, some platforms do not support creating a new display if one already exists that has not been sent the dispose() message.”

Display的常用方法:

1setData()getData():这一对函数允许我们为Display对象设定一些数据,setData()的参数中keyvalue类似于我们在使用Map对象中keyvalue的含义。

2getShells()得到关联到该Display对象的所有没有disposeShell对象

3getCurrent()得到与用户交互的当前线程

4readAndDispatch()得到事件并且调用对应的监听器进行处理

5sleep()等待事件发生

Display. getCurrent()Display. getDefault()方法的区别与使用:

比如你在线程A中生成了第一个Display实例,那么你在A线程中调用Display.getCurrent()方法得到的就是这个实例;如果你又生成了一个线程B,在线程B中调用Display.getCurrent()方法得到的就是null,因为在当前线程B中没有Display实例,线程B不是用户界面线程。而如果在线程B中调用Display.findDisplay(ThreadA),得到的就是线程A中的Display实例。

Display.getDefault()方法则是如果当前线程没有Display实例,则创建一个Display实例,如果有的话,则返回已创建的实例。

在某些操作系统上,只能创建一个Display实例,因此如果已经存在了一个用户界面线程,又在另外一个线程中调用Display.getCurrent()方法,会导致同时存在两个用户界面线程,因而出错。

二、 Shell

每一个窗口都有一个Shell对象。Shell对象代表了与用户交互的窗口框架,并处理与窗口关联的诸如移动、改变大小等常见行为。Shell对象的获得方法如下:

Display display = Display.getCurrent();

Shell shell = new Shell(display);

或者:Shell shell = Display.getCurrent().getActiveShell();

Shell对象的方法大都和GUI有关,比如setEnabled()设定了窗体是否能够和用户进行交互,setVisble()设定了窗体是否可见,setActive()将窗体设为当前的活动窗口。

三、 Workbench

        Workbench是工作台,通俗的说就是代表用户界面的UI元素。工作台上有各种窗口、图标、按钮和其它各种控件,用户可以在工作台上做各种操作。获得工作台的方法如下:

IWorkbench workbench = PlatformUI.getWorkbench();

工作台有两个很有用的方法,即:

workbench.restart(),关闭应用程序并立即重新启动

Workbench.close(),正常关闭应用程序,等同于ActionFactory.QUIT_ACTION

四、 Advisor

        Advisor是建议者,用户主界面宽度、高度、图标、菜单、工具栏、颜色、操作等等配置方案需要Advisor来提出“建议”。Eclipse提供了3中类型的Advisor,具体如下:

1、  WorkbenchAdvisor

    应用程序级别,Eclipse3.0开始引入的全新类。每个应用程序只要一个Workbench,而WorkbenchAdvisor负责该工作台生命周期管理,例如启动、关闭工作。WorkbenchAdvisor也负责该Workbench的异常处理,并负责向Workbench提供一些重要参数,例如可以指定该Workbench的初始透视图。

2、  WorkbenchWindowAdvisor

    窗口级别,每一个窗口都有一个WorkbenchWindowAdvisor实例。WorkbenchWindowAdvisor负责具体窗口生命周期的管理,例如状态栏、工具栏、菜单、窗口标题、窗口大小和各种控件等,也可以处理窗口的各种事件例程。

3、  ActionBarAdvisor

    窗口级别,每一个窗口都有一个ActionBarAdvisor实例。ActionBarAdvisor负责管理窗口的菜单栏、状态栏、工具栏的外观和行为。

五、 ViewEditor

    在Eclipse RCP应用程序中,用户主要通过视图(View)和编辑器(Editor)来与程序交互。视图是可以浮动的工作窗口,负责显示数据在某个层面的状态信息。编辑器也是一种工作窗口,提供对数据进行各种操作的交互能力。

六、 Perspective

        Perspective被称之为透视图,RCP应用程序是透过透视图对窗口内容进行安排和布局的,应用程序都有一个默认的透视图,每个工作台窗口则可以包含一个或多个透视图,同时用户可以向透视图中添加其他UI界面元素。默认透视图是被设置为固定的,不能移动,而且没有标题栏。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值