前 言
第一部分 準備篇
第 1 章 準備開發環境••••••••••••••••••••••••••2
1.1 安裝 JDK ••••••••••••••••••••••••••••••••••••••••••••2
1.2 安裝 Eclipse••••••••••••••••••••••••••••••••••••••••2
1.3 安裝 GWT 1.7 的 Eclipse 插件 ••••••••••3
1.4 安裝 GWT 2.0 的 SDK 以及
Eclipse 插件••••••••••••••••••••••••••••••••••••••••4
1.5 輔助工具 ••••••••••••••••••••••••••••••••••••••••••••5
1.5.1 Internet Explorer Developer
Toolbar •••••••••••••••••••••••••••••••••••••••••5
1.5.2 Firebug•••••••••••••••••••••••••••••••••••••••••6
1.6 小結••••••••••••••••••••••••••••••••••••••••••••••••••••7
第 2 章 Hello GWT•••••••••••••••••••••••••••••••8
2.1 在 Eclipse 中創建項目•••••••••••••••••••••••8
2.2 運行調試項目 ••••••••••••••••••••••••••••••••••10
2.3 JUnit 測試•••••••••••••••••••••••••••••••••••••••••14
2.4 發布網站 ••••••••••••••••••••••••••••••••••••••••••16
2.5 ANT 發布•••••••••••••••••••••••••••••••••••••••••16
2.6 小結••••••••••••••••••••••••••••••••••••••••••••••••••17
第二部分 基礎篇
第 3 章 GWT 模塊 ••••••••••••••••••••••••••••••20
3.1 GWT 模塊詳解 ••••••••••••••••••••••••••••••••20
3.2 模塊入口點•••••••••••••••••••••••••••••••••••••• 22
3.3 模塊繼承•••••••••••••••••••••••••••••••••••••••••• 22
3.4 附加 CSS 和 JavaScript•••••••••••••••••••• 23
3.5 路徑配置•••••••••••••••••••••••••••••••••••••••••• 25
3.6 延遲綁定•••••••••••••••••••••••••••••••••••••••••• 29
3.7 發布 JAR•••••••••••••••••••••••••••••••••••••••••• 33
3.8 深入研究•••••••••••••••••••••••••••••••••••••••••• 34
3.9 小結 ••••••••••••••••••••••••••••••••••••••••••••••••• 37
第 4 章 JSNI ••••••••••••••••••••••••••••••••••••••••• 38
4.1 JSNI 和 JavaScript ••••••••••••••••••••••••••• 38
4.2 類型映射•••••••••••••••••••••••••••••••••••••••••• 39
4.3 JavaScriptObject••••••••••••••••••••••••••••••• 40
4.4 JsArray ••••••••••••••••••••••••••••••••••••••••••••• 42
4.5 JSNI 中的特殊變量••••••••••••••••••••••••• 42
4.6 在 JSNI 中訪問 GWT 函數••••••••••••• 46
4.7 異常處理•••••••••••••••••••••••••••••••••••••••••• 49
4.8 外部 JavaScript 訪問 GWT函數•••••••• 50
4.9 整閤 jQuery•••••••••••••••••••••••••••••••••••••• 51
4.10 在 GWT 中使用正則
錶達式 ••••••••••••••••••••••••••••••••••••••••••• 57
4.11 小結•••••••••••••••••••••••••••••••••••••••••••••••• 60
第 5 章 在 GWT 中使用 XML •••••••• 61
5.1 XML 簡介•••••••••••••••••••••••••••••••••••••••• 61
5.2 XML 操作•••••••••••••••••••••••••••••••••••••••• 62
5.2.1 XML 文檔••••••••••••••••••••••••••••••••• 62
5.2.2 XML 節點 •••••••••••••••••••••••••••••••••64
5.2.3 XML 元素節點••••••••••••••••••••••••••67
5.2.4 XML 文本節點••••••••••••••••••••••••••68
5.3 在 GWT 中使用 XPath•••••••••••••••••••••68
5.4 小結••••••••••••••••••••••••••••••••••••••••••••••••••76
第 6 章 GWT 控件詳解•••••••••••••••••••••77
6.1 界麵對象 ••••••••••••••••••••••••••••••••••••••••••77
6.2 Widget•••••••••••••••••••••••••••••••••••••••••••••••82
6.3 麵闆••••••••••••••••••••••••••••••••••••••••••••••••••83
6.4 控件生命周期 ••••••••••••••••••••••••••••••••••85
6.5 控件事件管理 ••••••••••••••••••••••••••••••••••87
6.5.1 注冊控件事件處理句柄••••••••••••87
6.5.2 阻止控件默認行為••••••••••••••••••••88
6.5.3 阻止事件冒泡 •••••••••••••••••••••••••••89
6.5.4 onBrowserEvent•••••••••••••••••••••••••90
6.6 GWT 全局類 ••••••••••••••••••••••••••••••••••••91
6.6.1 DOM 類•••••••••••••••••••••••••••••••••••••91
6.6.2 GWT 類•••••••••••••••••••••••••••••••••••••92
6.6.3 Window 類•••••••••••••••••••••••••••••••••94
6.7 小結••••••••••••••••••••••••••••••••••••••••••••••••••97
第 7 章 使用 GWT 控件••••••••••••••••••••98
7.1 簡單控件 ••••••••••••••••••••••••••••••••••••••••••98
7.1.1 包裝已有控件 •••••••••••••••••••••••••••98
7.1.2 圖片超鏈接 •••••••••••••••••••••••••••••••99
7.1.3 圖片按鈕•••••••••••••••••••••••••••••••••••99
7.1.4 復選框•••••••••••••••••••••••••••••••••••••••99
7.1.5 單選框•••••••••••••••••••••••••••••••••••••100
7.1.6 文件上傳•••••••••••••••••••••••••••••••••101
7.1.7 DatePicker••••••••••••••••••••••••••••••••103
7.2 列錶和菜單 ••••••••••••••••••••••••••••••••••••104
7.2.1 列錶•••••••••••••••••••••••••••••••••••••••••104
7.2.2 帶建議的輸入框••••••••••••••••••••••105
7.2.3 樹•••••••••••••••••••••••••••••••••••••••••••••105
7.2.4 菜單 •••••••••••••••••••••••••••••••••••••••• 107
7.3 麵闆 ••••••••••••••••••••••••••••••••••••••••••••••• 108
7.3.1 裝飾麵闆••••••••••••••••••••••••••••••••• 108
7.3.2 流式布局麵闆••••••••••••••••••••••••• 108
7.3.3 水平布局麵闆和垂直布局
麵闆••••••••••••••••••••••••••••••••••••••••• 109
7.3.4 絕對布局麵闆••••••••••••••••••••••••• 109
7.3.5 Tab 麵闆•••••••••••••••••••••••••••••••••• 109
7.3.6 滾動麵闆••••••••••••••••••••••••••••••••• 110
7.4 錶格 ••••••••••••••••••••••••••••••••••••••••••••••• 111
7.4.1 簡單錶格••••••••••••••••••••••••••••••••• 111
7.4.2 復雜錶格••••••••••••••••••••••••••••••••• 111
7.5 使用與自定義 GWT 控件••••••••••••• 112
7.5.1 ComboInput 控件結構•••••••••••• 112
7.5.2 DataItem•••••••••••••••••••••••••••••••••• 113
7.5.3 ListBox•••••••••••••••••••••••••••••••••••• 114
7.5.4 Selected 事件 •••••••••••••••••••••••••• 117
7.5.5 TriggerInput••••••••••••••••••••••••••••• 120
7.5.6 ComboBox•••••••••••••••••••••••••••••• 122
7.6 小結 ••••••••••••••••••••••••••••••••••••••••••••••• 125
第 8 章 GWT-RPC ••••••••••••••••••••••••••• 126
8.1 GWT 中的XMLHTTPRequest••••••••• 126
8.1.1 HTTPRequestImpl••••••••••••••••••• 126
8.1.2 RequestBuilder •••••••••••••••••••••••• 127
8.1.3 請求動態數據••••••••••••••••••••••••• 129
8.1.4 XML•••••••••••••••••••••••••••••••••••••••• 132
8.2 JSON•••••••••••••••••••••••••••••••••••••••••••••• 134
8.2.1 JSONValue•••••••••••••••••••••••••••••• 134
8.2.2 JSONValue 的派生類 ••••••••••••• 135
8.2.3 完整的 JSON 例子 ••••••••••••••••• 136
8.3 GWT-RPC •••••••••••••••••••••••••••••••••••••• 138
8.3.1 RPC 遠程接口 •••••••••••••••••••••••• 138
8.3.2 服務器實現••••••••••••••••••••••••••••• 139
8.3.3 異步接口文件••••••••••••••••••••••••• 140
8.3.4 在程序中使用GWT-RPC •••••••••140
8.3.5 整閤 Hibernate•••••••••••••••••••••••••141
8.4 小結••••••••••••••••••••••••••••••••••••••••••••••••145
第 9 章 Ext GWT•••••••••••••••••••••••••••••••146
9.1 Ext GWT 簡介及安裝••••••••••••••••••••146
9.2 Window•••••••••••••••••••••••••••••••••••••••••••148
9.2.1 窗口布局•••••••••••••••••••••••••••••••••149
9.2.2 Viewport ••••••••••••••••••••••••••••••••••151
9.2.3 Dialog ••••••••••••••••••••••••••••••••••••••152
9.2.4 窗口的顯示與關閉••••••••••••••••••153
9.3 數據管理 ••••••••••••••••••••••••••••••••••••••••154
9.4 Grid•••••••••••••••••••••••••••••••••••••••••••••••••157
9.5 樹控件••••••••••••••••••••••••••••••••••••••••••••159
9.5.1 圖標顯示•••••••••••••••••••••••••••••••••160
9.5.2 節點選擇事件 •••••••••••••••••••••••••160
9.6 皮膚••••••••••••••••••••••••••••••••••••••••••••••••161
9.7 小結••••••••••••••••••••••••••••••••••••••••••••••••162
第三部分 實戰篇
第 10 章 俄羅斯方塊遊戲 ••••••••••••••164
10.1 遊戲設計 ••••••••••••••••••••••••••••••••••••••164
10.1.1 遊戲簡介 •••••••••••••••••••••••••••••••164
10.1.2 遊戲規則 •••••••••••••••••••••••••••••••165
10.1.3 設計思路 •••••••••••••••••••••••••••••••166
10.2 編碼實現 ••••••••••••••••••••••••••••••••••••••167
10.2.1 遊戲場地 •••••••••••••••••••••••••••••••167
10.2.2 方塊•••••••••••••••••••••••••••••••••••••••170
10.2.3 遊戲控製器 •••••••••••••••••••••••••••177
10.3 界麵實現及操作完善•••••••••••••••••••187
10.3.1 候選麵闆•••••••••••••••••••••••••••••••••187
10.3.2 計分與等級 •••••••••••••••••••••••••••189
10.3.3 增加操作便利性••••••••••••••••••••191
10.3.4 界麵美化 •••••••••••••••••••••••••••••••192
10.4 聯機對戰•••••••••••••••••••••••••••••••••••••• 193
10.4.1 原理 •••••••••••••••••••••••••••••••••••••• 193
10.4.2 等待遊戲開始••••••••••••••••••••••• 194
10.4.3 交換數據••••••••••••••••••••••••••••••• 198
10.4.4 勝負判定••••••••••••••••••••••••••••••• 204
10.4.5 障礙行••••••••••••••••••••••••••••••••••• 206
10.5 小結•••••••••••••••••••••••••••••••••••••••••••••• 209
第 11 章 費用申請審批流程 ••••••••• 210
11.1 流程設計•••••••••••••••••••••••••••••••••••••• 210
11.1.1 流程簡介••••••••••••••••••••••••••••••• 210
11.1.2 工作流引擎••••••••••••••••••••••••••• 210
11.1.3 錶單••••••••••••••••••••••••••••••••••••••• 211
11.2 工作流引擎實現 •••••••••••••••••••••••••• 211
11.2.1 環境配置••••••••••••••••••••••••••••••• 211
11.2.2 業務規則定義••••••••••••••••••••••• 214
11.2.3 jBPM 數據庫初始化••••••••••••• 218
11.3 錶單實現•••••••••••••••••••••••••••••••••••••• 220
11.3.1 HTML 麵闆••••••••••••••••••••••••••• 220
11.3.2 錶單對話框••••••••••••••••••••••••••• 225
11.3.3 權限控製••••••••••••••••••••••••••••••• 228
11.3.4 類型校驗••••••••••••••••••••••••••••••• 232
11.4 審批流程的界麵實現 •••••••••••••••••• 233
11.4.1 AsyncCallbackEx •••••••••••••••••• 233
11.4.2 Outlook 麵闆••••••••••••••••••••••••• 234
11.4.3 工作列錶••••••••••••••••••••••••••••••• 236
11.4.4 整體布局••••••••••••••••••••••••••••••• 241
11.4.5 用戶登錄••••••••••••••••••••••••••••••• 244
11.4.6 全局事件管理••••••••••••••••••••••• 247
11.4.7 遮蔽效果••••••••••••••••••••••••••••••• 249
11.4.8 實現 BizzAction•••••••••••••••••••• 250
11.5 業務流轉•••••••••••••••••••••••••••••••••••••• 254
11.5.1 申請錶••••••••••••••••••••••••••••••••••• 254
11.5.2 審批錶••••••••••••••••••••••••••••••••••• 257
11.6 小結•••••••••••••••••••••••••••••••••••••••••••••• 261
第四部分 高級篇
第 12 章 GWT 與 Flex 整閤•••••••••••264
12.1 Flex 的優勢 ••••••••••••••••••••••••••••••••••264
12.2 查看流程圖的 Flex•••••••••••••••••••••••265
12.3 加入網頁 ••••••••••••••••••••••••••••••••••••••275
12.4 與 Flex 交互 •••••••••••••••••••••••••••••••••278
12.5 小結••••••••••••••••••••••••••••••••••••••••••••••283
第 13 章 圖片緩存 ••••••••••••••••••••••••••••284
13.1 CSS Sprite 簡介••••••••••••••••••••••••••••284
13.2 GWT 的實現 ••••••••••••••••••••••••••••••••286
13.3 後端生成瞭什麼•••••••••••••••••••••••••••288
13.4 小結••••••••••••••••••••••••••••••••••••••••••••••288
第 14 章 本地化 •••••••••••••••••••••••••••••••••290
14.1 GWT 如何識彆你的語言•••••••••••••290
14.2 本地化配置 ••••••••••••••••••••••••••••••••••291
14.3 日期格式化 ••••••••••••••••••••••••••••••••••294
14.4 字符串動態本地化 •••••••••••••••••••••• 295
14.5 小結•••••••••••••••••••••••••••••••••••••••••••••• 296
第 15 章 其他高級功能••••••••••••••••••• 297
15.1 動畫•••••••••••••••••••••••••••••••••••••••••••••• 297
15.2 曆史管理•••••••••••••••••••••••••••••••••••••• 299
15.3 延時執行•••••••••••••••••••••••••••••••••••••• 301
15.4 等待執行和分片執行 •••••••••••••••••• 301
15.5 代碼分割•••••••••••••••••••••••••••••••••••••• 302
15.5.1 SOYC•••••••••••••••••••••••••••••••••••• 304
15.5.2 初始化序列••••••••••••••••••••••••••• 305
15.5.3 編程模式••••••••••••••••••••••••••••••• 306
15.5.4 預加載••••••••••••••••••••••••••••••••••• 307
15.6 UiBinder••••••••••••••••••••••••••••••••••••••• 308
15.6.1 HTML 綁定 •••••••••••••••••••••••••• 308
15.6.2 控件綁定••••••••••••••••••••••••••••••• 310
15.6.3 CSS 綁定••••••••••••••••••••••••••••••• 311
15.6.4 事件管理••••••••••••••••••••••••••••••• 313
15.6.5 資源打包••••••••••••••••••••••••••••••• 314
15.6.6 創建控件••••••••••••••••••••••••••••••• 316
15.7 小結•••••••••••••••••••••••••••••••••••••••••••••• 316
· · · · · · (
收起)