Eclipse RCP application model
阅读数:201 评论数:0
跳转到新版页面分类
python/Java
正文
运行时,Eclipse 应用的结构是通过一个application model来描述的。这个application model包含了应用中独立的元素和它们的结构关系。
每个model element都有用来描述它当前状态的属性,在必要的情况下,一个model element可以包含对java类和静态资源的链接。
application model一般定义为一个静态文件,对于RCP应用是Application.e4xmi文件,在程序启动时会读取这个文件,如果修改了这个文件,需要在下次启动时才会生效。
model element可以通过URI指向一个class或一个静态资源,为此Eclipse定义了两种URI模式:
模式 | 描述 |
bundleclass://Bundle-SymbolicName/package.classname 例如: bundleclass://test/test.parts.MySavePart |
一个Java类的标识符: bundelclass://是一个固定的前缀。 Bundle-SymbolicName定义在MANIFEST.MF文件中。是一个全限定的类名。 |
platform:/plugin/Bundle-SymbolicName/path/filename.extension 例如: platform:/plugin/com.example.plugin/icons/save_edit.gif |
用来标识资源。 platform:/plugin/是一个固定的前缀 |
1、Window
一个Eclipse应用可以包含一个或多个window,它可能是MWindow或MTrimmeWindow(它可以包括工具栏)。
2、Parts
Parts是用户接口部件,它可用来定位和修改数据,Parts可以停放在container中,一个part可以有一个隐藏菜单、上下文菜单和一个工具条。
Parts可以分为views和editors。
(1)Views
可以用来显示和修改一组数据,如果允许修改数据,修改是直接作用于底层数据结构的,不需显示的保存。
(2)Editors
一般用来修改单一的数据元素,修改后需要显示的进行保存操作。
3、Part Containers
Parts可以直接放在一个window或一个perspective中,它们也可以分组或使用stack(Part Stack)进行排列或使用sash containers(Part Sash Container)进行排列。
一个part stack 排列它的孩子时像浏览器,一个part sash constainer同时显示它所有的孩子,以水平或垂直的方式。
下面的图片显示一个Eclipse应用布局使用了两个part sash container和三个part stacks。
你可以在一个part sash container的孩子的Container Data属性上设置部署权重。它可以改变使用空间的比例。如果你定义了其中一个孩子的Container Data值,那么也要定义此Container所有孩子的值。
提示:container data的总值最好设置的大一些,避免移动时产生问题。
4、Perspective
Perspective是用于其它part container或part的可选container,它用Mperspective表示,而且一定要放在一个MperspectiveStack中.在MperspectiveStack中只能有一个Mperspective处于可见,在perspectives间可以有共享的elements。
例如,Eclipse IDE使用perspective提供用于不同任务的视图组织。
perspective的切换可以通过EPartService(Eclipse 平台提供的服务)。
5、其它的一些model objects
(1)MApplication
用于描述application object,所有的其它model elements都包含在这个object中。
(2)MAddon
一个自包含的组件,一般没有用户接口。它可以用于应用生命周期的事件注册和处理这些事件。
(3)MWindow
应用中的窗口。
(4)MTrimmed Window
包含工具栏的窗口。(TrimBars)
(5)Mperspective
在一个窗口中用于展示一个不同的parts部局。
(6)MPart
View或Editor
(7)MDirtyable
MPart的一个属性,如果设置为true,会通知Eclipse platform这个Part包含了未保存的数据。你可以使用一个handler来查询这个属性来提供一个保存的可能。
(8)MPartDescriptor
用于创建新parts的模板,一个新的part可以基于这个part descriptor来创建和显示。
(9)Snippets
Snippets可用来预配置你的应用中想要使用的part。你可以使用Eclipse framework来克隆一个snippet,然后在运行时把它添加到application model中。