目标

解释透视图并在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. win10 ndk hello_world
  2. 前端开发使用工具 gulp
  3. java源程序可以有几个主类_Java源程序是由类定义组成的,每个程序可以定义若干个类,但只有一个类是主类。_学小易找答案...
  4. AD20学习笔记5---PCB设计规则设置及PCB手工布线
  5. [转载] Python中的xrange和range的区别
  6. 【字节网盘】九款超好看不同页面404源码
  7. matla工具箱 SerialLink 的一些最近发现的功能
  8. Alpine Linux如何安装软件
  9. GB28181国标流媒体服务(LiveGBS)-支持海康8700等联网网关通过接入实现web端无插件直播
  10. 每日学习笔记(12)
  11. Java模拟醉汉行走问题_用R模拟二维随机行走
  12. 使用Nginx实现多重流量复制
  13. 水处理相关工艺控制程序汇总(RXXW_Dor)
  14. Python学习笔记(二)(图灵学院)
  15. 细胞制备流程图_B细胞恶性肿瘤的CAR-T免疫治疗或可出现新进展
  16. [OPENCV]010.深度神经网络(dnn模块)
  17. “网上世博会”带来创新体验,水晶石着力推动“数字展览”应用
  18. python车牌识别系统抬杆_昆明车牌识别自动抬杆系统
  19. asp.net 判断用户是否使用微信浏览器
  20. Google Adsense优化SEO选词技巧

热门文章

  1. 伪标签Pseudo Label
  2. kotlin 属性重载
  3. java电子签名_java实现pdf文件电子签名
  4. ubuntu安装lxde_如何在Ubuntu上安装轻量级LXDE桌面
  5. 【VSCode】设置代码格式化插件Beautify
  6. teredo服务器文件,可用teredo服务器
  7. html中target四种选择_blank、_parent、_self、_top,分别是什么意思?
  8. LIFO栈 ADT接口 链表实现
  9. Error: GPG check FAILED
  10. python爬取bilibili弹幕_爬取Bilibili弹幕并制作词云图