张晓华的博客
2005年,最后一场雪,还是下了,虽然凄凉了一些!
posts - 171, comments - 89, trackbacks - 5, articles - 1
My Links
Home
Contact
Login
文章 分类
Jasmine Road Map
摩卡心情
存档
June, 2008 (15)
August, 2007 (3)
July, 2007 (1)
May, 2007 (15)
April, 2007 (1)
November, 2006 (8)
August, 2006 (3)
July, 2006 (10)
June, 2006 (1)
April, 2006 (1)
March, 2006 (20)
December, 2005 (3)
November, 2005 (8)
October, 2005 (17)
September, 2005 (4)
August, 2005 (15)
June, 2005 (1)
May, 2005 (2)
March, 2005 (1)
February, 2005 (14)
December, 2004 (1)
October, 2004 (5)
September, 2004 (22)
日记 分类
IBM 面试参考
Microsoft 面试参考
>.NET 参考资料
ASP.NET 2.0 QuickStart Tutorial
>J2EE 参考资料
IBM developerWorks 中国:WebSphere
Java官方网站
>Linux & Embed 参考资料
Linux Kernel Archives
Linux网站资源列表
Eclipse插件开发快速入门--和WSAD有关的资料
Posted on Monday, March 27, 2006 8:36 AM
#IBM 面试参考
刚才我在修理自己的汽车,我需要拧下一个螺丝。于是我打开自己的扳手工具包,试图找到合适的扳手。但是那些扳手的型号都不对,因为那个螺丝都属于公制标准的。我只能使用与理想尺寸最相近的扳手。这是一个不好的想法;结果我把那个螺丝弄裂了,只好去买一个专用的工具来下掉它。这个故事的精髓是:
实现特定的事务永远需要使用恰当的工具
。
Eclipse是一个非常流行的Java集成开发环境(IDE),它是NetBeans/SunOne Studio、Jbuilder、和IntelliJ IDEA的强有力的竞争者。Java程序员群体正在迅速地迁移到Eclipse上,因为它是免费的、开放源代码的、质量很好,而且非常容易定制。
本文的内容是如何在Eclipse中编写插件(plugin)。本文的目标读者是哪些人呢?很多Eclipse用户简单地使用IDE而不需要进行定制;很多人会使用他人建立的插件,这些人不是本文的目标读者。有些用户希望定制Eclipse;有些人将为他们公司的雇员开发工具;有些人希望销售与自己的产品相关的工具;还有一些人希望使用其它名称转售预安装了某些工具的Eclipse。这些人组成了本文的目标受众。开始编写Eclipse插件的前提条件是了解如何使用Eclipse和编写Java程序,并且对标准Widget工具包(SWT)有很好的理解。
安装Eclipse
如果你已经使用了Eclipse 3,那么可以跳过这一段落。如果没有安装该软件,你首先需要下载和安装它。你可以简单地从
Eclipse下载页面
下载最新的稳定版本,接着把下载的文件解压到一个文件夹中(例如c:\dev)。在写作本文的时候,这个文件是eclipse-SDK-3.0.1-win32.zip(85MB)。这个过程会建立c:\dev\eclipse文件夹。
请注意,在这个文件夹下已经有一个叫做plugins的文件夹了。你可以快速浏览一下,会发现很多的已经安装好的插件。这是怎么回事呢?因为Eclipse的核心相对较小,几乎每个部分都是一个插件。
架构
Eclipse由一个很小的核心和核心之上的大量插件组成。有些插件仅仅是供其它插件使用的库。其中存在很多你可以利用的工具。所有插件使用的基础库是:
· 标准Widget工具包(SWT):Eclipse中处处使用的图形化组件:按钮,图像、光标、标签等等。布局管理类。通常这个库被用于代替Swing。
· JFace:菜单、工具条、对话框、参数选择、字体、图像、文本文件的类和向导基类。
· 插件开发环境(PDE):辅助数据操作、扩展、建立过程和向导的类。
· Java开发者工具包(JDT):用于编程操作Java代码的类。
上面的每一个类都有自己专有的功能,其中一些还可以单独使用(尽管它们内在地依赖于其它类)。例如,SWT不仅仅只用于插件;它还可以被用于建立非Eclipse的、独立的应用程序。还有一些其它的库没有被列举出来。
图1显示了Eclipse不同层次之间的关系。
图1:分层的类库
安装GEF和Draw2D运行时
在默认情况下,这两个面向对象的库(图形化编辑器框架组件GEF和Draw2D)是没有被安装的。在本文中我们需要利用它们,因此首先需要安装它们。你可以在GEF主页面下载GEF和Draw2D,下载3.0.1或以后版本,把文件保存为GEF-SDK-3.0.1.zip(5.5MB)。把这个文件解压到Eclipse文件夹下(这是包含plugins子文件夹的文件夹)。这两个库自身也是作为插件加进来的。
这些库提供了什么样的功能?它们构成了建立图形化插件的基础。图形化插件通常显示一些对象(例如方框和标签,用线和箭头链接在一起)。这些对象和连接器的绘制都是由Draw2D来处理的。但是绘制过程仅仅是图形化编辑器实现的一半功能。另一半--编辑器命令、工具条、拖放功能、打印--由GEF来完成。
配置PDE选项
安装上述的各种部件之后,下一步就是定制或至少是熟悉插件配置选项。这些选项在菜单窗体 -> 选项的"插件开发"类别下选择。浏览一下插件用到的数以十计的配置选项。你可以特地看一下Target Environment(目标环境)类别。它允许我们选择默认的操作系统、视窗(windowing)系统、CPU架构和语言。
我们感兴趣的还有Plug-in Development(插件开发)透视图(透视图是一组视图参数选择,包括面板、视图、工具条等等,根据不同的事务发生改变,可以把它看出Eclipse中的"模式")。通过选择菜单中的窗口-> 打开透视图 -> 其它,然后在列表中选择"插件开发"就可以看到它了。它与Java透视图相似,但是拥有一个插件视图,可以显示所有检测到的插件。图2显示了如何激活这个透视图,并显示了该透视图。
图2:插件开发透视图
建立一个简单插件
建立插件最简单的办法是使用文件-> 新建->插件项目向导所提供的模板。接着输入一个项目名称(例如"Invokatron")。这是什么意思呢?我们将建立的插件是Invokatron,它是一个供Java代码使用的代码生成图形化编辑器。本文删除了Invokatron的路径,但是很明显这个雄心勃勃的项目直到下次安装时才会完成。
在"下一步"页面上,除了类名之外其它的选项都不变,类名输入invokatron.InvokatronPlugin。在"插件内容"页面上,输入你认为适合的任何信息。在"模板"页面上,选中检查框以激活模板。我们可以在多个模板中进行选择:
· Hello, World
· 简单的XML编辑器
· 多页面编辑器和向导
· 透视图扩展
· 弹出菜单
· 属性页面
· 视图
· 拥有前面的一个或多个数据项的自定义插件
对于本文的示例,我们使用自定义插件模板。选择"多页面编辑器"-"新建文件向导"-"属性"页面。在"下一步"页面输入下面一些值:
"多页面编辑器"页面(图3所示):
· Java程序包名称:invokatron.editor
· 编辑器类名称:InvokatronEditor
· 编辑器辅助类名称:InvokatronEditorContributor
· 编辑器名称:Invokatron Editor
· 文件扩展名:invokatron
图3:"多页面编辑器"设置
"新建向导"页面(图4所示):
· Java程序包名称:invokatron.wizard
· 向导类别ID:Invokatron
· 向导类别名称:Invokatron Wizard
· 向导类名称: InvokatronWizard
· 向导页面类名称:InvokatronWizardPage
· 向导名称:Invokatron Wizard
· 文件扩展名: invokatron
· 初始文件名: MyClass.invokatron
图4:"新建向导"设置
"属性"页面(图5所示):
· Java程序包名称:invokatron.properties
· 属性页面类: InvokatronPropertyPage
· 属性页面名称:Invokatron Properties
· 目标类:org.eclipse.core.resources.IFile
· 文件名过滤器:*.*
图5:"属性"页面设置
这个时候Eclipse生成了大量的文件:
· plugin.xml:描述该插件的主文件。它包含了辅助代码生成、库、插件依赖关系和扩展指向的一些信息。
· build.properties:用于描述建立(build)过程的文件。它主要用于指定需要的库。
· invokatron/*.java:插件类。
· sample.gif:菜单项显示的图标。
plugin.xml文件和build.properties一起被显示在多页面编辑器中。第一个页面("预览")允许你在测试环境中导出和运行该插件。"导出"的意思是通过生成一些代码、接着编译和打包来完善该插件。
查看一下类,你会发现它实际上没有做什么操作。添加菜单选项的代码在哪儿呢?框架组件从plugin.xml文件包含的信息中简单地生成了必要的代码。你可以查看一下这个文件。它的最后一部分包含了一个扩展列表,这是这些类可以插入Eclipse的地方。
上面过程中产生的项目是示例代码的一部分,你可以下载。
运行和调试
你可以在一个特殊的沙盒(sandbox)--运行时工作台(runtime workbench)中测试自己的插件。使用这种方式的时候,即使运行时工作台崩溃了,Eclipse仍然能够工作。通过点击"预览"页面上的"载入运行时工作台"或"在调试模式中载入运行时工作台"链接。第一次运行运行时工作台的时候,会建立eclipse\runtime-workbench-workspace文件夹。它会启动一个新的Eclipse实例,该实例与正常的Eclipse窗口非常相似(除了你的插件可以使用了之外)。
但是你还是首先选择文件 -> 新建 -> 项目菜单和Java项目来建立一个Java项目。这个项目的名称叫做Test。图6显示了带有我们建立的向导和编辑器的运行时工作台。
图6:运行该插件
现在我们看一下Invokatron向导。从菜单文件->新建 -> 其它 可以看到它。查看类别Invokatron向导。选择Invokatron向导,接着点击"下一步"。这个向导会建立一个空的Invokatron文档。在Container(容器)字段中选择Test项目并点击"完成"。一个新的Invokatron编辑器显示出来了。这个编辑器有三个页面:一个文本编辑页面、一个属性页面(字体选择)和一个预览页面(排序的、用选择的字体绘制的)。
支持文件
你可以在很多位置指定自己的插件在编译和运行时所需要的文件。这使我们这些Eclipse用户感到很困惑。我们试图澄清这些问题。
支持文件分为三类:
1、来自插件代码自身的类和资源。它们在建立过程中就会被打包为一个或多个.jar文件。
2、编译和运行插件所需要的类和资源。它们都应该被包含在类路径中,并且我们必须指明在导出的时候需要复制这些文件。
3、与插件一起包含进来的文件(例如readme.txt文件)。它们不在类路径中。
在插件编辑器的"建立(Build)"页面中可以设置编译环境。此外,这些设置会映射为build.properties文件。在第一次看到这个页面的时候我们可能会感到困惑,因为它有四个分开的部分:
· 运行时信息:列出了生成的库文件(第1类文件)。通常,在一个库文件中包含了插件所需要的所有类,但是你可能希望把它分割成更小的块。
· Source Build:列出应该被包含到.jar文件中的类文件(第1类文件的输入)
· Binary Build:列出应该被复制到导出的插件文件夹或档案文件中的文件(第3类文件)。上面的选择框被选中的时候,生成的文件会被自动地包含进来。
· 精确的类路径项:列出了在编译时刻你的应用程序所需要的.jar文件(第2类文件)。这些文件会被自动地添加到你的项目库中。我们通常容易犯的一个错误是在"属性"页面中的"Java建立路径"中和这个列表中同时包含了某个.jar文件。
如果你的插件使用了某个特殊的库,就必须确保把这个库添加到项目中。接着把它添加到Source Build和精确的类路径项中。
插件编辑器的其它一些重要的属性页面有:
· 依赖关系(Dependencies):如果你的插件依赖于其它的插件,你就必须在这儿指定。
· 运行时(Runtime):在这个属性页面中你可以为插件指定特殊行为。
导出
插件编码完成了,并且在工作台中测试过之后,就该准备部署到"真实的" Eclipse环境中了。要实现这个步骤,需要返回"预览"页面并点击"导出向导"链接。"导出选项"对话框允许你从三种部署类型中选择一个:
· 目录结构:把文件部署到一个目录中供Eclipse立即使用。接着你可以把目标位置(Destination)设置为本地的Eclipse文件夹(例如c:\dev\eclipse),直接地使用插件。
· 单个.zip文件:相同的文件夹会被压缩为一个.zip文件,准备好发布给客户。接下来,你必须把这个文件解压到Eclipse最上层的文件夹来安装插件。你必须在文件名字段中指定.zip文件名。
· 更新站点使用的独立.jar文档文件:产生一个与Eclipse用于自动更新系统相兼容的.jar文件。
你点击"完成"之后,会生成我们选中的输出。如果你把输出作为目录结构,就必须重新启动Eclipse以激活该插件。
查看示例和源代码
关于如何编写Eclipse插件的最好信息来源是Eclipse所提供的插件示例集。如果我只能选择一个辅助自己编写插件的信息来源,我一定选择它。
如果你要下载这些插件,只需要访问Eclipse下载页面并选择最新的版本。接着看这个页面的中间,有一个"示例插件",请下载这些.zip文件(小于2MB)。把这些文件解压到Eclipse所在的文件夹(例如c:\dev)中。这个步骤会在eclipse/features和eclipse/plugins下建立很多文件夹。这些示例的源代码在C:\dev\eclipse\plugins文件夹的大量.zip文件中,如下所示:
示例
代码位置
SWT示例
在org.eclipse.sdk.examples.source_3.0.1\src...文件夹下
独立的
· 地址薄
· 剪贴板
· 文件查看器
· Hello World
· 悬浮帮助
· 图像分析器
· Java语法查看器
· 文本编辑器
...\org.eclipse.swt.examples_3.0.0\swtexamplessrc.zip 与工作台集成的
· 浏览器
...\org.eclipse.swt.examples.browser_3.0.0\ browserexamplesrc.zip
· 控件
...\org.eclipse.swt.examples.controls_3.0.0\controlssrc.zip
· SWT载入程序
...\org.eclipse.swt.examples.launcher_3.0.0\launchersrc.zip
· 布局
...\org.eclipse.swt.examples.layouts_3.0.0\layoutssrc.zip
· 绘图
...\org.eclipse.swt.examples.paint_3.0.0\paintsrc.zip
· OLE
特殊文件夹:
org.eclipse.sdk.examples.source.win32.win32.x86_3.0.1\ src\org.eclipse.swt.examples.ole.win32_3.0.0\ olewin32src.zip
工作台示例
· Java编辑器
...\org.eclipse.ui.examples.javaeditor_3.0.0\ javaeditorexamplesrc.zip
· 模板编辑器
...\org.eclipse.ui.examples.javaeditor_3.0.0\ templateeditorexamplesrc.zip
· 多页面编辑器
...\org.eclipse.ui.examples.multipageeditor_2.1.0<\ multipageeditorsrc.zip
· 属性表
...\org.eclipse.ui.examples.propertysheet_2.1.0\ propertysheetsrc.zip
· Readme工具
...\org.eclipse.ui.examples.readmetool_2.1.0\readmetoolsrc.zip
帮助示例
特殊文件夹:
org.eclipse.help.examples.ex1_3.0.0(没有Java文件;HTML在doc.zip之中)
Team示例
· 知识库提供程序
· 同步共享
...\org.eclipse.team.examples.filesystem_3.0.0\ teamfilesystemsrc.zip
文件比较示例
· 结构比较
...\org.eclipse.compare.examples_3.0.0\ compareexamplessrc.zip
· XML比较
...\org.eclipse.compare.examples.xml_3.0.0\ xmlcompareexamplessrc.zip
还存在一些GEF和Draw2D插件的有用示例。你可以访问GEF页面并下载最新版本。在版本发布页面中间有"GEF示例",请下载该.zip文件。在写作本文的时候,该文件是GEF-examples-3.0.1.zip(0.5MB)。把这个文件解压到Eclipse所在的文件夹中。你将看到下面两个示例:
示例
代码位置
· 逻辑图表示例
org.eclipse.gef.examples.source_3.0.1\src\ org.eclipse.gef.examples.logic_3.0.0\logicsrc.zip
· 流图表示例
org.eclipse.gef.examples.source_3.0.1\src\ org.eclipse.gef.examples.flow_3.0.1\flowsrc.zip
查找插件开发的信息
你首先查看的位置应该是本文前面部分中的示例。其次还有帮助系统,它的质量也非常高。相关的内容还有:
· 平台插件开发
· JTD插件开发
· PDE指导
· Draw2D开发者指导
· GEF开发者指导
结论
现在你已经有了建立Eclipse图形化插件的足够信息了。有了这么多类库的帮助,只有你的想象力会限制你的作为了。其秘诀在于你要知道自己能够使用那些工具,并且使用正确的工具完成适当的工作。
Feedback
#
re: Eclipse插件开发快速入门--和WSAD有关的资料
4/5/2007 8:07 AM by
hh
IBM 的主考管,有些都是狗屁。
基本不具体主考管的素质。对前来面试人员竞然出口相辱,还在讲前来面试人员素质不高
敢问,在严格要求别人同时,自身素质是否应该提高!!!
Post Comment
Title
Name
Url
Comment
Enter the code you see:
Remember Me
Powered by:
加拿大博客空间
帮助文档
博客资源
新博客列表
申请免费博客
最佳中文博客
Copyright © 张晓华