Eclipse Plug-ins Third Edition - GBV · 1.10 Introduction to Debugging 59 1.10.1 Setting...

24
Eclipse Plug-ins Third Edition Eric Clayberg Dan Rubel .fT Addison-Wesley Upper Saddle River, N] Boston • Indianapolis • San Francisco New York • Toronto • Montreal • London • Munich • Paris • Madrid Capetown • Sydney • Tokyo Singapore • Mexico City

Transcript of Eclipse Plug-ins Third Edition - GBV · 1.10 Introduction to Debugging 59 1.10.1 Setting...

Eclipse Plug-ins

Third Edition

Eric ClaybergDan Rubel

.fTAddison-WesleyUpper Saddle River, N] • Boston • Indianapolis • San Francisco

New York • Toronto • Montreal • London • Munich • Paris • MadridCapetown • Sydney • Tokyo • Singapore • Mexico City

Contents

Foreword by Skip McGaughey

Foreword by Simon Archer

Preface

Chapter 1 Using Ec1ipse Tools

1.1 Getting Started 1

1.1.1 Getting Eclipse 1

1.1.2 Installation 3

XXXl1l

xxxv

XXXVll

1

1.2 The Ec1ipse Workbench 3

1.2.1 Perspectives, views, and editors 5

1.2.2 Actions 11

1.3 Setting Up YOUf Environment 14

1.3.1 Workbench preferences 15

1.3.2 Java preferences 17

1.3.3 Importing and exporting preferences 18

x

1.4

1.5

1.6

1.7

1.8

Crearing a Projecr 19

1.4.1 Using the new Java Project wizard 19

1.4.2 .classpath and .project files 22

1.4.3 Using the Java Package wizard 24

1.4.4 Using the Java Class wizard 24

Navigaring 26

1.5.1 Open Type dialog 26

1.5.2 Type Hierarchy view 27

1.5.3 Go to Line 27

1.5.4 Outline view 27

1.5.5 Quick Access 28

Searching 28

1.6.1 File Search 28

1.6.2 Java Search 30

1.6.3 Other Search menu options 32

1.6.4 Working sets 33

Wriring Code 35

1.7.1 Java editor 35

1.7.2 Templates 40

1.7.3 Refactoring 42

1.7.4 Local history 46

1.7.5 File extension associations 47

Team Developmenr Using CVS 49

1.8.1 Getting started with CVS 50

1.8.2 Checking out a project from CVS 51

1.8.3 Synchronizing with the repository 52

1.8.4 Comparing and replacing resources 53

1.8.5 CVS label decorators 54

Contents

Contents xi

1.9 Running Applkations 55

1.9.1 Launching Java applications 56

1.9.2 Launch configurations 57

1.10 Introduction to Debugging 59

1.10.1 Setting breakpoints 59

1.10.2 Using the Debug view 61

1.10.3 Using the Variables view 62

1.10.4 Using the Expressions view 62

1.11 Introduction to Testing 63

1.11.1 Creating test cases 63

1.11.2 Running test cases 64

1.12 Introduction to Mylyn 65

1.12.1 Using Mylyn to search Bugzilla 67

1.13 Summary 69

Chapter 2 A Simple Plug-in Example

2.1 The Favorites Plug-in 71

2.2 Creating a Plug-in Project 72

2.2.1 New Plug-in Project wizard 72

2.2.2 Define the plug-in 73

2.2.3 Define the view 75

2.3 Reviewing the Generated Code 77

2.3.1 The Plug-in manifests 77

2.3.2 The Activator or Plug-in dass 83

2.3.3 The Favorites view 84

2.4 Building a Product 86

2.4.1 Building manually 87

2.4.2 Building with Apache Ant 89

71

xii

2.5

2.6

2.7

2.8

2.9

2.10

Installing and Running the Product 92

Debugging the Product 94

2.6.1 Creating a configuration 94

2.6.2 Selecting plug-ins and fragments 95

2.6.3 Launching the Runtime Workbench 96

PDE Views 96

2.7.1 The Plug-in Registry view 96

