فهرست مطالب :
Contents......Page 10
Foreword......Page 34
Foreword......Page 36
Preface......Page 38
1.1.1 Getting Eclipse......Page 48
1.2 The Eclipse Workbench......Page 50
1.2.1 Perspectives, views, and editors......Page 52
1.2.2 Actions......Page 58
1.3 Setting Up Your Environment......Page 61
1.3.1 Workbench preferences......Page 62
1.3.2 Java preferences......Page 64
1.3.3 Importing and exporting preferences......Page 65
1.4.1 Using the new Java Project wizard......Page 66
1.4.2 .classpath and .project files......Page 69
1.4.4 Using the Java Class wizard......Page 71
1.5.1 Open Type dialog......Page 73
1.5.4 Outline view......Page 74
1.6.1 File Search......Page 75
1.6.2 Java Search......Page 77
1.6.3 Other Search menu options......Page 79
1.6.4 Working sets......Page 80
1.7.1 Java editor......Page 82
1.7.2 Templates......Page 87
1.7.3 Refactoring......Page 89
1.7.4 Local history......Page 93
1.7.5 File extension associations......Page 94
1.8 Team Development Using CVS......Page 96
1.8.1 Getting started with CVS......Page 97
1.8.2 Checking out a project from CVS......Page 98
1.8.3 Synchronizing with the repository......Page 99
1.8.4 Comparing and replacing resources......Page 100
1.8.5 CVS label decorators......Page 101
1.9 Running Applications......Page 102
1.9.1 Launching Java applications......Page 103
1.9.2 Launch configurations......Page 104
1.10.1 Setting breakpoints......Page 106
1.10.2 Using the Debug view......Page 108
1.10.4 Using the Expressions view......Page 109
1.11.1 Creating test cases......Page 110
1.11.2 Running test cases......Page 111
1.12 Introduction to Mylyn......Page 112
1.12.1 Using Mylyn to search Bugzilla......Page 114
1.13 Summary......Page 116
2.1 The Favorites Plug-in......Page 118
2.2.1 New Plug-in Project wizard......Page 119
2.2.2 Define the plug-in......Page 120
2.2.3 Define the view......Page 122
2.3.1 The Plug-in manifests......Page 124
2.3.2 The Activator or Plug-in class......Page 130
2.3.3 The Favorites view......Page 131
2.4 Building a Product......Page 133
2.4.1 Building manually......Page 134
2.4.2 Building with Apache Ant......Page 136
2.5 Installing and Running the Product......Page 139
2.6.1 Creating a configuration......Page 141
2.6.2 Selecting plug-ins and fragments......Page 142
2.7.1 The Plug-in Registry view......Page 143
2.7.3 The Plug-in Dependencies view......Page 144
2.7.4 Plug-in Artifact Search......Page 145
2.8 Writing Plug-in Tests......Page 146
2.8.3 Creating a Plug-in test......Page 147
2.8.4 Running a Plug-in test......Page 150
2.8.5 Uninstalling the Favorites plug-in......Page 151
2.9 Book Samples......Page 152
2.10 Summary......Page 153
3.1 Structural Overview......Page 154
3.1.1 Plug-in structure......Page 155
3.2 Plug-in Directory or JAR file......Page 157
3.2.1 Link files......Page 158
3.3 Plug-in Manifest......Page 160
3.3.1 Plug-in declaration......Page 161
3.3.3 Plug-in dependencies......Page 163
3.3.4 Extensions and extension points......Page 165
3.4.1 Startup and shutdown......Page 167
3.4.3 Static plug-in resources......Page 168
3.4.4 Plug-in preferences......Page 169
3.4.5 Plug-in configuration files......Page 170
3.4.6 Plugin and AbstractUIPlugin......Page 172
3.5.1 Platform......Page 173
3.5.2 Plug-ins and Bundles......Page 174
3.6 Logging......Page 175
3.6.1 Status objects......Page 177
3.6.3 Handling Errors (and other Status)......Page 178
3.7 Eclipse Plug-ins......Page 179
3.8 Summary......Page 180
4.1 SWT History and Goals......Page 182
4.2.1 Simple stand-alone example......Page 185
4.2.2 Widget lifecycle......Page 188
4.2.3 Widget events......Page 189
4.2.4 Abstract widget classes......Page 191
4.2.5 Top-level classes......Page 195
4.2.6 Useful widgets......Page 198
4.2.7 Menus......Page 221
4.3 Layout Management......Page 225
4.3.1 FillLayout......Page 226
4.3.2 RowLayout......Page 227
4.3.3 GridLayout......Page 229
4.3.4 FormLayout......Page 232
4.4 Resource Management......Page 235
4.4.3 Images......Page 236
4.5 GUI Builders......Page 237
4.6 Summary......Page 238
5.1 List-Oriented Viewers......Page 240
5.1.1 Label providers......Page 241
5.1.2 Content providers......Page 242
5.1.4 Viewer filters......Page 244
5.1.5 StructuredViewer class......Page 245
5.1.6 ListViewer class......Page 247
5.1.7 TableViewer class......Page 250
5.1.8 TreeViewer class......Page 254
5.2 Text Viewers......Page 258
5.3 Summary......Page 261
Chapter 6 Commands and Actions......Page 262
6.1.1 Defining a command......Page 263
6.2.1 Defining a top level menu......Page 267
6.2.3 Defining a top level toolbar item......Page 268
6.2.4 Limiting top level menu and toolbar item visibility......Page 269
6.2.5 Defining a selection-based context menu item......Page 270
6.2.6 Defining a view-specific menu or toolbar item......Page 275
6.2.7 Defining an editor-specific menu or toolbar item......Page 276
6.2.9 locationURI......Page 277
6.2.10 visibleWhen expression......Page 278
6.3 Handlers......Page 283
6.3.1 Creating a new IHandler......Page 284
6.4 Key Bindings......Page 285
6.5 IAction versus IActionDelegate......Page 287
6.6 Workbench Window Actions......Page 289
6.6.1 Defining a workbench window menu......Page 290
6.6.3 Defining a menu item and toolbar button......Page 292
6.6.4 Action images......Page 294
6.6.5 Insertion points......Page 295
6.6.6 Creating an action delegate......Page 296
6.6.7 Manually testing the new action......Page 299
6.6.8 Adding a test for the new action......Page 300
6.6.9 Discussion......Page 302
6.7.1 Defining an object-based action......Page 304
6.7.2 Action filtering and enablement......Page 307
6.7.3 IObjectActionDelegate......Page 313
6.7.4 Creating an object-based submenu......Page 314
6.7.6 Adding a test for the new action......Page 315
6.8.1 Defining a view context submenu......Page 317
6.8.2 Defining a view context menu action......Page 318
6.8.4 Defining a view toolbar action......Page 320
6.8.5 Defining a view pull-down submenu and action......Page 321
6.8.8 View context menu identifiers......Page 322
6.9 Editor Actions......Page 324
6.9.1 Defining an editor context menu......Page 325
6.9.3 IEditorActionDelegate......Page 326
6.9.4 Defining an editor top-level menu......Page 327
6.9.5 Defining an editor top-level action......Page 328
6.9.6 Defining an editor toolbar action......Page 329
6.9.8 Editor context menu identifiers......Page 330
6.10.1 Associating commands with actions......Page 331
6.10.2 Keyboard accessibility......Page 332
6.11.1 Global action labels (RFRS 5.3.5.1)......Page 333
6.12 Summary......Page 334
Chapter 7 Views......Page 336
7.1.1 Declaring a view category......Page 338
7.1.2 Declaring a view......Page 339
7.2.1 View methods......Page 340
7.2.2 View controls......Page 341
7.2.3 View model......Page 342
7.2.4 Content provider......Page 353
7.2.5 Label provider......Page 354
7.2.6 Viewer sorter......Page 355
7.2.7 Viewer filters......Page 358
7.2.9 Implementing a propertyTester......Page 359
7.3.1 Model command handlers......Page 360
7.3.2 Context menu......Page 361
7.3.3 Toolbar buttons......Page 365
7.3.4 Pull-down menu......Page 366
7.3.5 Keyboard commands......Page 367
7.3.6 Global commands......Page 368
7.3.7 Clipboard commands......Page 369
7.3.8 Drag-and-drop support......Page 373
7.3.9 Inline editing......Page 380
7.4 Linking the View......Page 383
7.4.2 Adaptable objects......Page 384
7.4.3 Selection listener......Page 385
7.4.4 Opening an editor......Page 386
7.5.1 Saving local view information......Page 387
7.5.2 Saving global view information......Page 390
7.6 Testing......Page 392
7.7 Image Caching......Page 393
7.9.1 Views for navigation (RFRS 3.5.15)......Page 395
7.9.4 View global actions (RFRS 3.5.18)......Page 396
7.9.6 Register context menus (RFRS 5.3.5.8)......Page 397
7.9.7 Action filters for views (RFRS 5.3.5.9)......Page 398
7.10 Summary......Page 399
Chapter 8 Editors......Page 400
8.1 Editor Declaration......Page 401
8.2.1 Editor methods......Page 405
8.2.2 Editor controls......Page 407
8.2.3 Editor model......Page 410
8.2.4 Content provider......Page 416
8.2.5 Label provider......Page 417
8.3.1 Cell editors......Page 419
8.3.2 Change listeners......Page 421
8.3.3 Cell validators......Page 423
8.3.4 Editing versus selecting......Page 424
8.4.1 Dirty editors......Page 425
8.4.2 Switching pages......Page 426
8.5.1 Context menu......Page 428
8.5.2 Editor contributor......Page 431
8.5.3 Editor commands rather than editor contributor......Page 436
8.5.4 Undo/Redo......Page 439
8.6 Linking the Editor......Page 447
8.7.2 Editor lifecycle (RFRS 3.5.10)......Page 448
8.7.3 Accessing global actions (RFRS 3.5.11)......Page 449
8.7.6 Registering editor menus (RFRS 5.3.5.2)......Page 450
8.7.9 Prefix dirty resources (RFRS 5.3.5.5)......Page 451
8.8 Summary......Page 452
9.1 IResourceChangeListener......Page 454
9.1.1 IResourceChangeEvent......Page 455
9.1.2 IResourceDelta......Page 456
9.2 Processing Change Events......Page 458
9.3 Batching Change Events......Page 461
9.4.1 IProgressMonitor......Page 462
9.4.2 Classes for displaying progress......Page 463
9.4.3 Workbench window status bar......Page 465
9.4.4 IProgressService......Page 466
9.5 Delayed Changed Events......Page 467
9.6 Summary......Page 468
10.1 Creating a Perspective......Page 470
10.1.1 Perspective extension point......Page 471
10.1.2 Perspective factories......Page 473
10.1.3 IPageLayout......Page 476
10.2 Enhancing an Existing Perspective......Page 477
10.2.1 Adding views and placeholders......Page 479
10.2.2 Adding shortcuts......Page 481
10.2.3 Adding action sets......Page 483
10.3.2 Extend existing perspectives (RFRS 5.3.5.11)......Page 485
10.4 Summary......Page 486
11.1 Dialogs......Page 488
11.1.2 Common SWT dialogs......Page 489
11.1.3 Common JFace dialogs......Page 490
11.1.4 Creating a JFace dialog......Page 493
11.1.5 Dialog units......Page 495
11.1.6 Initial dialog location and size......Page 496
11.1.8 Favorites view filter dialog......Page 497
11.1.9 Details dialog......Page 501
11.1.10 Opening a dialog—finding a parent shell......Page 509
11.2 Wizards......Page 511
11.2.1 IWizard......Page 512
11.2.2 IWizardPage......Page 514
11.2.3 IWizardContainer......Page 515
11.2.5 Launching a wizard......Page 516
11.2.6 Wizard example......Page 520
11.2.8 Page content based on selection......Page 522
11.2.9 Page content based on previous page......Page 527
11.3.1 Wizard look and feel (RFRS 3.5.2)......Page 529
11.3.4 Show new object (RFRS 3.5.8)......Page 530
11.4 Summary......Page 531
12.1 Creating a Preference Page......Page 532
12.2 Preference Page APIs......Page 534
12.2.1 FieldEditorPreferencePage......Page 536
12.2.2 Field editors......Page 537
12.2.3 PreferencePage......Page 541
12.2.4 Favorites preference page......Page 542
12.2.5 Validation......Page 544
12.2.6 Nested preference pages......Page 545
12.2.7 Tabbed preference pages......Page 547
12.3 Preference APIs......Page 548
12.3.1 Default preferences......Page 549
12.3.2 Accessing preferences......Page 550
12.3.3 Specifying default values programmatically......Page 552
12.3.4 Specifying default values in a file......Page 553
12.3.6 Listening for preference changes......Page 554
12.4.1 Preferences dialog use (RFRS 3.5.25)......Page 555
12.5 Summary......Page 556
13.1 Creating Properties......Page 558
13.1.1 FavoriteItem properties......Page 559
13.1.2 Resource properties......Page 560
13.2.1 Declaring a Property page......Page 562
13.2.2 Creating a resource Property page......Page 566
13.2.3 Creating a Favorites item resource page......Page 568
13.2.4 Opening the Properties dialog......Page 569
13.2.5 IColorProvider......Page 570
13.3 Displaying Properties in the Properties View......Page 571
13.3.1 Properties view API......Page 572
13.3.2 Favorite properties in the Properties view......Page 574
13.4 Property Pages Reused as Preference Pages......Page 576
13.5.1 Properties views for quick access (RFRS 3.5.21)......Page 577
13.6 Summary......Page 578
Chapter 14 Builders, Markers, and Natures......Page 580
14.1.1 Declaring a builder......Page 582
14.1.2 IncrementalProjectBuilder......Page 585
14.1.4 Associating a builder with a project......Page 592
14.2 Markers......Page 595
14.2.1 Marker types......Page 596
14.2.2 Creating and deleting markers......Page 598
14.2.3 Marker attributes......Page 600
14.2.4 Marker resolution—quick fix......Page 603
14.3 Natures......Page 608
14.3.1 Declaring a nature......Page 609
14.3.2 Associating builders and natures......Page 611
14.3.3 IProjectNature......Page 612
14.3.4 Required natures......Page 613
14.3.6 Nature image......Page 614
14.3.7 Associating a nature with a project......Page 615
14.4.1 Use builders to convert resources (RFRS 3.8.1)......Page 619
14.4.4 Mark created resources as “derived” (RFRS 5.3.8.2)......Page 620
14.4.6 Use IResourceProxy when possible (RFRS 5.3.8.4)......Page 621
14.5 Summary......Page 622
15.1 Using Help......Page 624
15.2 Implementing Help......Page 627
15.2.1 Creating a new help project......Page 628
15.2.2 Plug-in manifest files......Page 632
15.2.3 Table of contents (toc) files......Page 633
15.2.4 Creating HTML content......Page 636
15.3 Context-Sensitive Help (F1)......Page 638
15.3.1 Associating context IDs with items......Page 639
15.3.2 IWorkbenchHelpSystem API......Page 641
15.3.4 Context extension point......Page 642
15.3.5 Marker help......Page 645
15.4.1 Opening a specific help page......Page 646
15.4.2 Opening a Web page......Page 647
15.5.1 Using a cheat sheet......Page 648
15.5.2 Creating a simple cheat sheet......Page 650
15.5.3 Registering a cheat sheet......Page 651
15.5.4 Adding cheat sheet commands......Page 654
15.5.5 Adding command parameters......Page 656
15.6.1 Provide help through the help system (RFRS 3.7.2)......Page 658
15.6.4 Implement active help (RFRS 5.3.7.3)......Page 659
15.6.7 Provide an overview of tasks’ flow (RFRS 5.3.5.34)......Page 660
15.7 Summary......Page 661
Chapter 16 Internationalization......Page 664
16.1 Externalizing the Plug-in Manifest......Page 665
16.2 Externalizing Plug-in Strings......Page 667
16.3 Using Fragments......Page 676
16.3.1 New Fragment Project wizard......Page 677
16.3.2 Fragment manifest file......Page 680
16.3.3 Fragment project contents......Page 682
16.5 Summary......Page 683
17.1 The Extension Point Mechanism......Page 684
17.2.1 Creating an extension point......Page 686
17.2.2 Creating an extension point schema......Page 688
17.2.3 Extension point elements and attributes......Page 690
17.2.4 Extension point element grammar......Page 694
17.3.1 Parsing extension information......Page 696
17.3.2 Constructing proxies......Page 698
17.3.3 Creating executable extensions......Page 700
17.3.4 Cleanup......Page 702
17.4 Extension Point Documentation......Page 703
17.5 Using the Extension Point......Page 704
17.6.1 Document extension points (RFRS 3.10.5)......Page 706
17.7 Summary......Page 707
Chapter 18 Features, Branding, and Updates......Page 708
18.1 Feature Projects......Page 709
18.1.1 Creating a new feature project......Page 710
18.1.2 Feature manifest files......Page 712
18.1.3 Feature manifest editor......Page 713
18.2 Branding......Page 720
18.2.1 The about.html file......Page 721
18.2.2 The about.ini file......Page 722
18.2.3 Product branding......Page 724
18.3.1 Creating an update site project......Page 726
18.3.2 The site.xml file......Page 728
18.3.3 The update Web site......Page 731
18.3.5 Accessing the update site......Page 732
18.4.3 Include attribution information (RFRS 5.3.1.10)......Page 736
18.4.5 Splash screen restrictions (RFRS 5.3.1.12)......Page 737
18.5 Summary......Page 738
19.1.1 Build projects......Page 740
19.1.2 Build targets......Page 741
19.1.3 Build tasks......Page 742
19.1.4 Build properties......Page 746
19.1.5
task......Page 753
19.1.6 macrodef......Page 755
19.1.7 Ant extensions......Page 757
19.2.1 PDE Build Overview......Page 758
19.2.2 Steps in the PDE Build process......Page 759
19.2.4 PDE Scripts and Templates......Page 761
19.2.5 Creating a PDE Build......Page 762
19.2.7 Running a PDE Build......Page 764
19.2.9 Keeping the versions in sync......Page 766
19.2.10 Build Properties......Page 767
19.2.11 Custom PDE Targets......Page 770
19.2.12 Editing with different versions of Eclipse......Page 772
19.3 Debugging the PDE Build process......Page 773
19.3.2 Using the Debugger......Page 774
19.4 Summary......Page 776
20.1 GEF Architecture......Page 778
20.2 GEF Model......Page 779
20.3 GEF Controller......Page 780
20.3.1 EditPart classes......Page 781
20.3.2 Top Level EditPart......Page 783
20.3.3 Child EditParts......Page 784
20.3.4 Connection EditParts......Page 786
20.3.5 EditPartFactory......Page 789
20.4.1 IFigure......Page 790
20.4.2 Graphics......Page 792
20.4.3 Complex Figures......Page 794
20.4.5 LayoutManager......Page 798
20.5 GEF in an Eclipse View......Page 801
20.5.1 Listening to Model Changes......Page 804
20.6.1 Editor Input......Page 805
20.6.2 FavoritesManagerEditPart revisited......Page 806
20.6.3 Graphical Editor Classes......Page 807
20.6.4 FavoritesGEFEditor......Page 808
20.6.5 User Interaction with GEF......Page 810
20.6.6 Edit Menu......Page 815
20.6.7 FreeformLayer and FreeformLayout......Page 817
20.6.8 Z-order......Page 818
20.6.9 Deleting model objects......Page 821
20.7.1 Creating a GEF Palette......Page 822
20.7.2 CreateCommand......Page 823
20.8 Summary......Page 825
Chapter 21 Advanced Topics......Page 826
21.1 Advanced Search—Reference Projects......Page 827
21.2.1 Eclipse newsgroup......Page 828
21.2.3 Options for accessing internal code......Page 829
21.2.5 Related plug-ins......Page 830
21.3 Adapters......Page 831
21.3.2 Using adapters......Page 832
21.3.3 Adapter factory......Page 833
21.4.1 IWorkbenchBrowserSupport......Page 835
21.4.2 LaunchURL......Page 836
21.4.3 OpenEmailAction......Page 837
21.5 Types Specified in an Extension Point......Page 840
21.5.1 Parameterized types......Page 841
21.5.2 Referencing a class in a different plug-in......Page 843
21.6.1 Modifying the Eclipse base......Page 844
21.6.2 Creating the global action......Page 846
21.6.4 Submitting the change to Eclipse......Page 848
21.7 Label Decorators......Page 849
21.7.1 Declaring a label decorator......Page 850
21.7.2 ILightweightLabelDecorator......Page 851
21.7.3 Decorative label decorators......Page 853
21.7.4 IDecoratorManager......Page 854
21.8 Background Tasks—Jobs API......Page 855
21.9 Plug-in ClassLoaders......Page 858
21.10.1 Managing early startup......Page 863
21.11 Rich Client Platform......Page 864
21.12 Conclusion......Page 865
A.1.1 CodePro AnalytiX......Page 866
A.1.2 CodePro Profiler......Page 868
A.1.3 EclipseUML......Page 869
A.1.4 MyEclipse Enterprise Workbench......Page 870
A.1.5 WindowBuilder Pro......Page 872
A.1.6 WindowTester Pro......Page 874
A.2.1 Eclipse.org......Page 875
A.2.4 Planet Eclipse......Page 876
A.2.9 QNX Momentics......Page 877
Appendix B: Ready for Rational Software......Page 878
A......Page 880
B......Page 884
C......Page 885
D......Page 888
E......Page 890
F......Page 893
G......Page 895
H......Page 898
I......Page 899
J......Page 903
L......Page 904
M......Page 905
N......Page 906
O......Page 907
P......Page 909
R......Page 913
S......Page 915
T......Page 920
U......Page 921
V......Page 922
W......Page 924
Z......Page 925