`

Eclipse RCP插件编程学习简记

阅读更多

 

一、安装一个新的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 插件开发有了全面的理解。从插件体系结构到具体的用户界面组件设计,每一个知识点都旨在帮助开发者构建出高质量、可扩展的应用程序。未来,在掌握了基础知识后,您可以...

    eclipse rcp 插件开发学习笔记.pdf 15-24章

    在提供的压缩包中,包含了关于Eclipse RCP插件开发15至24章的学习笔记,这些章节覆盖了多个关键主题,下面将对这些主题进行详细解读。 1. **第15章:对话框和向导(Dialogs and Wizards)** - 在Eclipse RCP中,...

    eclipse RCP Plug-in开发自学教程.pdf

    如果您已经具备了这些基础知识,那么学习Eclipse RCP插件式开发将变得非常容易。 学习Eclipse RCP插件式开发的难点可能在于: 1. Eclipse RCP的学习曲线较陡,需要一定的Java基础和Eclipse基础知识。 2. RCP插件式...

    eclipse rcp 插件开发学习笔记.pdf 1-14章

    以下是对Eclipse RCP插件开发学习笔记1-14章的详细知识点解析: 1. **第1章 Eclipse平台简介**: - Eclipse平台是基于OSGi(Open Service Gateway Initiative)标准的,提供了插件模型,使得开发者可以构建、运行...

    ECLIPSE+RCP应用系统开发方法与实战(PDF 高岗著)

    5. **命令和服务**:Eclipse RCP中的命令(Command)和服务(Service)机制,用于实现应用的可扩展性和互操作性,读者将学习如何定义和使用这些组件。 6. **透视图和工作台**:透视图(Perspective)定义了工作空间...

    Eclipse rcp深入浅出中英文版及配套代码

    通过阅读《Eclipse RCP深入浅出》并结合提供的代码样例,开发者不仅可以学习到Eclipse RCP的基本概念,还能学会如何创建和调试实际的RCP应用程序。这是一本非常实用的参考资料,对于希望在Java桌面应用领域工作的...

    eclipse rcp应用系统开发方法与实战源代码.zip

    1. **Eclipse RCP架构**:理解Eclipse RCP的基础架构非常重要,包括插件(Plugins)、工作台(Workbench)、视图(Views)、编辑器(Editors)、透视图(Perspectives)等核心概念。这些组件共同构成了一个灵活且...

    Eclipse RCP 软件打包发布方法

    Eclipse Rich Client Platform (RCP) 是一个强大的框架,用于构建桌面应用程序。它提供了一整套工具和功能,使得开发者可以构建出具有丰富用户界面的应用。在开发完成后,我们需要将这些应用打包并发布,以便用户...

    Eclipse RCP.pdf清晰版

    在深入学习Eclipse RCP之前,建议掌握以下基础知识: 1. **Java基础**: Java是Eclipse RCP的主要编程语言。 2. **Eclipse使用经验**: 了解如何使用Eclipse进行基本的开发工作。 3. **SWT/JFace开发基础(可选)**: ...

    eclipse RCP mp3工程

    【标题】"eclipse RCP mp3工程"指的是一...综上所述,"eclipse RCP mp3工程"不仅是一个实用的音频处理应用,还是一个深入学习Eclipse RCP开发的实战案例,涵盖了从基础的UI设计到复杂的音频处理和插件扩展等多个领域。

    EclipseRCP教程

    2. RCP(Rich Client Platform):Eclipse RCP 的核心架构,提供了应用程序的入口、视图管理、事件处理和插件管理机制。 3. Plug-in:Eclipse RCP 的插件机制,允许开发者轻松地开发和集成新的功能模块。 4. View:...

    菜鸟EclipseRCP学习之路

    "菜鸟Eclipse RCP学习之路"这个主题显然针对的是初学者,旨在引导他们逐步掌握如何使用Eclipse RCP进行软件开发。 首先,Eclipse RCP的核心概念是插件(Plugins)。每个插件代表应用程序的一个模块,它们通过OSGI...

    Eclipse RCP开发详解

    Eclipse Rich Client Platform (RCP) 是一个强大的框架,用于构建桌面应用...通过深入学习"**Eclipse RCP开发详解**",你可以掌握构建自定义插件的技巧,从而充分利用这个平台的优势,打造出满足特定需求的应用程序。

    EclipseRcp 例子程序

    1. **插件系统**:Eclipse RCP的核心是其插件模型,它允许通过插件来扩展应用程序的功能。每个插件都有自己的生命周期,可以独立发布和更新。在例子程序中,我们可以看到如何定义插件的元数据(plugin.xml文件),...

    Eclipse Rcp

    最后,Eclipse RCP的发展带来了Java桌面应用程序开发的新希望,它允许开发者利用Eclipse的强大功能和成熟的插件生态,来构建功能丰富、外观一致的客户端应用,同时避免了大量重复的界面开发工作。Eclipse RCP的应用...

    Eclipse RCP(富客户端平台)开发中文语言包_3.6.0.rar

    这个"3.6.0"版本的Eclipse RCP中文语言包是专为那些需要在中文环境下开发Eclipse插件或RCP应用的开发者准备的。 1. **Eclipse RCP介绍** Eclipse RCP的核心理念是模块化和组件化,这使得开发者可以重用已有的功能...

    Eclipse RCP培训.zip

    11. **插件开发**:开发Eclipse RCP应用涉及创建插件项目、定义插件依赖、编写插件XML配置文件,以及实现具体业务逻辑。 12. **调试与测试**:Eclipse RCP提供强大的调试工具,如插件调试器,可以帮助开发者定位和...

    ECLIPSE RCP项目源程序

    1. **插件(Plugins)**:Eclipse RCP基于插件架构,每个功能模块都被封装在单独的插件中,这样可以实现模块化开发,提高代码的复用性和可扩展性。在标签中提到的"ECLIPSE RCP 插件",意味着这个项目可能包含多个...

Global site tag (gtag.js) - Google Analytics