Eclipse Plug-ins Third Edition - GBV · 1.10 Introduction to Debugging 59 1.10.1 Setting...
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