首页>参考读物>计算机科学与技术>综合

Eclipse插件开发(原书第3版)
作者 : (美)Eric Clayberg; Dan Rubel 著
译者 : 陈沛 等译
出版日期 : 2010-05-18
ISBN : 978-7-111-30336-7
定价 : 85.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 573
开本 : 16
原书名 : Eclipse Plug-Ins, 3E
原出版社: Pearson Education Asia
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书是一本由两位长期从事Java商业软件开发的技术专家编写的,关于开发Eclipse商业插件的书籍。本书主要介绍了开发Eclipse商业插件的完整过程,并从标准窗口小部件工具集、命令与操作、视图、透视图、实现帮助、国际化等方面对创建Eclipse商业插件进行了细节描述。
本书既包含了开发Eclipse插件的基础理论,也涵盖了大量关于Eclipse插件开发的细节。本书不仅适用于Eclipse插件开发的初学者,对于Eclipse商业软件开发人员也有很高的参考价值。

图书特色

Eclipse插件开发(原书第3版)
(美)  Eric Clayberg Dan Rubel 著
陈 沛 等译

创建商业质量的插件意味着要比集成至Eclipse的最小要求做得更多、更远。它意味着需要处理商业版本 “得体与优雅”所要求的所有细节。本书包含了插件开发的全过程,包括达到最高质量所必需的所有额外步骤。
本书是全球畅销书,而作者完全重写了第3版以体现Eclipse 3.4各项强大的新功能。业界领先的Eclipse专家Eric Clayberg和Dan Rubel展示了插件开发所有细节和实践经验,并对开发者很有可能遇到的问题给出有针对性的、经过实践证明的解决方案。
本书已经完全更新了所有代码示例、相关API列表、图标和屏幕截图以体现Eclipse 3.4 API和最新的Java语法。此外,Clayberg和Rubel已经完全更新了广大受欢迎的Favorite用例,重新编写了大部分内容和代码。作者慎重地展开对已有Eclipse功能(比如视图和编辑器)的附加新功能的讨论,并详细解释了新的功能(如命令、GEF和PDE构建)。

本书主要内容
完整包含了Eclipse的新内容。
阐述了强大的Eclipse命令框架。该命令框架取代较老的Eclipse操作框架。
给出关于通过视图和编辑器使用命令的相关讨论。
介绍了Mylyn。它是一个降低信息过载和减轻多任务复杂度的专注于任务的接口。
包含关于图形编辑框架(Graphical Editing Framework,GEF)的全新的一章。GEF可以用于创建动态的、交互的图形用户界面元素。
带领你浏览PDE构建过程的每一个步骤。
展示如何使用p2创建更新站点。使用p2代替较老的更新管理器。

本书适用于对扩展Eclipse平台、Rational软件开发平台或支持Eclipse插件的其他平台感兴趣的有经验的开发者。

作者简介
Eric Clayberg 是Instantiations公司产品开发部高级副总裁。Eric是一位具有丰富经验的软件技术专家、产品开发人员、企业家和具有超过17年商业软件开发经验的项目经理。他拥有麻省理工学院的理学学士学位、哈佛大学的MBA学位。他是两家成功的软件公司ObjectShare和Instantiations的共同创始人之一。
Dan Rubel Instantiations公司的首席技术执行官。他是一名成功的商人,也是面向对象技术方面的设计与应用专家。他具有十五年以上的商业软件开发经验。他拥有Bucknell的理学学士学位。他是Instantiations公司的创始人之一。
Instantiations是IBM高级商业伙伴,为Eclipse和IBM的VisualAge、WebSphere和Rational产品系列开发了许多商业附加软件。

图书前言

1999年末,当Eclipse初次出现在我们面前时,我们被IBM想要解决的问题的重要性触动了。IBM打算将其所有开发环境整合于一个单一代码库之上。当时,IBM正在使用一种技术融合,它融合了C/C++、Java和Smalltalk。
  许多最重要的IBM开发工具,实际上均采用Smalltalk语言编写。Smalltalk是一种适用于创建复杂开发工具的编程语言,但它在与诸如Java之类的语言的竞争中,很快便丧失了一部分市场份额。IBM拥有世界上最多的Smalltalk开发者,然而,在IBM外部,Smalltalk并没有获得广泛的行业支持。同时,也几乎没有能够开发基于Smalltalk的各种附加软件的合格独立软件厂商(Independent Software Vendor,ISV)。
  同时,Java也提供丰富的应用程序编程接口(Application Programming Interface,API)来用于开发最新的基于Web的企业应用。更重要的是,Java是一种面向对象(Object-oriented,OO)的语言,这就意味着IBM那些高水平的面向对象开发人员可以重新发挥作用。这些为数众多的开发人员是在多年的基于Smalltalk开发各种工具过程中所培养起来的。实际上,IBM VisualAge Smalltalk和VisualAge Java(VisualAge Smalltalk是VisualAge家族的第一个产品,VisualAge Java也使用了该品牌)开发环境是由杰出的国际对象技术组织(Object Technology International,OTI)所开发的。IBM将该组织的主要目标定位于创建一个基于Java的高可扩展性集成开发环境。Eclipse就这样诞生了。
  OTI可以利用其高水平的面向对象的开发经验来开发一个具有无比强大功能、适应性和可扩展性的IDE。该组织可以重复利用众多的功能,在过去的二十年里,这些功能使得那些基于Smalltalk的IDE如此之流行。这些功能的重复利用也将IDE(集成开发环境)开发技能向前推进了一个数量级。
  Java世界从未见过如此强大、如此引人注意的Eclipse。但它就这样诞生了,和微软的.NET一道成为世界上最好的开发环境。这也使得Eclipse成为开发者努力扩大其作品使用范围的最好的平台。Eclipse是完全免费和开源的,这一事实也是很令人惊喜。这个只要有计算机就能获取的开放的、可扩展的IDE,为潜在的工具开发者提供了强大的推动力。
  Eclipse的这些特性对于我们来说也是如此。在Instantiations和早期的ObjectShare,我们花费了十几年的时间关注于为不同的IDE创建附加工具。在那时,我们已经开始为Digitalk的Smalltalk/V开发附加软件,再转到为IBM的VisualAge Smalltalk,最终为IBM的VisualAge Java(包括曾得奖的VA Assist产品和世界上最早的重构工具之一—jFactor)开发各种工具。但这些插件大多不具有良好的格式,当然,也没有较好的标准化。小范围内的共享(如VisualBasic)和来源广泛的用户自定义库折磨着这些开发环境,也在折磨着我们。
  作为IBM的高级商业伙伴,我们幸运地与负责Eclipse开发的IBM公司的众多人员建立了长期的、可信赖的合作关系。这种合作关系意味着我们可以在一种独特的位置审视相应的技术,并几乎在世界上其他人第一次听到Eclipse的一年半之前,我们就已经使用Eclipse进行日常开发。当IBM最终于2001年中向世界发布Eclipse,我们的小组为IBM开发了第一批演示程序中的一部分。在那一年随后的时间里,当IBM发布第一个基于Eclipse的商业开发工具WebSphere Studio Application Developer v4.0(v4.0是为了与其当时的VisualAge for Java v4.0保持一致),我们的CodePro产品也在同一天成为WebSphere(也适用于Eclipse)最早的可获取的商业附加软件。
  今天,CodePro产品为Eclipse及基于Eclipse的各种IDE增加了数百项功能。在过去的几年,开发CodePro给我们提供了一个机会来从其他人很少能及的高度来学习开发Eclipse的各种细节(当然除了IBM和OTI的开发者们之外,他们每天都和Eclipse呆在一起)。CodePro也作为许多在这本书中所展示的想法与技术的一个测试温床,这也为我们提供了一个从哪里开始着手撰写本书的独特视角。
