第一部分 Ext JS介绍 3
第1章 独特的框架 3
1.1 认识Ext JS 4
1.1.1 和已有的站点相整合 5
1.1.2 富API文档 6
1.1.3 通过预置的部件进行快速开发 7
1.1.4 与Prototype、jQuery、YUI结合使用以及在AIR中使用 8
1.2 需要知道的事项 8
1.3 框架概览 9
1.3.1 容器和布局一览 11
1.3.2 实际应用中的其他容器 12
1.3.3 网格、DataView和ListView 12
1.3.4 模仿一个TreePanel和叶子 14
1.3.5 表单的输入字段 15
1.3.6 其他部件 17
1.4 Ext JS 3.0的新特性 19
1.4.1 Ext JS通过Direct完成远程操作 19
1.4.2 数据类 19
1.4.3 新的布局 19
1.4.4 网格中ColumnModel的增强 20
1.4.5 ListView 21
1.4.6 Ext JS中新增的图表功能 22
1.5 下载并配置 22
1.5.1 检查SDK的内容 23
1.5.2 第一次配置Ext JS 24
1.5.3 配置Ext JS使用其他框架 24
1.5.4 配置BLANK_IMAGE_URL 25
1.6 测试 26
1.7 小结 29
第2章 基础回顾 31
2.1 正确的开始 32
2.1.1 准备好了再行动 32
2.1.2 由Ext JS来触发 32
2.2 Ext.Element类 34
2.2.1 框架的核心 34
2.2.2 与Ext.Element的第一次亲密接触 34
2.2.3 创建子节点 36
2.2.4 删除子节点 38
2.2.5 Ext.Element与Ajax一起使用 40
2.3 使用Template和XTemplate 41
2.3.1 模板练习 41
2.3.2 用XTemplate循环 43
2.3.3 XTemplate的高级用途 45
2.4 小结 46
第3章 事件、组件和容器 47
3.1 通过Observable管理事件 48
3.1.1 回顾 48
3.1.2 基于DOM的事件 48
3.1.3 DOM中的事件流 49
3.1.4 把泡泡戳破 51
3.1.5 软件驱动的事件 52
3.1.6 注册事件和事件监听器 53
3.2 组件模型 55
3.2.1 XType和组件管理器 56
3.2.2 组件的渲染 58
3.3 组件的生命周期 59
3.3.1 初始化 60
3.3.2 渲染 61
3.3.3 销毁阶段 63
3.4 容器 64
3.4.1 学会掌控子元素 65
3.4.2 查询容器的层次结构 67
3.4.3 Viewport容器 68
3.5 小结 69
第二部分 Ext JS组件 73
第4章 组件的安身之所 73
4.1 Panel 74
4.1.1 构建一个复杂的面板 74
4.2 弹出窗口 78
4.2.1 进一步探讨窗口的配置选项 80
4.2.2 用MessageBox取代alert和prompt 81
4.2.3 MessageBox的高级技术 83
4.2.4 显示一个动画效果的等待MessageBox 84
4.3 组件也可以放在选项卡面板里 86
4.3.1 记住两个选项 86
4.3.2 构建第一个TabPanel 88
4.3.3 需要知道的选项卡管理方法 90
4.3.4 缺陷与不足 91
4.4 小结 93
第5章 元素的摆放 94
5.1 简单的ContainerLayout 94
5.2 AnchorLayout 97
5.3 FormLayout 100
5.4 AbsoluteLayout 102
5.5 让组件填满整个容器空间 104
5.6 AccordionLayout 104
5.7 CardLayout 107
5.8 ColumnLayout 109
5.9 HBox和VBox布局 112
5.10 TableLayout 115
5.11 BorderLayout 117
5.12 小结 122
第6章 Ext JS的表单 123
6.1 TextField 124
6.1.1 密码和文件选择字段 127
6.1.2 构建TextArea 128
6.1.3 方便的NumberField 128
6.2 ComboBox的预先输入 129
6.2.1 构建一个本地ComboBox 130
6.2.2 使用远程的ComboBox 131
6.2.3 剖析ComboBox 134
6.2.4 定制自己的ComboBox 135
6.2.5 时间 136
6.3 所见即所得 137
6.3.1 构造第一个HtmlEditor 137
6.3.2 解决缺少校验的问题 138
6.4 选择日期 138
6.5 Checkbox和Radio 139
6.6 FormPanel 141
6.7 数据提交和加载 147
6.7.1 传统的提交 147
6.7.2 通过Ajax提交 147
6.7.3 表单的数据加载 149
6.8 小结 151
第三部分 数据驱动的组件 155
第7章 历史悠久的GridPanel 155
7.1 GridPanel简介 155
7.1.1 深入内部 156
7.2 数据存储器快速入门 157
7.2.1 数据存储器的工作方式 158
7.3 构建一个简单的GridPanel 160
7.3.1 配置一个ArrayStore 161
7.3.2 完成第一个GridPanel 162
7.4 高级GridPanel的构造 165
7.4.1 目标 165
7.4.2 用快捷方式创建数据存储器 165
7.4.3 用自定义的渲染器构造ColumnModel 167
7.4.4 配置高级GriPanel 169
7.4.5 为GridPanel配置一个容器 170
7.4.6 加上事件处理 172
7.5 小结 175
第8章 EditorGridPanel 177
8.1 近观EditorGridPanel 178
8.2 构建第一个EditorGridPanel 178
8.3 EditorGridPanel的导航 183
8.4 进入CRUD 184
8.4.1 添加保存和拒绝逻辑 184
8.4.2 保存修改或拒绝修改 187
8.4.3 添加创建和删除 188
8.4.4 使用创建和删除 192
8.5 使用Ext.data.DataWriter 195
8.5.1 走进Ext.data.Data Writer 196
8.5.2 给JsonStore添加DataWriter 196
8.5.3 使用DataWriter 199
8.5.4 自动写数据存储器 201
8.6 小结 201
第9章 DataView和ListView 202
9.1 什么是DataView 203
9.2 构建一个DataView 203
9.2.1 构造数据存储器和XTemplate 205
9.2.2 构建DataView和Viewport 209
9.3 深入ListView 211
9.3.1 把DataView绑定到ListView 214
9.4 整合 215
9.4.1 配置FormPanel 216
9.4.2 应用最后的绑定 218
9.5 小结 221
第10章 图表 222
10.1 定义4种图表 223
10.2 剖析图表 224
10.3 构建一个LineChart 226
10.3.1 ToolTip的定制 229
10.3.2 给x轴和y轴添加标题 230
10.3.3 美化图表内容区 231
10.4 增加多个系列 232
10.4.1 添加图例 235
10.5 构造ColumnChart 236
10.5.1 堆叠柱状图 237
10.5.2 混合使用Line和Column 238
10.6 构造BarChart 239
10.6.1 配置一个BarChart 241
10.7 PieChart的一片 242
10.7.1 自定义的tipRenderer 244
10.8 小结 245
第11章 树 247
11.1 TreePanel 247
11.1.1 分析root 248
11.2 构建第一个TreePanel 249
11.3 动态增长的TreePanel 251
11.3.1 TreePanel 252
11.4 TreePanel的CRUD 254
11.4.1 给TreePanel添加上下文菜单 254
11.4.2 Edit的逻辑 258
11.4.3 实现删除 261
11.4.4 给TreePanel创建节点 263
11.5 小结 266
第12章 菜单、按钮和工具栏 267
12.1 初识菜单 268
12.1.1 构建一个菜单 268
12.1.2 获得和使用图标 270
12.1.3 驾驭疯狂的图标 271
12.1.4 添加子菜单 271
12.1.5 添加分隔栏和TextItem 273
12.1.6 选颜色和选择日期 274
12.1.7 可以勾选的菜单项 276
12.1.8 单选项 278
12.2 按钮的使用 280
12.2.1 构建按钮 280
12.2.2 把菜单和按钮绑在一起 281
12.2.3 SplitButton 282
12.2.4 自定义按钮的布局 283
12.3 对按钮进行分组 284
12.4 工具栏 287
12.5 读取、设置和Ext.Action 290
12.6 小结 291
第四部分 高级Ext 295
第13章 拖放基础 295
13.1 仔细研究拖放 296
13.1.1 拖放的生命周期 296
13.1.2 从上向下观察拖放类 297
13.1.3 关键在于重载 299
13.1.4 拖放总是成组使用的 300
13.2 从简单的开始 300
13.2.1 创建一个小的工作区 300
13.2.2 让元素可以拖曳 302
13.2.3 分析Ext.dd.DD的DOM改变 302
13.2.4 添加用作投放目标的游泳池和热水池 304
13.3 完成拖放 305
13.3.1 添加投放邀请 305
13.3.2 添加有效投放 308
13.3.3 实现无效投放 309
13.4 使用DDProxy 311
13.4.1 使用DDProxy的投放邀请 311
13.5 小结 314
第14章 部件的拖放 315
14.1 快速回顾拖放类 316
14.2 DataView的拖放 317
14.2.1 构造DataView 317
14.2.2 添加拖曳 321
14.2.3 投放 325
14.3 GridPanel的拖放 327
14.3.1 构造GridPanel 328
14.3.2 启用拖曳 330
14.3.3 更好的投放邀请 331
14.3.4 添加投放 332
14.4 TreePanel的拖放 336
14.4.1 构造TreePanel 336
14.4.2 启用拖放 338
14.4.3 使用灵活的约束 339
14.5 小结 342
第15章 扩展和插件 343
15.1 Ext JS的继承 344
15.1.1 JavaScript的继承 345
15.1.2 Ext JS的扩展 347
15.2 扩展Ext JS的组件 350
15.2.1 设想实现结果 350
15.2.2 扩展GridPanel 351
15.2.3 扩展实战 355
15.2.4 扩展的局限性 357
15.3 插件 358
15.3.1 健壮的插件设计模式 359
15.3.2 开发一个插件 360
15.3.3 插件实践 362
15.4 小结 366
第五部分 构建应用程序 369
第16章 可重用的开发 369
16.1 面向未来的开发 370
16.1.1 命名空间 370
16.1.2 命名空间的分段 371
16.1.3 大型应用程序的命名空间分段 372
16.2 分析应用需求 373
16.2.1 可重用性的提取 373
16.2.2 Dashboard界面 374
16.2.3 Manage Departments界面 376
16.2.4 Manage Employees界面 379
16.3 构造ChartPanel组件 381
16.3.1 ChartPanelBaseCls 381
16.3.2 CompanySnapshot类 383
16.3.3 DepartmentBreakdown类 385
16.4 构造列表面板组件 386
16.4.1 ListPanelBaseCls 387
16.4.2 DepartmentListView和EmployeeList类 388
16.5 构造EmployeeGridPanel类 390
16.6 EmployeeAssociationWindow类 392
16.7 form命名空间 396
16.7.1 FormPanelBaseCls类 396
16.7.2 DepartmentForm类 397
16.7.3 EmployeeForm类 404
16.8 小结 413
第17章 应用层 414
17.1 开发应用程序命名空间 415
17.1.1 回顾应用程序界面 415
17.1.2 设计应用程序的命名空间 417
17.2 构造Dashboard界面 417
17.3 Manage Employees界面 419
17.3.1 讨论工作流程 419
17.3.2 构造Employee Manager 420
17.4 Manage Departments界面 430
17.4.1 导航和部门CRUD工作流 430
17.4.2 员工CRUD工作流 433
17.4.3 员工调动工作流 436
17.5 整合 437
17.5.1 工作区工作流 438
17.5.2 构造工作区单体 438
17.6 小结 445