Home > Store

Eclipse: Building Commercial-Quality Plug-ins, 2nd Edition

Register your product to gain access to bonus material or receive a coupon.

Eclipse: Building Commercial-Quality Plug-ins, 2nd Edition

Premium Website

  • Sorry, this book is no longer in print.
Not for Sale


  • Copyright 2006
  • Edition: 2nd
  • Premium Website
  • ISBN-10: 0-321-42672-X
  • ISBN-13: 978-0-321-42672-7

A new edition of this title is available, ISBN-10: 0321553462 ISBN-13: 9780321553461

"I'm often asked, 'What are the best books about Eclipse?' Number one on my list, every time, is Eclipse: Building Commercial-Quality Plug-ins. I find it to be the clearest and most relevant book about Eclipse for the real-world software developer. Other Eclipse books focus on the internal Eclipse architecture or on repeating the Eclipse documentation, whereas this book is laser focused on the issues and concepts that matter when you're trying to build a product."
-- Bjorn Freeman-Benson
Director, Open Source Process, Eclipse Foundation

"As the title suggests, this massive tome is intended as a guide to best practices for writing Eclipse plug-ins. I think in that respect it succeeds handily. Before you even think about distributing a plug-in you've written, read this book."
-- Ernest Friedman-Hill
Sheriff, JavaRanch.com

"Eclipse: Building Commercial-Quality Plug-ins was an invaluable training aid for all of our team members. In fact, training our team without the use of this book as a base would have been virtually impossible. It is now required reading for all our developers and helped us deliver a brand-new, very complex product on time and on budget thanks to the great job this book does of explaining the process of building plug-ins for Eclipse."
-- Bruce Gruenbaum

"This is easily one of the most useful books I own. If you are new to developing Eclipse plug-ins, it is a 'must-have' that will save you lots of time and effort. You will find lots of good advice in here, especially things that will help add a whole layer of professionalism and completeness to any plug-in. The book is very focused, well-structured, thorough, clearly written, and doesn't contain a single page of 'waffly page filler.' The diagrams explaining the relationships between the different components and manifest sections are excellent and aid in understanding how everything fits together. This book goes well beyond Actions, Views, and Editors, and I think everyone will benefit from the authors' experience. I certainly have."
-- Tony Saveski

"The authors of this seminal book have decades of proven experience with the most productive and robust software engineering technologies ever developed. Their experiences have now been well applied to the use of Eclipse for more effective Java development. A must-have for any serious software engineering professional!"
-- Ed Klimas

"Just wanted to also let you know this is an excellent book! Thanks for putting forth the effort to create a book that is easy to read and technical at the same time!"
-- Brooke Hedrick

"The key to developing great plug-ins for Eclipse is understanding where and how to extend the IDE, and that's what this book gives you. It is a must for serious plug-in developers, especially those building commercial applications. I wouldn't be without it."
-- Brian Wilkerson

"If you're looking for just one Eclipse plug-in development book that will be your guide, this is the one. While there are other books available on Eclipse, few dive as deep as Eclipse: Building Commercial-Quality Plug-ins."
-- Simon Archer

Eclipse has established itself as a dominant force in the application-development space. Key to the success of Eclipse is the ability of developers to extend its functionality using plug-ins.

This new edition of Eclipse: Building Commercial-Quality Plug-ins is the definitive, start-to-finish guide to building commercial-quality Eclipse plug-ins, with an emphasis on adding the sophistication and polish that paying customers demand. The book provides both a quick introduction to using Eclipse for new users and a reference for experienced Eclipse users wishing to expand their knowledge and improve the quality of their Eclipse-based products.

Revised to take advantage of pure Eclipse 3.1 and 3.2 APIs, this widely praised bestseller presents detailed, practical coverage of every aspect of plug-in development and specific solutions for the challenges developers are most likely to encounter. All code examples, relevant API listings, diagrams, and screen captures have been updated.

Some Eclipse concepts--such as actions, views, and editors--have not changed radically, but now have additional functionality and capabilities. Other areas, such as the Eclipse plug-in infrastructure, have changed drastically due to the Eclipse shift towards an OSGi-based infrastructure. This edition is fully updated to address these new advances for Eclipse developers.

  • Includes a quick introduction to Eclipse for experienced Java programmers
  • Serves as a systematic reference for experienced Eclipse users
  • Introduces all the tools you need to build Eclipse and Rational plug-ins
  • Explains the Eclipse architecture and the structure of plug-ins and extension points
  • Offers practical guidance on building Eclipse user interfaces with SWT and JFace
  • Shows how to use change tracking, perspectives, builders, markers, natures, and more
  • Covers internationalization, help systems, features, and branding