本书目标
  本书的英文版原标题为《Eclipse: Building Commercial-Quality Plug-ins》,深入描述了为Eclipse和IBM软件开发平台(Software Development Platform,SDP,IBM的商业版本Eclipse开发环境)开发商业级质量标准的扩展组件的过程。对我们而言,商业级质量是商业级标准或高标准的同义词。创建一个商业级质量的扩展组件意味着要比集成到Eclipse最小要求做得更多,也意味着要致力于商业软件产品所需达到的“合适与完善”所要求的细节。
  在Eclipse插件世界中,很少有人会花多余的时间,因而绝大部分插件都停留在开源、业余水平。对于那些创建高质量插件感兴趣的人们(这些人就是软件公司打算开发基于Eclipse的产品的主要原因)来说,有许多细节要考虑。本书致力于包含插件开发的整个过程,包括所有为达到高质量所必需的附加步骤。本书有几个互补的目标:
   为新用户提供使用Eclipse的简要介绍
   为有经验的Eclipse用户想要扩展知识与提高基于Eclipse的产品的质量提供参考
   为新用户和有经验的用户提供创建复杂Eclipse插件的详细教程
  前三章介绍了Eclipse开发环境,并列出创建简单插件的主要步骤。这些章的主要目的是帮助新的Eclipse开发人员很快能创建插件,并验证他们的各种想法。
  第1章向读者介绍了开发插件所必需的Eclipse最小工具集。该章主要是对Eclipse IDE和相关工具(这一主题可以独立成书)进行简要介绍。熟练的Eclipse用户可以跳过该章。
  第2章介绍了我们整本书中都将要使用的示例,同时简要介绍从开始创建一个可工作的插件的每一个步骤。第3章从较高的角度对Eclipse的基础结构和插件与扩展点的结构进行了介绍。
  第4、第5章包含标准窗口小部件集(Standard Widget Toolkit,SWT)和JFace相关内容。这二者是所有Eclipse用户界面(User Interface,UI)的基石。这两章可作为一个单独的参考;主要为用户继续学习提供足够的细节。所有这些主题的内容对于整本书籍的阅读是足够丰富的。
  接下来的章节,是本书的主要内容,主要描述了插件开发的各个方面,为读者如何解决将要面对的挑战提供深入的内容。每一章均从问题的不同角度进行阐述。包括概述、细节描述、面临挑战与解决方法的讨论、图表、屏幕截图、规范编程示例、相关API和总结。
  本书通过这样的组织结构,以便于插件项目所必需的最重要的相关知识均能在书的上半部分出现。一些有关于打包与创建的素材则放于上半部分靠后的位置(如功能与产品构建)。这种组织模式留下了几个主题。这些主题并非对每一个插件都同样重要,但对于创建商业级质量插件十分重要。这一部分主题在本书的下半部分。这些主题根据重要程度和与前述几章的相关性进行排列。比如,国际化,它并不是关键性的,如果你真正努力去学习,它也不难。然而,它对于本书的前提是十分重要的。所以我们觉得它应该成为一个我们将要讲述的主题。我们假设读者不是一个Eclipse专家(或者甚至不是一个插件开发者),我们试图带领读者浏览重要步骤的尽可能多的细节。也就是说,从某种程度来看,这一章是介绍性的。这一章也是大部分插件开发者几乎遗忘并具有很少经验的一章。
  有时候,开发者需要一个快速解决方案。而在另一些时候,同一个开发者对于开发过程中的某个特定方面需要深入细致的知识。本书写作意图是为读者提供几条掌握并应用知识的方法。这样,这两种要求就都可以得到满足。相关的API包括在一部分章节。因此,本书也可作为开发过程中一本独立的参考手册,这样,读者就不用在IDE中查找那些API了。API的大部分描述都来源于Eclipse平台的Javadoc。
  作为Eclipse的创始者和基于Eclipse的技术的主要使用者,IBM合理地关注新的插件能否满足其一贯坚持的高质量标准。为达成这一目标,IBM建立了一个严格的Rational软件合格认证项目(Ready for Rational Software,RFRS)。这一项目致力于保证高质量Eclipse与IBM软件开发平台的插件的可用性。RFRS认证应当成为所有想要创建与市场化Eclipse插件的开发者的终极目标之一。本书的每一章均包含了RFRS认证相关的范围与策略等内容。
  作为各章内容一部分的各种示例描述了创建稳定的Eclipse插件的各个方面。你在学习过程中可以看到这些示例在不断演化。当作为参考手册而不是从头到尾地阅读本书时,你将有可能翻阅至某一章,而实际上,你要找的内容在另外一章。为了减小这种事件发生的概率,每一章都包含许多对其他章相关内容的交叉引用。
目标读者
  本书所适合的读者包括:打算开发集成于Eclipse或基于Eclipse的其他产品的软件的Java工具开发者、想要自定义开发环境的高级Eclipse用户或对于是什么让Eclipse工作感兴趣的开发人员。要使用本书,你不必成为一名Eclipse专家,因为我们在第1章中,已经介绍了绝大部分你在使用Eclipse时必须掌握的内容。同时,我们不假设需要任何的Eclipse的预备知识,我们仅仅期望读者是对Java有较好了解的相对熟练的开发者,并对XML有一定的了解。
第3版新增内容
  在该版本中,我们使用了和前两个版本一样的Favorites视图示例,但修改了很多内容,并从头开始重写了代码。一些Eclipse概念,如视图和编辑器,是类似的,但具有附加功能;而一些其他内容,如命令、GEF(图形化编辑框架)和PDE(插件开发环境)构建已经添加进来。以下是第3版的一些主要变化:
Eclipse命令框架
  Eclipse命令框架代替了旧的操作框架。全书使用旧的操作框架的地方均描述为如何使用新的命令框架完成同样工作的内容所替代。这在第6章尤其明显。在该章中,前半部分几乎全部含有关于新的命令框架。第7章和第8章也包含了许多描写使用视图和编辑器命令的新内容。
Eclipse 3.4和Java 5
  本书中所有屏幕截图、文本和代码示例均升级至采用最新的Eclipse 3.4API和Java 5语法。第1章几乎完全重写,以包含Eclipse 3.4的新功能,这些新功能包括了使用Mylyn的介绍和对新的首选项的讨论。第1、第2章还包括了Eclipse中PDE和SWT工具的相关介绍。
