




已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
NCHRNCHR 開發(fā)框架開發(fā)框架 設(shè)計設(shè)計說明書說明書文章標(biāo)題文章標(biāo)題 作作 者 者 丁建昕丁建昕 王星王星 曾誠曾誠 創(chuàng)建日期 創(chuàng)建日期 2005 xx12 xx15 修改日期 修改日期 2005 xx12 27xx 修改次數(shù) 修改次數(shù) 0 變更記錄變更記錄 標(biāo)題 第 27 2 頁 變更日期變更日期變更內(nèi)容變更內(nèi)容變更原因變更原因變更人變更人 YYYY MM DD 標(biāo)題 第 27 3 頁 目目 錄錄 1 引言引言 5 1 1 編寫目的 5 1 2 背景 5 1 3 定義 5 1 4 參考資料 5 2 程序系統(tǒng)的結(jié)構(gòu)程序系統(tǒng)的結(jié)構(gòu) 6 2 1 橫向來看 6 2 2 縱向來看 6 2 3 從框架開發(fā)者的角度 6 2 4 從應(yīng)用開發(fā)者的角度 6 3 基礎(chǔ)結(jié)構(gòu)基礎(chǔ)結(jié)構(gòu) BASEUI 相關(guān)類設(shè)計說明相關(guān)類設(shè)計說明 7 3 1 程序描述 7 3 2 功能 7 3 2 1 BaseUI類 7 3 2 2 狀態(tài)控制 8 3 2 3 按鈕管理 9 3 2 4 動作管理 10 3 2 5 數(shù)據(jù)持久化 11 4 快速開發(fā)模板快速開發(fā)模板 FRAMEUI 相關(guān)類設(shè)計說明相關(guān)類設(shè)計說明 12 4 1 程序描述 12 4 2 功能 14 4 2 1 界面展現(xiàn) 14 4 2 2 按鈕和動作管理 15 5 按鈕管理按鈕管理 BUTTONMANAGER 相關(guān)類設(shè)計說明相關(guān)類設(shè)計說明 16 5 1 關(guān)鍵詞 16 5 2 功能說明 16 5 3 按鈕管理相關(guān)類 16 5 3 1 類圖 17 5 3 2 ButtonManager類說明 18 5 3 3 AbstractBtnRgst類說明 19 5 3 4 ButtonStateRegister類說明 21 5 3 5 StateRegister類說明 22 6 MAINBILLCARDPANEL 設(shè)計說明設(shè)計說明 23 6 1 MAINPANEL父類說明 23 6 1 1 MainPanel的設(shè)計意圖 23 6 1 2 MainPanel的方法說明 23 6 2 MAINBILLCARDPANEL說明 26 標(biāo)題 第 27 4 頁 7 MAINBILLLISTPANEL 設(shè)計說明設(shè)計說明 27 1200 標(biāo)題 第 27 5 頁 引言 1 1 編寫目的編寫目的 詳細(xì)說明 UIFrame 的設(shè)計思想 層次結(jié)構(gòu) 類之間的關(guān)系 適用讀者為 UIFrame 的開發(fā)者和使用者 1 2 背景背景 針對界面開發(fā)中代碼結(jié)構(gòu)不合理的問題提供一個解決方案及規(guī)范 1 3 定義定義 UIFrame 框架名稱 UI 類 界面入口程序 Panel 組織存放各種控件 DataModel 保存當(dāng)前狀態(tài) 發(fā)送狀態(tài)信息 同服務(wù)器端通訊 按鈕 界面上菜單位置的按鈕控件 不包括其它 動作 點擊按鈕時要完成的事情 觀察對象及被觀察對象 當(dāng)被觀察對象改變時 觀察對象響應(yīng)被觀察對象的變化 狀態(tài) 界面響應(yīng)用戶的操作會導(dǎo)致控件狀態(tài)變化 可用 不可用 可見 不可見 注冊 將功能或是數(shù)據(jù)類以參數(shù)形式告知管理類 由管理類負(fù)責(zé)調(diào)用 1 4 參考資料參考資料 標(biāo)題 第 27 6 頁 程序系統(tǒng)的結(jié)構(gòu) 2 1 橫向來看橫向來看 UIFrame 是以 UI 類作為程序的入口和控制中心 結(jié)合 DataModel 類進行狀態(tài)控制 結(jié)合 ButtonManager 進行按鈕控制 同時以各個 Panel 為被控制單元 在各種動作類 Action 中進行調(diào)度 2 2 縱向來看縱向來看 UIFrame 分為兩個層次 以 BaseUI 為中心的相關(guān)類作為最上層 完成 UIFrame 的基 本功能 狀態(tài)控制 按鈕管理 以 FrameUI 為中心的相關(guān)類繼承于 BaseUI 以模板形式提 供額外的快速開發(fā)能力 2 3 從框架開發(fā)者的角度從框架開發(fā)者的角度 需要考慮的是如何為框架添加更多的快速開發(fā)能力 即繼承 BaseUI 相關(guān)類 形成與 FrameUI 平行的各種模板類 2 4 從應(yīng)用開發(fā)者的角度從應(yīng)用開發(fā)者的角度 直接繼承各種模板類 充分利用模板已經(jīng)實現(xiàn)的各種功能 擴展自己的業(yè)務(wù)功能 有一點需要特別注意 嚴(yán)格禁止應(yīng)用開發(fā)者繼承 BaseUI 相關(guān)類 標(biāo)題 第 27 7 頁 基礎(chǔ)結(jié)構(gòu) BaseUI 相關(guān)類設(shè)計說明 3 1 程序描述程序描述 ToftPanel B Ba as se eU UI I h hr r u ui if fr ra amme e mmo od de el l D Da at ta aMMo od de el lStateChangeListener b bu ut tt to on n B Bu ut tt to on nMMa an na ag ge er r BaseUI 相關(guān)類組成 UIFrame 的基礎(chǔ)結(jié)構(gòu) 為所有其它 UI 相關(guān)類的父類 完成 UIFrame 的最基本功能 涉及類 BaseUI DataModel ButtonManager StateRegister AbstractButtonRegister Button StateRegister StateChangeEvent 類名描述父類接口 BaseUI 程序入口 負(fù)責(zé)調(diào)度所有 資源 包括 DataModel ButtonManag er ToftPanel DataModel 保存當(dāng)前狀態(tài) 發(fā)送狀態(tài) 事件 同后臺通訊 ButtonManager 管理全部按鈕 包括其名 稱 動作 狀態(tài) StateChangeLister StateRegister 狀態(tài)列表 AbstractButtonRegister 按鈕列表 ButtonStateRegister 按鈕對應(yīng)狀態(tài)列表 StateChangeEvent 狀態(tài)事件 EventObject 涉及接口 StateChangeListener ICommand 接口名描述父接口 StateChangeListener 響應(yīng)狀態(tài)改變 EventListener ICommand 響應(yīng)按鈕動作 3 2 功能功能 3 2 1 BaseUI 類類 程序入口 繼承于 ToftPanel 界面的控制中心 負(fù)責(zé)調(diào)度界面的所有資源 包括按 鈕 Panel DataModel 組織各個 Panel 獲得了 BaseUI 的引用即獲得了掌控界面資源的 標(biāo)題 第 27 8 頁 入口 BaseUI 并不直接操縱各種控件 按鈕的處理交給 ButtonManager 負(fù)責(zé) 控件的處理 交給各個子 Panel 負(fù)責(zé) 狀態(tài)及數(shù)據(jù)持久化交給 DataModel 負(fù)責(zé) 這些類的實例化都在 BaseUI 類中進行 以下是 BaseUI 中創(chuàng)建他們的方法 可以根 據(jù)業(yè)務(wù)不同在 BaseUI 的子類中進行重寫 具體使用方法參考 javadoc 方法名稱參 數(shù) 返回值描述 createDataModelDataModel 根據(jù)業(yè)務(wù)不同 創(chuàng)建 DataModel 的子類 例如 要實現(xiàn)復(fù)雜查詢 createButtonStateRegisterButtonStateRegister 根據(jù)業(yè)務(wù)不同 創(chuàng)建 ButtonStateRegister 的 子類 例如自定義按鈕的 狀態(tài) createBtnRegisterAbstractButtonRegister 根據(jù)業(yè)務(wù)不同 創(chuàng)建 AbstractButtonRegister 的子類 例如自定義按鈕 注 ButtonManager 不需要開發(fā)者創(chuàng)建 由 getBtnManager 方法進行實例化 createButtonStateRegister 和 createBtnRegister 作為 ButtonManager 構(gòu)造方法的參數(shù) 傳到 ButtonManager 中 BaseUI 中的其它方法 方法名稱參數(shù)返回值描述 getTitle 返回界面標(biāo)題重寫父類方法 默認(rèn) 返回在功能節(jié)點上注 冊的名字 如有不同 可在子類中重寫 OnButtonClicked 點擊按鈕時調(diào)用重寫父類方法 將按 鈕操作轉(zhuǎn)移到 ButtonManager 不允 許子類重寫 setButtons 設(shè)置按鈕重寫父類方法 擴大 其可視范圍 不允許 子類重寫 updateButtons 更新按鈕重寫父類方法 擴大 其可視范圍 不允許 子類重寫 3 2 2 狀態(tài)控制狀態(tài)控制 涉及 DataModel StateChangeListener StateChangeEvent StateRegister 狀態(tài) 控制還包括按鈕狀態(tài) 在此處不做詳細(xì)介紹 請參考 ButtonManager 說明 狀態(tài)控制的原理主要是采用事件發(fā)送 監(jiān)聽機制 需要狀態(tài)控制的類實現(xiàn) StateChangeListener 接口 當(dāng)調(diào)用 DataModel 的 setCurrentState 方法時 將狀態(tài)事件 StateChangeEvent 發(fā)送到實現(xiàn) StateChangeListener 接口的類 這些類將自動響應(yīng)狀態(tài)的 變化 StateChangeListener 類中的方法只有一個 stateChanged 方法名稱參數(shù)返回值描述 標(biāo)題 第 27 9 頁 stateChangedStateChangeEvent 實現(xiàn) StateChangeListener 接口的類需要在這個 方法中填寫業(yè)務(wù)相關(guān) 的狀態(tài)設(shè)置 StateChangeEvent 中的方法主要是設(shè)置 獲取當(dāng)前狀態(tài) 當(dāng)實現(xiàn)了 StateChangeListener 的類在方法中獲得了 StateChangeEvent 實例 就可獲得當(dāng)前的狀態(tài) 方法名稱參數(shù)返回值描述 getCurrentState 返回當(dāng)前狀態(tài)獲得當(dāng)前狀態(tài) setCurrentStateInt 設(shè)置當(dāng)前狀態(tài)由 DataModel 進行調(diào) 用 開發(fā)者不用調(diào)用 StateRegister 主要用于狀態(tài)列表 如果有自定義狀態(tài)列表 需要繼承實現(xiàn)自己的狀 態(tài)列表 在子類中添加靜態(tài)常量 重寫 getAllStateIDs 方法 StateRegister 類的初始化 是在 DataModel 的 createState 方法中進行 方法名稱參數(shù)返回值描述 getCurrentState 返回當(dāng)前狀態(tài)由 DataModel 進行調(diào) 用 開發(fā)者不用調(diào)用 setCurrentStateInt 設(shè)置當(dāng)前狀態(tài)由 DataModel 進行調(diào) 用 開發(fā)者不用調(diào)用 getAllStateIDsint 獲得當(dāng)前界面所用 的狀態(tài)列表 由子類重寫 返回業(yè) 務(wù)所需狀態(tài)列表 DataModel 類關(guān)于狀態(tài)方面的功能主要是保存當(dāng)前狀態(tài) 此處只介紹狀態(tài)方面的方法 數(shù)據(jù)持久化的方法在數(shù)據(jù)持久化一節(jié)中介紹 方法名稱參數(shù)返回值描述 addStateChangeListenerStateChangeListener 添加狀態(tài)監(jiān)聽 removeStateChangeListenerStateChangeListener 刪除狀態(tài)監(jiān)聽 fireStateChanged 發(fā)送狀態(tài)事件 由 DataModel 自 身調(diào)用 setCurrentStateInt 設(shè)置當(dāng)前狀態(tài) 同時將狀態(tài)改變 發(fā)送出去 getCurrentStateint 獲取當(dāng)前狀態(tài) 與狀態(tài)事件中的 狀態(tài)是一致的 createStateStateRegister 創(chuàng)建 StateRegister 由子類重寫 實 現(xiàn)業(yè)務(wù)需要的狀 態(tài)列表 getStateStateRegister 獲得 StateRegister setStateStateRegister 設(shè)置 StateRegister 3 2 3 按鈕管理按鈕管理 界面上的按鈕統(tǒng)一由 ButtonManager 控制 包括按鈕的名稱 狀態(tài) 動作 標(biāo)題 第 27 10 頁 ButtonManager 的實例化由 BaseUI 進行 不用開發(fā)者參與 但是 ButtonManager 的參數(shù)需 要開發(fā)者在 BaseUI 的子類中實現(xiàn) 請參考 BaseUI 一節(jié)和 ButtonManager 一節(jié)獲取詳細(xì)信 息 3 2 4 動作管理動作管理 interface h hr r u ui if fr ra amme e a ac ct ti io on n I IC Co ommmma an nd d u ui if fr ra amme e a ac ct ti io on n E Ed di it tL Li in ne eA Ac ct ti io on n a ac ct ti io on n D De el le et te eL Li in ne eA Ac ct ti io on n h hr r u ui if fr ra amme e a ac ct ti io on n P Pr ri in nt tA Ac ct ti io on n h hr r u ui if fr ra amme e a ac ct ti io on n S Sa av ve eA Ac ct ti io on n h hr r u ui if fr ra amme e a ac ct ti io on n A Ad dd dA Ac ct ti io on n u ui if fr ra amme e a ac ct ti io on n A Ab bs st tr ra ac ct tA Ac ct ti io on n u ui if fr ra amme e a ac ct ti io on n A Ad dd dL Li in ne eA Ac ct ti io on n u ui if fr ra amme e a ac ct ti io on n C Ca an nc ce el lA Ac ct ti io on n h hr r u ui if fr ra amme e a ac ct ti io on n E Ed di it tA Ac ct ti io on n u ui if fr ra amme e a ac ct ti io on n R Re ef fr re es sh hA Ac ct ti io on n h hr r u ui if fr ra amme e a ac ct ti io on n Q Qu ue er ry yA Ac ct ti io on n u ui if fr ra amme e a ac ct ti io on n D De el le et te eA Ac ct ti io on n 動作管理實際上是按鈕管理的一部分 當(dāng)點擊按鈕所要做的事情是由 ButtonManager 負(fù)責(zé)調(diào)度的 ButtonManager 的調(diào)度過程請參考 ButtonManager 一節(jié) 此處主要討論 ICommand 接口 每個按鈕動作都實現(xiàn)了 ICommand 接口 開發(fā)人員不必關(guān)心如何執(zhí)行業(yè)務(wù)邏輯的調(diào)用 只需要實現(xiàn) ICommand 接口的 execute 方法 并將動作注冊到 ButtonManager 即可 從而簡 化開發(fā)模型 減少出錯機率 每個按鈕的名稱將同按鈕的動作相分離 提高了靈活性 每個動作都可重用 增加 了可維護性 方法名稱參數(shù)返回值描述 execute 執(zhí)行業(yè)務(wù)邏輯 validateboolean 執(zhí)行前進行校驗 返 回 true 則調(diào)用 execute false 則不 調(diào)用 AbstractAction 實現(xiàn)了 ICommand 接口 提供了一些基本方法的實現(xiàn) 方法名稱參數(shù)返回值描述 getFrameUIFrameUI 獲取 FrameUI getMainPanelMainPanel 獲取 MainPanel getDataModelDataModel 獲取 DataModel validateboolean 動作執(zhí)行前校驗 空 標(biāo)題 第 27 11 頁 方法 子類重寫 可 用于前臺校驗 getCheckMethodString 子類繼承 返回一個 包含類名和類中一個 方法的字符串 共后 臺校驗使用 字符串 中包含的類應(yīng)該放在 bs 端 3 2 5 數(shù)據(jù)持久化數(shù)據(jù)持久化 數(shù)據(jù)持久化操作全部集中在 DataModel 中進行 方便自動單元測試 以下論述只涉 及到 DataModel 的持久化方法 狀態(tài)相關(guān)方法請參考狀態(tài)控制一節(jié) 方法名稱參數(shù)返回值描述 onDeleteObjectboolean 刪除數(shù)據(jù) 空方法 由子類繼承后重寫 onQuery Class String SuperVO 查詢數(shù)據(jù) 用于單表 查詢 Class 指明表 對應(yīng)的 VO String 指 明查詢條件 空方法 由子類繼承后重寫 onSaveObjectObject 保存數(shù)據(jù) 空方法 由子類繼承后重寫 返回保存的數(shù)據(jù) queryDataByHeadVO SuperVO String HRAggVO 根據(jù)主表數(shù)據(jù)查詢 返回主表及子表數(shù)據(jù) 空方法 由子類繼承 后重寫 標(biāo)題 第 27 12 頁 4 快速開發(fā)模板快速開發(fā)模板 FrameUI 相關(guān)類設(shè)計說明相關(guān)類設(shè)計說明 4 1 程序描述程序描述 BaseUI F Fr ra amme eU UI I UIPanel StateChangeListener T To op pP Pa an ne el l UIPanel StateChangeListener L Le ef ft tP Pa an ne el l UIPanel StateChangeListener Observer MMa ai in nP Pa an ne el l i immp pl l MMa ai in nB Bi il ll lC Ca ar rd dP Pa an ne el l BillEditListener BillEditListener2 u ui if fr ra amme e i immp pl l MMa ai in nB Bi il ll lL Li is st tP Pa an ne el l h hr r u ui if fr ra amme e i immp pl l L Le ef ft tT Tr re ee eP Pa an ne el l u ui if fr ra amme e i immp pl l L Le ef ft tT Ta ab bl le eP Pa an ne el l h hr r u ui if fr ra amme e i immp pl l L Le ef ft tL Li is st tP Pa an ne el l FrameUI 相關(guān)類繼承了 BaseUI 相關(guān)類 除了保留父類的狀態(tài)控制 按鈕管理的功能 外 還提供了模板式的快速開發(fā)能力 主要表現(xiàn)在 標(biāo)準(zhǔn)按鈕動作的實現(xiàn) 標(biāo)準(zhǔn)狀態(tài)控制 標(biāo)準(zhǔn)界面類型 特別是針對單據(jù)模板提供了 MainBillListPanel 和 MainBillCardPanel 兩 個類處理單據(jù)模板相關(guān)操作 請參考 MainBillListPanel 和 MainBillCardPanel 兩節(jié)內(nèi)容 FrameUI 針對 HR 界面特點 將界面分為幾個部分 按鈕下的導(dǎo)航條 TopPanel 左邊 的導(dǎo)航欄 LeftPanel 可能是樹 表或列表 數(shù)據(jù)的主要顯示界面 MainPanel 其中 MainPanel 必須存在 TopPanel LeftPanel 可以根據(jù)用戶設(shè)置決定是否存在 MainPanel 中可以存放標(biāo)準(zhǔn)的單據(jù)模板 也可以存放各種控件 提供最大的靈活性 對界面的操作是以 Panel 為單元進行的 即按鈕動作不直接調(diào)用 Panel 中每個控件 的設(shè)置方法 而是調(diào)用 Panel 中的方法 由 Panel 自己在調(diào)用其中的控件設(shè)置方法 這是 為了減少動作和 Panel 之間的耦合 同時可減少動作的數(shù)量 開發(fā)者應(yīng)當(dāng)注意 換個說法 就是盡量把 Panel 作為一個控件來用 涉及界面類 FrameUI MainPanel LeftPanel TopPanel MainBillListPanel MainBillCardPanel LeftTreePanel LeftTablePanel LeftListPanel 標(biāo)題 第 27 13 頁 類名描述父類接口 FrameUI 程序入口 資源控制中心 組合各個 Panel 類 BaseUI MainPanel 顯示數(shù)據(jù)詳細(xì)信息 點擊 LeftPanel 時自動響應(yīng)點 擊事件 UIPanel StateChangeListener Observer LeftPanel 導(dǎo)航樹 或表 或列表 UIPanelStateChangeListener TopPanel 導(dǎo)航欄 可以存放查詢的 前置條件 UIPanelStateChangeListener MainBillListPanel 封裝 BillListPanel MainPanel MainBillCardPanel 封裝 BillCardPanel MainPanel LeftTreePanel 導(dǎo)航樹 LeftPanel LeftTablePanel 導(dǎo)航表 LeftPanel LeftListPanel 導(dǎo)航列表 LeftPanel 涉及數(shù)據(jù)持久化類 BillDataModel 此類繼承了 DataModel 重寫了其中的空方法 類名描述父類接口 BillDataModel 其數(shù)據(jù)持久化的相關(guān)方法主要針對 單據(jù)模板 如果不是這樣 子類應(yīng) 當(dāng)重寫 DataModel 涉及動作類 AddAction AddLineAction CancelAction DeleteAction DeleteLineAction EditAct ion EditLineAction PrintAction QueryAction RefreshAction SaveAction 每個 動作都對應(yīng)一個按鈕 使用時需要在 ButtonManager 中進行注冊 類名描述父類接口 AddAction 新增 只是清空界面數(shù)據(jù) AbstractAction AddLineAction 增加行 為表格添加一個空行 AbstractAction CancelAction 取消 取消新增或編輯 AbstractAction DeleteAction 刪除 刪除界面數(shù)據(jù)同時刪除后 臺數(shù)據(jù) AbstractAction DeleteLineAction 刪除行 刪除表格中的一行 AbstractAction EditAction 編輯 將數(shù)據(jù)填充到界面 同時 設(shè)置界面控件可用 AbstractAction EditLineAction 編輯行 AbstractAction PrintAction 打印 調(diào)用單據(jù)模板的打印功能 如果沒有使用單據(jù)模板則需要自 己實現(xiàn) AbstractAction QueryAction 查詢 調(diào)用查詢模板查詢數(shù)據(jù) 同時更新界面數(shù)據(jù) AbstractAction RefreshAction 刷新 重新查詢數(shù)據(jù)填充到界面 AbstractAction SaveAction 保存 將修改或新增的數(shù)據(jù)持久 化 AbstractAction 涉及工具類 TreeUtilities 類名描述父類接口 TreeUtilities 對樹操作的工具類 包括創(chuàng)建 DefaultTreeModel 添加 刪除 查找節(jié)點 在 DefaultTreeModel 上 放的樹節(jié)點類型為 DefualtMutableTreeNode 的子類 FrameTreeNode 其中的 標(biāo)題 第 27 14 頁 UserObject 放的是 HRAggVO 涉及其它類 FrameTreeNode HRAggVO 類名描述父類接口 FrameTreeNode 對 DefaultMutableTreeNode 的重新包裝 用于將 SuperVO 直接轉(zhuǎn)化成具有父 子關(guān)系的樹節(jié)點 DefaultMutableTreeNode HRAggVO 對單據(jù)模板 VO 的實現(xiàn)類 ExtendedAggregatedValueObject 4 2 功能功能 4 2 1 界面展現(xiàn)界面展現(xiàn) 涉及類 FrameUI MainPanel LeftPanel TopPanel MainBillListPanel MainBillCardPanel LeftTreePanel LeftTablePanel LeftListPanel FrameUI 類是整個界面的核心 負(fù)責(zé)組織 MainPanel LeftPanel TopPanel 初始 化按鈕 方法名稱參數(shù)返回值描述 createLeftPanelLeftPanel 默認(rèn)返回 LeftTreePanel 如果 需要其它類型則需要 在子類中重寫此方法 返回 LeftPanel 子類 createMainPanelMainPanel 默認(rèn)返回 MainPanel 如果需要 其它類型則需要在子 類中重寫此方法 返 回 MainPanel 子類 createTopPanelTopPanel 默認(rèn)返回 TopPanel 如果需要其它類型則 需要在子類中重寫此 方法 返回 TopPanel 子類 initButtons 此方法為抽象方法 子類在此實現(xiàn)初始化 按鈕 initialize 此方法初始化各個 Panel 和按鈕 getSplitPane 創(chuàng)建 UISplitPane 為私有方法 開發(fā)者 無需關(guān)心 needLeftPanelboolean 抽象方法 設(shè)置是否 使用 LeftPanel 由 開發(fā)者實現(xiàn) true 為 需要 false 為不需 標(biāo)題 第 27 15 頁 要 needTopPanelboolean 抽象方法 設(shè)置是否 使用 TopPanel 由開 發(fā)者實現(xiàn) true 為需 要 false 為不需要 FrameUI 還負(fù)責(zé)打印模板 查詢模板的配置工作 如果一個節(jié)點有多個查詢模板 則 在使用 QueryAction 之前應(yīng)當(dāng)設(shè)置好 FrameUI 的 queryNodeKey 屬性 如果有常用查詢條件 還要設(shè)置對應(yīng) queryNodeKey 的常用查詢的 UIPanel 同樣 如果一個節(jié)點有多個打印模板 則在使用 PrintAction 之前應(yīng)當(dāng)設(shè)置好 FrameUI 的 printNodeKey 屬性 方法名稱參數(shù)返回值描述 getQueryDialogQueryConditionClient 返回查詢模板 程 序自動根據(jù)功能注 冊的節(jié)點號 設(shè)置 的 nodeKey 查找查 詢模板 getNormalQueryPanelUIPanel 返回常用查詢 UIPanel setNormalQueryPanelUIPanel 設(shè)置常用查詢 UIPanel getQueryNodeKeyString 返回查詢模板 nodeKey setQueryNodeKeyString 設(shè)置查詢模板 nodeKey getPrintNodeKeyString 返回打印模板 nodeKey setPrintNodeKeyString 設(shè)置打印模板 nodeKey MainPanel 類中的方法大多為空方法 MainBillListPanel MainBillCardPanel 為 針對兩種單據(jù)模板的 MainPanel 的實現(xiàn)類 具體使用請參考相關(guān)章節(jié) 4 2 2 按鈕和動作管理按鈕和動作管理 按鈕和動作管理的工作在 ButtonManager 中進行 具體使用請參考 ButtonManager 一節(jié) 標(biāo)題 第 27 16 頁 按鈕管理 ButtonManager 相關(guān)類設(shè)計說明 5 1 關(guān)鍵詞關(guān)鍵詞 系統(tǒng)按鈕系統(tǒng)按鈕 在 AbstractBtnRgst 類中以靜態(tài)常量方式注冊的按鈕常量所代表的按鈕 我們 叫做系統(tǒng)按鈕 當(dāng)然并不是每一個系統(tǒng)按鈕都會被系統(tǒng)管理起來 系統(tǒng)默認(rèn)管理的系統(tǒng)按鈕 只包括 SYSBTN QUERY 查詢 SYSBTN ADD增加 SYSBTN EDIT修改 SYSBTN SUBOPERATION子集操作 SYSBTN ADD LINE增行 SYSBTN DEL LINE刪行 SYSBTN INSERT LINE插入行 SYSBTN EDIT LINE修改行 SYSBTN SAVE保存 SYSBTN CANCEL取消 SYSBTN DELETE刪除 SYSBTN REFRESH刷新 SYSBTN PRINT打印 自定義按鈕自定義按鈕 除去系統(tǒng)按鈕 其他所有用戶添加的按鈕都屬于自定義按鈕 動作動作 命令命令 指一些業(yè)務(wù)相關(guān)的一系列操作的集合 比如 保存 刪除 封存解封等 5 2 功能說明功能說明 ButtonManager 主要的功能包括兩部分 第一部分是按鈕狀態(tài)管理 這里的按鈕狀 態(tài)主要是指按鈕的可用性和可見性 第二部分是所有框架事件的響應(yīng) 這些事件指廣義事 件 可以是按鈕事件 也可以不是按鈕事件 5 3 按鈕管理相關(guān)類按鈕管理相關(guān)類 下表列出了按鈕管理的主要相關(guān)類 類名描述父類接口 ButtonManager 負(fù)責(zé)按鈕管理的實體類 StateChangeListener AbstractBtnRgst 按鈕注冊類 所有的在系統(tǒng) 按鈕注冊在基類 AbstractBtnRgst 中 各個模 塊的自定義按鈕注冊在具體 標(biāo)題 第 27 17 頁 的子類之中 ButtonStateRegister 負(fù)責(zé)注冊按鈕在一個具體狀 態(tài)下的具體行為 包括可用 可視兩種屬性 StateRegister 狀態(tài)注冊類 負(fù)責(zé)注冊狀態(tài) 列表 5 3 1 類圖類圖 A Ab bs st tr ra ac ct tB Bu ut tt to on nR Re eg gi is st te er r isContainBtnID boolean AbstractButtonRegister createSysBtnVOByID ButtonVO createUserBtnVOByID ButtonVO B Bu ut tt to on nS St ta at te eR Re eg gi is st te er r ButtonStateRegister addStateVO void getButtonStateVOByStateID ButtonStateVO addUserButtonStateVO void addSystemButtonStateVO void StateChangeListener B Bu ut tt to on nMMa an na ag ge er r ButtonManager isCommandExecutable boolean isCommandExecutable boolean executeCommand void executeCommand void loadState void isValidBtnsID boolean registerCommand void registerCommand void addStatusVO boolean addChildButtonByVO boolean addButtonByVO boolean setButtonEnabled void setButtonVisiable void addChildButtonsByIDs boolean addButtonByID boolean finishButtons void getButtonByID ButtonObject getButtonStateVOByID ButtonStateVO stateChanged void interface u ui if fr ra amme e a ac ct ti io on n I IC Co ommmma an nd d execute void executable boolean ToftPanel n nc c u ui i h hr r u ui if fr ra amme e B Ba as se eU UI I BaseUI createDataModel DataModel createButtonStateRegister ButtonStateRegister createBtnRegister AbstractButtonRegister onButtonClicked void updateButtons void handleException void s st ta at te e S St ta at te eR Re eg gi is st te er r STATE INIT int STATE EDIT int STATE ADD int STATE CANCEL int STATE NOTEDIT int STATE ROOT SELECTED int STATE FOLDER SELECTED int STATE LEAF SELECTED int allStates int p pe e p pu ub b P PE EB Bu ut tt to on nR Re eg gi is st te er r createUserBtnVOByID ButtonVO 注意 以上類圖中的 PEButtonRegister 類是為了讓類圖更完整 引入的一個具體實現(xiàn)類 說明抽象類 AbstractButtonRegister 是必須要有子類來繼承的 下面為其中的一些核心類做簡要說明 5 3 2 ButtonManager 類說明類說明 ButtonManager 類是整個按鈕管理的核心功能 他負(fù)責(zé)具體管理按鈕的行為 所有 的按鈕實例都由這個類來維護 ButtonManager 類不需要開發(fā)人員繼承 ButtonManager 還 標(biāo)題 第 27 18 頁 負(fù)責(zé)整個框架的事件響應(yīng)的處理 具體處理模式見后面 ButtonManager 類中集中了兩種模式 一種是按鈕狀態(tài)模式 一種是事件響應(yīng)模式 首先我們分析按鈕狀態(tài)模式 對外提供的添加按鈕方法有三個 方法名稱參數(shù)返回值描述 addButtonByID int btnID 按鈕 ID boolean 是否添加 成功 按照指定的 BtnID 加 入 Button 注意按鈕 加入的順序就是按鈕 顯示的順序 addChildButtonsByIDs int parBtnID 父 按鈕 ID int childBtnIDs 孩 子按鈕的 數(shù) 組 boolean 是否添加 成功 按照指定的 BtnID 和 指定的 BtnID 數(shù)組加 入一個按鈕的子按鈕 數(shù)組 finishButtons 停止加入按鈕 把現(xiàn) 在已經(jīng)加上的按鈕加 入 parUI 并顯示在 界面上 上述 個接口提供了在 ButtonManager 里添加按鈕的方法 下面三個接口提供了對 按鈕狀態(tài)的修改方法 在實現(xiàn)方面 按鈕的默認(rèn)狀態(tài)是可見而不可用 開發(fā)時要注意這一 點 方法名稱參數(shù)返回值描述 setButtonState int iStateID 系 統(tǒng)注冊的狀態(tài) ID 設(shè)置按鈕的狀態(tài) 本 狀態(tài)必須為 StateRegister 類或 者子類里注冊的一種 狀態(tài) 設(shè)置完狀態(tài)之 后 ButtonManager 會自動改變按鈕的狀 態(tài) setButtonEnabled int btnID 按鈕 ID boolean enbd 是 否可用 根據(jù)按紐 ID 設(shè)置按紐 是否可用 本方法直 接修改按鈕是否可用 和框架注冊狀態(tài)無關(guān) setButtonVisiable int btnID 按鈕 ID boolean vzab 是 否可見 根據(jù)按紐 ID 設(shè)置按紐 是否可見 本方法直 接修改按鈕是否可見 和框架注冊狀態(tài)無關(guān) 以上六個方法就是 ButtonManager 中對于按鈕狀態(tài)的接口 接下來描述一下事件響應(yīng)模式的接口 方法名稱參數(shù)返回值描述 registerCommandObject comKey 命令響應(yīng)對應(yīng)的 注冊一個命令 Key 和 一個 Command 組成的 標(biāo)題 第 27 19 頁 主鍵 ICommand com 事 件響應(yīng)的接口實 例 值對 注意此注冊為 覆蓋式注冊 即后面 的注冊會覆蓋前面的 注冊 registerCommand int btnID 按鈕 的對應(yīng) ID ICommand com 事 件響應(yīng)的接口實 例 本接口是為了方便按 鈕事件注冊而加入的 重載接口 注冊一個 BtnID 和一個 Command 組成的值對 注意此 注冊為覆蓋式注冊 即后面的注冊會覆蓋 前面的注冊 executeCommandObject comKey 命令響應(yīng)對應(yīng)的 主鍵 根據(jù)命令 Key 來執(zhí)行 一個命令實例 如果 命令實例不存在 則 不做任何操作 executeCommand int btnID 事件 對應(yīng)的按鈕 ID 本接口是為了方便按 鈕事件而加入的重載 接口 根據(jù) btnID 來 執(zhí)行一個命令實例 如果命令實例不存在 則不做任何操作 以上四個接口構(gòu)成了事件注冊和事件執(zhí)行的體系 需要注意的一點就是 Icommand 接口的一個校驗方法 boolean validate throws ValidationException 這個方法會在 executeCommand 方法中被調(diào)用 用來執(zhí)行與這個動作相關(guān)的業(yè)務(wù)校驗 如果校驗不通過 那么會以異常的形式拋出校驗出錯的信息 5 3 3 AbstractBtnRgst 類說明類說明 AbstractBtnRgst 類是按鈕注冊管理類 AbstractBtnRgst 及其子類里里面注冊了 所有用到的按鈕 AbstractBtnRgst 注冊的是框架的默認(rèn)按鈕 AbstractBtnRgst 的一個具體實現(xiàn)子 類并不是對應(yīng)于一個功能節(jié)點 我們推薦的模式是每一個功能模塊對應(yīng)一個 AbstractBtnRgst 具體實現(xiàn)子類 這樣就統(tǒng)一了模塊的按鈕注冊 而且也避免了整個 HR 產(chǎn) 品所有按鈕注冊在一起導(dǎo)致文件過大的問題 子類中 例如 AbstractBtnRgst 就是績效模 塊的具體實現(xiàn)類 注冊了本模塊需要的用到的所有自定義按鈕 按鈕分類掩碼 BTNMASK SYSTEM 0 x0 BTNMASK USER 0 xff 以上兩個常量決定了系統(tǒng)按鈕的數(shù)量不能超過 0 xff 也就是最多只能有 個系統(tǒng) 按鈕 AbstractBtnRgst 類中以常量的形式列出了所有的系統(tǒng)按鈕 常量名常量說明備注 標(biāo)題 第 27 20 頁 SYSBTN QUERY 系統(tǒng)預(yù)制查詢鈕 SYSBTN SAVE 系統(tǒng)預(yù)制保存按鈕 SYSBTN REFRESH 系統(tǒng)預(yù)制刷新按鈕 SYSBTN PRINT 系統(tǒng)預(yù)制打印按鈕 SYSBTN PRINTPREVIEW 系統(tǒng)預(yù)制打印預(yù)覽按鈕 SYSBTN ADD 系統(tǒng)預(yù)制增加按鈕 SYSBTN DELETE 系統(tǒng)預(yù)制刪除按鈕 SYSBTN EDIT 系統(tǒng)預(yù)制編輯按鈕 SYSBTN CANCEL 系統(tǒng)預(yù)置取消按鈕 SYSBTN RETURN 系統(tǒng)預(yù)置返回按鈕 SYSBTN ADD LINE 系統(tǒng)預(yù)置增行按鈕 SYSBTN DEL LINE 系統(tǒng)預(yù)置刪行按鈕 SYSBTN SUBOPERATION 系統(tǒng)預(yù)制子集操作按鈕 SYSBTN INSERT LINE 系統(tǒng)預(yù)制插入行按鈕 SYSBTN BATCH ADD 系統(tǒng)預(yù)制批量增加按鈕 SYSBTN BATCH EDIT 系統(tǒng)預(yù)制批量修改按鈕 SYSBTN COMMIT 系統(tǒng)預(yù)制提交按鈕 SYSBTN CALLBACK 系統(tǒng)預(yù)制收回按鈕 SYSBTN EXAMINE 系統(tǒng)預(yù)制審批按鈕 SYSBTN EXAMINE CHECK 系統(tǒng)預(yù)制審核按鈕 SYSBTN CANCELEXAMINE 系統(tǒng)預(yù)制棄審按鈕 SYSBTN EXAMINE SUGGESTION 系統(tǒng)預(yù)制審批意見按鈕 SYSBTN BROWSE 系統(tǒng)預(yù)制瀏覽按鈕 SYSBTN PATCH MANAGE 系統(tǒng)預(yù)制附件管理按鈕 SYSBTN IMPORT 系統(tǒng)預(yù)制導(dǎo)入按鈕 SYSBTN EXPORT 系統(tǒng)預(yù)制導(dǎo)出按鈕 SYSBTN SEAL 系統(tǒng)預(yù)制封存按鈕 SYSBTN CANCELSEAL 系統(tǒng)預(yù)制解封按鈕 SYSBTN FREEZE 系統(tǒng)預(yù)制凍結(jié)按鈕 SYSBTN CANCELFREEZE 系統(tǒng)預(yù)制解凍按鈕 SYSBTN PUBLISH 系統(tǒng)預(yù)制發(fā)布按鈕 SYSBTN CANCELPUBLISH 系統(tǒng)預(yù)制取消發(fā)布按鈕 SYSBTN DETAILS 系統(tǒng)預(yù)制明細(xì)按鈕 SYSBTN STAT 系統(tǒng)預(yù)制匯總按鈕 SYSBTN EDIT LINE 系統(tǒng)預(yù)置編輯行按鈕 對外提供一個靜態(tài)方法校驗是否為合法的按鈕 public static boolean isContainBtnID int btnID 為了實現(xiàn)這個方法 需要在靜態(tài)塊中把注冊按鈕加入散列影射中 本部分略顯繁瑣 考慮使用統(tǒng)一的辦法加入常量注冊 public final ButtonVO createSysBtnVOByID int btnID public abstract ButtonVO createUserBtnVOByID int btnID 兩個方法分別根據(jù)按鈕的 創(chuàng)建系統(tǒng)按鈕和用戶自定義按鈕的 ButtonVO CreateUserBtnVOByID 方法是需要在子類中重寫的 createSysBtnVOByID 方法 是禁止子類覆蓋的 標(biāo)題 第 27 21 頁 5 3 4 ButtonStateRegister 類說明類說明 ButtonStateRegister 類注冊了每一個狀態(tài)下 ButtonManager 中所有按鈕的行為 包括可用性和可見性 注意按鈕在一個狀態(tài)下的默認(rèn)行為是可見而不可用 描述一個狀態(tài)下按鈕的行為 我們統(tǒng)一使用一個 ButtonStateVO 來封裝 ButtonStateVO 結(jié)構(gòu)見下圖 ValueObject B Bu ut tt to on nS St ta at te eV VO O mergeVO void enableBtnIDs int stateData Object stateID int invisiableBtnIDs int enableBtnIDs 屬性指定此狀態(tài)下可用的按鈕 ID 數(shù)組 invisiableBtnIDs 屬性指定 此狀態(tài)下不可見的按鈕 ID 數(shù)組 StateID 就是狀態(tài) ID stateData 是預(yù)留給用戶的數(shù)據(jù)字 段 基本的實現(xiàn)機制是把上圖中的狀態(tài) 按照對應(yīng)的狀態(tài) 放在一個散列影射中 然后不同的對外提供根據(jù)狀態(tài) 得到狀態(tài) 的服務(wù) 對外的接口有 方法名稱參數(shù)返回值描述 getButtonStateVOByStateID int stateID 狀 態(tài) ID 本狀態(tài) 必須是狀態(tài)注冊 中已經(jīng)注冊的狀 態(tài) ButtonStateVO 根據(jù) StateID 得到 ButtonStateVO 實例 addStateVO int stateID 狀 態(tài) ButtonStateVO sVO 按鈕狀態(tài) VO 添加 StateVO 和 ID 的值對 如果 stateID 對應(yīng)的 ButtonStateVO 不為 空 并且在沒有屏蔽 系統(tǒng)默認(rèn)設(shè)置的狀態(tài) 那么將 stateID 對應(yīng) 的 ButtonStateVO 取 出 然后將這個對 應(yīng)的 ButtonStateVO 的 enableBtnIDs 及 invisiableBtnIDs 與 sVO 的 e
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計:110KV變電站一次、二次系統(tǒng)設(shè)計
- 汽車門店銷售管理辦法
- 軍用保密文件管理辦法
- 生物校本課程開發(fā)與實施策略
- 企業(yè)安全管理體系改進路徑研究
- 逆向思維:重塑認(rèn)知與人生的轉(zhuǎn)變之道
- 林業(yè)宿舍門禁管理辦法
- 國企資產(chǎn)臺賬管理辦法
- 民政行業(yè)扶貧管理辦法
- 自然觀察法在小學(xué)科學(xué)教育中的應(yīng)用研究
- 國開本科《管理英語4》機考總題庫及答案
- 軟裝行業(yè)競品分析報告
- 公司收購公司協(xié)議書
- 基于移動端的互聯(lián)網(wǎng)金融服務(wù)創(chuàng)新研究
- T∕CACM 024-2017 中醫(yī)臨床實踐指南 穴位埋線減肥
- 小號獨奏名曲100首
- 電廠安全知識培訓(xùn)
- 中國冠心病康復(fù)循證實踐指南(2024版)解讀
- 火電工程達標(biāo)投產(chǎn)考核標(biāo)準(zhǔn)(2024版)
- 停車場數(shù)據(jù)分析與優(yōu)化方案
- 護理安全管理課件
評論
0/150
提交評論