创建视窗 ViewPart:
通过eclipse插件创建:
(1)打开plugin.xml,切换到视图Extensions
(2)单击Add,新增扩展点org.eclipse.ui.views:
ID和name自行设置
(3)右键新增扩展点,New => view: 添加视图
ID、name、class必填, 图标icon可以选填;
class可以是已存在的类,也可以后续创建。通过Browse选择已有的类,点击class*可以创建新类。
新建的窗口类是ViewPart的子类,要重写createPartControl()方法,在其中创建UI控件。
/**
* 教学单位课程明细
* @author zyj
*
*/
public class TeachUnitClass extends ViewPart {
public TeachUnitClass() {
// TODO Auto-generated constructor stub
}
@Override
public void createPartControl(Composite parent) {
// TODO Auto-generated method stub
}
@Override
public void setFocus() {
// TODO Auto-generated method stub
}
}
(4)查看配置信息:
手动创建完成后,会在plugin视图中自动生成扩展点配置信息,示例如下:
point="org.eclipse.ui.views">
allowMultiple="false" //该视图不允许打开多个
class="com.zyj.jfcs.app.ui.TeachUnitName"
id="com.zyj.jfcs.app.ui.teachunitname" //视图唯一标识
name="教学单位"
restorable="true"> //恢复上次退出时的状态
allowMultiple="false"
class="com.zyj.jfcs.app.ui.PieDiagram"
id="com.zyj.jfcs.app.ui.piediagram"
name="经费概览"
restorable="true">
allowMultiple="false"
class="com.zyj.jfcs.app.ui.TeachUnitClass"
id="com.zyj.jfcs.app.ui.teachunitclass"
name="教学单位课程明细"
restorable="true">
每个ViewPart对应一个view标签
手动创建:
(1)自定义视图: 实现ViewPart,重写createPartControl()
(2)plugin.xml 中需要配置扩展点:org.eclipse.ui.views, 将创建好的视窗纳入RCP管理之中。
可以参考上一节自动生成的配置,class属性指向自定义的ViewPart实现类。
初始界面布局配置:
RCP创建布局有2种方式: (1)通过java代码 (2)通过扩展点配置
java代码配置初始布局:
在生成好的透视图类:Perspective类的createInitialLayout()方法中来定义初始布局。 应该也可以自定义初始布局类:实现接口IPerspectiveFactory,重写createInitialLayout()方法。但是需要在plugin.xml中配置扩展点:
point="org.eclipse.ui.perspectives">
class="com.zyj.jfcs.app.Perspective"
name="rcpPerspective"
id="com.zyj.jfcs.app.perspective">
代码:
/**
* 透视图,设置界面布局, 需要实现接口IPerspectiveFactory,
* 并在createInitialLayout方法中进行初始布局安排
*
*/
public class Perspective implements IPerspectiveFactory {
/**
* 创建初始布局,使用IPageLayout进行设置
*/
public void createInitialLayout(IPageLayout layout) {
//获取透视图编辑区ID
String editorArea = layout.getEditorArea();
/*
* 隐藏编辑区: 编辑区用于容纳编辑器Editor,界面主要使用视图VIEW实现,因此应当将编辑区隐藏。
* 不过不影响编辑区的打开
*/
layout.setEditorAreaVisible(false);
//固定布局,既不能移动,也不能改变大小
layout.setFixed(true);
/*
* 增加教学单位视图, 不能与其他视图重叠,因此使用addStandaloneView方法来增加
*/
layout.addStandaloneView(AppConst.VIEW_TEACH_UNIT_NAME_ID, //视图ID
true, //展示标题
IPageLayout.LEFT, //相对于相关元素的位置:上、下、左、右
0.26F, //分割比例26%
/*
* 指定被分隔空间的控件ID,会将指定元素目前占据的控件进行分割,应该是VIEW、folder、或者editor的id
* 左侧、上側的控件会占据分割比例指定的空间,右下占据剩余的空间
*/
editorArea); //相关元素
layout.getViewLayout(AppConst.VIEW_TEACH_UNIT_NAME_ID).setCloseable(false); //禁用关闭功能
layout.getViewLayout(AppConst.VIEW_TEACH_UNIT_NAME_ID).setMoveable(false); //警用移动功能
/*
* 加入经费概览视图,不能与其他视图重叠
*/
layout.addStandaloneView(AppConst.VIEW_PIE_DIAGRAM_ID, true, IPageLayout.BOTTOM, 0.72F, AppConst.VIEW_TEACH_UNIT_NAME_ID);
layout.getViewLayout(AppConst.VIEW_PIE_DIAGRAM_ID).setCloseable(false);
layout.getViewLayout(AppConst.VIEW_PIE_DIAGRAM_ID).setMoveable(false);
/*
* 加入课程明细视图,需要与其他视图重叠,因此使用addView方法添加
*/
layout.addView(AppConst.VIEW_TEACH_UNIT_CLASS__ID, IPageLayout.RIGHT, 0.76F, editorArea);
layout.getViewLayout(AppConst.VIEW_TEACH_UNIT_CLASS__ID).setCloseable(false);
layout.getViewLayout(AppConst.VIEW_TEACH_UNIT_CLASS__ID).setMoveable(false);
}
}
IPageLayout主要方法:
扩展点配置初始布局:
后续有兴趣时再看,暂时先跳过,仅做记录。
point="org.eclipse.ui.perspectiveExtensions">
targetID="com.client.cki.perspective">
closeable="false"
id="com.client.cki.selectedPsrInfoView"
minimized="false"
moveable="false"
ratio="0.5f"
relationship="top"
relative="org.eclipse.ui.editorss"
showTitle="true"
standalone="false"
visible="true">
closeable="false"
id="com.client.cki.selectedFltInfoView"
minimized="false"
moveable="false"
relationship="stack"
relative="com.client.cki.selectedPsrInfoView"
showTitle="true"
standalone="false"
visible="true">