新的GEF章节
  GEF,来源于Eclipse.org的图像编辑框架,提供了用于创建动态交互图形用户界面元素的工具集。第20章带领你一步步地学习创建基于GEF的视图的全过程。该视图用于图形展示收藏夹项及其底层资源的关系。然后,我们创建一个基于GEF的编辑器。该编辑器具有添加、移动、调整大小和删除表示那些收藏夹项的图形元素的功能。
使用PDE以测试其功能
  在过去几年中,PDE构建过程已经逐渐成熟。本书上一版本中的第19章的特殊Ant脚本,已经使用Eclipse PDE构建过程的指导取代。这些内容将指导自动组装你的产品以用于分发。
新的“p2”更新站点创建描述
  “p2”首次出现于Eclipse 3.4,用于替代较老的升级管理器。我们带领你浏览使用更新站点的全过程,然后再帮你建立你自己的更新站点,参见18.3节。
致 谢
  作者要感谢所有为本书的出版付出过辛勤劳动的人,同时,也要感谢那些在本书创作过程中给予我们支持和鼓励的人们。
  致我们Instantiations的同事,你们给了我们时间和鼓励来写作本书,包括:Rick Abbott、Brent Caldwell、Devon Carew、Jim Christensen、Taylor Corey、Dianne Engles、Marta George、Nick Gilman、Seth Hollyman、Mark Johnson、Ed Klimas、Tina Kvavle、Alexander Lobas、Warren Martin、David Masulis、Nancy McClure、Steve Messick、Alexander Mitin、Gina Nebling、John O誎eefe、Keerti Parthasarathy、Phil Quitslund、Mark Russell、Rob Ryan、Andrey Sablin、Balaji Saireddy、Konstantin Scheglov、Chuck Shawan、Bryan Shepherd、Julie Taylor、Mike Taylor、Solveig Viste、Brian Wilkerson和Jaime Wren。
  特别感谢Jaime Wren,他为第20章做了大量的基础性研究,并提供了原始内容。
  感谢我们经纪人Laura Lewin和Studio B的同事们。你们从第一天起就鼓励我们,并让我们按照我们的方式较轻松地工作。
  感谢我们的编辑Greg Doench和John Neidhart、产品编辑Elizabeth Ryan和Kathleen Caren、文字编辑Marilyn Rash和Camie Goffi、助理编辑Michelle Housley和Mary Kate Murray、美术指导Sandra Schroeder、营销经理Brandon Prebynski和Beth Wickenhiser以及Pearson出版社的同事们,感谢你们的鼓励和为本书的出版所付出的艰辛劳动。
  感谢Simon Archer和Robert Konigsberg,你们为本书不同版本提供了很多的修改建议,并帮助我们从方方面面改进。
  感谢Linda Barney,帮我们对本书第2版进行修饰和修改。
  感谢我们的技术评审,他们从许多方面帮助我们对本书进行改进,包括:Matt Lavin、Kevin Hammond、Mark Russell、Keerti Parthasarathy、Jaime Wren、Joe Bowbeer、Brian Wilkerson、Joe Winchester、David Whiteman、Boris Pruesmann、Balaji Saireddy和Raphael Enns。
  感谢本书英文版第1、第2版为我们提供勘误的众多读者,勘误表被本书英文版第3版采纳:Bruce Gruenbaum、Tony Saveski、James Carroll、Tony Weddle、Karen Ploski、Lori Kissell、Brian Vosburgh、Peter Nye、Chris Lott、David Watkins、Simon Archer、Mike Wilkins、Brian Penn、Bernd Essann、Eric Hein、Dave Hewitson、Frank Parrott、Catherine Suess、William Beebe、Janine Kovack、David Masulis、Jim Norris、Jim Wingard、Roy Johnston、David Karr、Chris Gage、Paul Tamminga、Asim Ullah和Ebru Aktuna。
  感谢本书英文版系列丛书的编辑Erich Gamma、Lee Nackman和John Weigand。他们提供了许多体贴的建议。正是他们的不断努力,使得Eclipse成为世界上最好的开发环境。
  我们还必须感谢我们的妻子,Karen和Kathy。她们展现了极大的耐心。以及我们的孩子们,Beth、Lauren、Lee和David。他们是我们力量的源泉。
作者简介
  Eric Clayberg是Instantiations公司产品开发部高级副总裁。Eric是一位具有丰富经验的软件技术专家、产品开发人员、企业家和具有超过17年商业软件开发经验的项目经理。这17年开发经验包含了12年的Java开发经验和9年的Eclipse开发经验。他是十几个商业Java和Smalltalk附加产品的主要作者和架构者,其中包括了广为流行的WindowBuilder Pro、CodePro和获奖的VA Assist产品系列。他拥有麻省理工学院的理学学士学位、哈佛大学的MBA学位。是两家成功的软件公司ObjectShare和Instantiations的共同创始人之一。
  Dan Rubel是Instantiations公司的首席技术执行官。他是一名成功的商人,也是面向对象技术方面的设计与应用的专家。他具有15年以上的商业软件开发经验,其中包括了13年的Java开发经验和9年的Eclipse开发经验。他是几个成功的商业产品的架构师和项目经理。这些商业产品包括RCP Developer、WindowTester、jFactor和jKit。他在其他几个商业产品中扮演关键设计与领导角色。这些商业产品包括VA Assist和CodePro。他拥有Bucknell的理学学士学位,是Instantiations公司的共同创始人之一。
  Instantiations是IBM高级商业伙伴,为Eclipse和IBM的VisualAge、WebSphere和Rational产品系列开发了许多的商业附加软件。  Instantiations公司是Eclipse基金会成员,是Eclipse开源组织的主要贡献者之一,负责Eclipse Collaboration Tools项目(即Koi项目)和Eclipse Pollinate项目(即Beehive项目)。
如何联系我们
  我们做了许多努力以保证本书内容是及时的、准确的,然而Eclipse的发展是十分迅速的。你可能会发现书中展示的内容与你在使用Eclipse时有所区别。Eclipse的UI(用户界面)这些年来在不断发展。最新的3.4版本和即将发布的3.5版本也是如此。我们专注于Eclipse 3.4,并用其开发了所有示例。本书完成于Eclipse 3.4完成之后Eclipse 3.5早期阶段。如果你使用的是较老的或更新的Eclipse版本,你将会接触到不同视图、对话框和与本书截图有些不同的向导。
   本书技术内容相关问题,请发邮件至:
  info@qualityeclipse.com
   本书相关项目的源代码可以在以下地址找到:
  www.qualityeclipse.com/projects
   本书英文版的勘误表可以在以下地址找到:
  www.qualityeclipse.com/errata
   本书所使用和描述的工具可以在以下地址找到:
  www.qualityeclipse.com/tools

封底文字

