第1部分 Eclipse入门篇.
第1章 Eclipse概述 3
1.1 Eclipse项目背景 3
1.2 Eclipse简介
1.2.1 开放式体系结构
1.2.2 平台体系结构 4
1.3 Eclipse的主要功能特性 5
1.3.1 文件存放(Workspace) 5
1.3.2 Eclipse开发环境(Workbench) 6
1.3.3 编译与运行 7
1.3.4 版本管理 7
1.4 工作台 8
1.4.1 资源 8
1.4.2 资源层次结构 8
1.4.3 构建 8
1.5 运行时概述 9
1.5.1 运行时插件模型 9
1.5.2 插件 10
1.5.3 Bundle 10
1.6 开源的选择 11
1.7 小结 12
第2章 Eclipse安装及Java开发 13
2.1 Eclipse开发环境的安装 13
2.1.1 JDK安装 13
2.1.2 Eclipse安装 14
2.2 Java开发工具JDT 14
2.2.1 视角 14
2.2.2 视图 15
2.2.3 编辑器 16
2.3 在Eclipse中开发Java程序 16
2.3.1 Java项目 16
2.3.2 新建“Hello,32world”程序 17
2.3.3 运行程序与调试 18
2.3.4 类的构建路径 19
2.3.5 项目构建 20
2.4 其他功能 20
2.4.1 查看源代码 20
2.4.2 重构 21
2.4.3 生成Javado 文档 21
2.5 Eclipse快捷键 22
2.5.1 编辑相关快捷键 22
2.5.2 查看和定位快捷键 23
2.5.3 调试快捷键 24
2.5.4 常用编辑器快捷键 24
2.5.5 其他快捷键 24
2.6 小结 25
第3章 Eclipse的使用 27
3.1 Eclipse插件安装 27
3.1.1 拷贝安装 27
3.1.2 links安装 28
3.1.3 update安装 29
3.1.4 查看插件 30
3.2 开发简单的Web应用 31
3.2.1 安装配置MyEclipse 31
3.2.2 创建Web应用 32
3.2.3 部署并运行Web应用 35
3.3 小结 36
第2部分 SWTJFace开发篇
第4章 SWT/JFace 入门 39
4.1 SWT/JFace简介 39
4.1.1 SWT/JFace概述 39
4.2.2 SWT/JFace基本特性 40
4.2 SWT“Hello world”程序 41
4.2.1 加入SWT依赖的包 41
4.2.2 “Hello world”程序 43
4.2.3 运行“Hello world”程序 43
4.3 JFace“Hello world”程序 44
4.3.1 “Hello world”程序 44
4.3.2 运行“Hello world”程序 45
4.4 在SWT中使用Swing组件 46
4.4.1 在SWT的组件上加入Swing的组件 46
4.4.2 程序运行效果 48
4.5 小结 48
第5章 SWT常用组件 49
5.1 Control类 49
5.1.1 Control类的继承关系 49
5.1.2 Control类的常用方法 49
5.2 Button组件 50
5.2.1 Button组件实例 50
5.2.2 Button组件的风格 52
5.2.3 Button组件的对齐方式 52
5.2.4 加入图片及按钮组合属性 52
5.3 Label组件 53
5.3.1 Label组件实例 53
5.3.2 Label组件的风格和对齐方式 54
5.3.3 加入图片及组合属性 55
5.4 Text组件 55
5.4.1 Text组件实例 55
5.4.2 Text组件的风格 56
5.5 Combo组件 57
5.5.1 Combo组件实例 57
5.5.2 Combo组件的风格 59
5.6 List组件 59
5.6.1 List组件实例 59
5.6.2 List组件的风格 61
5.7 小结 61
第6章 SWT事件 63
6.1 鼠标事件 63
6.1.1 MouseListener接口 63
6.1.2 MouseMoveListener接口 64
6.1.3 MouseTra kListener接口 64
6.1.4 鼠标事件实例 65
6.2 键盘事件 67
6.2.1 KeyListener接口 67
6.2.2 键盘事件实例 67
6.3 焦点事件 69
6.3.1 FocusListener接口 69
6.3.2 焦点事件实例 69
6.4 窗口控制事件 71
6.4.1 ControlListener接口 71
6.4.2 窗口控制事件实例 71
6.5 选择组件事件 72
6.5.1 SelectionListener接口 73
6.5.2 选择组件事件实例 73
6.6 其他常用事件 74
6.6.1 HelpListener. VerifyListener和ModifyListener监听器的功能 74
6.6.2 HelpListener. VerifyListener和ModifyListener监听器实例 75
6.7 小结 77
第7章 SWT布局管理 79
7.1 概述 79
7.2 FillLayout布局 80
7.2.1 FillLayout的风格 80
7.2.2 FillLayout布局实例 80
7.3 RowLayout布局 82
7.3.1 RowLayout的风格 82
7.3.2 RowLayout布局实例 83
7.4 GridLayout布局 84
7.4.1 GridLayout的风格 85
7.4.2 GridData的相关属性 85
7.4.3 GridLayout 布局实例 87
7.5 FormLayout布局 91
7.5.1 FormLayout布局信息 91
7.5.2 FormLayout布局实例 92
7.6 创建自己的布局 96
7.6.1 Layout类 96
7.6.2 创建自己的布局类 97
7.7 小结 100
第8章 SWT容器及其他组件 101
8.1 SWT容器 101
8.1.1 Composite组件 101
8.1.2 Group组件 102
8.1.3 TabFolder和TabItem组件 104
8.1.4 SashForm组件 105
8.2 菜单和工具栏 108
8.2.1 Menu和MenuItem组件 108
8.2.2 ToolBar和ToolItem组件 111
8.2.3 CoolBar和CoolItem组件 113
8.3 其他组件 115
8.3.1 Slider组件 115
8.3.2 Scale组件 116
8.3.3 ProgressBar组件 118
8.4 小结 120
第9章 Viewer组件 121
9.1 TreeViewer 121
9.1.1 TreeViewer构建步骤 121
9.1.2 内容提供器(ITreeContentProvider) 121
9.1.3 标签提供器(ILabelProvider) 123
9.1.4 TreeViewer实例 123
9.2 TableViewer 127
9.2.1 TableViewer构建步骤 127
9.2.2 内容提供器(IStructured ContentProvider) 128
9.2.3 标签提供器(ITableLabelProvider) 128
9.2.4 TableViewer实例 129
9.3 ListViewer 138
9.3.1 ListViewer功能 138
9.3.2 ListViewer实例 138
9.4 小结 142
第10章 对话框 143
10.1 消息对话框 143
10.1.1 消息对话框的功能 143
10.1.2 消息对话框实例 144
10.2 输入对话框 147
10.2.1 输入对话框的功能 147
10.2.2 输入对话框实例 147
10.3 进度监视对话框 149
10.3.1 进度监视对话框的功能 149
10.3.2 进度监视对话框实例 150
10.4 自定义对话框 153
10.4.1 带标题区域对话框 153
10.4.2 自定义对话框实例 153
10.5 常用系统对话框 156
10.5.1 打印对话框(PrintDialog) 157
10.5.2 颜色对话框(ColorDialog) 157
10.5.3 字体对话框(FontDialog) 158
10.5.4 文件对话框(FileDialog) 159
10.5.5 目录对话框(DirectoryDialog) 159
10.6 小结 160
第11章 SWT的其他应用 161
11.1 拖放 161
11.1.1 拖放的功能 161
11.1.2 拖放的实现 162
11.2 线程 164
11.2.1 线程同步和异步 164
11.2.2 线程同步和异步的实现 164
11.3 剪贴板 166
11.3.1 剪贴板的功能 166
11.3.2 剪贴板的实现 166
11.4 图形上下文 168
11.4.1 图形上下文的实现 168
11.4.2 自定义组件 170
11.5 鼠标形状(Cursor) 172
11.6 小结 174
第3部分 Eclipse插件开发篇
第12章 插件入门 177
12.1 什么是插件 177
12.2 一个简单的插件 178
12.2.1 创建“Hello,207world”插件 178
12.2.2 调试“Hello,208world”插件 179
12.2.3 插件打包 180
12.3 插件清单文件介绍 181
12.3.1 OverView:描述了插件的基本信息 182
12.3.2 Dependen ies:描述了插件的依赖关系 182
12.3.3 Runtime:指明了运行时的ClassPath 183
12.3.4 Extensions:指明插件实现的扩展点 183
12.3.5 Extension Points:指明了用户插件提供的扩展点 184
12.4 常用扩展点的描述 185
12.4.1 org.e lipse.ui.editors:代表一个编辑器窗口 185
12.4.2 org.e lipse.ui.views:代表一个视图窗口 185
12.4.3 org.e lipse.ui.perspe tives:代表一个扩展视角 187
12.5 小结 187
第13章 视图扩展点的实现 189
13.1 Views扩展点的介绍 189
13.1.1 视图分类 189
13.1.2 常用视图可实现的功能 190
13.2 “Hello,225world”视图 190
13.2.1 创建“Hello,226world”视图插件 190
13.2.2 “Hello,227world”插件扩展点 191
13.2.3 “org.e lipse.ui.views”扩展点的实现类“HelloWorldView” 193
13.2.4 运行“Hello,229world”视图 194
13.3 “Tree viewer”视图 195
13.3.1 创建“Tree viewer”视图插件 195
13.3.2 “Tree viewer”插件扩展点 196
13.3.3 “org.e lipse.ui.views”扩展点的实现类“TreeViewTest” 196
13.3.4 运行“Tree viewer”视图 202
13.4 “Image viewer”视图 202
13.4.1 创建“Image viewer”视图插件 202
13.4.2 “org.e lipse.ui.viewA tions”扩展点的实现类“PushA tionDelegate” 205
13.4.3 “org.e lipse.ui.views”扩展点的实现类“ImageView” 206
13.4.4 运行“Image viewer”视图 207
13.5 Debug视图的实现.. 208
13.5.1 查找Debug插件 208
13.5.2 导入Debug插件 208
13.5.3 Debug插件中视图的扩展点 209
13.6 小结 211
第14章 编辑器扩展点的实现 213
14.1 Editors扩展点的介绍 213
14.1.1 编辑器分类 213
14.1.2 常用编辑器可实现的功能 213
14.1.3 编辑器和视图的区别 214
14.2 “Hello,250world”编辑器 214
14.2.1 “Hello,251world”编辑器插件 214
14.2.2 “Hello,252world”插件扩展点 215
14.2.3 “org.e lipse.ui.editors”扩展点的实现类“HelloWorldEditor” 216
14.2.4 运行“Hello,254world”编辑器 218
14.3 多页签编辑器的实现 219
14.3.1 创建多页签编辑器插件 219
14.3.2 多页签编辑器插件扩展点 220
14.3.3 “org.e lipse.ui.editors”扩展点的实现类“MultiPageEditor” 220
14.3.4 “org.e lipse.ui.editors”扩展点的辅助类“MultiPageEditor Contributor” 225
14.3.5 运行多页签编辑器 227
14.4 简单的文本编辑器 227
14.4.1 创建文本编辑器插件 227
14.4.2 “org.e lipse.ui.editors”扩展点的实现类“FileEditor” 228
14.4.3 运行文本编辑器 231
14.5 小结 231
第15章 项目相关扩展点的实现 233
15.1 项目中常用的扩展 233
15.2 视角 233
15.2.1 简介 234
15.2.2 “org.e lipse.ui.perspe tive Extensions”扩展点 234
15.2.3 “org.e lipse.ui.perspe tives”扩展点 237
15.3 菜单工具栏 239
15.3.1 “org.e lipse.ui.a tionSets”扩展点信息 239
15.3.2 “org.e lipse.ui.a tionSets”扩展点的实现类“SampleA tion” 240
15.4 项目相关特性 241
15.4.1 项目扩展点 241
15.4.2 “org.e lipse. ore.resour es. natures”扩展点及实现类 241
15.4.3 “org.e lipse. ore.resour es. builders”扩展点及实现类 243
15.4.4 “org.e lipse.ui.newWizards”扩展点及实现类 246
15.4.5 “org.e lipse.ui.preferen ePages”扩展点及实现类 249
15.5 小结 252
第16章 帮助相关扩展点的实现 253
16.1 联机帮助 253
16.1.1 联机帮助扩展点的实现 253
16.1.2 联机帮助文档的结构 254
16.1.3 在联机帮助中在线调用Java类 256
16.2 欢迎界面帮助 257
16.2.1 产品扩展点 258
16.2.2 欢迎界面扩展点 258
16.2.3 插件清单文件 259
16.2.4 扩展点实现类 259
16.2.5 调试欢迎界面插件 261
16.3 上下文帮助 261
16.3.1 定义上下文帮助 261
16.3.2 定义弹出菜单和相应对话框 262
16.3.3 运行上下文帮助插件 264
16.4 小结 266
第17章 其他扩展点的实现 267
17.1 startup扩展点的实现 267
17.1.1 “org.e lipse.ui.startup”扩展点的实现 267
17.1.2 “org.e lipse.ui.startup”对应的实现类 267
17.1.3 “org.e lipse.ui.startup”对应插件运行效果 268
17.2 “propertyPages”扩展点的实现 268
17.2.1 “org.e lipse.ui.propertyPages”扩展点的实现 268
17.2.2 “org.e lipse.ui.propertyPages”对应的实现类 269
17.2.3 “org.e lipse.ui.propertyPages”对应插件运行效果 272
17.3 小结 273
第18章 插件开发辅助功能 275
18.1 属性视图 275
18.1.1 IPropertySour e接口 276
18.1.2 属性视图的实现 277
18.2 大纲视图 279
18.2.1 IContentOutlinePage接口 279
18.2.2 大纲视图的实现 281
18.3 构造EditorInput 282
18.3.1 IEditorInput接口 282
18.3.2 IEditorInput的实现 283
18.4 操纵编辑器 285
18.4.1 查找编辑器 285
18.4.2 打开和关闭编辑器 286
18.5 插件国际化 286
18.5.1 国际化插件的创建 287
18.5.2 类的国际化 287
18.5.3 plugin.xml文件格式化 289
18.5.4 调试国际化插件 289
18.6 小结 290
第4部分 E lipse提高篇
第19章 Draw2d简介及实现 293
19.1 Draw2d简介 293
19.1.1 Draw2d简介 293
19.1.2 “Hello World”实现 294
19.2 图形 295
19.2.1 图形(Figure)的功能 295
19.2.2 图形的实现 295
19.3 连线 296
19.3.1 连线(Conne tion)的功能 297
19.3.2 连线的实现 297
19.4 UML关系图实现 299
19.4.1 UML关系图实现的要求 299
19.4.2 CompartmentFigure实现 300
19.4.3 UMLClassFigure实现 301
19.4.4 连线及测试类 302
19.5 小结 304
第20章 GEF原理及实现 305
20.1 GEF概述 305
20.1.1 GEF简介 305
20.1.2 GEF工作原理 305
20.2 模型 306
20.2.1 模型的功能 306
20.2.2 模型的实现 306
20.3 视图 311
20.3.1 视图的功能 311
20.3.2 视图的实现 311
20.4 控制器 312
20.4.1 控制器的功能 312
20.4.2 控制器的实现 313
20.5 请求和编辑策略 316
20.5.1 请求和编辑策略(Request and EditPolicies) 316
20.5.2 编辑策略的实现 317
20.6 命令 318
20.6.1 命令(Commands)的功能 318
20.6.2 命令的实现 318
20.7 模型同步 320
20.7.1 模型同步的功能 320
20.7.2 模型同步的实现 320
20.8 选项板 321
20.8.1 选项板(PaletteRoot)的功能 321
20.8.2 选项板的实现 322
20.9 小结 323
第21章 GEF表模型编辑器的实现 325
21.1 程序的软件结构 325
21.1.1 实现功能 325
21.1.2 程序的界面要求 326
21.2 编辑器的实现 326
21.2.1 编辑器的功能 326
21.2.2 编辑器的实现 327
21.3 模型的实现 334
21.3.1 PropertyAwareObject类 334
21.3.2 Table类 335
21.3.3 Column类 339
21.3.4 Schema类 341
21.3.5 Relationship类 343
21.4 视图的实现 344
21.4.1 TableFigure类 344
21.4.2 SchemaFigure类 346
21.4.3 ColumnsFigure类 346
21.5 控制器的实现 347
21.5.1 TablePart的实现 348
21.5.2 RelationshipPart的实现 357
21.6 EditPartFactory和Palette的实现 359
21.6.1 SchemaEditPartFactory 359
21.6.2 PaletteRoot 360
21.7 EditPolicy的实现 362
21.7.1 TableNodeEditPolicy(模型连线的编辑策略) 362
21.7.2 TableLayoutEditPolicy(子模型布局的编辑策略) 364
21.7.3 TableContainerEditPolicy(处理模型创建请求的编辑策略) 366
21.7.4 TableEditPolicy(模型编辑的编辑策略) 367
21.7.5 TableDirectEditPolicy(处理直接编辑的编辑策略) 368
21.8 Command的实现 369
21.8.1 模型连线命令 369
21.8.2 模型拖动命令 372
21.8.3 模型创建命令 373
21.8.4 模型删除命令 374
21.8.5 模型直接编辑命令 377
21.9 大纲的实现 378
21.10 小结 380
第22章 EMF的使用 381
22.1 EMF的简介 381
22.2 使用EMF生成模型 382
22.2.1 定制类关系图 382
22.2.2 生成模型代码 383
22.3 在GEF框架中使用EMF模型 384
22.3.1 模型 384
22.3.2 EditPart的修改 384
22.3.3 ElementFactory的修改 385
22.3.4 处理自定义数据类型 386
22.3.5 保存和载入模型 387
22.4 小结 388
第23章 RCP技术 389
23.1 RCP的简介 389
23.2 建立一个RCP的应用 389
23.2.1 创建RCP应用 390
23.2.2 运行RCP应用 390
23.2.3 导出RCP应用 391
23.3 RCP的组成部分 393
23.3.1 Plugin.xml 393
23.3.2 应用的入口Application 395
23.3.3 工作台Appli ationWorkbench Advisor 395
23.3.4 工作台窗口Application WorkbenchWindowAdvisor 397
23.3.5 工作台“Action Bar”ApplicationActionBarAdvisor 397
23.3.6 应用的视角(perspective) 399
23.4 小结 400
第24章 Eclipse进阶 401
24.1 选择与监听 401
24.1.1 选择事件提供者(Selection Provider) 402
24.1.2 选择服务(Selection Service) 403
24.1.3 选择事件监听器(Selection Listener) 404
24.1.4 实例 405
24.2 命令堆栈 408
24.2.1 命令堆栈(CommandSta k) 408
24.2.2 监听器 410
24.3 适配器 410
24.3.1 适配器接口(IAdaptable) 411
24.3.2 适配器的实现 412
24.4 UI持久化 413
24.4.1 持久化机制 413
24.4.2 UI持久化与恢复的实现 414
24.5 深入Workben h 418
24.5.1 Workben h中实现类的关系 418
24.5.2 Part的生命周期 419
24.6 资源监听与访问 421
24.6.1 资源监听器 421
24.6.2 资源访问器 422
24.6.3 资源监听的实现 423
24.7 小结 425
附录A 插件资源列表 427
附录B 插件开发法则 431
B.1 扩展者法则 431
B.2 促成者法则 431
B.3 发布者法则 432