This book is designed for anyone who wants a deep understanding of Eclipse, and every experienced developer interested in extending Eclipse or the Rational Software Development Platform.

Sample Content

Online Sample Chapter

An Overview of the Eclipse Infrastructure

Downloadable Sample Chapter

Download the Sample Chapter related to this title.

Table of Contents

Foreword by Skip McGaughey xxxi
Foreword by Simon Archer xxxiii
Preface xxxv
Chapter 1: Using Eclipse Tools 1

1.1  Getting Started 1
1.2  The Eclipse Workbench 3
1.3  Setting Up Your Environment 14
1.4  Creating a Project 19
1.5  Navigating 26
1.6  Searching 28
1.7  Writing Code 34
1.8  Team Development Using CVS 48
1.9  Running Applications 54
1.10 Introduction to Debugging 58
1.11 Introduction to Testing 61
1.12 Summary 63

Chapter 2: A Simple Plug-in Example 65

2.1  The Favorites Plug-in 65
2.2  Creating a Plug-in Project 66
2.3  Reviewing the Generated Code 71
2.4  Building a Product 81
2.5  Installing and Running the Product 86
2.6  Debugging the Product 88
2.7  PDE Views 90
2.8  Writing Plug-in Tests 92
2.9  Summary 98

Chapter 3: Eclipse Infrastructure 101

3.1  Structural Overview 101
3.2  Plug-in Directory or JAR file 104
3.3  Plug-in Manifest 107
3.4  Plug-in Class 114
3.5  Plug-in Model 119
3.6  Logging 122
3.7  Eclipse Plug-ins 124
3.8  Summary 125

Chapter 4: The Standard Widget Toolkit 127

4.1  SWT History and Goals 127
4.2  SWT Widgets 130
4.3  Layout Management 170
4.4  Resource Management 180
4.5  Summary 181

Chapter 5: JFace Viewers 185

5.1  List-Oriented Viewers 185
5.2  Text Viewers 203
5.3  Summary 206

Chapter 6: Actions 207

6.1  IAction versus IActionDelegate 207
6.2  Workbench Window Actions 209
6.3  Object Actions 224
6.4  View Actions 237
6.5  Editor Actions 244
6.6  Key Bindings 251
6.7  RFRS Considerations 256
6.8  Summary 257

Chapter 7: Views 259

7.1  View Declaration 261
7.2  View Part 263
7.3  View Actions 283
7.4  Linking the View 305
7.5  Saving View State 308
7.6  Testing 314
7.7  Image Caching 315
7.8  Auto-sizing Table Columns 316
7.9  RFRS Considerations 319
7.10  Summary 323

Chapter 8: Editors 325

8.1  Editor Declaration 326
8.2  Editor Part 330
8.3  Editing 344
8.4  Editor Lifecycle 350
8.5  Editor Actions 354
8.6  Linking the Editor 369
8.7  RFRS Considerations 369
8.8  Summary 374

Chapter 9: Resource Change Tracking 375

9.1  IResourceChangeListener 375
9.2  Processing Change Events 379
9.3  Batching Change Events 382
9.4  Progress Monitor 383
9.5  Delayed Changed Events 387
9.6  Summary 388

Chapter 10: Perspectives 389

10.1  Creating a Perspective 389
10.2  Enhancing an Existing Perspective 396
10.3  RFRS Considerations 403
10.4  Summary 404

Chapter 11: Dialogs and Wizards 40511.1  Dialogs 405
11.2  Wizards 430
11.3  RFRS Considerations 449
11.4  Summary 450Chapter 12: Preference Pages 451

12.1 Creating a Preference Page 451
12.2 Preference Page APIs 453
12.3 Preference APIs 467
12.4 RFRS Considerations 474
12.5 Summary 475

Chapter 13: Properties 477

13.1  Creating Properties 477
13.2  Displaying Properties in the Properties Dialog 481
13.3  Displaying Properties in the Properties View 489
13.4  Property Pages Reused as Preference Pages 493
13.5  RFRS Considerations 495
13.6  Summary 495

Chapter 14: Builders, Markers, and Natures 497

14.1  Builders 499
14.2  Markers 512
14.3  Natures 525
14.4  RFRS Considerations 535
14.5  Summary 537

Chapter 15: Implementing Help 539