2.7.2 The Plug-ins view 97

2.7.3 The Plug-in Dependencies view 97

2.7.4 Plug-in Artifact Search 98

2.7.5 Plug-in Spy 99

Writing Plug-in Tests 99

2.8.1 Test preparation 100

2.8.2 Creating a Plug-in test project 100

2.8.3 Creating a Plug-in test 100

2.8.4 Running a Plug-in test 103

2.8.5 Uninstalling the Favorites plug-in 104

Book Samples 105

Summary 106

(oOleOls

Chapter 3 Eclipse Infrastructure

3.1 Structural Overview 107

3.1.1 Plug-in structure 108

3.1.2 Workspace 110

3.2 Plug-in Directory or JAR file 110

3.2.1 Link files 111

3.2.2 Hybrid approach 113

107

Contents

3.3

3.4

3.5

Plug-in Manifest 113

3.3.1 Plug-in declaration 114

3.3.2 Plug-in runtime 116

3.3.3 Plug-in dependencies 116

3.3.4 Extensions and extension points 118

Activator or Plug-in Class 120

3.4.1 Startup and shutdown 120

3.4.2 Early plug-in startup 121

3.4.3 Static plug-in resources 121

3.4.4 Plug-in preferences 122

3.4.5 Plug-in configuration files 123

3.4.6 Plugin and AbstractUIPlugin 125

Plug-in Model 126

3.5.1 Platform 126

3.5.2 Plug-ins and Bundles 127

3.5.3 Plug-in extension registry 128

xiii

3.6 Logging 128

3.6.1 Status objects 130

3.6.2 The Error Log view 131

3.6.3 Handling Errors (and other Status) 131

3.7 Ec1ipse Plug-ins 132

3.8 Summary 133

Chapter 4 The Standard Widget Toolkit

4.1 SWT History and Goals 135

4.2 SWT Widgets 138

4.2.1 Simple stand-alone example 138

4.2.2 Widget lifecycle 141

4.2.3 Widget events 142

135

xiv Contents

4.2.4 Abstract widget dasses 144

4.2.5 Top-level dasses 148

4.2.6 Useful widgets 151

4.2.7 Menus 174

4.2.8 Additional widgets 178

4.3 Layout Management 178

4.3.1 FillLayout 179

4.3.2 RowLayout 180

4.3.3 GridLayout 182

4.3.4 Formlayout 185

4.4 Resource Management 188

4.4.1 Colors 189

4.4.2 Fonts 189

4.4.3 Images 189

4.5 GUI Builders 190

4.6 Summary 191

Chapter 5 JFace Viewers 193

5.1 List-Oriented Viewers 193

5.1.1 Label providers 194

5.1.2 Content providers 195

5.1.3 Viewer sorters 197

5.1.4 Viewer filters 197

5.1.5 StructuredViewer dass 198

5.1.6 ListViewer dass 200

5.1.7 TableViewer dass 203

5.1.8 TreeViewer dass 207

5.2 Text Viewers 211

5.3 Summary 214

Contents

Chapter 6 Commands and Actions 215

xv

6.1 Commands 216

6.1.1 Defining a command 216

6.2 Menu and Toolbar Contributions 220

6.2.1 Defining a top level menu 220

6.2.2 Adding to an existing top level menu 221

6.2.3 Defining a top level toolbar item 221

6.2.4 Limiting top level menu and toolbar item visibility 222

6.2.5 Defining a selection-based context menu item 223

6.2.6 Defining a view-specific menu or toolbar item 228

6.2.7 Defining an editor-specific menu or toolbar item 229

6.2.8 Dynamic menu contributions 230

6.2.9 locationURI 230

6.2.10 visibleWhen expression 231

6.3 Handlers 236

6.3.1 Creating a new IHandler 237

6.4 Key Bindings 238

6.5 IAction versus IActionDelegate 240

6.6 Workbench Window Actions 242

6.6.1 Defining a workbench window menu 243

6.6.2 Groups in a menu 245

6.6.3 Defining a menu item and toolbar button 245

6.6.4 Action images 247

6.6.5 Insertion points 248

6.6.6 Creating an action delegate 249

6.6.7 Manually testing the new action 252

6.6.8 Adding a test für the new action 253

6.6.9 Discussion 255

xv;

6.7 Object Actions 257

6.7.1 Defining an object-based action 257

6.7.2 Action filtering and enablement 260

6.7.3 IObjectActionDelegate 266

6.7.4 Creating an object-based submenu 267

6.7.5 Manually testing the new action 268

6.7.6 Adding a test for the new action 268

6.8 View Actions 270

6.8.1 Defining a view context submenu 270

6.8.2 Defining a view context menu action 271

6.8.3 IViewActionDelegate 273

6.8.4 Defining a view toolbar action 273

6.8.5 Defining a view pull-down submenu and action 274

6.8.6 Manually testing the new actions 275

6.8.7 Adding tests for the new actions 275

6.8.8 View context menu identifiers 275

6.9 Editor Actions 277

6.9.1 Defining an editor context menu 278

6.9.2 Defining an editor context action 279

6.9.3 IEditorActionDelegate 279

6.9.4 Defining an editor top-level menu 280

6.9.5 Defining an editor top-level action 281

6.9.6 Defining an editor toolbar action 282

6.9.7 Adding tests for the new actions 283

6.9.8 Editor context menu identifiers 283

6.10 Actions and Key Bindings 284

6.10.1 Associating commands with actions 284

6.10.2 Keyboard accessibility 285

Contents

Contents xvii

6.11 RFRS Considerations 286

6.11.1 Global action labels (RFRS 5.3.5.1) 286

6.12 Summary 287

Chapter 7 Views 289

7.1 View Dec1aration 291

7.1.1 Declaring a view category 291

7.1.2 Declaring a view 292

7.2 View Part 293

7.2.1 View methods 293

7.2.2 View controls 294

7.2.3 View model 295

7.2.4 Content provider 306

7.2.5 Label provider 307

7.2.6 Viewer sorter 308

7.2.7 Viewer filters 311

7.2.8 View selection 312

7.2.9 Implementing a propertyTester 312

7.3 View Commands 313

7.3.1 Model command handlers 313

7.3.2 Context menu 314

7.3.3 Toolbar buttons 318

7.3.4 PuB-down menu 319

7.3.5 Keyboard commands 320

7.3.6 Global commands 321

7.3.7 Clipboard commands 322

7.3.8 Drag-and-drop support 326

7.3.9 Inline editing 333

xv;;; Contents

7.4 Linking the View 336

7.4.1 Selection provider 337

7.4.2 Adaptable objects 337

7.4.3 Selection listener 338

7.4.4 Opening an editor 339

7.5 Saving View State 340

7.5.1 Saving local view information 340

7.5.2 Saving global view information 343

7.6 Testing 345

7.7 Image Caching 346

7.8 Auto-sizing Table Columns 348

7.9 RFRS Considerations 348

7.9.1 Views for navigation (RFRS 3.5.15) 348

7.9.2 Views save immediately (RFRS 3.5.16) 349

7.9.3 View initialization (RFRS 3.5.17) 349

7.9.4 View global actions (RFRS 3.5.18) 349

7.9.5 Persist view state (RFRS 3.5.19) 350

7.9.6 Register context menus (RFRS 5.3.5.8) 350

7.9.7 Action filters for views (RFRS 5.3.5.9) 351

7.10 Summary 352

Chapter 8 Editors

8.1 Editor Dec1aration 354

8.2 Editor Part 358

8.2.1 Editor methods 358

8.2.2 Editor controls 360

8.2.3 Editor model 363

8.2.4 Content provider 369

8.2.5 Label provider 370

353

Contents

8.3 Editing

8.3.1

8.3.2

8.3.3

8.3.4

372

Cell editors 372

Change listeners 374

Cell validators 376

Editing versus selecting 377

xix

8.4 Editor Lifecyc1e 378

8.4.1 Dirty editors 378

8.4.2 Switching pages 379

8.4.3 Saving content 381

8.5 Editor Commands 381

8.5.1 Context menu 381

8.5.2 Editor contributor 384

8.5.3 Editor commands rather than editor contributor 389

8.5.4 Undo/Redo 392

8.5.5 Clipboard actions 400

8.6 Linking the Editor 400

8.7 RFRS Considerations 401

8.7.1 Using an editor to edit or browse (RFRS 3.5.9) 401

8.7.2 Editor lifecycle (RFRS 3.5.10) 401

8.7.3 Accessing global actions (RFRS 3.5.11) 402

8.7.4 Closing when the object is deleted (RFRS 3.5.12) 403

8.7.5 Synchronize external changes (RFRS 3.5.14) 403

8.7.6 Registering editor menus (RFRS 5.3.5.2) 403

8.7.7 Editor action filters (RFRS 5.3.5.3) 404

8.7.8 Unsaved editor modifications (RFRS 5.3.5.4) 404

8.7.9 Prefix dirty resomces (RFRS 5.3.5.5) 404

8.7.10 Editor outline view (RFRS 5.3.5.6) 405

8.7.11 Synchronize with outline view (RFRS 5.3.5.7) 405

8.8 Summary 405

xx

Chapter 9 Resource Change Tracking 407

Contents

9.1 IResourceChangeListener 407

9.1.1 IResourceChangeEvent 408

9.1.2 IResourceDelta 409

9.2 Processing Change Events 411

9.3 Batching Change Events 414

9.4 Progress Monitor 415

9.4.1 IProgressMonitor 415

9.4.2 Classes for displaying progress 416

9.4.3 Workbench window status bar 418

9.4.4 IProgressService 419

9.5 Delayed Changed Events 420

9.6 Summary 421

Chapter 10 Perspectives 423

10.1 Creating a Perspective 423

10.1.1 Perspective extension point 424

10.1.2 Perspective factories 426

10.1.3 IIlageLayout 429

10.2 Enhancing an Existing Perspective 430

10.2.1 Adding views and placeholders 432

10.2.2 Adding shortcuts 434

10.2.3 Adding action sets 436

10.3 RFRS Considerations 438

10.3.1 Create for long-lived tasks (RFRS 5.3.5.10) 438

10.3.2 Extend existing perspectives (RFRS 5.3.5.11) 438

10.3.3 Add actions to the window menu (RFRS 5.3.5.15) 439

10.4 Summary 439

Contents

Chapter 11 Dialogs and Wizards 441

xxi

11.1 Dialogs 441

11.1.1 SWT dialogs versus JFaee dialogs 442

11.1.2 Common SWT dialogs 442

11.1.3 CommonJFaee dialogs 443

11.1.4 Creating a JFaee dialog 446

11.1.5 Dialog units 448

11.1.6 Initial dialog loeation and size 449

11.1.7 Resizable dialogs 450

11.1.8 Favorites view filter dialog 450

11.1.9 Details dialog 454

11.1.10 Opening a dialog-finding a parent shell 462

11.2 Wizards 464

11.2.1 IWizard 465

11.2.2 IWizardPage 467

11.2.3 IWizardContainer 468

11.2.4 Nested wizards 469

11.2.5 Launehing a wizard 469

11.2.6 Wizard example 473

11.2.7 Dialog settings 475

11.2.8 Page eontent based on seleetion 475

11.2.9 Page eontent based on previous page 480

11.3 RFRS Considerations 482

11.3.1 Wizard look and feel (RFRS 3.5.2) 482

11.3.2 Open new file in editor (RFRS 3.5.6) 483

11.3.3 New projeet switehes perspeetive (RFRS 3.5.7) 483

11.3.4 Show new objeet (RFRS 3.5.8) 483

11.3.5 One-page wizard buttons (RFRS 5.3.5.13) 484

11.4 Summary 484

xxii

Chapter 12 Preference Pages

12.1 Creating a Preference Page 485

12.2 Preference Page APIs 487

12.2.1 FieldEditorPreferencePage 489

12.2.2 Field editors 490

12.2.3 PreferencePage 494

12.2.4 Favorites preference page 495

12.2.5 Validation 497

12.2.6 Nested preference pages 498

12.2.7 Tabbed preference pages 500

12.3 Preference APIs 501

485

Contents

12.3.1

12.3.2

12.3.3

12.3.4

12.3.5

12.3.6

Default preferences 502

Accessing preferences 503

Specifying default values programmatically 505

Specifying default values in a file 506

Hooking up the Favorites view 507

Listening for preference changes 507

12.4 RFRS Considerations 508

12.4.1 Preferences dialog use (RFRS 3.5.25) 508

12.5 Summary 509

Chapter 13 Properties 511

13.1 Creating Properties 511

13.1.1 FavoriteItern properties 512

13.1.2 Resource properties 513

13.2 Displaying Properties in the Properties Dialog 515

13.2.1 Declaring a Property page 515

13.2.2 Creating a resource Property page 519

Contents

13.2.3

13.2.4

13.2.5

Creating a Favorites item resouree page 521

Opening the Properties dialog 522

IColorProvider 523

xxiii

13.3 Displaying Properties in the Properties View 524

13.3.1 Properties view API 525

13.3.2 Favorite properties in the Properties view 527

13.4 Property Pages Reused as Preference Pages 529

13.5 RFRS Considerations 530

13.5.1 Properties views for quiek aeeess (RFRS 3.5.21) 530

13.6 Summary 531

Chapter 14 Builders, Markers, and Natures 533

14.1 Builders 535

14.1.1 Declaring a builder 535

14.1.2 InerementalProjeetBuilder 538

14.1.3 Derived resourees 545

14.1.4 Assoeiating a builder with a project 545

14.1.5 Invoking builders 548

14.2 Markers 548

14.2.1 11arkertypes 549

14.2.2 Creating and deleting markers 551

14.2.3 11arker attributes 553

14.2.4 11arker resolution-quick fix 556

14.2.5 Finding markers 561

14.3 Natures 561

14.3.1

14.3.2

14.3.3

14.3.4

Declaring a nature 562

Associating builders and natures 564

IProjectNature 565

Required natures 566

xxiv

14.3.5

14.3.6

14.3.7

Conflieting natures 567

Nature image 567

Assoeiating a nature with a projeet 568

Contents

14.4 RFRS Considerations 572

14.4.1

14.4.2

14.4.3

14.4.4

14.4.5

14.4.6

14.4.7

Use builders to eonvert resourees (RFRS 3.8.1) 572

Do not replaee existing builders (RFRS 3.8.3) 573

Do not misuse the term "build" (RFRS 5.3.8.1) 573

Mark ereated resourees as "derived" (RFRS 5.3.8.2) 573

Respond 10 clean-build requests (RFRS 5.3.8.3) 574

Use IResoureeProxy when possible (RFRS 5.3.8.4) 574

Builders must be added by natures (RFRS 5.3.8.5) 575

14.5 Summary 575

Chapter 15 Implementing Help

15.1 UsingHelp 577

15.2 Implementing Help 580

15.2.1 Creating a new help projeet 581

15.2.2 Plug-in manifest files 585

15.2.3 Table of eontents (toe) files 586

15.2.4 Creating HTML eontent 589

577

15.3 Context-Sensitive Help (Fl) 591

15.3.1 Assoeiating eontext IDs with items 592

15.3.2 IWorkbenehHelpSystem API 594

15.3.3 Creating eontext-sensitive help eontent 595

15.3.4 Context extension point 595

15.3.5 Marker help 598

15.4 Accessing Help Programmatically 599

15.4.1 Opening a speeifie help page 599

15.4.2 Opening a Web page 600

Contents xxv

15.5 Cheat Sheets 601

15.5.1

15.5.2

15.5.3

15.5.4

15.5.5

Using a cheat sheet 601

Creating a simple cheat sheet 603

Registering a cheat sheet 604

Adding cheat sheet commands 607

Adding command parameters 609

15.6 RFRS Considerations 611

15.6.1 Provide help through the help system (RFRS 3.7.2) 611

15.6.2 Provide aB help via the help system (RFRS 5.3.7.1) 612

15.6.3 Context help activated using F1 (RFRS 5.3.7.2) 612

15.6.4 Implement active help (RFRS 5.3.7.3) 612

15.6.5 Use of stand-alone help (RFRS 5.3.7.4) 613

15.6.6 Use of additional documentation (RFRS 5.3.7.5) 613

15.6.7 Provide an overview of tasks' flow (RFRS 5.3.5.34) 613

15.6.8 Illustrate only one task (RFRS 5.3.5.35) 614

15.6.9 Provide help link with each step (RFRS 5.3.5.36) 614

15.7 Summary 614

Chapter 16 Internationalization

16.1 Externalizing the Plug-in Manifest 618

16.2 Externalizing Plug-in Strings 620

16.3 Using Fragments 629

16.3.1 New Fragment Project wizard 630

16.3.2 Fragment manifest file 633

16.3.3 Fragment project contents 635

16.4 Manual Testing 636

16.5 Summary 636

617

xxv;

Chapter 17 Creating New Extension Points 637

17.1 The Extension Point Mechanism 637

17.2 Defining an Extension Point 639

17.2.1 Creating an extension point 639

17.2.2 Creating an extension point schema 641

17.2.3 Extension point elements and attributes 643

17.2.4 Extension point element grammar 647

17.3 Code Behind an Extension Point 649

17.3.1 Parsing extension information 649

17.3.2 Constructing proxies 651

17.3.3 Creating executable extensions 653

17.3.4 Cleanup 655

17.4 Extension Point Documentation 656

17.5 Using the Extension Point 657

17.6 RFRS Considerations 659

17.6.1 Documentextensionpoints (RFRS 3.10.5) 659

17.6.2 Log errors (RFRS 5.3.10.1) 660

17.7 Summary 660

Chapter 18 Features, Branding, and Updates 661

18.1 Feature Projects 662

18.1.1 Creating a new feature project 663

18.1.2 Feature manifest files 665

18.1.3 Feature manifest editor 666

18.1.4 Testing the Feature 673

18.2 Branding 673

18.2.1 The about.html file 674

18.2.2 The about.ini file 675

18.2.3 Product branding 677

Contents

Contents xxvii

18.3 Update Sites 679

18.3.1 Creating an update site project 679

18.3.2 The site.xml file 681

18.3.3 The update Web site 684

18.3.4 Revisiting the feature manifest 685

18.3.5 Accessing the update site 685

18.4 RFRS Considerations 689

18.4.1 Do not override product branding (RFRS 3.1.8) 689

18.4.2 Branded feature visibility (RFRS 5.3.1.9) 689

18.4.3 Inc1ude attribution information (RFRS 5.3.1.10) 689

18.4.4 about.html file contents (RFRS 5.3.1.11) 690

18.4.5 Splash screen restrictions (RFRS 5.3.1.12) 690

18.5 Summary 691

Chapter 19 Building a Product

19.1 ABrief Introduction to Ant 693

693

19.1.1

19.1.2

19.1.3

19.1.4

19.1.5

19.1.6

19.1.7

Build projects 693

Build targets 694

Build tasks 695

Build properties 699

<antcalb task 706

macrodef 708

Ant extensions 710

19.2 Building with PDE 711

19.2.1 PDE Build Overview 711

19.2.2 Steps in the PDE Build process 712

19.2.3 Directories in the PDE Build process 714

19.2.4 PDE Scripts and Templates 714

19.2.5 Creating a PDE Build 715

xxviii

19.2.6

19.2.7

19.2.8

19.2.9

19.2.10

19.2.11

19.2.12

Specifying compilation levels 717

Running a PDE Build 717

Automatically Generating Version Qualifiers 719

Keeping the versions in sync 719

Build Properties 720

Custom PDE Targets 723

Editing with different versions of Eclipse 725

Contents

19.3 Debugging the PDE Build process 726

19.3.1 Auto-generated build scripts 727

19.3.2 Using the Debugger 727

19.4 Summary 729

Chapter 20 GEF: Graphical Editing Framework 731

20.1 GEF Architecture 731

20.2 GEF Model 732

20.3 GEF Controller 733

20.3.1 EditPart classes 734

20.3.2 Top Level EditPart 736

20.3.3 Child EditParts 737

20.3.4 Connection EditParts 739

20.3.5 EditPartFactory 742

20.4 GEF Figures 743

20.4.1 IFigure 743

20.4.2 Graphics 745

20.4.3 Complex Figures 747

20.4.4 Connection Figures 751

20.4.5 LayoutManager 751

20.5 GEF in an Eclipse View 754

20.5.1 Listening to Model Changes 757

Contents xxix

20.6 GEF in an Eclipse Editor 758

20.6.1 Editor Input 758

20.6.2 FavoritesManagerEditPart revisited 759

20.6.3 Graphical Editor Classes 760

20.6.4 FavoritesGEFEditor 761

20.6.5 User Interaction with GEF 763

20.6.6 Edit Menu 768

20.6.7 FreeformLayer and FreeformLayout 770

20.6.8 Z-order 771

20.6.9 Deleting model objects 774

20.7 Palette 775

20.7.1 Creating a GEF Palette 775

20.7.2 CreateCommand 776

20.8 Summary 778

Chapter 21 Advanced Topics 779

21.1 Advanced Search-Reference Projects 780

21.2 Accessing Internal Code 781

21.2.1 Eclipse newsgroup 781

21.2.2 Bugzilla-Eclipse bug tracking system 782

21.2.3 Options for accessing internal code 782

21.2.4 How Eclipse is different 783

21.2.5 Related plug-ins 783

21.2.6 Using fragments 784

21.3 Adapters 784

21.3.1 IAdaptable 785

21.3.2 Using adapters 785

21.3.3 Adapter factory 786

21.3.4 IWorkbenchAdapter 788

xxx

21.4 Opening a Browser or Creating an Email 788

21.4.1 IWorkbenchBrowserSupport 788

21.4.2 LaunchURL 789

21.4.3 OpenEmailAction 790

21.5 Types Specified in an Extension Point 793

21.5.1 Parameterized types 794

21.5.2 Referencing a dass in a different plug-in 796

21.6 Modifying Eclipse to Find Part Identifiers 797

21.6.1 Modifying the Edipse base 797

21.6.2 Creating the global action 799

21.6.3 Testing the new utility 801

21.6.4 Submitting the change to Edipse 801

21.7 Label Decorators 802

(antents

21.7.1

21.7.2

21.7.3

21.7.4

Dedaring a label decorator 803

ILightweightLabelDecorator 804

Decorative label decorators 806

IDecoratorManager 807

21.8

21.9

21.10

Background Tasks-Jobs API 808

Plug-in ClassLoaders 811

Early Startup 816

21.10.1 Managing early startup 816

21.10.2 Disabling early startup 817

21.11 Rich Client Platform 817

21.12 Conclusion 818

Contents xxxi

Appendix A Eclipse Plug-ins and Resomees 819

A.1 Plug-ins 819

A.1.1 CodePro AnalytiX 819

A.1.2 CodePro Profiler 821

A.1.3 EclipseUML 822

A.1.4 MyEclipse Enterprise Workbench 823

A.1.5 WindowBuilder Pro 825

A.1.6 WindowTester Pro 827

A.2 Resomees 828

A.2.1 Eclipse.org 828

A.2.2 Eclipse Plug-in Central 829

A.2.3 Eclipse wiki wiki 829

A.2.4 Planet Eclipse 829

A.2.5 EclipseCon 830

A.2.6 Eclipse Easter eggs 830

A.2.7 IBM Alphaworks on Eclipse 830

A.2.8 IBM Eclipse research 830

A.2.9 QNX Momentics 830

Appendix B Ready for Rational Software 831

Index 833