- 浏览: 297426 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
M大米饭:
19774279 写道xj1990129 写道PackageF ...
Eclipse插件开发之获得当前项目 -
zhongmin2012:
AST抽象的java语法树 -
wd3389:
好可惜,你写的文章很有帮助,谢谢!
关于博客更新 -
zxjlwt:
http://surenpi.com/2015/07/13/e ...
eclipse扩展点清单 -
zxjlwt:
学习了。http://surenpi.com
Console 控制台扩展(一)
RCP是建立在eclipse平台基础之上的一个富客户端应用程序,由于RCP程序是基于插件架构的,所以RCP应用程序也是通过扩展的方式对应用进行扩展,它是根据org.eclipse.core.runtime.applications扩展点建立的,此扩展点的实现类,是整个RCP应用的入口。
1.org.eclipse.core.runtime.applications扩展点的建立
<extension id="myapplication" point="org.eclipse.core.runtime.applications"> <application> <run class="com.example.application.MyApplication"/> </application> </extension>
MyApplication是一个IPlatformRunnable结果的实现类,MyApplication通过实现它的run方法来进行扩展。
public class MyApplication implements IPlatformRunnable { public Object run(Object args) throws Exception { Display display = PlatformUI.createDisplay(); try { int returnCode = PlatformUI.createAndRunWorkbench(display, new MyWorkbenchAdvisor()); if (returnCode == PlatformUI.RETURN_RESTART) { return IPlatformRunnable.EXIT_RESTART; } return IPlatformRunnable.EXIT_OK; } finally { display.dispose(); } } }
所有RCP应用程序里这个方法的实现几乎是完全一样的,即启动 Workbench,并把一个WorkbenchAdvisor实例作为参数传给它,所以应用程序的定制实际上是通过这个WorkbenchAdvisor实例实现的。
public class MyWorkbenchAdvisor extends WorkbenchAdvisor { private static final String PERSPECTIVE_ID = "com.example.ui.MyPerspective"; public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor( IWorkbenchWindowConfigurer configurer) { return new MyWorkbenchWindowAdvisor(configurer); } public String getInitialWindowPerspectiveId() { return PERSPECTIVE_ID; } public void initialize(IWorkbenchConfigurer configurer) { super.initialize(configurer); //The workaround call WorkbenchAdapterBuilder.registerAdapters(); } }
MyWorkbenchAdvisor是org.eclipse.ui.application.WorkbenchAdvisor的一个子类,它覆盖了WorkbenchAdvisor的createWorkbenchWindowAdvisor和getInitialWindowPerspectiveId方法。createWorkbenchWindowAdvisor返回一个WorkbenchWindowAdvisor对象实例,这个对象里面主要用于定制应用程序窗口,包括菜单和工具条。getInitialWindowPerspectiveId返回一个透视图ID,一般都会自己定义。
public class MyWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor { public MyWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) { super(configurer); } public ActionBarAdvisor createActionBarAdvisor( IActionBarConfigurer configurer) { return new MyActionBarAdvisor(configurer); } public void preWindowOpen() { IWorkbenchWindowConfigurer configurer = getWindowConfigurer(); configurer.setInitialSize(new Point(700, 500)); configurer.setShowCoolBar(false); configurer.setShowStatusLine(false); configurer.setTitle("My RCP Application"); } }
在这个类中可以通过覆盖其父类的一些方法,控制Workbench的一些显示,如定义窗口大小和标题,隐藏了工具条。在createActionBarAdvisor方法中实现定制菜单和工具条的类。
public class MyActionBarAdvisor extends ActionBarAdvisor { private IWorkbenchAction exitAction; public MyActionBarAdvisor(IActionBarConfigurer configurer) { super(configurer); } protected void makeActions(final IWorkbenchWindow window) { exitAction = ActionFactory.QUIT.create(window); register(exitAction); } protected void fillMenuBar(IMenuManager menuBar) { MenuManager fileMenu = new MenuManager("&File", IWorkbenchActionConstants.M_FILE); menuBar.add(fileMenu); fileMenu.add(exitAction); } }
先在makeActions()里构造需要出现在菜单 或工具条上的命令,注意要调用register()方法注册这些命令,作用是在应用程序结束后释放资源,同时支持快捷键操作;然后在 fillMenuBar()方法里把这些命令加入主菜单,因为我们隐藏了工具条,所以没有覆盖fillCoolBar()方法,另外你还可以通过覆盖 fillStatusLine()定义自己的状态栏。
RCP应用程序的缺省外观是一个空白窗口,一般我们要通过一个WorkbenchAdvisor类对界面进行定制。 WorkbenchAdvisor有很多回调方法,可以在preWindowOpen()方法里设置菜单、工具条、状态栏、进度栏、透视图切换工具是否可 见,在fillActionBars()方法里添加菜单和工具条项,在getInitialWindowPerspectiveId()方法里指定首选的 透视图。
发表评论
-
关于博客更新
2012-12-10 23:52 955由于不再从事IDE的开发,以后这个博客不会继续更新了,希望上面 ... -
给GEF拖放功能
2012-03-27 13:08 1110本文来自刘刚的博客 我们知道SWT支持Native的拖 ... -
Eclipse插件开发之获得当前项目
2012-03-20 22:05 7821在进行eclipse插件开发的时候,我们经常需要知道当前选中的 ... -
获取当前活动的编辑器
2012-05-14 01:12 1262最近在写编辑器的时候,发现出现一个问题,很多东西焦点在编辑器上 ... -
Eclipse中UTF-8字符集配置
2012-02-02 16:08 1508如果要使插件开发应用能有更好的国际化支持,能够最大程度的支持中 ... -
IExtensionPoint和IExtension
2011-12-09 17:11 1671eclipse的核心框架是OSGi,在这个基础之上发展出ecl ... -
eclipse开源的一些项目的介绍
2011-11-15 16:34 34291.M2T:模型生成文本 JET:生成代码的工具,根本模型定 ... -
IDE相关有价值的链接
2011-11-09 15:01 949Eclipse 程序界面美化技术: http:/ ... -
Eclipse的开源应用的详细介绍
2011-11-09 13:33 1329Eclipse 生态系统非常大,有时候甚至达到了恐怖的地步 ... -
关于IFigure相关的文章的链接的收集
2011-11-07 09:18 959序言: http://www.4ucode.com/Study ... -
扩展点中的表达式总结
2011-10-10 14:23 1370本文来自:http://www.ceclipse.org/re ... -
自定义 RCP 编辑器和视图标题菜单关闭操作
2011-09-30 15:07 1486编辑器和视图标题的关闭操作特指标题栏 最右方的关闭按钮操 ... -
RCP View右键弹出菜单的使用
2011-09-30 15:02 1552在RCP里,Viewer可以拥有自己的右键弹出菜单,Ecl ... -
自定义 RCP 编辑器和视图标题菜单
2011-09-30 14:24 1801编辑器和视图标题中有许多默认的菜单,这些菜单不是由 IEdit ... -
Eclipse中类型扩展机制分析
2011-07-29 16:03 28931.标准的适配器模式 适 ... -
Eclipse RCP 中的常用小技巧
2011-07-25 14:56 36671.实现窗口的透明功能 通过函数Shell.setAlpha ... -
XML解析(一)
2011-07-20 14:43 503在eclipse中很多时候都需要对XML文件进行解析,解析xm ... -
RCP(二)
2011-07-20 13:48 13621.在RCP应用中,我们或多或少会依赖一些eclipse官方或 ... -
在RCP中使用package explorer视图
2011-07-19 17:14 1721在workbenchadvisor中的initialize方法 ... -
eclipse中扩展点的添加和删除
2011-07-19 16:48 1307ExtensionTracker是IExtensionTra ...
相关推荐
Rcp一个简单的入门教程 从一个实例讲解
一个用RCP实现的CRM例子,包括源码。
将涉及以下内容:创建第一个RCP程序,创建菜单和工具栏,查看,编辑,对话,外部JAR的用法,向一个RCP应用程序产品中添加标志和帮助。每一章都基本独立于其他章节。欢迎访问我的网站——www.xeclipse.com。
clipse RCP允许开发者使用eclipse结构风格设计...将涉及以下内容:创建第一个RCP程序,创建菜单和工具栏,查看,编辑,对话,外部JAR的用法,向一个RCP应用程序产品中添加标志和帮助。 每一章可能都基本独立于其他章节
简单地讲, 一个RCP应用就是一个可独立于Eclispe IDE开发环境运行的Eclipse 插件. 下面我们以一个简单的例子开始我们的RCP旅程.
一个很好的RCP开发实例,仅供初学者参考!
这是一个对于初学者很好的学习的rcp例子,有心想和大家一起共享,请多多支持。
SWT RCP 界面--如何编写一个漂亮的 SWT RCP 界面
RCP 常见的扩展点指南 RCP最精华的部分之一,详细分析了RCP如何建立扩展点的。
RCP系统使用的弹出式日期控件,可切换上月下月,前一年后一年,可选择年、月
2.创建你的第一个RCP程序 1 2.1.创建一个RCP程序 2 2.2.启动你的RCP程序 5 2.3.应用程序VS 产品 6 3.应用程序里的插件ID 7 4.Actions的用法(菜单和工具栏) 7 4.1.概述 7 4.2.通过编码添加 8 4.3.由...
Eclipse Rich Client Platform (RCP) 的目标是在各种不是集成开发环境 (IDE) 的最终用户应用程序中使用 Eclipse。随着 Eclipse V3.1 的发布,创建 RCP 应用程序变得...本教程将指导您一步步创建自己的 RCP 应用程序。
rcp与spring集成的一个简单例子,
RCP程序设计主要组件的文档,可以适用于初学RCP程序设计的同学。
非常好的一本JAVA RCP入门实战的书,兼顾理论和实战。
eclipse RCP的mp3工程,非常棒的一个rcp应用程序,学习学习,快来下
一个简单的Eclipse RCP 源码示例,非常的简单,一看就明白。 解压后用Eclipse打开,打开plugin.xml文件-概述-启动Eclipse 应用程序,就能运行
一份关于RCP的图形编程工具!这是RCP的资料,有兴趣的看看!
开发你的第一个EclipseRCP应用程序汇编.pdf
前一段时间学习eclipse rcp开发写的一个学习用的工程。涉及了我当时学到的一些方面。 当时想找一个可以用来学习的简单的源代码真难,有的都是复杂的。 这里提供一个简单的工程。设计初学者接触的各种问题。有时通一...