Eclipse插件(RCP)自定义透视图
目标
解释透视图并在RCP中自定义透视图。
透视图
透视图是为方便完成某一任务,对视图、编辑器、操作等组合而成的一个工作台布局,这个布局在工作台中形成的视图就是透视图。如常见的Eclipse默认布局就是java开发透视图,当进入debug模式后就转变为debug调试透视图等等。
Eclipse 提供了对透视图的管理,通常放在菜单 windows -> Perspective 下,如下图所示。
RCP应用是为解决某些特定的业务A而开发的,为了完成这个业务我们需要一些编辑器和视图,以及一些功能菜单。为了方便完成业务A,我们通常会将这些编辑器、视图、功能菜单进行布局,这样我们就相当于定义了一个透视图,我们可以将其命名为业务A透视图。
明确需求
现我们已经搭建好一个RCP项目(参考:Eclipse插件(RCP)项目搭建)。
运行效果如下:
假设我们需要一个如下的透视图。
自定义透视图
扩展透视图
如下打开plugin.xml 扩展透视图
- 添加透视图扩展点
org.eclipse.ui.perspectives
- 右击添加透视图扩展
perspective
- 点击自定义的透视图扩展,绑定扩展点的属性
属性 | 释义 |
---|---|
id | 透视图ID,一般采用其实现类的全路径类名,应保持唯一 |
name | 透视图的名称,在视图管理菜单中显示 |
class | 透视图的实现类,应实现了IPerspectiveFactory,布局在这个内种定义 |
icon | 透视图的图标,视图管理菜单中显示在name之前 |
fiex | 是否固定 |
Plugin.xml 中生成的配置如下
<!-- 透视图 --><extensionpoint="org.eclipse.ui.perspectives"><perspectiveclass="com.xzbd.perspective.MainPerspective"name="主透视图"id="com.xzbd.perspective.MainPerspective"></perspective></extension>
定义透视图布局
透视图布局在其实现类中实现,如下我们可以自定义透视图MainPerspective
package com.xzbd.perspective;import org.eclipse.ui.IFolderLayout;
import org.eclipse.ui.IPageLayout;
import org.eclipse.ui.IPerspectiveFactory;import com.xzbd.navigator.MainNavigator;
import com.xzbd.views.MessageConsoleView;public class MainPerspective implements IPerspectiveFactory {public static final String ID = "com.xzbd.perspective.MainPerspective";@Overridepublic void createInitialLayout(IPageLayout layout) {// 开始编辑区视图展示layout.setEditorAreaVisible(true);layout.setFixed(false);String editorArea = layout.getEditorArea();// 左侧 导航IFolderLayout leftTopFolder = layout.createFolder("LEFT", IPageLayout.LEFT, 0.18f, editorArea);leftTopFolder.addView(MainNavigator.ID);// 右侧IFolderLayout leftRightFolder = layout.createFolder("RIGHT", IPageLayout.RIGHT, 0.8f, editorArea);leftRightFolder.addView(IPageLayout.ID_OUTLINE);// 添加下部视图IFolderLayout tabs = layout.createFolder("BOTTOM", IPageLayout.BOTTOM, 0.6f, editorArea);// 属性
// tabs.addPlaceholder(IPageLayout.ID_PROP_SHEET);// console viewtabs.addView(MessageConsoleView.ID);}}
其中
MessageConsoleView
是自定义的一个简单消息输出控制台,实现参考Eclipse插件(RCP)控制台(Console)个性化
MainNavigator
是对CNF的一个实现,可参考Common Navigator Framwork 实践
layout.createFolder("BOTTOM", IPageLayout.BOTTOM, 0.6f, editorArea)
中第三个参数是一个 0.05到0.95 之间的数,可以查看该方法的注释。
将自定义的透视图设置为默认视图
RCP初始化透视图在ApplicationWorkbenchAdvisor
中设置,只需要重写该类提供的getInitialWindowPerspectiveId
方法,返回我们自定义的透视图ID即可。相关代码如下:
@Overridepublic String getInitialWindowPerspectiveId() {return MainPerspective.ID;}
其中
MainPerspective.ID
与plugin.xml中定义的id应保持一致
测试效果
运行项目后得到的效果如图:
总结
该文讲述了Eclipse 透视图的概念,介绍了RCP程序自定义透视图的方法。
相关参考文章:
- Eclipse插件(RCP)项目搭建
- Eclipse插件(RCP)控制台(Console)个性化
- Common Navigator Framwork 实践
项目代码见项目Epx
Eclipse插件(RCP)自定义透视图相关推荐
- Eclipse插件(RCP)自定义工作台快捷菜单栏
目标 Eclipse插件(RCP)自定义工作台主菜单栏解决了主菜单栏的问题,本节讲述如何自定义工作台快捷菜单栏(MenuToolBar).快捷栏也叫工具菜单条(MenuToolBar),其位置如下图所 ...
- 使用基于 Eclipse 插件框架的 ODA(Open Data Access)进行自定义数据驱动开发
ODA 之所以能够有如此强的灵活性,是因为: 它提供了一套完整的接口,开发者可以自己去实现数据源的访问逻辑,使得数据源对数据使用者变得透明.只要开发者遵循编程规范,就可以对任何数据进行驱动. 它基于 ...
- Eclipse插件(RCP)项目搭建
文章Eclipse插件(RCP)开发环境搭建 和 Eclipse插件(RCP)开发环境搭建(二)介绍了RCP项目开发环境搭建.本文将使用前面打的环境进行第一个RCP项目搭建及运行 目标 搭建一个RCP ...
- eclipse插件说明
Properties Editor Properties Editor 编辑java的属性文件,并可以自动存盘为Unicode格式 更多Properties Editor 信息 Colorer T ...
- Eclipse插件大全 (下)
Quigen Quigen这个插件利用Velocity模板引擎来快速生成任何类型的文本内容.它不需要进行配置,所要做的只是利用它自带Velocity编辑器编写一个velocity 模板文件. 更多Q ...
- 编写Eclipse插件教程–第1部分
Eclipse是三个最受欢迎的Java开发IDE之一. 其成功的原因之一是其可扩展性. 对于任何知道该怎么做并且已经做到的人来说,编写eclipse插件都可以非常轻松快捷. 不幸的是,第一次在Ecli ...
- Eclipse插件的安装方法
转自:http://blog.csdn.net/zhangyabinsky/article/details/7043435 Eclipse插件的安装有两种方法 :一个是在线安装,另一个就是手动安装. ...
- Eclipse插件安装
clispe想必大家都很熟悉了,一般来说,eclipse 插件都是安装在plugins目录 下.不过这样一来,当安装了许多插件之后,eclipse变的很大,最主要的是不便 于更新和管理众多插件.用li ...
- 设置ECLIPSE插件注意目录的结构
1path=F:\\hongjun\\myPlugins\\language 下载的插件文件大多数书压缩文件,解压后得到包含 eclipse 的文件夹(里面有 plugins 和 features 文 ...
- ECLIPSE 插件使用LINKS目录的用法
Eclipse插件使用links目录的用法 关键字: 开发工具的使用 假设插件安装在d:/myplugin目录中,则myplugin的目录结构一定要是这样的: d:/myplugin/eclipse/ ...
最新文章
- python中enumerate在for循环中用法_python中enumerate的用法实例解析
- java 变量 动态类型_Java:如何将变量从一种类型动态转换为另一种类型?
- ThreadPoolTaskExecutor使用详解
- python socks5 代理服务
- ida和idr机制分析(盘符分配机制)
- BZOJ 3564 信号增幅仪
- linux日常笔记5
- angelababy机器人唱_被Angelababy、周震南等摸头杀?这个机器人为什么受宠
- 图片跟着鼠标_百元鼠标玩设计 雷柏V330游戏鼠标试用招募活动
- 第三次小组实践作业小组每日进度汇报:2017-12-3
- Gobinet/QMI-WWAN/ppp拨号区别
- oracle 中关于 SID db_name、instance_name (转)
- 人件第二版(中文版)pdf
- android利用itext5制作pdf,Itext5生成PDF
- python 时间序列分解 stl_时间序列分解-STL分解法
- 循环神经网络的从零开始实现
- 【大数据实战项目八】使用机器学习算法进行预测分析并进行网上部署
- android5rom下载,android5.2系统|安卓android5.2系统刷机包正式版 5.2 - 系统天堂
- linux du命令,du命令示例
- html假蓝屏死机源码,100秒内蓝屏死机的脚本源代码