您好,欢迎来到欧得旅游网。
搜索
您的当前位置:首页Eclipse插件开发系列

Eclipse插件开发系列

来源:欧得旅游网
 — 图书推荐 — CSDN - 文档中心 - Java < td> 标题 Eclipse插件开发系列(0):Java Application开发的崛起 glchengang(原作) 关键字 eclipse 插件开发 Java算法——图算法(...垃圾收集STRUTS技术揭密及WEB...Java手机/PDA程序设计... 作者:陈刚,桂林人,97年毕业于广西师范大学数学系,暂于IBM中国研究中心以外包人员身份从事软件开发(2004.2-?),专注基于java平台的软件开发。 email: glchengang@hotmail.com blog: glchengang.yeah.net 前言:补一篇Eclipse插件开发的简介。 用JAVA的AWT或SWING来开发过Application(胖客户端的应用程序)的程序员,都有过非常痛苦的经历。 — 人才招聘 — 笔者就曾在3年前用记事本+JDK开发过一个Applet(也要用到Swing与Application类似),其界面开发的艰难与界面的丑陋仍历历在目,笔者也用过一些用SWING写的应用程序,除了Jbuilder和一些大公司写的少数几个软件还过得去以外,其界面基本只能用丑陋与呆板来形容,JAVA在Application方面的失败已是不争的事实。 然而当Eclipse和SWT渐渐闻名于江湖,开发大型的美观的性能优良的JAVA Application程序已成为现实。看过Eclipse界面的人绝对想不到Eclipse是用纯JAVA写的吧,在Eclipse3的里程碑版M8,界面更是华丽无比,让人炫目,看起来就象是苹果电脑上的软件一样(如下图)。比较Jbuilder的还略带方头方脑的界面风格,Eclipse已经在界面美观程序上超出Jbuilder很多了。因为Eclipse没有沿用JAVA的AWT、SWING,而是自己开发了一TOM互联网事业集团...深圳市智岛软件科...北京飞天诚信科技...北京云网公司(北京...北京开创明天科技...北京三维力控科技...北京东西电子研究...阿里巴巴(中国)...大连大有吴涛易语... 套界面API包:SWT、Jface,想必很多人都听说过了。

— 培训信息 — 北京维新科技培训...中国软件(Oracle认...天盈隆网络技术培...美国Softtech公司...中国思科培训网(C...UML软件工程组织(...中国UNIX用户协会...东北大学计算机培...WWW.JAVASP.NET(电...

用过Eclipse的人很多,但大多数人还只是用于开发J2EE,其实Eclipse还有一个重要的开发方向:Eclipse的插件开发。Eclipse是在面向对象方面做得很出色的一个编辑器,注意Eclipse只是一个用JAVA写的编辑器而已,它可以变化成其它的东西,如:J2EE开发工具、C++开发工具等等,这一切功能的扩展皆来源于其插件机制。你只要编写相应的插件,Eclipse就可以变成你想要的功能,包括变成一个企业管理信息系统,没错,它的确可以。请看如下界面(运行于Eclipse2.0版)。这是一个正在开发中的信息系统类软件。

怎么样,以上的图片让你动心了吗?用Eclipse插件来开发的系统,界面美观且界面响应速度快(Eclipse重写了JAVA的画点等绘画函数),而且可以继承Eclipse的原来框架,如菜单对话框、树型框、事件机制、停泊窗等等,这使得开发速度得到很大提高,你不必须要象SWING那样从头到尾来构建一个系统,你所要做的是继承继承再继承。这似乎也提出了一个新的开发概念,我们不是继承那个类,我们是继承一个完整的系统程序框架。如果你正在开发JAVA应用程序,我认为使用Eclipse插件方式来开发将是当仁不让的选择。 让SWING成为过去吧,我只要Eclipse和SWT,因为它真的很美很快很好。

--------------------往来邮件--------------------------

刘海波:您好,看了您再csdn中写的一些文章,能否问一些问题:您写的是web还是什么啊?您再eclipse的ide中浏览数据库是用的什么插件啊?您界面开发用的是什么插件啊?我想粗略知道一些您作的那个信息系统类软件的一些信息(主要是用什么插件和开发方式等)我用eclipse做过web,hibrnate+struts的,cvs作版本管理,谢谢,谢谢!

答:

1、这个项目不是WEB方式的,它是一个依附于Eclipse平台开发的应用程序,就象VB写的那种.

2、我们不是在ecilpse中浏览数据库,在初期用Mysql做数据库中我用Mysql Control Center,后来改成DB2后,我用WASD来浏览. 不过在hibernate中国网站有一个写中国人自己写的读写映象文件的插件,可以浏览数据库。3、我们用hibernate来要数据库映象层.CVS来做版本管理。

4、主要是用到SWT、JFace,界面开发可以不用其它插件了。我用到一个叫SWT Designer的插件来做帮助我做界面初期的设计开发,但它不能全部完成界面的工作(界面复杂后,它极其不稳定,很容易因内存不足导致Eclipse退出),还是要手式修改代码。我用SWT Designer做初步界面,再将其代码复制到项目中,然后手工调。 5、关于图像部份是用了draw2d,还有GEF(象那个鹰眼图,右边的各个图象元素是可拖动的)。

不知我回答完你象知道的内容了吗。

首 页| 第二书店| 论 坛| 专 题|精 华|SUN|IBM|微 软|微 创|书 社| 《程序员》|调 查|聊 天|黄 页csdn.net 新 闻| Donews| 文 档| FAQ|专 栏|人 才|培 训|移 动|人 邮|清 华| 《开发高手》|搜 索|软 件|会 员 — 图书推荐 — CSDN - 文档中心 - Java < td> 标题 Eclipse插件开发系列(1):Eclipse及其语言包的下载与安装 glchengang(原作) 关键字 eclipse 中文包 语言包 安装 Java算法——图算法(...垃圾收集STRUTS技术揭密及blog: glchengang.yeah.net WEB...Java手机/PDA程序设计... 作者:陈刚,桂林人,97年毕业于广西师范大学数学系,暂于IBM中国研究中心以外包人员身份从事软件开发(2004.2-?),专注基于java平台的软件开发。 email: glchengang@hotmail.com 下载 — 人才招聘 — Eclipse及其语言包下载 下载地址:http://www.eclipse.org/downloads/ 。有各种平台版本的,我们选windows平台的下,具体如下: Eclipse :Eclipse SDK for windows 版 本:2.1.3 文件名:eclipse-SDK-2.1.3-win32.zip 语言包:Language Pack 版 本:2.1.2_Translations 文件名:eclipse2.1.2.1-SDK-win32-LanguagePackFeature.zip 注:虽然语言包是for 2.1.2版的但在Eclipse2.1.3版一样可以使用,而且不会影响Eclipse的使用稳定性,因为语言包都是一些将界面文字翻译成各国文字的文本文件,并不涉及到程序的改动。不过我试过这个语言包在Eclipse M3.X下无法试用(只能将个别词翻译过来),看来Eclilpse 3更动还是挺大的。 安装 Eclipse的安装 将下载的压缩包解压,然后将整个目录移动到你想要的位置。我是放到c:\\ ,为了已本教程同步,建议您选择本— 培训信息 — 文相同的放置路径,目录结构如下图: TOM互联网事业集团...深圳市智岛软件科...北京飞天诚信科技...北京云网公司(北京...北京开创明天科技...北京三维力控科技...北京东西电子研究...阿里巴巴(中国)...大连大有吴涛易语... 北京维新科技培训...中国软件(Oracle认...天盈隆网络技术培...美国Softtech公司...中国思科培训网(C...UML软件工程组织(...中国UNIX用户协会...东北大学计算机培...WWW.JAVASP.NET(电...

让我来的试运行一下,双击c:\\eclipse2.1.3\\eclipse目录下的eclipse.exe文件启动eclipse,启动后的界面如下图:

其语言包安装

第一步:解压缩。首先关掉Eclipse,然后将下载的语言压缩包解压,然后给这个文件夹取个稍简洁的目录名(我取名为:eclipse2.1.2.1Language)。然后将整个目录复制到C:\\eclipse2.1.3\\eclipse下复制完后的整个Eclipse目录结构图如下

第二步:建立link文件。在C:\\eclipse2.1.3\\eclipse下新建一个文件夹links,然后links目录中新建一个文本文件,文件名和扩展名任取(我取名叫language.link)。然后在文件中加一行文字: path=C:\\\\eclipse2.1.3\\\\eclipse\\\\eclipse2.1.2.1Language 注意:路径分隔符由两个反斜杠组成。

好了,我们现在可以重新启动Eclipse了,Eclipse启动的时候会自动查找links中的各文本文件,并将其中指向的插件(plugins)加载到自身的插件系统中。第一次启动时Ecipse提示“检测到更改”,点击“完成”,然后重启Eclipse即可。启动后的界面如下。

点击菜单:帮助->帮助内容。如下图,我们发现连帮助都翻译成中文的了。 作者相关文章: • Eclipse插件开发系列(4):对话框Dialog(原作) • Eclipse插件开发系列(0):Java Application开发的崛起(原作) • Eclipse插件开发系列(3):Hello World插件(从无到有版)(原作) — 图书推荐 — CSDN - 文档中心 - Java < td> 标题 Eclipse插件开发系列(3):Hello World插件(从无到有版) glchengang(原作) 关键字 eclipse 插件 plugin.xml 作者:陈刚,桂林人,97年毕业于广西师范大学数学系,暂于IBM中国研究中心以外包人员身份从事软件开发(2004.2-?),专注基于java平台的软件开发。 email: glchengang@hotmail.com blog: glchengang.yeah.net

Java算法——图算法(...垃圾收集STRUTS技术揭密及WEB...Java手机/PDA程序设计... 一、新建项目。

按照上一篇的新建插件项目的方法,新建一个名为myplugin2的插件项目,注意:在最后一步选择“建立白空插件项目”,除此,其它都一样。截图如下:

— 人才招聘 —

附注:发现又有上一篇的错误,中文版的Eclipse在新建项目时,比较容易有“由于类路径错误(不完整或涉及循环),所以未构建项目。”这类的错误。好办,因为中文包只是一些文本文件,对开发没用,用前面一篇所说的方法删除那些对中文包的引用(前面字符为ECLIPSE_HOME_LANGUAGE_LINK…….),如下图:

TOM互联网事业集团...深圳市智岛软件科...北京飞天诚信科技...北京云网公司(北京...北京开创明天科技...北京三维力控科技...北京东西电子研究...阿里巴巴(中国)...大连大有吴涛易语...

二、插件开发的几个关注点。

— 培训信息 —

a) 库引用。如上附注所说库引用是在建立插件初期要设置好的地方,不过一经设置基本不需要再改变。功能

类似于JDK的classpath或者Jbuilder里的库引用。

北京维新科技培训... b) 插件JAVA源代码。今后主要的工作,狂写代码吧。主要都是一些*.JAVA文件。

中国软件(Oracle认... c) 项目根目录下的plugin.xml文件。这个文件是插件的入口文件,Eclipse根据这个文件中的设置来加载插件。

天盈隆网络技术培...美国Softtech公司...中国思科培训网(C...UML软件工程组织(...中国UNIX用户协会...东北大学计算机培...WWW.JAVASP.NET(电... 代码写完了,要让Eclipse加载你的代码就要在这里面做些手脚了,这些手脚有个术语叫“设置扩展点”。象在Eclipse的加个主菜单、视图、按钮,都在这个文件里面做不同的扩展点,后面的教程会看到这个文件的使用。要人会说那我开发一个系统会有很多的菜单和按钮,那是不是都要设置这个文件呢?回答:不必,这里面只设置主要和Eclipse接壤的扩展点,其它系统里的菜单按钮就没必要了,今后会讲到。

三、设置库引用。

在删除了上面附注所说的无用且出错的引用,接下来我们要加入一些开发插件要用到的库。是那些呢?呵呵,前面我们还是用向导建立了一个helloword插件吗,参考它的就行了。如下图:

手工加可真累,这里有个好办法。把目录C:\\eclipse2.1.3\\eclipse\\workspace\\myplugin\\下的.classpath文件拷贝到C:\\eclipse2.1.3\\eclipse\\workspace\\myplugin2目录就行了。所有关于库引用的设置全保存在这个文件中。最后别忘记刷新一下项目,如下图所示:

附注说明:

有些文章在这里是用“文件>导入...>外部插件和段”来提供插件开发支持库的引用,本文不采用这种方法,因为这种会将支持库(也是一种插件项目)会新建很多相应项目,让开发界面显得很乱。还不如本文所用的建立库引用变量的方法方便简洁。

四、写源代码。

a) 新建一个包。方法如下图所示。

包名如下:

结果如下:

b) 然后将上一章的myplugin的SampleAction直接移动本项目myplugin2中就可以了(Eclipse支持鼠标拖拉操做)。

c) 本文SampleAction做了一些小修改(删除了注释和构造函数)。代码如下:

public class SampleAction implements IWorkbenchWindowActionDelegate { private IWorkbenchWindow window; public void run(IAction action) { //这是打开一个提示窗口

MessageDialog.openInformation(window.getShell(), \"myplugin 插件\这是手工做的插件\"); }

public void selectionChanged(IAction action, ISelection selection) {} public void dispose() {}

public void init(IWorkbenchWindow window) { this.window = window; } }

五、在plugin.xml文件中加入扩展点的代码。

库将本项目plugin.xml文件打开,并转到其源代码视图。将如下代码加入到“”之后。(这些xml还是从上一章的项目搬过来的

label=\"样本操作\" icon=\"icons/sample.gif\"

class=\"com.glchengang.SampleAction\" tooltip=\"Hello,Eclipse world\"

menubarPath=\"sampleMenu/sampleGroup\" toolbarPath=\"sampleGroup\"

id=\"com.glchengang.SampleAction\"> label=\"样本操作2\" icon=\"icons/sample.gif\"

class=\"com.glchengang.SampleAction\" tooltip=\"Hello,Eclipse world2\"

menubarPath=\"sampleMenu/sampleGroup2\" toolbarPath=\"sampleGroup2\"

id=\"com.glchengang.SampleAction2\">

说明:

a) requires域中定义了该插件所要使用的依赖插件,随着开发的不断深入,这里将会填加更多的引用,现在两项就够了

b) 在extension中说明了要们要扩展org.eclipse.ui. actionSets扩展点, …..表示一个action组(按钮、菜单)。还有其它类型的扩展点,如org.eclipse.ui.views是视图的扩展点,org.eclipse.ui.editors是编辑器的扩展点,各种扩展点在eclipse的帮助中有详细的说明。label是显示的名称。id是唯一标识符,只要保证在plugin.xml文件不存在重复的id就行了,这里建议以包路径和类名的组合来做为id。 c)

….表示菜单 separator标签是一个结束符,它可以对菜单分组

d) ....表示按钮。Icon是图片的路径,绝对路径是什么大家实际对照就知道了,如果eclipse找不到这个图片,默认是一个红色实心小框。Class是这个按钮所对应的类,注意把包名写全,这样比较规范些。menubarPath表示把这个action做成一个菜单放在上前

….定义的主菜单下。toolbarPath表示把这个action做成一个工具栏按钮。在这里为了方便比较我将这个action的设置复制成了两份,大家可以自己改改其中的设置,然后看看实际效果。

e) 各详细的plugin.xml大家可以参考eclipse自带的帮助文件,这里仅做一个入门性的说明。

六、按钮前面一章所说的方法运行插件(运行之前注意将原来那个向导做的myplugin项目关闭掉,关闭方法:鼠标右键点击此项目->弹出菜单中选择关闭项目)。插件效果如下图

参考文档

http://bsd.huangdong.com/dev/eclipseplugin/startup.html

作者相关文章:

• Eclipse插件开发系列(4):对话框Dialog(原作)

• Eclipse插件开发系列(0):Java Application开发的崛起(原作) • Eclipse插件开发系列(1):Eclipse及其语言包的下载与安装(原作)

— 图书推荐 —

CSDN - 文档中心 - Java < td> 标题 Eclipse插件开发系列(4):对话框Dialog glchengang(原作) 关键字 Eclipse 对话框 Dialog TitleAreaDialog Java算法——图算法(...垃圾收集STRUTS技术揭密及WEB...Java手机/PDA程序设计...作者:陈刚,桂林人,97年毕业于广西师范大学数学系,暂于IBM中国研究中心以外包人员身份从事软件开发(2004.2-?),专注基于java平台的软件开发。 email: glchengang@hotmail.com blog: glchengang.yeah.net 一、最简单的Dialog。 在上一章中我们的Hello World是调用了SWT中已写好的一个对话框,如果我们要自己写一个对话框怎么办呢。很简单只需要继承JFace中的Dialog类,然后重写相应的方法就可以了。代码如下:

— 人才招聘 —

TOM互联网事业集团...深圳市智岛软件科...北京飞天诚信科技...北京云网公司(北京...北京开创明天科技...北京三维力控科技...北京东西电子研究...阿里巴巴(中国)...大连大有吴涛易语... — 培训信息 — 北京维新科技培训...中国软件(Oracle认...天盈隆网络技术培...美国Softtech公司...中国思科培训网(C...UML软件工程组织(...中国UNIX用户协会...东北大学计算机培...WWW.JAVASP.NET(电... import org.eclipse.jface.dialogs.Dialog; //注意这个是jface的Dialog,不是swt的Dialog import org.eclipse.swt.SWT;

import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text;

public class DialogSample extends Dialog {

/**

* 构造函数

* 注意:其范围由protected改为public,否则包外的类无法调用

*/

public DialogSample(Shell parentShell) { super(parentShell); }

/**

* 在这个方法里构建Dialog中的界面内容 */

protected Control createDialogArea(Composite parent) { getShell().setText(\"标题\"); //设置Dialog的标头

Text text = new Text(parent, SWT.BORDER); //设置一个Text控件 text.setText(\"我爱JAVA\"); //设置text中的内容 return parent;

}

/**

* 重载这个方法可以改变窗口的默认式样 * SWT.RESIZE:窗口可以拖动边框改变大小 * SWT.MAX: 窗口可以最大化 */

protected int getShellStyle() {

return super.getShellStyle() | SWT.RESIZE | SWT.MAX; }

}

这里出现了几个新的变量类型,在此简单解释如下:

• Composite :本文中翻译成面板。任何SWT/JFace的界面控件都必须建立在某个面板上面,如上面的new Text(parent, SWT.BORDER),就是将文本框建立在参数传入的面板parent上。面板还能嵌套面板,在建立一个图形界面时常将各个面板层层叠叠的排放在一起。Composite 将是界面设计中使用最平凡的一个类。

• Control 是Composite 的父类,而Shell 是Composite 的一个子类。用到的场合不是太多,也没太必要了解很清其本质含义。要依着我的开发经验的理解Control (控制):如上面例程中createDialogArea方法就要返回一个Control 表示这些界面元素是由谁主控,或者是谁是主面板包含住了所有控件(我自己猜的)。Shell表示一个界面的外壳,它能得到比Composite 更多的功能。

• 希望通过如下继承关系图有助于您理解Control、Composite、Shell三者间的关系。

然后将上一章的SampleAction.java中的run方法改写如下:

public void run(IAction action) { /*

* 也可以new DialogSample(null); 传一个NULL这时是单开一个窗口 * 要看两者的区别,注意window操作系统任务条上的变化。

* 一般来说都应该传一个Shell类型的参数,至少这个Shell来自何处都一样。 */

Dialog dialog = new DialogSample(window.getShell()); dialog.open(); }

然后用上一单运行插件的方法跑一下看。结果界面如下:

二、如何设置与取得Dialog中的数据。

在我们开发中我们常需要设置对话框一些初值,另外Dialog点\"确定\"退出后,我们还想取得Text框的值。怎么做呢?我们可以在Dialog类中建立一个字符型的类变量来保存值。请看如下代码:

public class DialogSample extends Dialog { //类变量,设一个默认值

private String textValue = \"我爱JAVA\";

//将Text设为类变量,否则buttonPressed方法无法访问 private Text text; .......

protected Control createDialogArea(Composite parent) { .........

text = new Text(parent, SWT.BORDER); //将text的定义Text去掉 text.setText(textValue); //改成变量 ......... } ........

/**

* Dialog点击按钮时执行的方法 */

protected void buttonPressed(int buttonId) { //如果是点了OK按钮,则将值设置回类变量 if (buttonId == IDialogConstants.OK_ID) textValue = text.getText(); super.buttonPressed(buttonId); }

public String getTextValue() { //增加两个类变量的设值取值方法 return textValue; }

public void setTextValue(String string) { textValue = string;

} }

然后将SampleAction改为如下。

DialogSample dialog = new DialogSample(null); dialog.setTextValue(\"我也爱Eclipse\"); if (dialog.open() == Window.OK) {

System.out.println(\"新的值是:\" + dialog.getTextValue()); }

这时我们发现dialog启动后Text的值变成了“我也爱Eclipse”,然后我们在Dialog重新改一下Text框的值,点OK按钮,在原“控制台”窗口打印出了Dialog中新修改的字符。

三、如何增加按钮。

默认的Dialog只有两个按钮,有时候我们可能增加一些按钮。有两种方法。

1、方法一(稍复杂)。下面增加一个退出按钮,只须在原有DialogSample 类中重载父类Dialog的两个方法,这种方法可以调整三个按钮的前后位置并可以修改原来默认两个按钮(确定、取消)的设定(如文字、id值等)。

/**

* 重载默认的按钮建立方法,让其在本地的执行失效 */

protected Button createButton(Composite parent, int buttonId, String buttonText, boolean defaultButton) { return null; } /**

* 利用父类的createButton方法建立按钮

*/

protected void initializeBounds() { /*

* 参数1:取得放按钮的面板,

* 参数2:定交按钮的id值,id值的作用见上面的buttonPressed方法 * 参数3:按钮上的文字

* 参数4:是否为Dialog的默认按钮 */

super.createButton((Composite) this.getButtonBar(), IDialogConstants.CANCEL_ID, \"退出\ super.createButton((Composite) this.getButtonBar(), IDialogConstants.OK_ID, \"确定\ super.createButton((Composite) this.getButtonBar(), IDialogConstants.CANCEL_ID, \"取消\ super.initializeBounds(); }

2、方法二(简单)。就重载一个父类函数,在原来两个按钮后加上一个“退出”按钮,但这个方法就无法调整三个按钮的位置了。

protected void initializeBounds() {

super.createButton((Composite) this.getButtonBar(), IDialogConstants.CANCEL_ID, \"退出\ super.initializeBounds(); }

四、带提示栏的对话框。如下图

很简单将继承类从Dialog改为TitleAreaDialog 就行了。如下:

public class DialogSample extends TitleAreaDialog { ....... }

当然这还不够,我们还要对输入的值进行有效性检查,并根据检查判断是否要提示用户你的输入有误。

• 在这里我们加一个文本框修改的监听事件。

text.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { if (text.getText().equals(\"123\")) { setErrorMessage(\"你不能输入123\");

getButton(IDialogConstants.OK_ID).setEnabled(false); //让OK按钮的置灰失效 } else {

setErrorMessage(null);

getButton(IDialogConstants.OK_ID).setEnabled(true); } }

});

• •

很多情况下,还有一种限定文本框只能输入数字的方法。

text.addVerifyListener(new VerifyListener() { public void verifyText(VerifyEvent e) { e.doit = \"01234567\".indexOf(e.text) >= 0; } });

源程序打包下载:myplugin2.rar

下一章预告:5.SWT的布局管理器

后记:这一章写了一个星期,平时工作很忙,写得真够累的,不知道对大家有没有帮助。有人开始在用Eclipse做插件开发了吗?还是在仅仅限于用Eclipse来写JSP吗?这一系列文章希望得到大家的反馈:太简单?太粗略?太难了?还想了解那些方面的?希望直接来信何在文章下跟帖。

作者相关文章:

• Eclipse插件开发系列(0):Java Application开发的崛起(原作) • Eclipse插件开发系列(3):Hello World插件(从无到有版)(原作) • Eclipse插件开发系列(1):Eclipse及其语言包的下载与安装(原作)

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- ovod.cn 版权所有 湘ICP备2023023988号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务