一、安装一个新的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 插件开发学习笔记.pdf 15-24章
eclipse rcp 插件开发学习笔记.pdf 1-14章
eclipse3.4 RCP插件开发英文教程,转成了pdf
基础篇(第1-5章)详细介绍了与Eclipse RCP相关的一系列核心概念、Eclipse RCP开发环境的搭建,以及SWT、JFace、Forms、Nebula和WindowBuilder等Eclipse RCP开发所常用的界面编程技术;高级篇(第6-12章)系统讲解了...
通过例子学习EclipseRCP开发通过例子学习EclipseRCP开发
Eclipse RCP富客户端平台,基于Eclipse开发的。
Eclipse RCP plugin 开发快速入门。理论与实践相结合,容易理解。
eclipse rcp应用系统开发方法与实战源代码.zip
eclipse rcp开发插件详解,快速开发eclipse插件,资源很好
Eclipse rcp 实现文本内容对比功能,可自己选取对比的文件进行比较
Eclipse RCP开发教程,RCP入门教程,教你如何使用SWT Eclipse RCP开发教程,RCP入门教程,教你如何使用SWT Eclipse RCP开发教程,RCP入门教程,教你如何使用SWT Eclipse RCP开发教程,RCP入门教程,教你如何使用SWT
eclipse RCP学习项目源码&扩展控制台插件for eclipse3.5
clipse RCP允许开发者使用eclipse结构风格设计弹性的可扩展的应用程序,可重用Eclipse中已存在的方法和编码模式。俗话说,万事开头难。Eclipse RCP入手可能会比较困难、费时。接下来我们将主要讲述如何让RCP工作 ...
Eclipse RCP 软件打包发布方法。之前花了5分下了一个教材,更不不好用。现在自己摸索写了一个,绝对赞~
Eclipse RCP中使用第三方包,图文并茂很不错。
EclipseRcp 例子程序
eclipse RCP的mp3工程,非常棒的一个rcp应用程序,学习学习,快来下
eclipse rcp check table
ECLIPSE RCP项目开发源程序(中文注释)
EclipseRCP教程EclipseRCP教程EclipseRCP教程