创建商业质量的插件意味着要比集成至Eclipse的最小要求做得更多、更远。它意味着需要处理商业版本 “得体与优雅”所要求的所有细节。这本深入的指南包含了插件开发的全过程,包括达到最高质量所必需的所有额外步骤。
本书之前的两个版本是世界范围内的畅销书,而作者完全重写了《Eclipse插件(第三版)》以体现Eclipse 3.4各项强大的新功能。业界领先的Eclipse专家Eric Clayberg和Dan Rubel展示了插件开发所有内容的细节和实践经验,以及开发者很有可能遇到的问题的有针对性的、经过实践证明的解决方案。
本书已经完全更新了所有代码示例、相关API列表、图标和屏幕截图以体现Eclipse 3.4 API和最新的Java语法。此外,Clayberg和Rubel已经完全更新了大受欢迎的收藏夹视图用例,重新编写了大部分内容和代码。作者慎重地展开对已有Eclipse功能(比如视图和编辑器)的附加新功能的讨论,并详细解释了新的功能(比如命令、GEF和PDE构建)。
该详尽的修订版本:

•完整包含了Eclipse的新内容

•阐述了强大的Eclipse命令框架。该命令框架取代较老的Eclipse操作框架

•展示了关于通过视图和编辑器使用命令的相关讨论

•介绍了Mylyn。它是一个降低信息过载和减轻多任务复杂度的专注于任务的接口

•包含关于图形编辑框架(GEF,Graphical Editing Framework)的一个全新的章节。GEF可以用于创建动态的、交互的图形用户界面元素

•带领你浏览PDE构建过程的每一个步骤

•展示如何使用p2创建更新站点。p2代替较老的更新管理器。

本书适用于对扩展Eclipse平台、Rational软件开发平台或支持Eclipse插件的其他平台感兴趣的有经验的开发者。

图书序言

序 言 一
  对于全世界数百万的开发人员、工程师和用户来说,Eclipse是一个用于工具集成的可扩展平台。对于全世界数十万利用它来开发插件或完整的工具平台的商业客户来说,Eclipse代表了一种经过验证的、可靠的、可扩展的技术。利用这种技术,人们可以快速设计、开发和部署商业产品。
  对于全世界数以千计的学生和研究者来说,Eclipse代表了一个创新、自由和实验的稳定平台。对于所有的这些个人、团队和组织来说,Eclipse是一个用于工具集成的独立于特定厂商的平台。这一平台由一个生机勃勃的Eclipse体系所支持。
  独立于特定厂商的Eclipse平台以行业标准为基础。它支持众多的工具、平台和语言。Eclipse技术是无版权费用的,并具有全世界范围内的可重新分发权。该平台是全新建造的,以达到可扩展和提供杰出工具的目标。开发Eclipse基于开源协定。该协定包含开放、透明、基于价值和合作开发等诸多特性。每一个人都能参与其中,并提供添加项。所有的计划都在公开范围内制定。该平台和开源开发组织创建了一个创新、创造性和自由的环境。在当今众多的软件工具环境中,Eclipse是独一无二的。
  软件工具行业正在经历从技术商品化到公司合并的巨大转变。新的技术尝试正在重新设计,同时工具基础结构的通用集被不断改进以成为行业标准。成功的开发者和开发模式正面临适应新技术、新的更有效的方法的挑战。旧的商业模式正面临免费软件的挑战,同时,新的商业模式逐渐涌现。
  软件工具行业非常感谢Eric Clayberg和Dan Rubel的这本权威书籍。这本书提供了一个知识库。开发人员、工程师和用户均可利用这一知识库来学习和使用Eclipse技术。这样,他们就可以对这些技术和工业变革的原动力做出响应。
  Eric和Dan拥有很长的开发软件工具的职业生涯。他们两人均拥有丰富的经验:二十年的Smalltalk开发经验、十三年的Java开发经验和九年的Eclipse开发经验。他们和众多厂商和顾客建立了良好关系,这使得他们可以第一时间使用必要元素以创建成功的软件。他们可以将这种技术的直接经验和用户体验相结合,以写出一本提供创建商业级质量Eclipse扩展项过程的详细描述的书。
  本书为新开发者提供了插件开发整个过程的介绍和概述,包括获得高质量效果的所有最佳做法。对于有经验的Eclipse开发人员来说,本书可以作为一本参考书籍。它详细讨论了API,并阐述了众多的示例。同时,本书也为新、老开发人员提供了详细的教程。Eric和Dan添加了他们丰富的用户界面开发经验,也演示了如何使用Eclipse SWT UI。SWT是所有Eclipse UI开发的基石。作者清晰地描述了创建工具软件过程中面临的开发挑战,同时提供了已验证的、深入的解决方案。
  如果你是一名开发人员、工程师或想要开发或使用Eclipse的用户,本书提供了基础知识和参考。同时,本书也提供了向开源Eclipse项目提交添加项和开发商业软件的基础知识。
—Skip McGaughey
序 言 二
  在20世纪90年代,Java还处在早期阶段。学习Java库,只要学习四五个包中的一些类文件。今天,Java类库已经变得更大更复杂,给现在想要学习Java的开发人员带来了一个巨大的难题。与Java类似,数年时间里,Eclipse平台也逐渐成长。因此学习Eclipse 3.4需要比学习Eclipse以往版本花费更多的时间和精力。Eclipse平台的一条重要的原则就是:一个插件必须与Eclipse平台和其他插件无缝地集成。为了达到无缝集成,插件开发者必须懂得为Eclipse开发软件的最佳实践、约定和策略。本书包含了创建你为之骄傲的Eclipse插件所需要的各个方面。
  在开发Favorites插件过程中,详细讨论了Eclipse标准窗口小部件工具集(SWT,Standard Widget Toolkit)和JFace框架。这样你就可以学会如何创建专业外观的用户界面,如视图、编辑器、首选项页和对话框。除了附加的常用主题之外,还详细讨论了诸如用户界面设计等较难理解的Eclipse主题(比如,创建功能部件和产品商标)。此外,本书还给出了我见过的最好的关于使用Ant的讨论,该讨论涉及从一个目标为多个版本的Eclipse的源代码文件创建产品。
  在插件声明清单和实现插件的功能行为所必需的Java代码之间存在一种扩展点机制和重要联系,而刚开始使用Eclipse的Java开发者要理解这些内容有一定难度。本书可作为一张使用由Eclipse平台定义的插件开发环境(PDE,Plug-in Development Environment)和扩展点的路线图。本书还提供了以下内容:开发者应当了解的本应在清单中描述的插件的各个方面,如何使用已有扩展点开发插件,以及如何创建其他开发者可以进一步提交添加项的扩展点。
  当我初次接触到CodePro,我被两方面吸引住了:它给Eclipse带来的生产效率和它与Eclipse平台结合的紧密程度。在尝试使用CodePro一段时间后,它就已经成为我开发工具集不可或缺的一部分。通过描述他们在开发CodePro中获取的广泛经验,Eric和Dan完成了一项如此优异的工作。这项工作就是本书中所描述的创建高质量和专业外观的Eclipse产品所必需的插件开发的各个方面。
