一、安装一个新的Eclipse for RCP and RAP
为了方便测试而且不影响正常的Eclipse工作,
最好安装一个特定的Eclipse环境。
see http://www.eclipse.org/downloads/
选择这个版本的Eclipse
Eclipse for RCP and RAP Developers, 181 MB
eclipse-rcp-indigo-win32.zip
下载后解压到硬盘,然后创建一个批处理start_rcp.bat,
指向自己的jdk路径,内容如下:
set PATH= set PATH=D:\java\jdk1.6.0_20\bin;%PATH% start eclipse.exe
然后双击执行,设定一个不同的workspace目录,例如
C:\Documents and Settings\Administrator\workspace_rcp
进入Eclipse RCP,关闭最开始的欢迎界面。
二、了解SWT的使用
编写RCP很大程度上需要知道SWT的编写方法。
可以参考官网的介绍。
http://www.eclipse.org/swt/
SWT可以独立于Eclipse工作,所以需要在classpath中加入它自己特定的jar库。
而RCP依赖于Eclipse,需要考虑Eclipse提供的框架,
但好处是不需要顾及swt的jar(因为Eclipse已经在使用它)。
SWT官网提供大量代码片段,
http://www.eclipse.org/swt/snippets/
尝试运行这些小程序可以快速了解SWT的控件使用而不需要翻看SWT的文档。
它们普遍使用这个包:
import org.eclipse.swt.widgets.*;
后面会看到,SWT的程序和RCP的程序有很强的可互换性。
三、创建一个自定义视图插件。
我的目标是要创建一个最简单的插件——
创建一个自定义视图,然后在里面显示一张图片。
创建一个RCP工程:
File->New->Project...
Select a wizard->Plugin Development->Plug-in Project
Plugin-in Project
Project name:填org.eclipse.examples.nanami,按Next按钮。
Content
默认设置,
(
补:因为我是创建插件而非独立运行的应用程序,
所以
Would you like to create a rich client application?
应该选择no。
如果选择yes,本文后面提到的导出产品操作应该改为
New->Other->Product Configuration
然后双击生成的配置文件,配置页右上角会有导出的按钮,
可以同时导出应用程序和升级网站。
本文主要是讨论Eclipse插件开发而非RCP应用程序。
)
按Next按钮。
Templates
选择Plug-in with a view,然后按Next按钮。
Main View Settings
默认设置,然后按Finish按钮。
四、测试工程。
由于模板创建的视图太复杂,可以简化一下。
已经创建了两个类:
org.eclipse.examples.nanami.Activator
org.eclipse.examples.nanami.views.SampleView
视图图标是个小图标,用于在视图上显示:
/org.eclipse.examples.nanami/icons/sample.gif
工程设置可以双击清单文件
/org.eclipse.examples.nanami/META-INF/MANIFEST.MF
先测试这个View(到目前未作任何修改)
打开Activator.java文件,然后点击工具栏上Debug按钮。
选择Eclipse Application,点击OK打开新的Eclipse环境。
Window->Show View->Others->Sample Category->Sample View
打开要修改的视图(显示三个列表项)。
直接退出这个Eclipse环境即可。
五、修改视图属性
右键工程->Properties->Resource->Text file encoding->Other:填UTF-8
双击build.properties,切换到build.properties标签,
编辑这个文件,在最后添加:
javacDefaultEncoding.. = UTF-8
这样发布时使用UTF-8编译代码。
接下来修改视图的标题和替换自己的图标。
把新的图标icon.gif复制到icons/下,然后双击plugin.xml文件。
把
<view name="Sample View" icon="icons/sample.gif" category="org.eclipse.examples.nanami" class="org.eclipse.examples.nanami.views.SampleView" id="org.eclipse.examples.nanami.views.SampleView"> </view>
改为
<view name="Nanami视图" icon="icons/icon.gif" category="org.eclipse.examples.nanami" class="org.eclipse.examples.nanami.views.SampleView" id="org.eclipse.examples.nanami.views.SampleView"> </view>
然后把
<category name="Sample Category" id="org.eclipse.examples.nanami"> </category>
改为
<category name="Nanami" id="org.eclipse.examples.nanami"> </category>
这样就可以修改视图的分类,名称和小图标。
重新调试工程,看是否达到目的。
六、修改视图代码。
视图的主要代码都在SampleView.java这个文件中。
SampleView继承ViewPart,入口点在
public void createPartControl(Composite parent)
由于这个入口使用了
org.eclipse.jface.viewers.TableViewer
这个类看样子是jface的控件,用起来较困难。
可以把这个类化简成这样:
package org.eclipse.examples.nanami.views; import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.events.MenuAdapter; import org.eclipse.swt.events.MenuEvent; import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Image; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.SWT; import org.eclipse.ui.part.ViewPart; public class SampleView extends ViewPart { public static final String ID = "org.eclipse.examples.nanami.views.SampleView"; private Canvas canvas; public Control getControl() { return canvas; } @Override public void createPartControl(Composite parent) { // 创建画布控件 final Image image = new Image(Display.getCurrent(), SampleView.class.getResourceAsStream("nanami.jpg")); canvas = new Canvas(parent, SWT.BORDER); canvas.setBounds(0, 0, 800, 600); canvas.addPaintListener(new PaintListener() { public void paintControl(PaintEvent event) { event.gc.drawImage(image, 0, 0); } }); // 创建右键菜单 Menu menu = new Menu(parent.getShell(), SWT.POP_UP); final MenuItem copyItem = new MenuItem(menu, SWT.PUSH); copyItem.setText("版本信息"); copyItem.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { SampleView.this.showMessage("Nanami视图, v0.0.1.\n" + "Copyright weimingtom. All rights reserved."); } }); menu.addMenuListener(new MenuAdapter() { public void menuShown(MenuEvent e) { } }); getControl().setMenu(menu); } /** * 弹出对话框 * * @param message */ private void showMessage(String message) { MessageDialog.openInformation(getControl().getShell(), "Nanami视图", message); } @Override public void setFocus() { getControl().setFocus(); } }
然后把nanami.jpg这个图片复制到org.eclipse.examples.nanami.views包下,
方便视图读取这个图片。
(
补:上面用getResourceAsStream读取资源文件不是太好。
最好使用
AbstractUIPlugin.imageDescriptorFromPlugin
它在自动生成的类Activator代码中
/** * Returns an image descriptor for the image file at the given * plug-in relative path * * @param path the path * @return the image descriptor */ public static ImageDescriptor getImageDescriptor(String path) { return imageDescriptorFromPlugin(PLUGIN_ID, path); }
封装了,可以直接使用它。
例如用参数"/icons/xxx.gif"读取目录/icons下的图片。
不过注意在发布产品前记得双击META-INF/MANIFEST.MF
切换到build页,添加资源目录
Binary Build
Select the folders and files to include in the binary build.
例如加入icons目录
否则发布后的程序无法找到icons下的文件(因为根本没有被编译到产品中)
)
上面的代码使用
public void createPartControl(Composite parent)
的参数parent作为父容器,
创建一个新的Canvas,然后显示图片。
可以用相同的方法创建其它SWT控件。
调试的效果是这样:
七、安装方法一:直接安装到本地仓库
双击META-INF/MANIFEST.MF,
切换到Overview,
Exporting部分的
1. ...Organize Manifests Wizard
自动修改META-INF/MANIFEST.MF
添加Export-Package
4. ...Export Wizard
选择Install into host. Repository
虽然比较快速,
但RCP只能安装在编译RCP工程的Eclipse上。
八、安装方法二:创建site工程。
另一种方法就是创建插件更新网站,然后让Eclipse本地安装。
File->New->Others
选择Plug-in Development->Feature Project
Project name:填nanami_feature
Feature ID:填org.eclipse.examples.nanami
Feature Name:填Nanami
按Next。
按Finisth。
在弹出的feature.xml设置中切换到Plug-ins标签页
添加刚才写的插件
org.eclipse.examples.nanami
然后Ctrl+S保存这个配置文件。
最好创建一个插件网站。
File->New->Others
选择Plug-in Development->Update Site Porject
Project name:填nanami
按Finish打开site.xml配置
按Add Feature...添加刚才创建的Feature工程的ID:
org.eclipse.examples.nanami
按Ctrl+S保存。
按左上角的Build All...编译。
生成plugins、features目录和几个jar文件。
工程->右键->属性->Properties
复制这个网站的本地路径名,例如我的路径是:
C:\Documents and Settings\Administrator\workspace_rcp\nanami
Help->Install New Software...
按Add按钮->按Local按钮
在“浏览文件夹”对话框的文件夹填入上面的路径:
C:\Documents and Settings\Administrator\workspace_rcp\nanami
Location会填入:
file:/C:/Documents and Settings/Administrator/workspace_rcp/nanami/
按OK返回刚才的对话框:
如无意外,下面出现Uncategorized->Nanami这个插件。
为了加快安装,而且我的插件没有依赖其它插件,所以把下面的
Contact all update sites during install to find required software
前面的勾去掉。
勾选Nanami插件,然后按Next。
选中Nanami,按Next。
选择I accept the terms of the license agreement。按Finish。
弹出警告框,无视之,直接按OK。
然后按Restart Now重启Eclipse。
Window->Show View->Others->Nanami->Nanami视图
打开那个自己定制的视图,效果如下:
如果要卸载这个插件
Help->About Eclipse->Installation Details
选中Nanami然后按下面的Uninstall...卸载它。
相关推荐
如果您已经具备了这些基础知识,那么学习Eclipse RCP插件式开发将变得非常容易。 学习Eclipse RCP插件式开发的难点可能在于: 1. Eclipse RCP的学习曲线较陡,需要一定的Java基础和Eclipse基础知识。 2. RCP插件式...
通过本指南的学习,您应该已经对 Eclipse RCP 插件开发有了全面的理解。从插件体系结构到具体的用户界面组件设计,每一个知识点都旨在帮助开发者构建出高质量、可扩展的应用程序。未来,在掌握了基础知识后,您可以...
在提供的压缩包中,包含了关于Eclipse RCP插件开发15至24章的学习笔记,这些章节覆盖了多个关键主题,下面将对这些主题进行详细解读。 1. **第15章:对话框和向导(Dialogs and Wizards)** - 在Eclipse RCP中,...
这个"3.6.0"版本的Eclipse RCP中文语言包是专为那些需要在中文环境下开发Eclipse插件或RCP应用的开发者准备的。 1. **Eclipse RCP介绍** Eclipse RCP的核心理念是模块化和组件化,这使得开发者可以重用已有的功能...
以下是对Eclipse RCP插件开发学习笔记1-14章的详细知识点解析: 1. **第1章 Eclipse平台简介**: - Eclipse平台是基于OSGi(Open Service Gateway Initiative)标准的,提供了插件模型,使得开发者可以构建、运行...
5. **命令和服务**:Eclipse RCP中的命令(Command)和服务(Service)机制,用于实现应用的可扩展性和互操作性,读者将学习如何定义和使用这些组件。 6. **透视图和工作台**:透视图(Perspective)定义了工作空间...
通过阅读《Eclipse RCP深入浅出》并结合提供的代码样例,开发者不仅可以学习到Eclipse RCP的基本概念,还能学会如何创建和调试实际的RCP应用程序。这是一本非常实用的参考资料,对于希望在Java桌面应用领域工作的...
1. **Eclipse RCP架构**:理解Eclipse RCP的基础架构非常重要,包括插件(Plugins)、工作台(Workbench)、视图(Views)、编辑器(Editors)、透视图(Perspectives)等核心概念。这些组件共同构成了一个灵活且...
Eclipse Rich Client Platform (RCP) 是一个强大的框架,用于构建桌面应用程序。它提供了一整套工具和功能,使得开发者可以构建出具有丰富用户界面的应用。在开发完成后,我们需要将这些应用打包并发布,以便用户...
在深入学习Eclipse RCP之前,建议掌握以下基础知识: 1. **Java基础**: Java是Eclipse RCP的主要编程语言。 2. **Eclipse使用经验**: 了解如何使用Eclipse进行基本的开发工作。 3. **SWT/JFace开发基础(可选)**: ...
【标题】"eclipse RCP mp3工程"指的是一...综上所述,"eclipse RCP mp3工程"不仅是一个实用的音频处理应用,还是一个深入学习Eclipse RCP开发的实战案例,涵盖了从基础的UI设计到复杂的音频处理和插件扩展等多个领域。
2. RCP(Rich Client Platform):Eclipse RCP 的核心架构,提供了应用程序的入口、视图管理、事件处理和插件管理机制。 3. Plug-in:Eclipse RCP 的插件机制,允许开发者轻松地开发和集成新的功能模块。 4. View:...
"菜鸟Eclipse RCP学习之路"这个主题显然针对的是初学者,旨在引导他们逐步掌握如何使用Eclipse RCP进行软件开发。 首先,Eclipse RCP的核心概念是插件(Plugins)。每个插件代表应用程序的一个模块,它们通过OSGI...
Eclipse Rich Client Platform (RCP) 是一个强大的框架,用于构建桌面应用...通过深入学习"**Eclipse RCP开发详解**",你可以掌握构建自定义插件的技巧,从而充分利用这个平台的优势,打造出满足特定需求的应用程序。
1. **插件系统**:Eclipse RCP的核心是其插件模型,它允许通过插件来扩展应用程序的功能。每个插件都有自己的生命周期,可以独立发布和更新。在例子程序中,我们可以看到如何定义插件的元数据(plugin.xml文件),...
最后,Eclipse RCP的发展带来了Java桌面应用程序开发的新希望,它允许开发者利用Eclipse的强大功能和成熟的插件生态,来构建功能丰富、外观一致的客户端应用,同时避免了大量重复的界面开发工作。Eclipse RCP的应用...
11. **插件开发**:开发Eclipse RCP应用涉及创建插件项目、定义插件依赖、编写插件XML配置文件,以及实现具体业务逻辑。 12. **调试与测试**:Eclipse RCP提供强大的调试工具,如插件调试器,可以帮助开发者定位和...
1. **插件(Plugins)**:Eclipse RCP基于插件架构,每个功能模块都被封装在单独的插件中,这样可以实现模块化开发,提高代码的复用性和可扩展性。在标签中提到的"ECLIPSE RCP 插件",意味着这个项目可能包含多个...