15.1  Using Help 539
15.2  Implementing Help 542
15.3  Context-Sensitive Help (F1) 552
15.4  Accessing Help Programmatically 560
15.5  Cheat Sheets 563
15.6  RFRS Considerations 570
15.7  Summary 574

Chapter 16: Internationalization 575

16.1  Externalizing the Plug-in Manifest 576
16.2  Externalizing Plug-in Strings 578
16.3  Using Fragments 587
16.4  Summary 594

Chapter 17: Creating New Extension Points 595

17.1  The Extension Point Mechanism 595
17.2  Defining an Extension Point 597
17.3  Code Behind an Extension Point 607
17.4  Extension Point Documentation 614
17.5  Using the Extension Point 615
17.6  RFRS Considerations 617
17.7  Summary 618

Chapter 18: Features, Branding, and Updates 619

18.1  Feature Projects 620
18.2  Branding 631
18.3  Update Sites 637
18.4  RFRS Considerations 647
18.5  Summary 648

Chapter 19: Building a Product 651

19.1  A Brief Introduction to Ant 651
19.2  Building the Favorites Product 671
19.3  Summary 707

Chapter 20: Advanced Topics 709

20.1  Advanced Search--Reference Projects 710
20.2  Accessing Internal Code 711
20.3  Adapters 714
20.4  Opening a Browser or Creating an Email 718
20.5  Types Specified in an Extension Point 723
20.6  Modifying Eclipse to Find Part Identifiers 727
20.7  Label Decorators 732
20.8  Background Tasks--Jobs API 739
20.9  Plug-in ClassLoaders 742
20.10  Early Startup 747
20.11  Rich Client Platform 748
20.12  Conclusion 749

Appendix A: Eclipse Plug-ins and Resources 751

A.1  Plug-ins 751
A.2  Resources 760

Appendix B: Ready for Rational Software  765Index 767


Download the Foreword related to this title.


Download the Index file related to this title.


Submit Errata

More Information

InformIT Promotional Mailings & Special Offers

I would like to receive exclusive offers and hear about products from InformIT and its family of brands. I can unsubscribe at any time.


Pearson Education, Inc., 221 River Street, Hoboken, New Jersey 07030, (Pearson) presents this site to provide information about products and services that can be purchased through this site.

This privacy notice provides an overview of our commitment to privacy and describes how we collect, protect, use and share personal information collected through this site. Please note that other Pearson websites and online products and services have their own separate privacy policies.

Collection and Use of Information

To conduct business and deliver products and services, Pearson collects and uses personal information in several ways in connection with this site, including:

Questions and Inquiries

For inquiries and questions, we collect the inquiry or question, together with name, contact details (email address, phone number and mailing address) and any other additional information voluntarily submitted to us through a Contact Us form or an email. We use this information to address the inquiry and respond to the question.

Online Store

For orders and purchases placed through our online store on this site, we collect order details, name, institution name and address (if applicable), email address, phone number, shipping and billing addresses, credit/debit card information, shipping options and any instructions. We use this information to complete transactions, fulfill orders, communicate with individuals placing orders or visiting the online store, and for related purposes.


Pearson may offer opportunities to provide feedback or participate in surveys, including surveys evaluating Pearson products, services or sites. Participation is voluntary. Pearson collects information requested in the survey questions and uses the information to evaluate, support, maintain and improve products, services or sites, develop new products and services, conduct educational research and for other purposes specified in the survey.

Contests and Drawings

Occasionally, we may sponsor a contest or drawing. Participation is optional. Pearson collects name, contact information and other information specified on the entry form for the contest or drawing to conduct the contest or drawing. Pearson may collect additional personal information from the winners of a contest or drawing in order to award the prize and for tax reporting purposes, as required by law.


If you have elected to receive email newsletters or promotional mailings and special offers but want to unsubscribe, simply email information@informit.com.

Service Announcements

On rare occasions it is necessary to send out a strictly service related announcement. For instance, if our service is temporarily suspended for maintenance we might send users an email. Generally, users may not opt-out of these communications, though they can deactivate their account information. However, these communications are not promotional in nature.

Customer Service

We communicate with users on a regular basis to provide requested services and in regard to issues relating to their account we reply via email or phone in accordance with the users' wishes when a user submits their information through our Contact Us form.

Other Collection and Use of Information

Application and System Logs

Pearson automatically collects log data to help ensure the delivery, availability and security of this site. Log data may include technical information about how a user or visitor connected to this site, such as browser type, type of computer/device, operating system, internet service provider and IP address. We use this information for support purposes and to monitor the health of the site, identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents and appropriately scale computing resources.

