Plug-in
l 概念
Eclipse是一个内核很小,插件机制很强大的开发平台,它本身就由众多插件组成,plug-in开发就是利用eclipse的插件机制开发出强大的插件的过程。最常见的插件开发是开发View和Editor,然后扩展到Menu Bar、Tool Bar的开发,深的开发自己的Perspective等等。
l Plug-in过程
创建只有一个视图,功能是显式特定位置的文件的结构信息的插件说明plug-in的开发过程。
1. 新建插件项目
新建eclipse项目时选择plug-in project,按照wizard录入项目名:com.kxd.forfun,然后按照wizard走完。
2. 设置插件依赖和扩展点
打开META-INF文件夹下的MANIFEST.MF文件,在dependencies编辑页中点击添加org.eclipse.ui.views(开发eclipse视图插件必需依赖该插件,这就是插件开发中添加插件依赖的过程);在extensions编辑页中点击“Add”按钮添加org.eclipse.ui.views,在添加进的扩展点上右击,new一个view,设置
id:com.kxd.forfun.fileView;
name:fileView;
class:com.kxd.forfun.views.FileExplorerView;(这是插件开发中设置扩展点的过程)。
3. 写插件代码
该插件中主要编写FileExplorerView这个类的代码。该类必需继承自ViewPart,重写createPartControl(Composite parent)这个方法。
4. 设置插件输出内容
插件的输出设置主要是放出可以的接口等资源,供他人在插件开发过程中使用,既所谓“贡献”。该项目中暂时无可贡献出来的包,这里无需设置。
5. 打包发布
右击项目选择“Export”,在Plug-in Development中选择“Deployable features”将项目打包成标准的eclipse插件(包含features和plugins两个文件夹),也可以选择“Deployable plug-ins and fragments”将项目打包成一个无插件声明的插件包(只有plugins一个文件夹)。
l SWT/JFace
1. 组件
SWT一般组件:Button、Label、Text、Combo、List
SWT其他组件:ToolBar、ToolItem、ViewForm
JFace组件:TableViewer、TreeViewer、ListViewer、Dialog
组件是一个界面内的最小组成部分,通常用到的组件如按钮,录入框等等,它必须存在于一个容器内。
使用:new Control(Composite parent,int style)
“Control”是组件名,可以上面列的任意组建;“Composite”是该组件存在的容器;“style”是组件的表现式样,如:SWT.NONE、SWT.CENTER等
组件常用的方法:setText(String str)、setImage(Image image)、
setEnable(Boolean enabled)等等,用来设置组件的显示名称,显示图片,能否使用等功能。
2. 容器
Composite、Group、TabFolder、SashForm、ScrolledComposite
容器是组件和容器的载体,可以在容器上添加容器和组件。
使用:new Composite(Composite parent,int style),基本与组件类似。
3. 布局管理器
FillLayout:充满式,组件的大小会尽量的充满整个容器
RowLayout:行列式,简单的排列组件
GridLayout:网格式
StackLayout:表格式,通过创建组件各个边的距离来布局组件
Formlayout:堆栈式,像书页一样,只显示最前面的组件
布局管理器定义组件在容器的摆放样式。
使用:composite.setLayout(new FillLayout ()),这样设置了面板“composite”的样式为充满式。
4. 事件模型
事件模型用来响应事件。
用法: button.addMouseListener(new MouseAdapter(){
Public void mouseDoubleClick(MouseEvent e){
//TODO双击事件响应代码
}
})
这样就给button组件增加了一个鼠标双击事件响应。
5.TreeViewer
使用:TreeViewer treeViewer = new TreeViewer(Composite parent,int style)
treeViewer.setContentProvider(contentProvider);
treeViewer.setLabelProvider(labelProvider);
treeViewer.setInput(inputObj);
需要调用这三个方法来展现一棵树,“setContentProvider(contentProvider)”方法设置树的内容显示器,内容显示器将输入内容进行处理,将输入内容分割成为各个树节点,并处理节点间的关系;“setLabelProvider(labelProvider)”方法设置树的标签器,标签器处理树节点的显示,包括显示内容,显示图片等;“setInput(inputObj)”设置树的起始输入内容,这个内容将在内容显示器内被处理。
SWT/JFACE组件是做界面必定会接触到的,只要能够用TreeViewer实现一棵树,并实现一些相应的双击,单击等事件,也就基本掌握了SWT/JFACE。
l 记
做插件开发必然会接触到EMF等框架,理解这些框架才是最重要的。