- 浏览: 168614 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
Vcb:
http://osgi.jxtech.net 是目前发现最好的 ...
OSGi控制台在Eclipse插件开发中的妙用 -
zxjlwt:
学习了。http://surenpi.com
OSGi控制台在Eclipse插件开发中的妙用 -
enen1982:
这个写得相当不错,找了好久,省了我一堆事,能不能复制整个目录
Eclipse插件中如何读取插件项目下的文件 -
yhyysxqygs:
用到起了
为RCP程序添加帮助支持 -
ququsxc:
这个一定要顶
Eclipse插件中如何读取插件项目下的文件
为RCP程序添加帮助支持
本文大量参考了EclipseCorner的文章
《Adding Help Support to a Rich Client Platform (RCP) Application》,
特表示感谢。英语好的朋友可以直接看这篇文章。
v1.0.0
2007-12-26
友好、易用的帮助系统是一个好的软件必备的部分,很少有软件能做到不需要任何文档。Eclipse的帮助系统是基于浏览器的,因此能够完全支持HTML,并且自动支持了搜索功能;而且可以支持上下文帮助和关键字索引。
帮助系统是RCP的一个可选的组件,它不是最小RCP的一部分,但是可以将其添加到RCP中为RCP程序提供帮助支持。
下面就以一个例子为基础说明为RCP程序添加帮助支持的过程。
在继续之前,首先确定你已经具有了一定的RCP方面的支持,了解了如何创建一个项目,以及如何产品配置。这些都不是本文的主题,需要了解这些内容,可以参考其他资料。本文下面内容假定读者已经了解并基本掌握了这方面的内容。
一、创建RCP程序。
PDE本身带了几个RCP程序的模板,我们就以其中的RCP Mail模板为例,这个不是本文的主题,根据模板创建一个RCP程序也比较简单,所以这里不再赘述。本例的项目名为org.example.rcp,其他都取默认值。
二、创建产品配置
一个产品配置是RCP程序必备的(虽然不会编译错误,也可以运行,但产品配置是RCP程序发布的基础)。我们的产品配置文件名为rcp.product,其他取默认值。
三、添加代码
首先,在RCP项目中找到AppllicationiActionBarAdvisor这个类,按照下面模板修改:
public class ApplicationActionBarAdvisor extends ActionBarAdvisor { // Actions - important to allocate these only in makeActions, and then use them // in the fill methods. This ensures that the actions aren't recreated // when fillActionBars is called with FILL_PROXY. private IWorkbenchAction exitAction; private IWorkbenchAction aboutAction; private IWorkbenchAction newWindowAction; private OpenViewAction openViewAction; private Action messagePopupAction; private IAction helpContentAction = null; //帮助,此处添加三个Action用做菜单 private IAction helpSerchAction = null; private IAction helpDynamicAction = null; public ApplicationActionBarAdvisor(IActionBarConfigurer configurer) { super(configurer); } protected void makeActions(final IWorkbenchWindow window) { // Creates the actions and registers them. // Registering is needed to ensure that key bindings work. // The corresponding commands keybindings are defined in the plugin.xml file. // Registering also provides automatic disposal of the actions when // the window is closed. exitAction = ActionFactory.QUIT.create(window); register(exitAction); aboutAction = ActionFactory.ABOUT.create(window); register(aboutAction); newWindowAction = ActionFactory.OPEN_NEW_WINDOW.create(window); register(newWindowAction); openViewAction = new OpenViewAction(window, "Open Another Message View", View.ID); register(openViewAction); messagePopupAction = new MessagePopupAction("Open Message", window); register(messagePopupAction); //帮助 helpContentAction = ActionFactory.HELP_CONTENTS.create(window); register(helpContentAction); helpSerchAction = ActionFactory.HELP_SEARCH.create(window); register(helpSerchAction); helpDynamicAction = ActionFactory.DYNAMIC_HELP.create(window); register(helpDynamicAction); } protected void fillMenuBar(IMenuManager menuBar) { MenuManager fileMenu = new MenuManager("&File", IWorkbenchActionConstants.M_FILE); MenuManager helpMenu = new MenuManager("&Help", IWorkbenchActionConstants.M_HELP); menuBar.add(fileMenu); // Add a group marker indicating where action set menus will appear. menuBar.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS)); menuBar.add(helpMenu); // File fileMenu.add(newWindowAction); fileMenu.add(new Separator()); fileMenu.add(messagePopupAction); fileMenu.add(openViewAction); fileMenu.add(new Separator()); fileMenu.add(exitAction); // Help helpMenu.add(aboutAction); helpMenu.add(helpContentAction); helpMenu.add(helpSerchAction); helpMenu.add(helpDynamicAction); } protected void fillCoolBar(ICoolBarManager coolBar) { IToolBarManager toolbar = new ToolBarManager(SWT.FLAT | SWT.RIGHT); coolBar.add(new ToolBarContributionItem(toolbar, "main")); toolbar.add(openViewAction); toolbar.add(messagePopupAction); } }
四、测试一下
为RCP程序添加帮助系统,需要至少添加以下插件:
org.apache.lucene
org.eclipse.help.appserver
org.eclipse.help.base
org.eclipse.help.ui
org.eclipse.help.webapp
org.eclipse.tomcat
org.eclipse.ui.forms。
打开产品配置文件,在编辑器的“配置”页面,点击添加,添加上述插件,然后再点击一“添加必须插件”。
在添加了所有必需插件以后,在“概述”页面点击启动产品,查看运行情况,可以看到在帮助菜单下,有了三个帮助相关的菜单。点击“帮助内容”会报一个未安装文档的错,其他两个菜单不会有错。
五、添加简单的帮助内容
上面报的错误,是因为没有任何帮助内容可以使用,下面我们就提供一个简单的帮助内容,帮助内容一般也以一个独立的插件的形式存在,按照下面的步骤创建一个帮助内容插件:
1. "File > New > Project > Plug-in project".
2. 在弹出的向导第一个页面中,保证复选框“Create a Java Project”处于未选中的状态。(当然,这个不是必须的)。
3. 输入项目名称”org.example.rcp.content”,并点击下一步。
4. 在模板选择页面选择Plug-in with sample help content"来使用模板创建一个帮助内容插件。
如果你和我一样使用3.2的中文版的话,那么你可能需要手动修改一下toc.xml文件,因为里面有个地方使用中文出现了乱码,打开这个文件,可以明显看到,把它改成任何符合xml规定的代码即可。如不做此不后面会出现错误。
5. 在产品配置文件编辑器的配置页面中,添加这个插件。
6. 在产品配置文件编辑器的概述页面中,点击启动产品,查看运行情况。
六、添加上下文帮助
上下文帮助是用户在任何界面下,点击F1(windows)或者单击菜单中的动态帮助,出现和当前界面相关联的帮助提示等。在Eclipse框架下,添加上下文帮助也是比较简单的。
首先,你需要为上下文指定一个ID,这个ID在后面会匹配到帮助内容的某一项或者几项。我们这里为RCP示例的“Message”视图创建一个上下文帮助,这需要修改View.java 这个文件,在这个类的createPartControl方法中添加:
PlatformUI.getWorkbench().getHelpSystem().setHelp(top, "org.example.rcp.content.context");
注意这里的第二个参数,是由文档插件ID+下面xml中id组成。
然后指定了上下文ID以后,就需要在帮助内容中添加与之相应的内容了。 在上面创建的org.example.rcp.ocntent项目下,创建一个文件”contexts.xml”,内容如下:
<contexts> <context id="message"> <description>This is the sample context-sensitive help. </description> <topic href="html/subtopic.html" label="Subtopic" /> </context> </contexts>
然后需要把这个内容和上面的ID联系起来,这需要用到org.eclipse.help.context扩展点,这个扩展点需要指定的值就是刚刚创建的那个文件。 在扩展页面中
1. 点击添加,选择org.eclipse.help.context 这个扩展点(注意需要把下面的复选框取消选中才能看到这个扩展点),然后会提示是否添加到依赖项,选否。
2. 在file一项中,选择刚才创建的那个文件。
另外,在View.java文件中,做如下修改,即在setFocus()方法中,保证使top获得焦点,以使系统把正确的上下文传递给帮助系统,需要的修改参考下面代码:
private Composite top; public void createPartControl(Composite parent) { top = new Composite(parent, SWT.NONE); ... } public void setFocus() { top.setFocus(); }
再次点击启动产品,并在焦点在Message视图上的情况下,按F1或者选菜单动态帮助查看效果,如果上面步骤都正确执行了,那么应该会在右边自动出现指定的帮助内容。
- code.zip (78.2 KB)
- 描述: 示例代码
- 下载次数: 166
评论
发表评论
-
Eclipse的2012年规划
2012-02-10 09:42 946最近看到了一篇Eclipse基金会Executive Dire ... -
Eclipse RCP P2 (3.6)
2011-07-12 10:42 1467暂时没空整理,参考资料: http://wiki.eclip ... -
OSGi控制台在Eclipse插件开发中的妙用
2011-03-17 15:05 6050OSGi的实现本身有一个控制台,提供插件的查看和管理功 ... -
eclipse项目集锦
2010-06-03 11:34 90收集Eclipse官方项目及其简单介绍。 Eclipse I ... -
Eclipse December Splash
2009-12-22 10:52 955nice. -
关于在Eclipse中使用Ant中文路径乱码的错误
2009-12-10 09:41 2878情况是: 1. 有一个项目,这个项目的路径没有使用默认路径, ... -
关于RCP项目使用UTF-8编码,导出后中文乱码的解决方法。
2009-10-28 14:51 27111.右键单击build.properites文件,&quo ... -
视图和编辑器的区别
2009-08-19 11:30 1172When they first start to wri ... -
ActionSet里多个Action在工具栏上出现的顺序
2009-07-22 15:33 1342按照plugin.xml里,定义顺序的相反的顺序 -
IResource接口中的获取位置的几个方法比较
2009-06-15 19:49 1274以某个文件为例,各方法的结果如下: getFullPath: ... -
插件开发中问遇到的小问题记录
2009-04-01 15:17 36651.添加第三方包以后, ... -
Eclipse插件中如何读取插件项目下的文件
2009-03-02 22:35 6045在进行插件开发的时候,有的时候希望把某些配置文件,或者数据文件 ... -
plugin.xml文件中控制可见性和可用性总结。
2009-02-24 23:39 0Eclipse插件开发中最常见的就是一些使用平台提供的一些扩展 ... -
关于在插件开发中遇到的NoClassDefineFound异常。
2008-07-18 15:25 1253情况是: 1.两个插件,插件B依赖于插件A,并且使用了A中的类 ... -
关于使用Junit对Eclipse插件项目进行单元测试。
2008-07-16 15:53 34941.创建一个插件测试项目;即创建一个普通的插件项目。 2.添加 ... -
【转】Eclipse CVS _ HOW TO
2008-07-02 11:12 2961CVS Howto From Eclipsepedia Ju ... -
怎样让你的插件功能部件出现在Eclipse的about对话框中
2008-06-16 21:05 14461.首先要有一个功能部件项目 ,并且设置其ID与插件项目相同 ... -
【转】Open an editor on something that is not a file
2008-06-05 21:17 1386转自EclipseFAQ Since 3.3 you can ... -
【转】eclipse.ini说明
2008-06-05 21:12 2086-vmargs -Xms128M -Xmx512M -XX:P ... -
关于Eclipse中的选择服务(SelectionService)V1.0
2008-06-05 21:06 2684翻译自下面文章。还没有完成翻译,因为最近没有精力做这个事情,又 ...
相关推荐
在RCP程序设计中,有以下几个关键知识点: 1. **基础架构**:RCP是建立在OSGi(Open Services Gateway Initiative)框架之上,这是一个动态模块系统,用于Java应用程序。OSGi允许开发者将应用程序拆分为独立的模块...
本教程将通过三个不同层次的例子,帮助你深入理解RCP程序设计。 1. **RCP基础** - **Eclipse RCP架构**:RCP基于插件模型,每个功能模块都是一个独立的插件,通过服务定位和服务依赖来实现组件间的通信。 - **...
Eclipse RCP程序通常由多个组件构成,包括视图(Views)、编辑器(Editors)、透视图(Perspectives)、菜单和工具栏等。"eclipse rcp经典程序"这个资源很可能包含了完整的示例代码,帮助开发者了解并实践这些关键...
本教程将深入探讨RCP程序设计的核心概念、架构和最佳实践,帮助你掌握如何利用RCP创建功能丰富的、可扩展的客户端应用。 1. **RCP基础知识** - **RCP定义**:RCP是Eclipse提供的一个用于开发复杂桌面应用程序的...
3. **Help(帮助系统)**:帮助系统是可扩展的,允许通过HTML文档添加自定义的导航结构,为用户提供详细的应用指南。 4. **Team(团队支持系统)**:这一组件提供版本控制和配置管理,与其他版本控制系统集成,以...
2. **RCP程序设计.pdf** - 这可能是关于RCP应用程序设计的一本指南,涵盖了RCP的架构、组件、事件处理、用户界面设计等核心概念,帮助开发者掌握构建复杂桌面应用的技巧。 3. **RCP Programming.pdf** - 这本书很...
3. **帮助系统**:为用户提供应用程序的帮助文档和支持。 **创建RCP产品** 将RCP应用转化为一个可分发的产品,开发者需要完成以下工作: 1. **品牌化**:定制应用的外观,包括图标、标题等,以体现其独特性。 2. ...
标志(icons)为应用程序提供视觉标识,帮助(Help)系统为用户提供指南和文档。在 RCP 中,可以通过定义扩展点和扩展来集成自定义的标志和帮助系统。 总的来说,Eclipse RCP 提供了一个强大的框架,用于构建功能...
本教程将深入探讨如何在Eclipse RCP程序中实现ViewPart的占位功能,这对于构建具有多视图的工作环境至关重要。 首先,我们需要理解ViewPart的基本概念。在Eclipse RCP中,ViewPart是用户界面中的一个组件,它通常...
这篇博客的文章标题“使用Equinox P2实现RCP程序更新”暗示了我们将深入探讨如何利用这一框架来维护和升级RCP应用。 在RCP程序中,更新功能对于用户来说至关重要,因为它允许他们轻松获取最新的功能、修复和安全...
在压缩包文件中,名为“eclipse”的文件可能是Eclipse RCP开发环境本身,或者是包含示例程序源代码和相关资源的文件夹。通常,一个Eclipse RCP项目会包含以下部分: - `.project` 和 `.classpath` 文件:定义了项目...
Eclipse Rich Client Platform (RCP) 是一个强大的框架,用于构建桌面应用程序。它提供了一整套工具和...同时,持续关注Eclipse RCP的更新和社区支持,可以帮助你更好地利用这个平台的优势,提升开发效率和用户体验。
其次,"使用Eclipse RCP进行桌面程序开发(一):快速起步.doc"文档将引导读者迅速进入实战阶段,讲解如何搭建开发环境,配置Eclipse IDE以支持RCP开发,以及如何创建和运行一个简单的RCP应用程序。这个文档通常会...
- **创建一个帮助插件工程**:添加帮助文档和支持到产品中。 16. **专题一**:ECLIPSE的版本和发行包 - **版本VERSION**:了解Eclipse的版本体系和选择原则。 - **发行包EDITION**:解析Eclipse的不同发行版,如...
在RCP程序设计中,我们可以深入理解以下几个核心知识点: 1. **Eclipse RCP基础**:Eclipse RCP是Eclipse IDE的组成部分,它提供了一套完整的工具集来构建跨平台的桌面应用。Eclipse RCP基于插件体系结构,允许...
- **向你的程序添加错误日志视图**: 创建视图贡献至UI以显示错误日志。 #### 15. 产品 - **概述**: 构建可分发的Eclipse RCP应用。 - **PRODUCT配置文件**: - 定义产品的启动配置。 - 设置启动类、产品ID等。 - *...