Web Analytics

Pearson may use third party web trend analytical services, including Google Analytics, to collect visitor information, such as IP addresses, browser types, referring pages, pages visited and time spent on a particular site. While these analytical services collect and report information on an anonymous basis, they may use cookies to gather web trend information. The information gathered may enable Pearson (but not the third party web trend services) to link information with application and system log data. Pearson uses this information for system administration and to identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents, appropriately scale computing resources and otherwise support and deliver this site and its services.

Cookies and Related Technologies

This site uses cookies and similar technologies to personalize content, measure traffic patterns, control security, track use and access of information on this site, and provide interest-based messages and advertising. Users can manage and block the use of cookies through their browser. Disabling or blocking certain cookies may limit the functionality of this site.

Do Not Track

This site currently does not respond to Do Not Track signals.


Pearson uses appropriate physical, administrative and technical security measures to protect personal information from unauthorized access, use and disclosure.


This site is not directed to children under the age of 13.


Pearson may send or direct marketing communications to users, provided that

  • Pearson will not use personal information collected or processed as a K-12 school service provider for the purpose of directed or targeted advertising.
  • Such marketing is consistent with applicable law and Pearson's legal obligations.
  • Pearson will not knowingly direct or send marketing communications to an individual who has expressed a preference not to receive marketing.
  • Where required by applicable law, express or implied consent to marketing exists and has not been withdrawn.

Pearson may provide personal information to a third party service provider on a restricted basis to provide marketing solely on behalf of Pearson or an affiliate or customer for whom Pearson is a service provider. Marketing preferences may be changed at any time.

Correcting/Updating Personal Information

If a user's personally identifiable information changes (such as your postal address or email address), we provide a way to correct or update that user's personal data provided to us. This can be done on the Account page. If a user no longer desires our service and desires to delete his or her account, please contact us at customer-service@informit.com and we will process the deletion of a user's account.


Users can always make an informed choice as to whether they should proceed with certain services offered by InformIT. If you choose to remove yourself from our mailing list(s) simply visit the following page and uncheck any communication you no longer want to receive: www.informit.com/u.aspx.

Sale of Personal Information

Pearson does not rent or sell personal information in exchange for any payment of money.

While Pearson does not sell personal information, as defined in Nevada law, Nevada residents may email a request for no sale of their personal information to NevadaDesignatedRequest@pearson.com.

Supplemental Privacy Statement for California Residents

California residents should read our Supplemental privacy statement for California residents in conjunction with this Privacy Notice. The Supplemental privacy statement for California residents explains Pearson's commitment to comply with California law and applies to personal information of California residents collected in connection with this site and the Services.

Sharing and Disclosure

Pearson may disclose personal information, as follows:

  • As required by law.
  • With the consent of the individual (or their parent, if the individual is a minor)
  • In response to a subpoena, court order or legal process, to the extent permitted or required by law
  • To protect the security and safety of individuals, data, assets and systems, consistent with applicable law
  • In connection the sale, joint venture or other transfer of some or all of its company or assets, subject to the provisions of this Privacy Notice
  • To investigate or address actual or suspected fraud or other illegal activities
  • To exercise its legal rights, including enforcement of the Terms of Use for this site or another contract
  • To affiliated Pearson companies and other companies and organizations who perform work for Pearson and are obligated to protect the privacy of personal information consistent with this Privacy Notice
  • To a school, organization, company or government agency, where Pearson collects or processes the personal information in a school setting or on behalf of such organization, company or government agency.


This web site contains links to other sites. Please be aware that we are not responsible for the privacy practices of such other sites. We encourage our users to be aware when they leave our site and to read the privacy statements of each and every web site that collects Personal Information. This privacy statement applies solely to information collected by this web site.

Requests and Contact

Please contact us about this Privacy Notice or if you have any requests or questions relating to the privacy of your personal information.

Changes to this Privacy Notice

We may revise this Privacy Notice through an updated posting. We will identify the effective date of the revision in the posting. Often, updates are made to provide greater clarity or to comply with changes in regulatory requirements. If the updates involve material changes to the collection, protection, use or disclosure of Personal Information, Pearson will provide notice of the change through a conspicuous notice on this site or other appropriate way. Continued use of the site after the effective date of a posted revision evidences acceptance. Please contact us if you have questions or concerns about the Privacy Notice or any objection to any revisions.

Last Update: November 17, 2020