第一篇 开发基础 1
第1章 Eclipse平台简介 1
1.1 Eclipse集成开发环境(IDE)介绍 2
1.1.1 安装及使用Eclipse IDE 2
1.1.2 为Eclipse IDE安装中文语言包 6
1.1.3 IDE的环境设置 7
1.1.4 使用帮助系统 9
1.2 什么是Eclipse 9
1.3 SWT/JFace技术 11
1.4 插件技术和OSGi 12
1.5 RCP技术 15
1.6 EMF技术 16
1.7 GEF技术 17
1.8 本章小结 18
第2章 SWT/JFace概述 19
2.1 SWT结构浅析 20
2.2 SWT API结构 21
2.2.1 组件类 22
2.2.2 布局类 23
2.2.3 事件类 23
2.2.4 图形类与系统资源管理 25
2.2.5 其他内容 27
2.3 JFace 27
2.3.1 查看器 27
2.3.2 资源注册表 28
2.3.3 字段帮助 29
2.3.4 操作和贡献 29
2.3.5 对话框、向导页和偏好设置 30
2.3.6 数据绑定 30
2.4 SWT与Swing 31
2.5 编写并发布SWT程序 33
2.5.1 第一个SWT程序 33
2.5.2 SWT程序的打包发布 37
2.6 本章小结 38
第3章 SWT编程基础 39
3.1 Display和Shell 40
3.1.1 Display的创建 40
3.1.2 Shell的创建 42
3.1.3 Display的事件队列和事件循环 43
3.1.4 Display的生命周期 46
3.1.5 监视器、边界和客户区域 47
3.1.6 SWT程序中的多线程 48
3.2 控件 50
3.2.1 控件类的继承结构 50
3.2.2 控件的构造和样式 52
3.2.3 控件的继承检查 53
3.3.4 控件的用户数据 55
3.3.5 控件的释放 55
3.3 图形资源 56
3.3.1 使用Color 56
3.3.2 使用Image 57
3.3.3 使用Font 59
3.4 高级内容 60
3.4.1 使用系统托盘 60
3.4.2 利用Region构造不规则窗口 61
3.4.3 在SWT中使用Swing 62
3.5 本章小结 63
第4章 使用基本控件与对话框 64
4.1 Button 65
4.2 Label 66
4.3 Text 68
4.4 List 70
4.5 Combo 73
4.6 ToolBar和ToolItem 74
4.7 Menu和MenuItem 78
4.8 CoolBar和CoolItem 81
4.9 TabFolder和TabItem 83
4.10 对话框 85
4.10.1 消息框 85
4.10.2 文件与目录对话框 87
4.10.3 颜色对话框 89
4.10.4 字体对话框 90
4.11 本章小结 91
第5章 容器与布局管理器 92
5.1 Composite 93
5.2 Group 96
5.3 Shell 97
5.4 容器上下文菜单设置 100
5.5 容器颜色、背景和鼠标指针设置 102
5.6 布局管理概述 104
5.6 1 AbsoluteLayout布局(No Layout) 104
5.6.2 FillLayout布局 105
5 6.3 RowLayout布局 106
5.6.4 GridLayout布局 110
5.6.5 FormLayout布局 112
5.6.6 StackLayout布局 114
5.6.7 布局的选择规则 116
5 6.8 自定义布局管理器 116
5.7 本章小结 120
第6章 界面开发工具 121
6.1 安装Visual Editor 122
6.2 使用Visual Editor 123
6.2.1 Visual Editor的基本使用 123
6.2.2 控件布局 128
6.2.3 运行与调试 130
6.3 其他工具介绍 133
6.3.1 SWT Designer 133
6.3.2 Jigloo 133
6.4 本章小结 134
第7章 高级控件使用 135
7.1 列表、表格和树 136
7.1.1 查看器(Viewer)框架 136
7.1.2 JFace列表查看(List Viewer) 139
7.1.3 Table控件 143
7.1.4 JFace表格查看器(Table Viewer) 147
7.1.5 Tree控件 148
7.1.6 JFace树查看器(Tree Viewer) 151
7.2 文本编辑器 155
7.3 滚动条、Scrollable、ScrolledComposite和滑动条 158
7.4 进度条与进度指示器 160
7.5 浏览器与OLE 162
7.6 本章小结 165
第8章 SWT/Jface的事件处理 166
8.1 SWT的事件处理 167
8.1.1 事件处理机制 167
8.1.2 低级事件类 170
8.1.3 高级事件类 171
8.2 常用事件 172
8.2.1 鼠标事件 172
8.2.2 键盘事件 173
8.2.3 Paint事件 174
8.2.4 应用举例 175
8.2.5 使用SWT模拟键盘/鼠标事件 177
8.3 JFace事件处理 178
8.3.1 操作(Action)与贡献(Contribution) 178
8.3.2 创建操作 180
8.3.3 使用贡献 181
8.4 本章小结 182
第二篇 核心技术 183
第9章 Eclipse插件体系结构 183
9.1 Eclipse体系结构 184
9.1.1 Eclipse平台架构 184
9.1.2 插件工作模式 185
9.1.3 工作台层次结构 186
9.2 插件的加载过程 187
9.2.1 插件的安装 187
9.2.2 插件的发现和启动 190
9.2.3 插件信息的获取 190
9.3 插件的扩展模式 191
9.3.1 扩展和扩展点 191
9.3.2 扩展加载过程 194
9.3.3 常用扩展点 194
9.3.4 小结 195
9.4 本章小结 195
第10章 开发第一个插件项目 196
10.1 创建插件工程 197
10.1.1 新建插件 197
10.1.2 使用向导 198
10.2 “插件开发”透视图 200
10.2.1 PDE视图 201
10.2.2 PDE运行时视图 202
10.2.3 清单编辑器 203
10.3 插件工程结构 203
10.4 插件文件 204
10.4.1 Plugin.xml文件 204
10.4.2 MANIFEST.MF文件 205
10.4.3 Build.properties文件 206
10.5 插件类 207
10.6 运行插件程序 208
10.7 调试插件 210
10.8 发布插件 211
10.9 本章小结 212
第11章 操作(Actions) 213
11.1 Eclipse中的操作概览 214
11.2 添加工作台窗口操作 214
11.2.1 使用模板创建扩展 215
11.2.2 定制操作集 217
11.2.3 定制工作台菜单 218
11.2.4 定制操作菜单项 219
11.2.5 实现操作代理类 221
11.3 IAction与IActionDelegate接口 222
11.4 对象操作 224
11.4.1 添加对象操作 225
11.4.2 操作的可见性 227
11.4.3 操作的过滤 228
11.4.4 实现IObjectActionDelegate接口 228
11.5 视图操作 230
11.5.1 添加视图的上下文菜单 231
11.5.2 添加视图的工具栏 232
11.5.3 添加视图的下拉子菜单 232
11.5.4 实现IViewActionDelegate接口 233
11.6 编辑器操作 234
11.6.1 创建编辑器上下文操作 234
11.6.2 添加顶层工作台菜单 234
11.6.3 定义编辑器顶层操作 235
11.6.4 添加编辑器工具栏操作 235
11.6.5 实现IEditorActionDelegate接口 236
11.7 快捷键映射 237
11.7.1 键绑定的策略 237
11.7.2 创建命令 237
11.7.3 键绑定 238
11.7.4 命令与操作关联 239
11.8 本章小结 240
第12章 视图(Views) 241
12.1 Eclipse视图体系结构概览 242
12.2 Eclipse工作环境中的视图 243
12.2.1 资源导航 244
12.2.2 PageBook视图 245
12.2.3 大纲视图 245
12.2.4 属性视图 246
12.2.5 任务视图和书签视图 247
12.2.6 项目资源管理器 247
12.3 创建一个视图 248
12.3.1 添加category 248
12.3.2 在plugin.xml中声明视图 249
12.4 视图类 250
12.4.1 视图方法 250
12.4.2 视图控制 250
12.4.3 视图模型 252
12.4.4 视图内容 255
12.4.5 视图标签 257
12.4.6 视图排序 257
12.4.7 视图过滤 259
12.5 为视图添加操作 260
12.5.1 视图选择 260
12.5.2 添加/删除操作 261
12.5.3 过滤操作 263
12.5.4 快捷键支持 265
12.6 视图间通信 265
12.6.1 对属性视图提供支持 265
12.6.2 共享并监听地址本视图查看器 266
12.6.3 提供显示在Properties视图中的内容 266
12.6.4 监听其他Workbench部分被选中的内容 271
12.7 添加状态栏支持 272
12.8 视图状态 273
12.8.1 存储排序和过滤信息 273
12.8.2 存储视图元素信息 277
12.9 加载和卸载图标 279
12.10 本章小结 281
第13章 编辑器(Editors) 282
13.1 Eclipse编辑器体系结构概览 283
13.2 Eclipse工作环境中的编辑器 284
13.2.1 AbstractTextEditor类 285
13.2.2 MultiEditor类 286
13.2.3 MultiPageEditorPart类 287
13.2.4 FormEditor类 287
13.3 为例子增加一个编辑器 289
13.3.1 声明编辑器 289
13.3.2 创建编辑器 290
13.3.3 创建编辑器输入 291
13.3.4 关联编辑器与编辑器输入 292
13.4 编辑器使用的数据模型 294
13.4.1 基本数据模型 294
13.4.2 数据管理模型 299
13 4.3 文件映射模型 300
13.5 编辑器页面 301
13.5.1 “编辑”页 302
13.5.2 “分页预览”页 311
13.5.3 “源代码”页 312
13.6 响应编辑器更改 313
13.6.1 更新模型 313
13.6.2 使“分页预览”页支持更新 317
13.7 保存编辑器模型 318
13.8 编辑器生命周期 322
13.8.1 已修改的编辑器 322
13.8.2 切换页面 324
13.8.3 保存内容 324
13.9 为编辑器添加操作 326
13.9.1 上下文菜单 326
13.9.2 管理编辑器操作栏 329
13.10 本章小结 333
第14章 透视图(Perspectives) 334
14.1 什么是透视图 335
14.2 创建一个透视图 336
14.2.1 透视图扩展点 336
14.2.2 创建透视图工厂类 338
14.3 IPageLayout 339
14.4 填充透视图 341
14.5 扩展现有透视图 344
14.5.1 添加视图和占位符 345
14.5.2 添加快捷方式 347
14.6 本章小结 348
第15章 对话框和向导(DialogsWizards) 349
15.1 对话框和向导概述 350
15.2 对话框类别 350
15.2.1 SWT对话框 351
15.2.2 JFace对话框 352
15.2.3 常用JFace对话框 353
15.3 为例子增加SWT对话框 354
15.4 创建JFace对话框 355
15.4.1 使用Dialog类创建JFace对话框 355
15.4.2 为“地址本”视图创建过滤器对话框 356
15.5 向导介绍 362
15.5.1 向导对话框 363
15.5.2 向导 363
15.5.3 向导页面 364
15.6 添加向导 364
15.6.1 定义向导扩展 365
15.6.2 实现向导 366
15.6.3 实现向导页面 368
15.6.4 添加向导处理逻辑 371
15.7 本章小结 378
第16章 首选项(Preferences) 379
16.1 首选项页面结构 381
16.2 添加首选项页面 382
16.3 示例首选项 383
16.3.1 示例首选项页面 383
16.3.2 字段编辑器 385
16.4 为例子创建首选项页面 387
16.4.1 创建根首选项页面 387
16.4.2 创建“视图”子首选项页面 388
16.4.3 创建“编辑器”子首选项页面 391
16.5 本章小结 395
第17章 帮助内容(Help Contents) 397
17.1 Eclipse帮助介绍 398
17.2 使用Eclipse帮助 399
17.3 实现集成的帮助文档 400
17.3.1 添加帮助内容扩展 400
17.3.2 添加帮助内容 402
17.4 上下文相关帮助 404
17.4.1 声明帮助的上下文扩展 404
17.4.2 定义弹出信息内容 405
17.4.3 关联弹出信息同UI上下文 406
17.5 加入帮助按钮 408
17.6 本章小结 409
第18章 备忘单(CheatSheet) 410
18.1 使用Eclipse备忘单 412
18.2 为地址本插件创建备忘单 413
18.3 构建复合备忘单 418
18.4 链接备忘单到帮助 421
18.5 本章小结 424
第三篇 高级进阶 426
第19章 插件开发高级内容 426
19.1 自定义扩展点 427
19.1.1 扩展点基础知识 427
19.1.2 使用扩展点 435
19.2 插件的国际化支持 441
19.2.1 国际化方法 441
19.2.2 国际化支持和段(fragment) 455
19.2.3 外部化plugin.xml中的字符串 458
19.3 使用功能部件(feature) 460
19.3.1 功能部件概述 460
19.3.2 创建功能部件 461
19.3.3 更新站点与自动更新功能 463
19.3.4 添加产品标签(branding) 467
19.4 动态插件 469
19.5 本章小结 472
第20章 富客户端平台(RCP)技术 473
20.1 富客户端技术介绍 474
20.2 RCP平台架构 477
20.2.1 RCP结构概述 477
20.2.2 RCP程序的结构 480
20.3 开发RCP产品 484
20.3.1 创建RCP工程 484
20.3.2 发布RCP工程 489
20.4 将插件改造成RCP程序 494
20.4.1 为RCP添加帮助内容 496
20.4.2 RCP程序的自动更新 502
20.4.3 为程序添加欢迎页面(Into) 504
20.5 本章小结 508
第21章 Draw2d 509
21.1 理解Draw2d 510
21.1.1 Draw2d系统组成 510
21.1.2 LightweightSystem简介 511
21.2 Draw2D Figure简介 514
21.3 坐标系统 516
21.4 布局管理 517
21.4.1 布局管理器 517
21.4.2 布局更新 518
21.5 连线和路由 520
21.5.1 连线 520
21.5.2 连线路由器(Connection Router) 520
21.6 Draw2d中的其他组件 521
21.6.1 边界 521
21.6.2 层次 522
21.6.3 定位器 523
21.6.4 连接锚点 523
21.7 本章小结 525
第22章 GEF介绍与实现 526
22.1 GEF简介 527
22.1.1 GEF架构概述 528
22.1.2 GEF工作原理 530
22.2 理解GEF-MVC架构 532
22.2.1 GEF中的模型 532
22.2.2 GEF中的视图 533
22.2.3 GEF中的控制器(EditPart) 535
22.3 GEF中的基本概念 537
22.3.1 Request和Command 537
22.3.2 RootEditParts 541
22.3.3 EditPolicy和Role 542
22.3.4 图形视图(GraphicalViewer) 546
22.3.5 EditDomain和CommandStack 547
22.3.6 调色板(Palette)和工具(Tool) 550
22.3.7 行为(Action) 554
22.3.8 坐标系统与层次(Layer) 554
22.4 创建GEF应用 557
22.4.1 添加模型 559
22.4.2 添加视图 560
22.4.3 创建控制中心(EditPart) 561
22.4.4 创建编辑器(Editor) 564
22.4.5 添加调色板(palette) 567
22.4.6 添加连接线(Connections) 569
22.4.7 添加属性视图 572
22.4.8 添加大纲视图(Outline) 575
22.4.9 实现拖放功能(Drag and drop) 578
22.4.10 放大缩小(Zooming) 579
22.4.11 添加直接编辑功能 581
22.4.12 其他相关内容 583
22.5 本章小结 585
第四篇 综合实例 586
第23章 插件开发实例 586
23.1 需求分析与设计 587
23.1.1 需求整理 587
23.1.2 数据模型抽象 587
23.1.3 体系架构和插件结构 591
23.2 插件开发 594
23.2.1 插件rcpdev.thirdparty 594
23.2.2 插件rcpdev.common.core和rcpdev.common.ui 595
23.2.3 插件rcpdev.todo.core 602
23.2.4 插件rcpdev.todo.ui 604
23.2.5 插件rcpdev.todo.persistence 613
23.3 在RCP程序中重用插件 614
23.3.1 Contact插件介绍 615
23.3.2 查看器的排序 617
23.4 FAQ 622
23.5 本章小结 629
第24章 GEF实例 630
24.1 设计思路 631
24.2 创建项目 631
24.3 创建Editor 635
24.4 构建模型 639
24.5 构建控制器 640
24.6 创建Figure 644
24.7 交互处理 649
24.8 创建调色板 654
24.9 本章小结 656