目标

解释透视图并在RCP中自定义透视图。

透视图

透视图是为方便完成某一任务,对视图、编辑器、操作等组合而成的一个工作台布局,这个布局在工作台中形成的视图就是透视图。如常见的Eclipse默认布局就是java开发透视图,当进入debug模式后就转变为debug调试透视图等等。

Eclipse 提供了对透视图的管理,通常放在菜单 windows -> Perspective 下,如下图所示。

RCP应用是为解决某些特定的业务A而开发的,为了完成这个业务我们需要一些编辑器和视图,以及一些功能菜单。为了方便完成业务A,我们通常会将这些编辑器、视图、功能菜单进行布局,这样我们就相当于定义了一个透视图,我们可以将其命名为业务A透视图。

明确需求

现我们已经搭建好一个RCP项目(参考:Eclipse插件(RCP)项目搭建)。
运行效果如下:

假设我们需要一个如下的透视图。

自定义透视图

扩展透视图

如下打开plugin.xml 扩展透视图

  1. 添加透视图扩展点 org.eclipse.ui.perspectives
  2. 右击添加透视图扩展 perspective
  3. 点击自定义的透视图扩展,绑定扩展点的属性
属性 释义
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)自定义透视图相关推荐

  1. Eclipse插件(RCP)自定义工作台快捷菜单栏

    目标 Eclipse插件(RCP)自定义工作台主菜单栏解决了主菜单栏的问题,本节讲述如何自定义工作台快捷菜单栏(MenuToolBar).快捷栏也叫工具菜单条(MenuToolBar),其位置如下图所 ...

  2. 使用基于 Eclipse 插件框架的 ODA(Open Data Access)进行自定义数据驱动开发

    ODA 之所以能够有如此强的灵活性,是因为: 它提供了一套完整的接口,开发者可以自己去实现数据源的访问逻辑,使得数据源对数据使用者变得透明.只要开发者遵循编程规范,就可以对任何数据进行驱动. 它基于 ...

  3. Eclipse插件(RCP)项目搭建

    文章Eclipse插件(RCP)开发环境搭建 和 Eclipse插件(RCP)开发环境搭建(二)介绍了RCP项目开发环境搭建.本文将使用前面打的环境进行第一个RCP项目搭建及运行 目标 搭建一个RCP ...

  4. eclipse插件说明

     Properties Editor Properties Editor 编辑java的属性文件,并可以自动存盘为Unicode格式 更多Properties Editor 信息  Colorer T ...

  5. Eclipse插件大全 (下)

     Quigen Quigen这个插件利用Velocity模板引擎来快速生成任何类型的文本内容.它不需要进行配置,所要做的只是利用它自带Velocity编辑器编写一个velocity 模板文件. 更多Q ...

  6. 编写Eclipse插件教程–第1部分

    Eclipse是三个最受欢迎的Java开发IDE之一. 其成功的原因之一是其可扩展性. 对于任何知道该怎么做并且已经做到的人来说,编写eclipse插件都可以非常轻松快捷. 不幸的是,第一次在Ecli ...

  7. Eclipse插件的安装方法

    转自:http://blog.csdn.net/zhangyabinsky/article/details/7043435 Eclipse插件的安装有两种方法 :一个是在线安装,另一个就是手动安装. ...

  8. Eclipse插件安装

    clispe想必大家都很熟悉了,一般来说,eclipse 插件都是安装在plugins目录 下.不过这样一来,当安装了许多插件之后,eclipse变的很大,最主要的是不便 于更新和管理众多插件.用li ...

  9. 设置ECLIPSE插件注意目录的结构

    1path=F:\\hongjun\\myPlugins\\language 下载的插件文件大多数书压缩文件,解压后得到包含 eclipse 的文件夹(里面有 plugins 和 features 文 ...

  10. ECLIPSE 插件使用LINKS目录的用法

    Eclipse插件使用links目录的用法 关键字: 开发工具的使用 假设插件安装在d:/myplugin目录中,则myplugin的目录结构一定要是这样的: d:/myplugin/eclipse/ ...

最新文章

  1. python中enumerate在for循环中用法_python中enumerate的用法实例解析
  2. java 变量 动态类型_Java:如何将变量从一种类型动态转换为另一种类型?
  3. ThreadPoolTaskExecutor使用详解
  4. python socks5 代理服务
  5. ida和idr机制分析(盘符分配机制)
  6. BZOJ 3564 信号增幅仪
  7. linux日常笔记5
  8. angelababy机器人唱_被Angelababy、周震南等摸头杀?这个机器人为什么受宠
  9. 图片跟着鼠标_百元鼠标玩设计 雷柏V330游戏鼠标试用招募活动
  10. 第三次小组实践作业小组每日进度汇报:2017-12-3
  11. Gobinet/QMI-WWAN/ppp拨号区别
  12. oracle 中关于 SID db_name、instance_name (转)
  13. 人件第二版(中文版)pdf
  14. android利用itext5制作pdf,Itext5生成PDF
  15. python 时间序列分解 stl_时间序列分解-STL分解法
  16. 循环神经网络的从零开始实现
  17. 【大数据实战项目八】使用机器学习算法进行预测分析并进行网上部署
  18. android5rom下载,android5.2系统|安卓android5.2系统刷机包正式版 5.2 - 系统天堂
  19. linux du命令,du命令示例
  20. html假蓝屏死机源码,100秒内蓝屏死机的脚本源代码

热门文章

  1. 计算机打字的基础知识,学习电脑打字基础知识
  2. 中移物联网采购4G行车记录仪
  3. redis unlink
  4. 【笑话】程序员和青蛙公主
  5. const T vs. T const by Dan Saks
  6. 深度卷积网络:第三课
  7. 第三章:绘制统计图形
  8. 但行好事 莫问前程 学习笔记 media=screen
  9. layui 显示饼图_echarts实现饼图绘制
  10. echarts 饼图移动端_使用Echarts实现饼图