SKIP THE SHIPPING
Use code NOSHIP during checkout to save 40% on eligible eBooks, now through January 5. Shop now.
Register your product to gain access to bonus material or receive a coupon.
The Definitive Guide to Eclipse Rich Client Development
In Eclipse Rich Client Platform, Second Edition, three Eclipse Rich Client Platform (RCP) project leaders show how to use Eclipse 3.5 (“Galileo”) to rapidly deliver cross-platform applications with rich, native-feel GUIs.
The authors fully reveal the power of Eclipse as a desktop application development platform; introduce important new improvements in Eclipse 3.5; and walk through developing a full-featured, branded RCP application for Windows, Linux, Mac, and other platforms—including handheld devices and kiosks.
Drawing on their extensive experience, the authors cover building, refining, and refactoring prototypes; customizing user interfaces; adding help and software management features; and building, branding, testing, and shipping finished software. They demonstrate current best practices for developing modular and dynamically extensible systems, using third-party code libraries, packaging applications for diverse environments, and much more.
For Java programmers at all levels of experience, this book
Hands-on, pragmatic, and comprehensive, this book offers all the real-world, nontrivial code examples working developers need—as well as “deep dives” into key technical areas that are essential to your success.
Eclipse Rich Client Platform Concepts
Download the sample pages (includes Chapter 2 and Index)
Foreword xxi
Preface xxv
Acknowledgments xxix
About the Authors xxxi
Part I: Introduction 1
Chapter 1: Eclipse as a Rich Client Platform 3
1.1 Eclipse 5
1.2 The Eclipse Rich Client Platform 5
1.3 Eclipse RCP over the Years 6
1.4 Uses of RCP 7
1.5 Summary 12
1.6 Pointers 13
Chapter 2: Eclipse RCP Concepts 15
2.1 A Community of Plug-ins 15
2.2 Inside Plug-ins 18
2.3 Putting a System Together 19
2.4 OSGi Framework 20
2.5 Equinox 21
2.6 Standard Widget Toolkit (SWT) 25
2.7 JFace 25
2.8 UI Workbench 25
2.9 Summary 27
2.10 Pointers 27
Part II: RCP by Example 29
Chapter 3: Tutorial Introduction 31
3.1 What Is Hyperbola? 31
3.2 The Evolution of Hyperbola 32
3.3 Development Environment Installation 33
3.4 Sample Code 34
3.5 Target Platform Setup 36
3.6 Learning by Example 42
3.7 Summary 44
3.8 Pointers 44
Chapter 4: The Hyperbola Application 45
4.1 Hyperbola “Hello, World” 45
4.2 Tour of the Code 51
4.3 Running and Debugging 55
4.4 Summary 62
4.5 Pointers 62
Chapter 5: Starting the Hyperbola Prototype 63
5.1 Continuing from the Shell 64
5.2 Adding a Contacts View 65
5.3 The Chat Model 70
5.4 Filling in the Contacts View 72
5.5 Adding Images 78
5.6 Summary 81
5.7 Pointers 82
Chapter 6: Adding Actions 83
6.1 Adding to the Menus and Toolbar 84
6.2 Adding to the Status Line 93
6.3 System Tray Integration 96
6.4 Summary 100
6.5 Pointers 101
Chapter 7: Adding a Chat Editor 103
7.1 Views and Editors 104
7.2 Defining the Chat Editor 105
7.3 Checkpoint 113
7.4 Summary 114
7.5 Pointers 114
Chapter 8: Branding Hyperbola 115
8.1 Defining the Hyperbola Product 115
8.2 Window Images 120
8.3 Customizing the Launcher 121
8.4 Splash Screen 122
8.5 About Information 124
8.6 Summary 127
8.7 Pointers 127
Chapter 9: Packaging Hyperbola 129
9.1 Exporting Hyperbola 129
9.2 Exporting for Other Platforms 132
9.3 Summary 134
9.4 Pointers 135
Chapter 10: Messaging Support 137
10.1 Integrating a Third-Party Library 138
10.2 Refactoring the Model 143
10.3 Updating the UI 149
10.4 Chatting with Eliza 152
10.5 Summary 153
10.6 Pointers 154
Chapter 11: Adding a Login Dialog 155
11.1 Adding the Login Dialog 155
11.2 Remembering Login Settings 161
11.3 Adding Auto-login Preferences 170
11.4 Summary 175
11.5 Pointers 175
Chapter 12: Adding Key Bindings 177
12.1 Defining Commands 177
12.2 Checkpoint 182
12.3 Adding Key Bindings for Workbench Actions 182
12.4 Key Schemes 184
12.5 Keys Preference Page 185
12.6 Summary 186
12.7 Pointers 186
Chapter 13: Adding Help 187
13.1 Adding to the Target Platform 187
13.2 Configuring the Help Plug-ins 190
13.3 Add the Help Action 190
13.4 Adding Help Content 191
13.5 Help Content Structure 195
13.6 Infopops or F1 Help 196
13.7 Exporting Plug-ins with Help 197
13.8 Summary 198
13.9 Pointers 198
Chapter 14: Adding Software Management 199
14.1 Getting p2 199
14.2 Features 200
14.3 Defining Features 204
14.4 Branding Features 209
14.5 Updating Hyperbola 210
14.6 Customizing the p2 UI 211
14.7 Defining Categories 213
14.8 Automatic Updates 214
14.9 Summary 215
14.10 Pointers 215
Part III: The Workbench 217
Chapter 15: Workbench Advisors 219
15.1 Workbench Advisors 219
15.2 WorkbenchAdvisor 223
15.3 WorkbenchWindowAdvisor 229
15.4 ActionBarAdvisor 231
15.5 Workbench Overview 232
15.6 Summary 238
15.7 Pointers 238
Chapter 16: Perspectives, Views, and Editors 239
16.1 Perspectives 240
16.2 Views and Editors 251
16.3 Multiple Workbench Windows 258
16.4 Drag and Drop with Editors 259
16.5 Summary 262
16.6 Pointers 262
Chapter: 17 Actions 263
17.1 Overview 263
17.2 Declarative Actions in Hyperbola 265
17.4 Retargetable Actions 275
17.5 Consolidating Declarative Actions 277
17.6 Toolbar Action Tricks 278
17.7 Adding Contributions to the Status Line 281
17.8 Reporting Progress 282
17.9 Summary 289
Chapter 18: Commands 291
18.1 The Problem with Actions 292
18.2 Commands 293
18.3 Contributions 294
18.4 Handlers 299
18.5 Summary 301
18.6 Pointers 302
Chapter 19: Customizing Workbench Windows 303
19.1 Customization Defined 303
19.2 Customizing a Workbench Window 304
19.3 Custom Window Shapes 312
19.4 Summary 318
19.5 Pointers 318
Chapter 20: Customizing the Presentation of Views and Editors 319
20.1 Presentations 319
20.2 Sample Presentations 320
20.3 Writing a Presentation 322
20.4 Example Presentation 326
20.5 Summary 333
20.6 Pointers 334
Part IV: Development Processes 335
Chapter 21: Installing and Updating with p2 337
21.1 The Roles of p2 337
21.2 Architecture 338
21.3 Using the p2 API 342
21.4 Metadata Management 345
21.5 Repository Management 349
21.6 Installation Management 350
21.7 Summary 351
21.8 Pointers 351
Chapter 22: Dynamic Plug-ins 353
22.1 Making Hyperbola Dynamic 353
22.2 Dynamic Challenges 355
22.3 Dynamic Awareness 355
22.4 Dynamic Enablement 364
22.5 Summary 367
22.6 Pointers 367
Chapter 23: RCP Everywhere 369
23.1 Sample Code 369
23.2 The Scenario 370
23.3 Product Configurations 371
23.4 Hyperbola Product Configurations 376
23.5 Code Structure 383
23.6 Designing a Platform 390
23.7 RCP-Friendly Plug-ins 394
23.8 Summary 394
23.9 Pointers 395
Chapter 24: Building Hyperbola 397
24.1 What Is PDE Build? 398
24.2 Plug-in build.properties 399
24.3 Setting Up a Builder 401
24.4 Running the Builder 407
24.5 Tweaking the Build 410
24.6 Building Add-on Features 417
24.7 Assembling Multiple Configurations 420
24.8 Summary 422
Chapter 25: Testing 423
25.1 Making Hyperbola Testable 423
25.2 Unit Testing Hyperbola 424
25.3 User Interface Testing Hyperbola 426
25.4 Summary 429
25.5 Pointers 429
Chapter 26: The Last Mile 431
26.1 Archives 431
26.2 Native Installers 432
26.3 p2 Installer 433
26.4 Java Web Start (JNLP) 433
26.5 Initializing the Install 439
26.6 Preinitialized Configurations 440
26.7 Multiuser Install Scenarios 441
26.8 Summary 445
26.9 Pointers 445
Part V: Reference 447
Chapter 27: OSGi 449
27.1 OSGi and the Eclipse Runtime 450
27.2 The Shape of Plug-ins 452
27.3 Fragments 454
27.4 Version Numbering 457
27.5 Services 459
27.6 Bundle Lifecycle 460
27.7 Early Activation 465
27.8 Lazy Activation 467
27.9 Data Areas 469
27.10 Summary 471
27.11 Pointers 472
Chapter 28: Eclipse Databinding 473
28.1 Getting Started 473
28.2 Why Databinding? 474
28.3 Architecture 474
28.4 Observables 475
28.5 Properties 480
28.6 Bindings 483
28.7 Summary 487
28.8 Pointers 487
Chapter 29: Eclipse Ecosystem 489
29.1 Where to Find Plug-ins 489
29.2 Eclipse Platform Plug-ins 491
29.3 Product Introduction 491
29.4 Resources 492
29.5 Text Editing 495
29.6 Consoles 499
29.7 Variables 500
29.8 Outline and Property Views 501
29.9 Forms 501
29.10 Browser 502
29.11 The Common Navigator Framework 502
29.12 Declarative Services 503
29.13 Summary 503
Index 505