09年学习Eclipse RCP 3.3时记录的一点东西。
一、product 配置文件plugin_customization.ini 说明
创建RCP 项目的产品配置后,在运行程序时,将读取项目根目录下的plugin_customization.ini 文件,设置默认参数。常用参数意义如下:
org.eclipse.ui/SHOW_TRADITIONAL_STYLE_TABS=false Editor 或View 是否使用传统的Tab 的样式 org.eclipse.ui/SHOW_PROGRESS_ON_STARTUP=false 在splash 的画面中, 是否显示进度条 org.eclipse.ui/presentationFactoryId 定义外观样式,默认为WorkbenchPresentationFactory org.eclipse.ui/defaultPerspectiveId 默认初始打开的Perspective org.eclipse.ui/KEY_CONFIGURATION_ID 定义scheme ,默认值为org.eclipse.ui.defaultAcceleratorConfiguration 。用户在定义binding 时可创建新的scheme org.eclipse.ui/SHOW_MEMORY_MONITOR=false 是否显示内存情况, 并可进行GC 操作 org.eclipse.ui/DOCK_PERSPECTIVE_BAR=topRight PerspectiveBar 的显示位置 org.eclipse.ui/SHOW_OPEN_ON_PERSPECTIVE_BAR=false 在PerspectiveBar 上, 是否显示New Perspective 按钮 org.eclipse.ui/SHOW_TEXT_ON_PERSPECTIVE_BAR=false 在PerspectiveBar 上, 是否显示Perspective 的名称 org.eclipse.ui/DISABLE_NEW_FAST_VIEW=false 是否禁止左下角的Show View As a Fast View 按钮
更多变量名和取值, 可以参见 org.eclipse.ui.IworkbenchPreferenceConstants
自定义配置文件名称:
在创建产品配置后(需同步),会在plugin.xml文件自动创建products扩展,为product填加属性preferenceCustomization,指定实际文件名称。
通过代码实现默认配置, 不依赖配置文件。
实现方法:在WorkbenchAdvisor#initialize() 里面进行赋值即可。代码如下:
public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor { public void initialize(IWorkbenchConfigurer configurer) { PlatformUI.getPreferenceStore().setDefault(IWorkbenchPreferenceConstants.SHOW_PROGRESS_ON_STARTUP, true); PlatformUI.getPreferenceStore().setDefault(IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS, false); //是否保存最后程序窗口状态 configurer.setSaveAndRestore(true); } }
二、菜单与快捷键
1 、创建快捷键
首先在plugin.xml 中加入两个扩展点:
<extension point="org.eclipse.ui.bindings"> <scheme id="com.sunjc.rcpapp.scheme" name="rcp scheme" parentId="org.eclipse.ui.defaultAcceleratorConfiguration"> </scheme> <key commandId="command_exit" contextId="com.sunjc.rcpapp.context" schemeId="com.sunjc.rcpapp.scheme" sequence="Ctrl+Shift+X"> </key> <key commandId="org.eclipse.ui.file.exit" schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" sequence="CTRL+X"> </key> </extension> <extension point="org.eclipse.ui.commands"> <command defaultHandler="com.sunjc.rcpapp.action.DefaultHandler" id="command_exit" name="%action.label.exit"> </command> </extension>
如上,定义了两个“退出”快捷键,“org.eclipse.ui.file.exit”复用了eclipse 本身的。
bindings扩展点中的commandId对应于commands扩展点中的id,id 必须唯一。
bindings中定义的scheme为快捷键方案(Schemes are used to represent a general style or theme of bindings), 如eclipse keys提供"Default"和"Emacs”两种scheme 。仅激活的scheme才能使用,可在 plugin_customization.ini文件进行配置。 Scheme 可以继承, 激活子scheme 也将激活父scheme , eclipse 默认的schemeId 为:“org.eclipse.ui.defaultAcceleratorConfiguration ”,这个schema 存储了Eclipse 默认快捷键 。定义key 时必须指定schemeId 。
contextId 定义了快捷键的上下文环境,如指定了contextId 则必须激活才能使快捷键生效。Context 定义如下:
<extension point="org.eclipse.ui.contexts"> <context id="com.sunjc.rcpapp.context" name="context"> </context> </extension>
激活代码可写在ApplicationWorkbenchWindowAdvisor#preWindowOpen()方法内:
private static IContextActivation activation ; public void preWindowOpen() { … if ( activation != null ) { activation .getContextService().deactivateContext( activation ); } IContextService contextService = (IContextService) PlatformUI.getWorkbench ().getService(IContextService. class ); activation = contextService.activateContext(“ com.sunjc.rcpapp.context”); }
Sequence 定义快键键。
defaultHandler 定义默认处理类,多个快捷键可共用,在无对应action 时将调用此类。以下为通过defaultHandler 实现的退出方法:
public class DefaultHandler implements IHandler { public void addHandlerListener(IHandlerListener handlerListener) { } public void dispose() { } public Object execute(ExecutionEvent event) throws ExecutionException { if ( "command_exit" .equals(event.getCommand().getId())) { PlatformUI.getWorkbench ().close(); } return null ; } public boolean isEnabled() { return true ; } public boolean isHandled() { return true ; } public void removeHandlerListener(IHandlerListener handlerListener) { } }
2 、创建菜单
<extension point="org.eclipse.ui.actionSets"> <actionSet id="com.sunjc.rcpapp.actionSet" label="Main View" visible="true"> <menu id="menuSystem" label="%menu.menuSystem"> <separator name="menuAbout"> </separator> <separator name="menuLanguage"> </separator> <separator name="menuExit"> </separator> </menu> <menu id="com.sunjc.rcpapp.language" label="%action.label.language" path="menuSystem/menuLanguage"> <groupMarker name="platform.lanaguage"> </groupMarker> </menu> <action class="com.sunjc.rcpapp.action.nl.ZhCNAction" id="com.sunjc.rcpapp.action.nl.zhCNAction" label="%action.label.zhcn" menubarPath="menuSystem/com.sunjc.rcpapp.language/platform.lanaguage"> </action> <action class="com.sunjc.rcpapp.action.ExitAction" id="com.sunjc.rcpapp.action.exitAction" label="%action.label.exit" menubarPath="menuSystem/menuExit"> </action> </actionSet> </extension>
学习文档
Eclipse p2 updates for RCP applications - Tutorial
相关推荐
在提供的压缩包中,包含了关于Eclipse RCP插件开发15至24章的学习笔记,这些章节覆盖了多个关键主题,下面将对这些主题进行详细解读。 1. **第15章:对话框和向导(Dialogs and Wizards)** - 在Eclipse RCP中,...
### SWT与RCP基础知识 #### 一、SWT概述 SWT(Standard Widget Toolkit)是一种专为Java设计的用户界面工具包,它提供了一系列的原生控件来创建丰富的客户端应用。SWT的一个显著特点在于它能直接调用操作系统的GUI...
以下是对Eclipse RCP插件开发学习笔记1-14章的详细知识点解析: 1. **第1章 Eclipse平台简介**: - Eclipse平台是基于OSGi(Open Service Gateway Initiative)标准的,提供了插件模型,使得开发者可以构建、运行...
Eclipse插件开发 学习笔记 第一篇 开发基础(01-05).rar Eclipse插件开发 学习笔记 第一篇 开发基础(06-10).rar Eclipse插件开发 学习笔记 第二篇 核心技术(11-16).rar Eclipse插件开发 学习笔记 第二篇 核心技术(17-...
RCP(Rich Client Platform)是一种由Eclipse提供的框架,用于构建复杂的桌面应用程序。RCP允许开发者利用插件体系结构构建可...同时,持续学习和研究Eclipse的更新版本和新特性,可以解决新出现的问题,提高开发效率。
本文将深入探讨Eclipse插件开发的相关知识点,结合提供的"全书分为4篇共24章"的学习笔记和源码,帮助你更全面地理解和实践Eclipse插件开发。 第一篇:基础篇 在这一篇中,你将学习到Eclipse插件开发的基础知识,...
Eclipse插件开发 学习笔记 第一篇 开发基础(01-05).rar Eclipse插件开发 学习笔记 第一篇 开发基础(06-10).rar Eclipse插件开发 学习笔记 第二篇 核心技术(11-16).rar Eclipse插件开发 学习笔记 第二篇 核心技术(17-...
本学习笔记将深入探讨Eclipse插件开发的相关知识,以帮助你掌握这一核心技能。 一、Eclipse插件体系结构 Eclipse基于OSGi(Open Service Gateway Initiative)框架,采用模块化设计,使得每个功能都以插件的形式...
总之,"Eclipse学习笔记"提供了对Eclipse RCP全面学习的机会,涵盖了从基础到高级的多个层次,对于想要构建桌面应用程序的开发者来说,这是一个宝贵的资源。通过深入研究这两份文档,开发者可以提升自己的技能,将...
第三篇主要讲述插件开发的高级内容,包括开发高级内容、富客户端平台技术(RCP)、Draw2d,以及GEF介绍与实现等4个章节;第四篇则围绕插件开发和GEF应用两个主题,精心设计了两个程序开发实例,使读者能更加全面地...
第一篇介绍Eclipse平台...第三篇主要讲述插件开发的高级内容,包括开发高级内容、富客户端平台技术(RCP)、Draw2d,以及GEF介绍与实现等4个章节;第四篇则围绕插件开发和GEF应用两个主题,精心设计了两个程序开发实例
### Linux常用命令学习笔记 #### 一、更改帐号密码 - **命令**: `passwd` - **功能**: 更改用户密码。 - **语法**: `passwd` - 输入旧密码:`Old password:` - 输入新密码:`New password:` - 重新输入新密码...
Eclipse插件开发 学习笔记 第一篇 开发基础(01-05).rar Eclipse插件开发 学习笔记 第一篇 开发基础(06-10).rar Eclipse插件开发 学习笔记 第二篇 核心技术(11-16).rar Eclipse插件开发 学习笔记 第二篇 核心技术(17-...
Eclipse插件开发 学习笔记 第一篇 开发基础(01-05).rar Eclipse插件开发 学习笔记 第一篇 开发基础(06-10).rar Eclipse插件开发 学习笔记 第二篇 核心技术(11-16).rar Eclipse插件开发 学习笔记 第二篇 核心技术(17-...
Eclipse插件开发 学习笔记 第一篇 开发基础(01-05).rar Eclipse插件开发 学习笔记 第一篇 开发基础(06-10).rar Eclipse插件开发 学习笔记 第二篇 核心技术(11-16).rar Eclipse插件开发 学习笔记 第二篇 核心技术(17-...
Eclipse插件开发 学习笔记 第一篇 开发基础(01-05).rar Eclipse插件开发 学习笔记 第一篇 开发基础(06-10).rar Eclipse插件开发 学习笔记 第二篇 核心技术(11-16).rar Eclipse插件开发 学习笔记 第二篇 核心技术(17-...
第三篇主要讲述插件开发的高级内容,包括开发高级内容、富客户端平台技术(RCP)、Draw2d,以及GEF介绍与实现等4个章节;第四篇则围绕插件开发和GEF应用两个主题,精心设计了两个程序开发实例,使读者能更加全面地...
### Eclipse插件开发知识点解析 #### 一、Eclipse平台简介 **1.1 Eclipse集成开发环境(IDE)** ...通过以上内容的学习,开发者可以全面掌握Eclipse插件开发的基本原理和技术细节,为进一步深入研究打下坚实的基础。
本学习笔记涵盖从基础到进阶的Eclipse插件开发全过程,通过24个章节的源代码实例,旨在帮助开发者掌握如何创建、调试和发布Eclipse插件。 在Eclipse插件开发中,首先需要理解的是OSGi(Open Services Gateway ...
第三篇主要讲述插件开发的高级内容,包括开发高级内容、富客户端平台技术(RCP)、Draw2d,以及GEF介绍与实现等4个章节;第四篇则围绕插件开发和GEF应用两个主题,精心设计了两个程序开发实例,使读者能更加全面地...