具体描述
《ECLIPSE插件开发(原书第3版)》是一本由两位长期从事Java商业软件开发的技术专家编写的关于开发Eclipse商业插件的指南。本书主要介绍了开发Eclipse商业插件的完整过程,并从标准窗口小部件工具集、命令与操作、视图、透视图、实现帮助、国际化等方面对创建Eclipse商业插件进行了详细描述。本书既包含了开发Eclipse插件的基础理论,也涵盖了大量关于Eclipse插件开发的细节。
本书不仅适用于Eclipse插件开发的初学者,对于Eclipse商业软件开发人员也有很高的参考价值。
作者简介
Eric Clayberg是Instantiations公司产品开发部高级副总裁。Eric是一位具有丰富经验的软件技术专家、产品开发人员、企业家和具有超过17年商业软件开发经验的项目经理。这17年开发经验包含了12年的Java开发经验和9年的Eclipse开发经验。他是十几个商业Java和Smalltalk附加产品的主要作者和架构者,其中包括了广为流行的WindowBuilder Pro、CodePro和获奖的VA Assist产品系列。他拥有麻省理工学院的理学学士学位、哈佛大学的MBA学位。是两家成功的软件公司ObjectShare和Instantiations的共同创始人之一。
Dan Rubel是Instantiations公司的首席技术执行官。他是一名成功的商人,也是面向对象技术方面的设计与应用的专家。他具有15年以上的商业软件开发经验,其中包括了13年的Java开发经验和9年的Eclipse开发经验。他是几个成功的商业产品的架构师和项目经理。这些商业产品包括RCP Developer、WindowTester、jFactor和jKit。他在其他几个商业产品中扮演关键设计与领导角色。这些商业产品包括VA Assist和CodePro。他拥有Bucknell的理学学士学位,是Instantiations公司的共同创始人之一。
Instantiations是IBM高级商业伙伴,为Eclipse和IBM的VisualAge、WebSphere和Rational产品系列开发了许多的商业附加软件。Instantiations公司是Eclipse基金会成员,是Eclipse开源组织的主要贡献者之一,负责Eclipse Collaboration Tools项目(即Koi项目)和Eclipse Pollinate项目(即Beehive项目)。
目录信息
译者序
序言一
序言二
前 言
第1章 使用Eclipse工具 1
1.1 起步 1
1.1.1 获取Eclipse 1
1.1.2 安装 2
1.2 Eclipse工作台 2
1.2.1 透视图、视图和编辑器 4
1.2.2 操作 7
1.3 设置Eclipse 9
1.3.1 工作台首选项 9
1.3.2 Java首选项 10
1.3.3 导入与导出首选项 11
1.4 创建项目 11
1.4.1 使用新建Java项目向导 12
1.4.2 .classpath和.project文件 13
1.4.3 使用Java包向导 14
1.4.4 使用Java类向导 14
1.5 导航 15
1.5.1 打开类型对话框 15
1.5.2 类型层次结构视图 16
1.5.3 转至行 16
1.5.4 大纲视图 16
1.5.5 快速访问 17
1.6 搜索 17
1.6.1 文件搜索 17
1.6.2 Java搜索 18
1.6.3 其他搜索菜单选项 19
1.6.4 工作集 19
1.7 编写代码 20
1.7.1 Java编辑器 20
1.7.2 模板 24
1.7.3 重构 25
1.7.4 本地历史记录 26
1.7.5 文件扩展名关联 28
1.8 使用CVS进行团队开发 29
1.8.1 开始使用CVS 30
1.8.2 从CVS中导出项目 30
1.8.3 与库同步 31
1.8.4 比较与替代资源 31
1.8.5 CVS标签装饰器 32
1.9 运行程序 33
1.9.1 启动Java程序 33
1.9.2 启动配置 34
1.10 调试简介 35
1.10.1 设置断点 35
1.10.2 使用调试视图 36
1.10.3 使用变量视图 36
1.10.4 使用表达式视图 36
1.11 测试简介 37
1.11.1 创建测试用例 37
1.11.2 运行测试用例 37
1.12 Mylyn简介 38
1.13 总结 41
参考文献 41
第2章 简单插件示例 42
2.1 收藏夹插件 42
2.2 创建插件项目 42
2.2.1 新建插件项目向导 42
2.2.2 定义插件 42
2.2.3 定义视图 43
2.3 评审生成代码 44
2.3.1 插件清单 44
2.3.2 启动器或插件类 48
2.3.3 收藏夹视图 50
2.4 构建产品 52
2.4.1 手动构建 52
2.4.2 使用Apache Ant构建 53
2.5 安装并运行产品 56
2.6 调试产品 56
2.6.1 创建配置文件 56
2.6.2 选择插件和片段 57
2.6.3 启动运行时工作台 58
2.7 PDE视图 58
2.7.1 插件注册表视图 58
2.7.2 插件视图 58
2.7.3 插件依赖项视图 59
2.7.4 插件手动搜索 59
2.7.5 插件探测器 59
2.8 编写插件测试 60
2.8.1 测试准备 60
2.8.2 创建插件测试项目 60
2.8.3 创建插件测试 60
2.8.4 运行插件测试 63
2.8.5 卸载收藏夹插件 64
2.9 本书示例 64
2.10 总结 65
参考文献 65
第3章 Eclipse基础结构 66
3.1 结构概述 66
3.1.1 插件结构 67
3.1.2 工作区 67
3.2 插件目录与JAR文件 68
3.2.1 链接文件 68
3.2.2 混合途径 69
3.3 插件清单 69
3.3.1 插件声明 70
3.3.2 插件运行时 71
3.3.3 插件依赖项 71
3.3.4 扩展项与扩展点 73
3.4 启动器或插件类 74
3.4.1 启动与关闭 74
3.4.2 插件早期启动 74
3.4.3 静态插件资源 74
3.4.4 插件首选项 75
3.4.5 插件配置文件 75
3.4.6 插件与AbstractUIPlugin 77
3.5 插件模型 77
3.5.1 平台 78
3.5.2 插件与包 78
3.5.3 插件扩展项注册表 79
3.6 日志 79
3.6.1 状态对象 80
3.6.2 错误日志视图 80
3.6.3 处理错误(与其他状态) 81
3.7 Eclipse插件 81
3.8 总结 82
参考文献 82
第4章 标准窗口小部件工具集 83
4.1 SWT历史与目标 83
4.2 SWT窗口小部件 85
4.2.1 简单独立示例 85
4.2.2 窗口小部件生命周期 87
4.2.3 窗口小部件事件 87
4.2.4 抽象窗口小部件类 88
4.2.5 最高级类 90
4.2.6 常用窗口小部件 92
4.2.7 菜单 108
4.2.8 其他窗口小部件 110
4.3 布局管理 110
4.3.1 填充布局(FillLayout) 110
4.3.2 行布局(RowLayout) 111
4.3.3 网格布局(GridLayout) 113
4.3.4 表单布局(FormLayout) 115
4.4 资源管理 117
4.4.1 颜色 117
4.4.2 字体 117
4.4.3 图像 117
4.5 GUI构建器(GUI Builder) 118
4.6 总结 119
参考文献 119
第5章 JFace查看器 121
5.1 面向列表的查看器 121
5.1.1 标签提供者 122
5.1.2 内容提供者 122
5.1.3 查看器排序器 123
5.1.4 查看器过滤器 123
5.1.5 StructuredViewer类 123
5.1.6 ListViewer类 125
5.1.7 TableViewer类 127
5.1.8 TreeViewer类 130
5.2 文本查看器 132
5.3 总结 134
参考文献 134
第6章 命令与操作 135
6.1 命令 135
6.2 菜单和工具栏添加项 138
6.2.1 定义最高级菜单 138
6.2.2 添加至已有最高级菜单 138
6.2.3 定义最高级工具栏项 139
6.2.4 限制最高级菜单与工具栏项的
可见性 139
6.2.5 定义基于选择的上下文菜单项 140
6.2.6 定义视图相关菜单或工具栏项 143
6.2.7 定义编辑器相关的菜单或工具栏
项目 143
6.2.8 动态菜单添加项 144
6.2.9 locationURI 144
6.2.10 visibleWhen表达式 145
6.3 处理器 148
6.4 键绑定 150
6.5 IAction与IActionDelegate 151
6.6 工作台窗口操作 152
6.6.1 定义工作台窗口菜单 153
6.6.2 菜单中的组 154
6.6.3 定义菜单项和工具栏按钮 154
6.6.4 操作的图像 155
6.6.5 插入点 155
6.6.6 创建操作代表 156
6.6.7 手动测试新建操作 157
6.6.8 为新操作添加测试 158
6.6.9 讨论 160
6.7 对象操作 160
6.7.1 定义基于对象的操作 161
6.7.2 操作过滤与可用 163
6.7.3 IObjectActionDelegate 167
6.7.4 创建基于对象的子菜单 167
6.7.5 手动测试新操作 168
6.7.6 为新操作添加测试 168
6.8 视图操作 169
6.8.1 定义视图上下文子菜单 169
6.8.2 定义视图上下文菜单操作 170
6.8.3 IViewActionDelegate 171
6.8.4 定义视图工具栏操作 171
6.8.5 定义视图下拉子菜单和操作 172
6.8.6 手动测试新操作 172
6.8.7 为新操作添加测试 172
6.8.8 视图上下文菜单标识符 172
6.9 编辑器操作 174
6.9.1 定义编辑器上下文菜单 174
6.9.2 定义编辑器上下文操作 175
6.9.3 IEditorActionDelegate 175
6.9.4 定义编辑器最高级菜单 176
6.9.5 定义编辑器最高级操作 176
6.9.6 定义编辑器工具栏操作 177
6.9.7 为新操作添加测试 177
6.9.8 编辑器上下文菜单标识符 177
6.10 操作和键绑定 178
6.10.1 将命令与操作相关联 178
6.10.2 键盘可访问性 179
6.11 RFRS相关事项 180
6.12 总结 180
参考文献 180
第7章 视图 181
7.1 视图声明 182
7.1.1 声明视图类别 182
7.1.2 声明视图 183
7.2 视图部件 184
7.2.1 视图方法 184
7.2.2 视图控件 184
7.2.3 视图模型 185
7.2.4 内容提供者 194
7.2.5 标签提供者 195
7.2.6 查看器排序器 196
7.2.7 查看器过滤器 198
7.2.8 视图选择 199
7.2.9 实现propertyTester 199
7.3 视图命令 199
7.3.1 模型命令处理器 200
7.3.2 上下文菜单 200
7.3.3 工具栏按钮 203
7.3.4 下拉菜单 204
7.3.5 键盘命令 205
7.3.6 全局命令 205
7.3.7 剪贴板命令 206
7.3.8 拖放支持 210
7.3.9 内联编辑 215
7.4 链接视图 218
7.4.1 选择提供者 218
7.4.2 可适配对象 218
7.4.3 选择监听器 218
7.4.4 打开编辑器 219
7.5 保存视图状态 220
7.5.1 保存本地视图信息 220
7.5.2 保存全局视图信息 222
7.6 测试 225
7.7 图像缓存 225
7.8 自动调整大小的表列 226
7.9 RFRS相关事项 227
7.9.1 用于导航的视图(RFRS 3.5.15) 227
7.9.2 视图立即保存(RFRS 3.5.16) 227
7.9.3 视图初始化(RFRS 3.5.17) 227
7.9.4 视图全局操作(RFRS 3.5.18) 227
7.9.5 保存视图状态(RFRS 3.5.19) 228
7.9.6 注册上下文菜单(RFRS 5.3.5.8) 228
7.9.7 视图操作过滤程序
(RFRS 5.3.5.9) 228
7.10 总结 229
参考文献 229
第8章 编辑器 230
8.1 编辑器声明 231
8.2 编辑器组件 233
8.2.1 编辑器方法 233
8.2.2 编辑器控件 234
8.2.3 编辑器模型 236
8.2.4 内容提供者 242
8.2.5 标签提供者 243
8.3 编辑 244
8.3.1 单元格编辑器 244
8.3.2 变更监听器 246
8.3.3 单元格验证器 247
8.3.4 编辑与选择 249
8.4 编辑器生命周期 249
8.4.1 修改过的编辑器 249
8.4.2 切换页面 250
8.4.3 保存内容 251
8.5 编辑器命令 251
8.5.1 上下文菜单 251
8.5.2 编辑器添加程序 253
8.5.3 编辑器命令而不是编辑器添加
程序 257
8.5.4 撤销/重做 259
8.5.5 剪贴板操作 266
8.6 链接编辑器 266
8.7 RFRS相关事项 266
8.7.1 使用编辑器进行编辑或浏览
(RFRS 3.5.9) 266
8.7.2 编辑器生命周期(RFRS 3.5.10) 266
8.7.3 访问全局操作(RFRS 3.5.11) 267
8.7.4 当对象被删除时关闭
(RFRS 3.5.12) 267
8.7.5 同步外部更改(RFRS 3.5.14) 268
8.7.6 注册编辑器菜单
(RFRS 5.3.5.2) 268
8.7.7 编辑器操作过滤器
(RFRS 5.3.5.3) 268
8.7.8 未保存的编辑器更改
(RFRS 5.3.5.4) 268
8.7.9 为更改过的资源添加前缀
(RFRS 5.3.5.5) 268
8.7.10 编辑器大纲视图
(RFRS 5.3.5.6) 268
8.7.11 与大纲视图同步
(RFRS 5.3.5.7) 269
8.8 总结 269
参考文献 269
第9章 资源更改跟踪 270
9.1 IResourceChangeListener 270
9.1.1 IResourceChangeEvent 270
9.1.2 IResourceDelta 271
9.2 处理更改事件 272
9.3 批处理更改事件 274
9.4 进度监视器 276
9.4.1 IProgressMonitor 276
9.4.2 用于显示进度的类 276
9.4.3 工作台窗口状态栏 278
9.4.4 IProgressService 279
9.5 被延迟的更改事件 279
9.6 总结 280
参考文献 280
第10章 透视图 281
10.1 创建透视图 281
10.1.1 透视图扩展点 282
10.1.2 透视图工厂 282
10.1.3 IPageLayout 284
10.2 改进已有透视图 285
10.2.1 添加视图和占位符 285
10.2.2 添加快捷方式 287
10.2.3 添加操作集 288
10.3 RFRS相关事项 289
10.3.1 为长时间任务创建
(RFRS 5.3.5.10) 289
10.3.2 扩展已有透视图
(RFRS 5.3.5.11) 289
10.3.3 添加操作至窗口菜单
(RFRS 5.3.5.15) 289
10.4 总结 290
参考文献 290
第11章 对话框与向导 291
11.1 对话框 291
11.1.1 SWT对话框与JFace对话框 291
11.1.2 普通SWT对话框 291
11.1.3 普通JFace对话框 292
11.1.4 创建JFace对话框 293
11.1.5 对话框单元 295
11.1.6 对话框的初始位置和大小 295
11.1.7 可调整大小的对话框 295
11.1.8 收藏夹视图过滤器对话框 296
11.1.9 细节对话框 299
11.1.10 打开对话框—查找父shell 305
11.2 向导 306
11.2.1 IWizard 307
11.2.2 IWizardPage 308
11.2.3 IWizardContainer 309
11.2.4 嵌套的向导 310
11.2.5 启动向导 310
11.2.6 向导示例 312
11.2.7 对话框设置 314
11.2.8 基于选择的页面内容 314
11.2.9 基于前一页面的页面内容 318
11.3 RFRS相关事项 320
11.3.1 向导外观(RFRS 3.5.2) 320
11.3.2 在编辑器中打开新文件
(RFRS 3.5.6) 320
11.3.3 新项目切换透视图
(RFRS 3.5.7) 321
11.3.4 显示新对象(RFRS 3.5.8) 321
11.3.5 单一页面向导按钮
(RFRS 5.3.5.13) 321
11.4 总结 321
参考文献 321
第12章 首选项页 322
12.1 创建首选项页 322
12.2 首选项页API 323
12.2.1 FieldEditorPreferencePage 324
12.2.2 字段编辑器 324
12.2.3 PreferencePage 327
12.2.4 收藏夹首选项页 327
12.2.5 合法性验证 328
12.2.6 嵌套首选项页 329
12.2.7 选项卡式首选项页 330
12.3 首选项API 331
12.3.1 默认首选项 331
12.3.2 访问首选项 332
12.3.3 在程序中指定默认值 333
12.3.4 在文件中指定默认值 334
12.3.5 关联收藏夹视图 334
12.3.6 监听首选项更改 335
12.4 RFRS相关事项 335
12.5 总结 336
参考文献 336
第13章 属性 337
13.1 创建属性 337
13.1.1 FavoriteItem属性 337
13.1.2 资源属性 339
13.2 在属性对话框中显示属性 339
13.2.1 声明属性页 340
13.2.2 创建资源属性页 342
13.2.3 创建收藏夹项资源页 343
13.2.4 打开属性对话框 345
13.2.5 IColorProvider 345
13.3 在属性视图中显示属性 346
13.3.1 属性视图API 346
13.3.2 属性视图中的收藏夹属性 348
13.4 属性页作为首选项页重用 349
13.5 RFRS相关事项 350
13.6 总结 351
参考文献 351
第14章 构建器、标记和性质 352
14.1 构建器 353
14.1.1 声明构建器 353
14.1.2 IncrementalProjectBuilder 355
14.1.3 派生资源 360
14.1.4 关联构建器与项目 360
14.1.5 触发构建器 362
14.2 标记 363
14.2.1 标记类型 363
14.2.2 创建并删除标记 365
14.2.3 标记属性 366
14.2.4 标记解析—快速修复 368
14.2.5 查找标记 371
14.3 性质 372
14.3.1 声明性质 372
14.3.2 关联构建器与性质 373
14.3.3 IProjectNature 374
14.3.4 必需的性质 375
14.3.5 冲突的性质 375
14.3.6 性质图像 376
14.3.7 关联性质与项目 376
14.4 RFRS相关事项
14.4.1 使用构建器以转换资源
(RFRS 3.8.1) 380
14.4.2 不要替代已有构建器
(RFRS 3.8.3) 380
14.4.3 不要滥用术语“构建”
(RFRS 5.3.8.1) 380
14.4.4 标记已创建的资源为“派生的”
(RFRS 5.3.8.2) 381
14.4.5 响应清理构建请求
(RFRS 5.3.8.3) 381
14.4.6 在可能时使用IResourceProxy
(RFRS 5.3.8.4) 381
14.4.7 构建器必须由性质添加
(RFRS 5.3.8.5) 382
14.5 总结 382
参考文献 382
第15章 实现帮助 383
15.1 使用帮助 383
15.2 实现帮助 385
15.2.1 新建帮助项目 385
15.2.2 插件清单文件 387
15.2.3 内容表(toc)文件 388
15.2.4 创建HTML内容 390
15.3 上下文相关的帮助(F1) 391
15.3.1 关联上下文ID与项 392
15.3.2 IWorkbenchHelpSystem API 393
15.3.3 创建上下文相关的帮助内容 393
15.3.4 上下文扩展点 394
15.3.5 标记帮助 396
15.4 从程序中访问帮助 396
15.4.1 打开指定帮助页 396
15.4.2 打开网页 397
15.5 备忘单 398
15.5.1 使用备忘单 398
15.5.2 创建简单备忘单 398
15.5.3 注册备忘单 400
15.5.4 添加备忘单命令 402
15.5.5 添加命令参数 403
15.6 RFRS相关事项 404
15.6.1 通过帮助系统提供帮助
(RFRS 3.7.2) 404
15.6.2 通过帮助系统提供所有帮助
(RFRS 5.3.7.1) 404
15.6.3 使用F1激活上下文帮助
(RFRS 5.3.7.2) 405
15.6.4 实现活动帮助(RFRS 5.3.7.3) 405
15.6.5 独立帮助的使用
(RFRS 5.3.7.4) 405
15.6.6 附加文档的使用
(RFRS 5.3.7.5) 405
15.6.7 提供任务流的概述
(RFRS 5.3.5.34) 405
15.6.8 仅说明一个任务
(RFRS 5.3.5.35) 406
15.6.9 为每一个步骤提供帮助链接
(RFRS 5.3.5.36) 406
15.7 总结 406
参考文献 406
第16章 国际化 407
16.1 外部化插件清单 407
16.2 外部化插件字符串 409
16.3 使用片段 414
16.3.1 新建片段项目向导 414
16.3.2 片段清单文件 415
16.3.3 片段项目内容 417
16.4 手动测试 417
16.5 总结 417
参考文献 417
第17章 创建新扩展点 419
17.1 扩展点机制 419
17.2 定义扩展点 419
17.2.1 创建扩展点 420
17.2.2 创建扩展点模式 421
17.2.3 扩展点元素和属性 422
17.2.4 扩展点元素语法 425
17.3 扩展点的后台代码 426
17.3.1 分析扩展项信息 426
17.3.2 创建代理 427
17.3.3 创建可执行扩展项 429
17.3.4 清理 431
17.4 扩展点文档 431
17.5 使用扩展点 432
17.6 RFRS相关事项 434
17.6.1 文档扩展点(RFRS 3.10.5) 434
17.6.2 记录错误(RFRS 5.3.10.1) 434
17.7 总结 434
参考文献 434
第18章 功能部件、品牌化和更新 435
18.1 功能部件项目 436
18.1.1 创建新功能部件项目 436
18.1.2 功能部件清单文件 437
18.1.3 功能部件清单编辑器 438
18.1.4 测试功能部件 442
18.2 品牌化 442
18.2.1 about.html文件 443
18.2.2 about.ini文件 443
18.2.3 产品品牌化 445
18.3 更新站点 446
18.3.1 创建更新站点项目 447
18.3.2 site.xml文件 447
18.3.3 更新网站 450
18.3.4 回到功能部件清单 450
18.3.5 访问更新站点 451
18.4 RFRS相关事项 453
18.4.1 不要覆盖产品品牌
(RFRS 3.1.8) 453
18.4.2 具有品牌的功能部件可见性
(RFRS 5.3.1.9) 453
18.4.3 包含添加项信息
(RFRS 5.3.1.10) 453
18.4.4 about.html文件内容
(RFRS 5.3.1.11) 453
18.4.5 启动画面限制(RFRS 5.3.1.12) 454
18.5 总结 454
参考文献 454
第19章 构建产品 455
19.1 Ant的简要介绍 455
19.1.1 构建项目 455
19.1.2 构建目标 455
19.1.3 构建任务 456
19.1.4 构建属性 458
19.1.5 [antcall]任务 463
19.1.6 macrodef 465
19.1.7 Ant扩展项 466
19.2 使用PDE构建 467
19.2.1 PDE构建概述 467
19.2.2 PDE构建过程中的步骤 468
19.2.3 PDE构建过程中的目录 469
19.2.4 PDE脚本和模板 469
19.2.5 创建PDE构建 470
19.2.6 指定编译级别 471
19.2.7 运行PDE构建 471
19.2.8 自动生成版本限定符 472
19.2.9 保持版本同步 473
19.2.10 构建属性 473
19.2.11 自定义PDE目标 475
19.2.12 使用不同版本的Eclipse编辑 476
19.3 调试PDE构建过程 477
19.3.1 自动生成的构建脚本 477
19.3.2 使用调试器 478
19.4 总结 478
参考文献 479
第20章 GEF:图形编辑框架 480
20.1 GEF体系结构 480
20.2 GEF模型 481
20.3 GEF控制器 481
20.3.1 EditPart类 481
20.3.2 最高级EditPart 483
20.3.3 子EditParts 484
20.3.4 连接EditParts 485
20.3.5 EditPartFactory 488
20.4 GEF图案 488
20.4.1 IFigure 489
20.4.2 Graphics 489
20.4.3 复杂图案 491
20.4.4 连接图案 494
20.4.5 LayoutManager 494
20.5 Eclipse视图中的GEF 496
20.6 Eclipse编辑器中的GEF 498
20.6.1 编辑器输入 499
20.6.2 回到FavoritesManagerEditPart 500
20.6.3 绘画编辑器类 500
20.6.4 FavoritesGEFEditor 501
20.6.5 用户与GEF的交互 503
20.6.6 编辑菜单 506
20.6.7 FreeformLayer和FreeformLayout 508
20.6.8 z顺序 509
20.6.9 删除模型对象 511
20.7 选项板 512
20.7.1 创建GEF选项板 512
20.7.2 CreateCommand 513
20.8 总结 514
参考文献 514
第21章 高级话题 515
21.1 高级搜索—引用项目 515
21.2 访问内部代码 516
21.2.1 Eclipse新闻组 516
21.2.2 Bugzilla—Eclipse bug跟踪
系统 516
21.2.3 用于访问内部代码的选项 517
21.2.4 Eclipse的不同之处 517
21.2.5 相关插件 517
21.2.6 使用片段 518
21.3 适配器 518
21.3.1 IAdaptable 518
21.3.2 使用适配器 518
21.3.3 适配器工厂 519
21.3.4 IWorkbenchAdapter 520
21.4 打开浏览器或创建E-mail 521
21.4.1 IWorkbenchBrowserSupport 521
21.4.2 LaunchURL 521
21.4.3 OpenEmailAction 522
21.5 扩展点中指定的类型 525
21.5.1 参数化的类型 525
21.5.2 在不同的插件中引用类 526
21.6 修改Eclipse以查找部分标识符 527
21.6.1 修改Eclipse基础 527
21.6.2 创建全局操作 528
21.6.3 测试新功能 530
21.6.4 提交更改至Eclipse 530
21.7 标签修饰符 530
21.7.1 声明标签装饰符 531
21.7.2 ILightweightLabelDecorator 531
21.7.3 装饰性标签装饰符 533
21.7.4 IDecoratorManager 534
21.8 后台任务—Jobs API 535
21.9 插件ClassLoader 537
21.10 早期启动 541
21.10.1 管理早期启动 541
21.10.2 取消早期启动 542
21.11 富客户端平台 542
21.12 总结 542
参考文献 542
附录A Eclipse插件和资源 544
附录B Ready for Rational Software 552
· · · · · · (收起)
读后感
书中有插件例子贯穿始末。 讲的面比较全,SWT,jface,编辑器,菜单,常用的扩展点,品牌化,GEF等等,每个部分的比重得当。不像有些书讲了太多的SWT,jface等。常用的扩展点却很少篇幅,一笔带过。
书中有插件例子贯穿始末。 讲的面比较全,SWT,jface,编辑器,菜单,常用的扩展点,品牌化,GEF等等,每个部分的比重得当。不像有些书讲了太多的SWT,jface等。常用的扩展点却很少篇幅,一笔带过。
书中有插件例子贯穿始末。 讲的面比较全,SWT,jface,编辑器,菜单,常用的扩展点,品牌化,GEF等等,每个部分的比重得当。不像有些书讲了太多的SWT,jface等。常用的扩展点却很少篇幅,一笔带过。
书中有插件例子贯穿始末。 讲的面比较全,SWT,jface,编辑器,菜单,常用的扩展点,品牌化,GEF等等,每个部分的比重得当。不像有些书讲了太多的SWT,jface等。常用的扩展点却很少篇幅,一笔带过。
书中有插件例子贯穿始末。 讲的面比较全,SWT,jface,编辑器,菜单,常用的扩展点,品牌化,GEF等等,每个部分的比重得当。不像有些书讲了太多的SWT,jface等。常用的扩展点却很少篇幅,一笔带过。
用户评价
从一个长期使用Eclipse进行复杂项目开发的视角来看,这本书在“错误处理和异常健壮性”方面的论述深度明显不足。插件开发过程中最让人头疼的往往不是功能的实现,而是如何优雅地处理各种意外情况——比如资源加载失败、用户配置错误、或者与遗留系统的接口中断。这本书虽然提到了日志记录(Logging),但缺乏关于如何构建一个统一的、可配置的、多级别错误上报和恢复机制的详细指导。此外,对于插件的国际化(i18n)支持,虽然也提到了资源文件,但缺少针对大型多语言项目中的资源管理策略,例如如何避免硬编码字符串,以及如何利用Eclipse的本地化机制进行高效的维护。我阅读此书时,脑海中一直在构思一个大型企业级插件的蓝图,这个蓝图需要考虑用户权限管理、配置文件的版本迁移、以及与其他企业内部系统的安全通信。很遗憾,这本书的内容似乎更聚焦于工具本身的功能实现,而对构建一个真正可维护、可扩展、经得起时间考验的“产品级”插件所需的工程实践,介绍得比较肤浅。它为我们描绘了一个漂亮的“沙盘”,但没有教我们如何在真正的“战场”上作战。
读完这本书后,我有一种强烈的错位感,感觉自己像是被带到了一个宏伟的建筑工地,但手里拿的却是绘制草图的铅笔,而不是钢筋混凝土。开篇对OSGi框架的介绍无可厚非,它是Eclipse生态的基石,但作者似乎过分沉迷于解释“为什么是OSGi”,而非“如何用OSGi快速部署你的功能模块”。我真正关心的是,在实际的插件开发过程中,如何优雅地处理模块间的依赖冲突,尤其是在大型团队协作中,版本控制的策略是怎样的。书中对于Plugin.xml文件的解析,虽然细致,但更多的是对各个标签属性的罗列,缺乏对最佳实践的指导。比如,如何利用扩展点(Extension Points)设计出可供其他开发者扩展的接口,这部分才是插件化设计的核心魅力所在,但在这本书里,这部分内容的处理显得过于保守和模板化。我尝试着去书中寻找一些关于性能调优的章节,毕竟插件的性能直接影响到IDE的响应速度,但几乎没有找到针对内存泄漏排查、启动速度优化等实际痛点的深入探讨。这本书给我的感觉是,它成功地帮你搭建了一个理论框架,但当你真正要往上面添砖加瓦时,你会发现缺少很多关键的“施工技巧”和“工具箱”。
这本书的排版和插图质量倒是相当不错,这一点值得肯定,清晰的图示确实能帮助理解复杂的类结构。但是,当我们谈论“Eclipse插件开发”时,我们不可避免地要面对与现存生态系统的集成问题。我满心期待书中能针对如何与主流的Maven/Gradle构建工具链无缝对接,或者如何利用现代化的Gradle插件来管理插件的生命周期,提供一些前沿的指导。然而,这本书的视角似乎停留在Eclipse自身的构建系统——PDE(Plugin Development Environment)上,这在当前快速迭代的开发环境中,显得有些年代感了。当然,理解PDE是基础,但一个现代的开发者更需要知道如何用最有效率的方式进行持续集成和部署。书中关于调试技巧的章节也相对薄弱,主要集中在标准的Java断点调试,对于插件特有的生命周期调试,比如追踪某个Bundle的激活状态,或者在运行时动态加载/卸载模块时如何快速定位问题,几乎没有提及。这使得这本书更像是一本针对Eclipse 3.x时代基础知识的总结,对于追求效率和现代化工具链的开发者而言,可能略显乏力。
这本书的封面设计倒是挺吸引人的,那种深邃的蓝黑色调,中间点缀着一点点发光的符号,让人立刻联想到代码世界里的神秘与力量感。我原本是抱着极大的期待来翻阅它的,毕竟“Eclipse插件开发”这个主题本身就代表着深入到IDE底层去定制和扩展功能的强大能力。然而,当我真正开始阅读时,才发现内容上似乎有些“形大于神”的味道。书中花了大量的篇幅去介绍Eclipse的架构,什么RCP、SWT/JFace的理论基石,这部分内容其实在官方文档和一些基础教程里已经有非常详尽的阐述了。我期待的是那种手把手、从零开始构建一个实用插件的实战案例,比如如何拦截编译过程、如何自定义视图的布局,或者如何与外部服务进行高效通信。但遗憾的是,书中的例子大多停留在“Hello World”级别的UI组件展示,稍微复杂一点的交互逻辑就一带而过了。比如,关于异步操作和线程安全的讲解,显得有些理论化,缺乏在实际插件开发中处理复杂任务队列时的具体陷阱和解决方案的深入剖析。总而言之,它更像是一本优秀的参考手册的精简版,而不是一本能带你真正走上高阶插件工程师之路的实战指南。对于已经有一定Java和面向对象基础的开发者来说,这本书可能提供的是概念上的梳理,而非技能上的飞跃。
我不得不承认,我对这本书的期望值可能过于高了,我希望它能像一本高级武功秘籍,传授那些不为人知的“内功心法”。结果读完后,我感觉更像是一本入门级的“招式分解图谱”。例如,书中对SWT/JFX的对比分析,虽然提到了两者在现代开发中的地位差异,但对于如何在一个已有的基于SWT的插件中,平滑地嵌入部分现代化的UI组件(如果可行的话),并没有给出可行的路径。另一个让我感到遗憾的点在于对“未来趋势”的展望几乎缺失。Eclipse本身也在不断演进,比如对模块化、云端化(Che/Theia)的探索,一个有前瞻性的技术书籍应该会触及这些内容,即便只是作为一个引子,引导读者思考插件开发的未来走向。这本书的案例代码似乎有点“静态”,缺乏动态的、响应式的编程范式。我期待看到更多关于响应式编程模型如何应用于插件的事件处理机制中,以构建更健壮、更少阻塞的应用程序。总之,这本书在“What”和“How”的基础层面做得还算扎实,但在“Why Advanced”和“What's Next”的关键领域留下了很大的空白。
插件开发入门推荐书籍之一。
需要再读
需要再读
一般。。。
简明手册