—Simon Archer

作者简介

(美)Eric Clayberg; Dan Rubel 著:Eric Clayberg是Instantiations公司产品开发部高级副总裁。Eric是一位具有丰富经验的软件技术专家、产品开发人员、企业家和具有超过17年商业软件开发经验的项目经理。他拥有麻省理工学院的理学学士学位,哈佛大学的MBA学位。他是两家成功的软件公司ObjectShare和Instantiations的共同创始人之一。 Dan Rubel是Instantiations公司的首席技术执行官。他是面向对象技术方面的设计与应用的专家。他具有15年以上的商业软件开发经验。他拥有Bucknell的理学学士学位。他是Instantiations公司的共同创始人之一。

译者简介

陈沛 等译:暂无简介

译者序

Eclipse是一个开源的可扩展开发平台。它是一个用于构建、部署和管理软件生命周期的运行时的平台和应用程序框架。现今,有越来越多的软件开发人员选择使用Eclipse,不仅仅是因为它的开源特性,更重要的在于它的可扩展性。
  我们可以通过向Eclipse添加插件从而扩展它的功能。现在,有大量的插件几乎可以让Eclipse完成你所能想到的任何软件开发任务。因此,为Eclipse开发良好的插件就显得十分重要。
  本书的两位作者有十几年的商业软件开发经验,对于如何开发结构良好、质量可靠的Eclipse插件有着十分丰富的实践经验。因此,通过阅读本书,读者可以获取关于开发Eclipse商业级质量插件的、经过实践检验的相关知识。
  本书首先对Eclipse结构进行了介绍,然后通过创建并不断完善一个名为收藏夹的示例插件,阐述了开发Eclipse插件的全方位的内容。本书的结尾是关于Eclipse插件开发的一些高级话题,并列举了一些在Eclipse社区有良好口碑的商业插件。
  本书英文第3版是基于Eclipse 3.4的,而翻译本书时Eclipse的最新版本为Eclipse 3.5 Galileo。因此,在使用Eclipse 3.5开发或运行本书中的示例时,可能会存在一些区别。
  参加本书翻译的人员有:陈沛、袁芳、伍汉和、韩璐、强永刚、许飞、李婧、刘依承、贺娟娟、陈服兵、郭爱华。
  最后,虽然译者尽了最大努力想要完成好本书的翻译,试图做到准确、符合中文语言习惯,但由于译者水平有限,译文肯定存在一些不足之处。如果您发现了不足之处并能通过邮件向译者指出,译者将不胜感激!邮箱地址为andyflying2007@gmail.com。
陈 沛
2010年3月

图书目录

读者赞誉
译者序
序言一
序言二
前 言
第1章 使用Eclipse工具 1
1.1 起步 1
1.1.1 获取Eclipse 1
1.1.2 安装 2
1.2 Eclipse工作台 2
1.2.1 透视图、视图和编辑器 4
1.2.2 操作 7
1.3 设置Eclipse 9
1.3.1 工作台首选项 9
1.3.2 Java首选项 10
1.3.3 导入与导出首选项 11
1.4 创建项目 11
1.4.1 使用新建Java项目向导 12
1.4.2 .classpath和.project文件 13
1.4.3 使用Java包向导 14
1.4.4 使用Java类向导 14
1.5 导航 15
1.5.1 打开类型对话框 15
1.5.2 类型层次结构视图 16
1.5.3 转至行 16
1.5.4 大纲视图 16
1.5.5 快速访问 17
1.6 搜索 17
1.6.1 文件搜索 17
1.6.2 Java搜索 18
1.6.3 其他搜索菜单选项 19
1.6.4 工作集 19
1.7 编写代码 20
1.7.1 Java编辑器 20
1.7.2 模板 24
1.7.3 重构 25
1.7.4 本地历史记录 26
1.7.5 文件扩展名关联 28
1.8 使用CVS进行团队开发 29
1.8.1 开始使用CVS 30
1.8.2 从CVS中导出项目 30
1.8.3 与库同步 31
1.8.4 比较与替代资源 31
1.8.5 CVS标签装饰器 32
1.9 运行程序 33
1.9.1 启动Java程序 33
1.9.2 启动配置 34
1.10 调试简介 35
1.10.1 设置断点 35
1.10.2 使用调试视图 36
1.10.3 使用变量视图 36
1.10.4 使用表达式视图 36
1.11 测试简介 37
1.11.1 创建测试用例 37
1.11.2 运行测试用例 37
1.12 Mylyn简介 38
1.13 总结 41
参考文献 41
第2章 简单插件示例 42
2.1 收藏夹插件 42
2.2 创建插件项目 42
2.2.1 新建插件项目向导 42
2.2.2 定义插件 42
2.2.3 定义视图 43
2.3 评审生成代码 44
2.3.1 插件清单 44
2.3.2 启动器或插件类 48
2.3.3 收藏夹视图 50
2.4 构建产品 52
2.4.1 手动构建 52
2.4.2 使用Apache Ant构建 53
2.5 安装并运行产品 56
2.6 调试产品 56
2.6.1 创建配置文件 56
2.6.2 选择插件和片段 57
2.6.3 启动运行时工作台 58
2.7 PDE视图 58
2.7.1 插件注册表视图 58
2.7.2 插件视图 58
2.7.3 插件依赖项视图 59
2.7.4 插件手动搜索 59
2.7.5 插件探测器 59
2.8 编写插件测试 60
2.8.1 测试准备 60
2.8.2 创建插件测试项目 60
2.8.3 创建插件测试 60
2.8.4 运行插件测试 63
2.8.5 卸载收藏夹插件 64
2.9 本书示例 64
2.10 总结 65
参考文献 65
第3章 Eclipse基础结构 66
3.1 结构概述 66
3.1.1 插件结构 67
3.1.2 工作区 67
3.2 插件目录与JAR文件 68
3.2.1 链接文件 68
3.2.2 混合途径 69
3.3 插件清单 69
3.3.1 插件声明 70
3.3.2 插件运行时 71
3.3.3 插件依赖项 71
3.3.4 扩展项与扩展点 73
3.4 启动器或插件类 74
3.4.1 启动与关闭 74
3.4.2 插件早期启动 74
3.4.3 静态插件资源 74
3.4.4 插件首选项 75
3.4.5 插件配置文件 75
3.4.6 插件与AbstractUIPlugin 77
3.5 插件模型 77
3.5.1 平台 78
3.5.2 插件与包 78
3.5.3 插件扩展项注册表 79
3.6 日志 79
3.6.1 状态对象 80
3.6.2 错误日志视图 80
3.6.3 处理错误(与其他状态) 81
3.7 Eclipse插件 81
3.8 总结 82
参考文献 82
第4章 标准窗口小部件工具集 83
4.1 SWT历史与目标 83
4.2 SWT窗口小部件 85
4.2.1 简单独立示例 85
4.2.2 窗口小部件生命周期 87
4.2.3 窗口小部件事件 87
4.2.4 抽象窗口小部件类 88
4.2.5 最高级类 90
4.2.6 常用窗口小部件 92
4.2.7 菜单 108
4.2.8 其他窗口小部件 110
4.3 布局管理 110
4.3.1 填充布局(FillLayout) 110
4.3.2 行布局(RowLayout) 111
4.3.3 网格布局(GridLayout) 113
4.3.4 表单布局(FormLayout) 115
4.4 资源管理 117
4.4.1 颜色 117
4.4.2 字体 117
4.4.3 图像 117
4.5 GUI构建器(GUI Builder) 118
4.6 总结 119
参考文献 119
第5章 JFace查看器 121
5.1 面向列表的查看器 121
5.1.1 标签提供者 122
5.1.2 内容提供者 122
5.1.3 查看器排序器 123
5.1.4 查看器过滤器 123
5.1.5 StructuredViewer类 123
5.1.6 ListViewer类 125
5.1.7 TableViewer类 127
5.1.8 TreeViewer类 130
5.2 文本查看器 132
5.3 总结 134
参考文献 134
第6章 命令与操作 135
6.1 命令 135
6.2 菜单和工具栏添加项 138
6.2.1 定义最高级菜单 138
6.2.2 添加至已有最高级菜单 138
6.2.3 定义最高级工具栏项 139
6.2.4 限制最高级菜单与工具栏项的
可见性 139
6.2.5 定义基于选择的上下文菜单项 140
6.2.6 定义视图相关菜单或工具栏项 143
6.2.7 定义编辑器相关的菜单或工具栏
项目 143
6.2.8 动态菜单添加项 144
6.2.9 locationURI 144
6.2.10 visibleWhen表达式 145
6.3 处理器 148
6.4 键绑定 150
6.5 IAction与IActionDelegate 151
6.6 工作台窗口操作 152
6.6.1 定义工作台窗口菜单 153
6.6.2 菜单中的组 154
6.6.3 定义菜单项和工具栏按钮 154
6.6.4 操作的图像 155
6.6.5 插入点 155
6.6.6 创建操作代表 156
6.6.7 手动测试新建操作 157
6.6.8 为新操作添加测试 158
6.6.9 讨论 160
6.7 对象操作 160
6.7.1 定义基于对象的操作 161
6.7.2 操作过滤与可用 163
6.7.3 IObjectActionDelegate 167
6.7.4 创建基于对象的子菜单 167
6.7.5 手动测试新操作 168
6.7.6 为新操作添加测试 168
6.8 视图操作 169
6.8.1 定义视图上下文子菜单 169
6.8.2 定义视图上下文菜单操作 170
6.8.3 IViewActionDelegate 171
6.8.4 定义视图工具栏操作 171
6.8.5 定义视图下拉子菜单和操作 172
6.8.6 手动测试新操作 172
6.8.7 为新操作添加测试 172
6.8.8 视图上下文菜单标识符 172
6.9 编辑器操作 174
6.9.1 定义编辑器上下文菜单 174
6.9.2 定义编辑器上下文操作 175
6.9.3 IEditorActionDelegate 175
6.9.4 定义编辑器最高级菜单 176
6.9.5 定义编辑器最高级操作 176
6.9.6 定义编辑器工具栏操作 177
6.9.7 为新操作添加测试 177
6.9.8 编辑器上下文菜单标识符 177
6.10 操作和键绑定 178
6.10.1 将命令与操作相关联 178
6.10.2 键盘可访问性 179
6.11 RFRS相关事项 180
6.12 总结 180
参考文献 180
第7章 视图 181
7.1 视图声明 182
7.1.1 声明视图类别 182
7.1.2 声明视图 183
7.2 视图部件 184
7.2.1 视图方法 184
7.2.2 视图控件 184
7.2.3 视图模型 185
7.2.4 内容提供者 194
7.2.5 标签提供者 195
7.2.6 查看器排序器 196
7.2.7 查看器过滤器 198
7.2.8 视图选择 199
7.2.9 实现propertyTester 199
7.3 视图命令 199
7.3.1 模型命令处理器 200
7.3.2 上下文菜单 200
7.3.3 工具栏按钮 203
7.3.4 下拉菜单 204
7.3.5 键盘命令 205
7.3.6 全局命令 205
7.3.7 剪贴板命令 206
7.3.8 拖放支持 210
7.3.9 内联编辑 215
7.4 链接视图 218
7.4.1 选择提供者 218
7.4.2 可适配对象 218
7.4.3 选择监听器 218
7.4.4 打开编辑器 219
7.5 保存视图状态 220
7.5.1 保存本地视图信息 220
7.5.2 保存全局视图信息 222
7.6 测试 225
7.7 图像缓存 225
7.8 自动调整大小的表列 226
7.9 RFRS相关事项 227
7.9.1 用于导航的视图(RFRS 3.5.15) 227
7.9.2 视图立即保存(RFRS 3.5.16) 227
7.9.3 视图初始化(RFRS 3.5.17) 227
7.9.4 视图全局操作(RFRS 3.5.18) 227
7.9.5 保存视图状态(RFRS 3.5.19) 228
7.9.6 注册上下文菜单(RFRS 5.3.5.8) 228
7.9.7 视图操作过滤程序
(RFRS 5.3.5.9) 228
7.10 总结 229
参考文献 229
第8章 编辑器 230
8.1 编辑器声明 231
8.2 编辑器组件 233
8.2.1 编辑器方法 233
8.2.2 编辑器控件 234
8.2.3 编辑器模型 236
8.2.4 内容提供者 242
8.2.5 标签提供者 243
8.3 编辑 244
8.3.1 单元格编辑器 244
8.3.2 变更监听器 246
8.3.3 单元格验证器 247
8.3.4 编辑与选择 249
8.4 编辑器生命周期 249
8.4.1 修改过的编辑器 249
8.4.2 切换页面 250
8.4.3 保存内容 251
8.5 编辑器命令 251
8.5.1 上下文菜单 251
8.5.2 编辑器添加程序 253
8.5.3 编辑器命令而不是编辑器添加
程序 257
8.5.4 撤销/重做 259
8.5.5 剪贴板操作 266
8.6 链接编辑器 266
8.7 RFRS相关事项 266
8.7.1 使用编辑器进行编辑或浏览
(RFRS 3.5.9) 266
8.7.2 编辑器生命周期(RFRS 3.5.10) 266
8.7.3 访问全局操作(RFRS 3.5.11) 267
8.7.4 当对象被删除时关闭
(RFRS 3.5.12) 267
8.7.5 同步外部更改(RFRS 3.5.14) 268
8.7.6 注册编辑器菜单
(RFRS 5.3.5.2) 268
8.7.7 编辑器操作过滤器
(RFRS 5.3.5.3) 268
8.7.8 未保存的编辑器更改
(RFRS 5.3.5.4) 268
8.7.9 为更改过的资源添加前缀
(RFRS 5.3.5.5) 268
8.7.10 编辑器大纲视图
(RFRS 5.3.5.6) 268
8.7.11 与大纲视图同步
(RFRS 5.3.5.7) 269
8.8 总结 269
参考文献 269
第9章 资源更改跟踪 270
9.1 IResourceChangeListener 270
9.1.1 IResourceChangeEvent 270
9.1.2 IResourceDelta 271
9.2 处理更改事件 272
9.3 批处理更改事件 274
9.4 进度监视器 276
9.4.1 IProgressMonitor 276
9.4.2 用于显示进度的类 276
9.4.3 工作台窗口状态栏 278
9.4.4 IProgressService 279
9.5 被延迟的更改事件 279
9.6 总结 280
参考文献 280
第10章 透视图 281
10.1 创建透视图 281
10.1.1 透视图扩展点 282
10.1.2 透视图工厂 282
10.1.3 IPageLayout 284
10.2 改进已有透视图 285
10.2.1 添加视图和占位符 285
10.2.2 添加快捷方式 287
10.2.3 添加操作集 288
10.3 RFRS相关事项 289
10.3.1 为长时间任务创建
(RFRS 5.3.5.10) 289
10.3.2 扩展已有透视图
(RFRS 5.3.5.11) 289
10.3.3 添加操作至窗口菜单
(RFRS 5.3.5.15) 289
10.4 总结 290
参考文献 290
第11章 对话框与向导 291
11.1 对话框 291
11.1.1 SWT对话框与JFace对话框 291
11.1.2 普通SWT对话框 291
11.1.3 普通JFace对话框 292
11.1.4 创建JFace对话框 293
11.1.5 对话框单元 295
11.1.6 对话框的初始位置和大小 295
11.1.7 可调整大小的对话框 295
11.1.8 收藏夹视图过滤器对话框 296
11.1.9 细节对话框 299
11.1.10 打开对话框—查找父shell 305
11.2 向导 306
11.2.1 IWizard 307
11.2.2 IWizardPage 308
11.2.3 IWizardContainer 309
11.2.4 嵌套的向导 310
11.2.5 启动向导 310
11.2.6 向导示例 312
11.2.7 对话框设置 314
11.2.8 基于选择的页面内容 314
11.2.9 基于前一页面的页面内容 318
11.3 RFRS相关事项 320
11.3.1 向导外观(RFRS 3.5.2) 320
11.3.2 在编辑器中打开新文件
(RFRS 3.5.6) 320
11.3.3 新项目切换透视图
(RFRS 3.5.7) 321
11.3.4 显示新对象(RFRS 3.5.8) 321
11.3.5 单一页面向导按钮
(RFRS 5.3.5.13) 321
11.4 总结 321
参考文献 321
第12章 首选项页 322
12.1 创建首选项页 322
12.2 首选项页API 323
12.2.1 FieldEditorPreferencePage 324
12.2.2 字段编辑器 324
12.2.3 PreferencePage 327
12.2.4 收藏夹首选项页 327
12.2.5 合法性验证 328
12.2.6 嵌套首选项页 329
12.2.7 选项卡式首选项页 330
12.3 首选项API 331
12.3.1 默认首选项 331
12.3.2 访问首选项 332
12.3.3 在程序中指定默认值 333
12.3.4 在文件中指定默认值 334
12.3.5 关联收藏夹视图 334
12.3.6 监听首选项更改 335
12.4 RFRS相关事项 335
12.5 总结 336
参考文献 336
第13章 属性 337
13.1 创建属性 337
13.1.1 FavoriteItem属性 337
13.1.2 资源属性 339
13.2 在属性对话框中显示属性 339
13.2.1 声明属性页 340
13.2.2 创建资源属性页 342
13.2.3 创建收藏夹项资源页 343
13.2.4 打开属性对话框 345
13.2.5 IColorProvider 345
13.3 在属性视图中显示属性 346
13.3.1 属性视图API 346
13.3.2 属性视图中的收藏夹属性 348
13.4 属性页作为首选项页重用 349
13.5 RFRS相关事项 350
13.6 总结 351
参考文献 351
第14章 构建器、标记和性质 352
14.1 构建器 353
14.1.1 声明构建器 353
14.1.2 IncrementalProjectBuilder 355
14.1.3 派生资源 360
14.1.4 关联构建器与项目 360
14.1.5 触发构建器 362
14.2 标记 363
14.2.1 标记类型 363
14.2.2 创建并删除标记 365
14.2.3 标记属性 366
14.2.4 标记解析—快速修复 368
14.2.5 查找标记 371
14.3 性质 372
14.3.1 声明性质 372
14.3.2 关联构建器与性质 373
14.3.3 IProjectNature 374
14.3.4 必需的性质 375
14.3.5 冲突的性质 375
14.3.6 性质图像 376
14.3.7 关联性质与项目 376
14.4 RFRS相关事项
14.4.1 使用构建器以转换资源
(RFRS 3.8.1) 380
14.4.2 不要替代已有构建器
(RFRS 3.8.3) 380
14.4.3 不要滥用术语“构建”
(RFRS 5.3.8.1) 380
14.4.4 标记已创建的资源为“派生的”
(RFRS 5.3.8.2) 381
14.4.5 响应清理构建请求
(RFRS 5.3.8.3) 381
14.4.6 在可能时使用IResourceProxy
(RFRS 5.3.8.4) 381
14.4.7 构建器必须由性质添加
(RFRS 5.3.8.5) 382
14.5 总结 382
参考文献 382
第15章 实现帮助 383
15.1 使用帮助 383
15.2 实现帮助 385
15.2.1 新建帮助项目 385
15.2.2 插件清单文件 387
15.2.3 内容表(toc)文件 388
15.2.4 创建HTML内容 390
15.3 上下文相关的帮助(F1) 391
15.3.1 关联上下文ID与项 392
15.3.2 IWorkbenchHelpSystem API 393
15.3.3 创建上下文相关的帮助内容 393
15.3.4 上下文扩展点 394
15.3.5 标记帮助 396
15.4 从程序中访问帮助 396
15.4.1 打开指定帮助页 396
15.4.2 打开网页 397
15.5 备忘单 398
15.5.1 使用备忘单 398
15.5.2 创建简单备忘单 398
15.5.3 注册备忘单 400
15.5.4 添加备忘单命令 402
15.5.5 添加命令参数 403
15.6 RFRS相关事项 404
15.6.1 通过帮助系统提供帮助
(RFRS 3.7.2) 404
15.6.2 通过帮助系统提供所有帮助
(RFRS 5.3.7.1) 404
15.6.3 使用F1激活上下文帮助
(RFRS 5.3.7.2) 405
15.6.4 实现活动帮助(RFRS 5.3.7.3) 405
15.6.5 独立帮助的使用
(RFRS 5.3.7.4) 405
15.6.6 附加文档的使用
(RFRS 5.3.7.5) 405
15.6.7 提供任务流的概述
(RFRS 5.3.5.34) 405
15.6.8 仅说明一个任务
(RFRS 5.3.5.35) 406
15.6.9 为每一个步骤提供帮助链接
(RFRS 5.3.5.36) 406
15.7 总结 406
参考文献 406
第16章 国际化 407
16.1 外部化插件清单 407
16.2 外部化插件字符串 409
16.3 使用片段 414
16.3.1 新建片段项目向导 414
16.3.2 片段清单文件 415
16.3.3 片段项目内容 417
16.4 手动测试 417
16.5 总结 417
参考文献 417
第17章 创建新扩展点 419
17.1 扩展点机制 419
17.2 定义扩展点 419
17.2.1 创建扩展点 420
17.2.2 创建扩展点模式 421
17.2.3 扩展点元素和属性 422
17.2.4 扩展点元素语法 425
17.3 扩展点的后台代码 426
17.3.1 分析扩展项信息 426
17.3.2 创建代理 427
17.3.3 创建可执行扩展项 429
17.3.4 清理 431
17.4 扩展点文档 431
17.5 使用扩展点 432
17.6 RFRS相关事项 434
17.6.1 文档扩展点(RFRS 3.10.5) 434
17.6.2 记录错误(RFRS 5.3.10.1) 434
17.7 总结 434
参考文献 434
第18章 功能部件、品牌化和更新 435
18.1 功能部件项目 436
18.1.1 创建新功能部件项目 436
18.1.2 功能部件清单文件 437
18.1.3 功能部件清单编辑器 438
18.1.4 测试功能部件 442
18.2 品牌化 442
18.2.1 about.html文件 443
18.2.2 about.ini文件 443
18.2.3 产品品牌化 445
18.3 更新站点 446
18.3.1 创建更新站点项目 447
18.3.2 site.xml文件 447
18.3.3 更新网站 450
18.3.4 回到功能部件清单 450
18.3.5 访问更新站点 451
18.4 RFRS相关事项 453
18.4.1 不要覆盖产品品牌
(RFRS 3.1.8) 453
18.4.2 具有品牌的功能部件可见性
(RFRS 5.3.1.9) 453
18.4.3 包含添加项信息
(RFRS 5.3.1.10) 453
18.4.4 about.html文件内容
(RFRS 5.3.1.11) 453
18.4.5 启动画面限制(RFRS 5.3.1.12) 454
18.5 总结 454
参考文献 454
第19章 构建产品 455
19.1 Ant的简要介绍 455
19.1.1 构建项目 455
19.1.2 构建目标 455
19.1.3 构建任务 456
19.1.4 构建属性 458
19.1.5 任务 463
19.1.6 macrodef 465
19.1.7 Ant扩展项 466
19.2 使用PDE构建 467
19.2.1 PDE构建概述 467
19.2.2 PDE构建过程中的步骤 468
19.2.3 PDE构建过程中的目录 469
19.2.4 PDE脚本和模板 469
19.2.5 创建PDE构建 470
19.2.6 指定编译级别 471
19.2.7 运行PDE构建 471
19.2.8 自动生成版本限定符 472
19.2.9 保持版本同步 473
19.2.10 构建属性 473
19.2.11 自定义PDE目标 475
19.2.12 使用不同版本的Eclipse编辑 476
19.3 调试PDE构建过程 477
19.3.1 自动生成的构建脚本 477
19.3.2 使用调试器 478
19.4 总结 478
参考文献 479
第20章 GEF:图形编辑框架 480
20.1 GEF体系结构 480
20.2 GEF模型 481
20.3 GEF控制器 481
20.3.1 EditPart类 481
20.3.2 最高级EditPart 483
20.3.3 子EditParts 484
20.3.4 连接EditParts 485
20.3.5 EditPartFactory 488
20.4 GEF图案 488
20.4.1 IFigure 489
20.4.2 Graphics 489
20.4.3 复杂图案 491
20.4.4 连接图案 494
20.4.5 LayoutManager 494
20.5 Eclipse视图中的GEF 496
20.6 Eclipse编辑器中的GEF 498
20.6.1 编辑器输入 499
20.6.2 回到FavoritesManagerEditPart 500
20.6.3 绘画编辑器类 500
20.6.4 FavoritesGEFEditor 501
20.6.5 用户与GEF的交互 503
20.6.6 编辑菜单 506
20.6.7 FreeformLayer和FreeformLayout 508
20.6.8 z顺序 509
20.6.9 删除模型对象 511
20.7 选项板 512
20.7.1 创建GEF选项板 512
20.7.2 CreateCommand 513
20.8 总结 514
参考文献 514
第21章 高级话题 515
21.1 高级搜索—引用项目 515
21.2 访问内部代码 516
21.2.1 Eclipse新闻组 516
21.2.2 Bugzilla—Eclipse bug跟踪
系统 516
21.2.3 用于访问内部代码的选项 517
21.2.4 Eclipse的不同之处 517
21.2.5 相关插件 517
21.2.6 使用片段 518
21.3 适配器 518
21.3.1 IAdaptable 518
21.3.2 使用适配器 518
21.3.3 适配器工厂 519
21.3.4 IWorkbenchAdapter 520
21.4 打开浏览器或创建E-mail 521
21.4.1 IWorkbenchBrowserSupport 521
21.4.2 LaunchURL 521
21.4.3 OpenEmailAction 522
21.5 扩展点中指定的类型 525
21.5.1 参数化的类型 525
21.5.2 在不同的插件中引用类 526
21.6 修改Eclipse以查找部分标识符 527
21.6.1 修改Eclipse基础 527
21.6.2 创建全局操作 528
21.6.3 测试新功能 530
21.6.4 提交更改至Eclipse 530
21.7 标签修饰符 530
21.7.1 声明标签装饰符 531
21.7.2 ILightweightLabelDecorator 531
21.7.3 装饰性标签装饰符 533
21.7.4 IDecoratorManager 534
21.8 后台任务—Jobs API 535
21.9 插件ClassLoader 537
21.10 早期启动 541
21.10.1 管理早期启动 541
21.10.2 取消早期启动 542
21.11 富客户端平台 542
21.12 总结 542
参考文献 542
附录A Eclipse插件和资源 544
附录B Ready for Rational Software 552

教学资源推荐
作者: [印度]拉杰·拉杰库马尔(Raj Rajkumar)卡内基-梅隆大学 [美]迪奥尼西奥·德·尼茨(Dionisio de Niz)卡内基-梅隆大学 马克·克莱恩(Mark Klein)美国软件工程研究所 著
作者: 郑阿奇 主编 丁有和 刘毅 编著
作者: 刘国忠 主编 吕勇 马牧燕 那云虓 参编
参考读物推荐
作者: 张良均 杨海宏 何子健 杨征  等著
作者: 杨楠楠 李凯东 陈新涛 萧饭饭 等著
作者: [美]杰米?迪恩(Jamie Dean) 著
作者: [美]鲍里斯·肖勒(Boris Scholl) 特伦特·斯旺森(Trent Swanson) 彼得·加索维奇(Peter Jausovec) 著