Eclipse華麗轉(zhuǎn)身之控件表格工廠
則圖片上表格中的值與模型對(duì)象之間的關(guān)系,這樣就不難理解Translator數(shù)據(jù)轉(zhuǎn)換器需要做的事情了,接下來(lái)看下它的類圖;
其中AbstractKTableFactory# doCreateControl方法,在創(chuàng)建UI控件的時(shí)候調(diào)用了getTranslator方法返回的就是實(shí)現(xiàn)IObjectTranslator接口的子類;protected Control doCreateControl(Composite r_Parent, UIDefinition r_UIDefinition) {……………………………………………………………………… IObjectTranslator t_Translator = this.getTranslator(); IKTableColumn[] t_Columns = this.getColumns(); for (int i = 0; i < t_Columns.length; i++) { if (t_Columns[i] instanceof AbstractTableColumn) { AbstractTableColumn t_Column = (AbstractTableColumn) t_Columns[i]; t_Column.setIntrospector(t_Translator.getIntrospector());//這里會(huì)為每一個(gè)column設(shè)置一個(gè)數(shù)據(jù)訪問(wèn)器 } }……………………………………………………………………… return createActionComposite(r_Parent, r_UIDefinition.isView()); }看下IObjectTranslator接口中定義的方法;
同樣formeTree和toTree方法,適用于KTreeBuilder創(chuàng)建出來(lái)的UI控件上表格數(shù)據(jù)的保存和回顯;
fromTable方法在AbstractKTableFactory中的save方法中被調(diào)用,一般用于UI界面上編寫好數(shù)據(jù),類似按保存按鈕,或者向?qū)е小按_定”或者“完成”按鈕時(shí)候調(diào)用,用于把表格中填寫的數(shù)據(jù)存在一個(gè)數(shù)據(jù)備忘錄IMemento中。
toTable方法在這個(gè)UI界面被構(gòu)造的時(shí)候方法中,new一個(gè)數(shù)據(jù)備忘錄IMemento(后面的章節(jié)會(huì)講到)的時(shí)候被調(diào)用,用于回顯上一次填寫的數(shù)據(jù)。備忘錄IMemento提供一個(gè)數(shù)據(jù)備份和恢復(fù)的接口,可以用來(lái)備份數(shù)據(jù)和恢復(fù)數(shù)據(jù).它與IStore非常相似,但是為了便于理解,使用Memento名字。可以參考Memento模式,下圖為實(shí)現(xiàn)IMemento接口的子類,都可以根據(jù)自己控件的特性來(lái)備份恢復(fù)數(shù)據(jù);
接口中就定義了2個(gè)方法,分別為backup備份數(shù)據(jù),restore恢復(fù)數(shù)據(jù),我們先可以來(lái)看一下TableMemento中的方法;protected List doBackup(String r_Type, Object r_M(jìn)odel) { if (null==this.objectTranslator) { return new ArrayList(); } else{ return this.objectTranslator.toTable(r_Type, r_M(jìn)odel); } }
在Translator章節(jié)中我們講述了toTable方法,它是翻譯成一個(gè)可以用于表格數(shù)據(jù)的列表,在AbstractKtableFactory中構(gòu)造UI的方法中(doCreateControl)方法中我們會(huì)新建一個(gè)TableMemento的實(shí)例對(duì)象。在構(gòu)造TableMemento實(shí)例的時(shí)候就會(huì)調(diào)用構(gòu)造函數(shù)中的backup方法來(lái)保存UI界面中控件的值。
那接口中restore恢復(fù)數(shù)據(jù)何時(shí)被調(diào)用呢?可以看下圖,例如我們?cè)跀?shù)據(jù)集編輯器中空白處點(diǎn)擊右鍵出現(xiàn)的菜單如下圖;
ICommand是用來(lái)提供Redo和Undo的接口,SimpleCommand則是ICommand的實(shí)現(xiàn)類,實(shí)現(xiàn)類中的redo和undo方法都會(huì)調(diào)用IMemento實(shí)現(xiàn)類的restore方法調(diào)用后來(lái)恢復(fù)數(shù)據(jù)。
基本概念說(shuō)完了,我們看下具體的表格工廠:KTable、KTree、Table。
KTable表格工廠
AbstractKtableFactory用來(lái)支持表格控件的創(chuàng)建。
getCloumns方法:返回一個(gè)IKTableColumn []的數(shù)組,必須由子類來(lái)實(shí)現(xiàn),IKTableColumn是用來(lái)支持Ktable的表格列,一般只需要構(gòu)造一個(gè)KPropertyTableColumn(該數(shù)據(jù)列用來(lái)通過(guò)property來(lái)訪問(wèn)對(duì)象)就可以了。getActionProvider方法:返回的IKTableActionProvider是控件上的一些Action操作,通?梢酝ㄟ^(guò)創(chuàng)建DefaultKTableActionProvider對(duì)象來(lái)實(shí)現(xiàn)。子類可以重寫這個(gè)方法來(lái)構(gòu)造自己的Action來(lái)進(jìn)行對(duì)表中的數(shù)據(jù)進(jìn)行操作。getTranslator方法:返回?cái)?shù)據(jù)數(shù)據(jù)轉(zhuǎn)換器,通常為自己自定義的數(shù)據(jù)轉(zhuǎn)換類
發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字
最新活動(dòng)更多
-
即日-10.29立即報(bào)名>> 2024德州儀器嵌入式技術(shù)創(chuàng)新發(fā)展研討會(huì)
-
10月31日立即下載>> 【限時(shí)免費(fèi)下載】TE暖通空調(diào)系統(tǒng)高效可靠的組件解決方案
-
即日-11.13立即報(bào)名>>> 【在線會(huì)議】多物理場(chǎng)仿真助跑新能源汽車
-
11月14日立即報(bào)名>> 2024工程師系列—工業(yè)電子技術(shù)在線會(huì)議
-
12月19日立即報(bào)名>> 【線下會(huì)議】OFweek 2024(第九屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會(huì)
-
即日-12.26火熱報(bào)名中>> OFweek2024中國(guó)智造CIO在線峰會(huì)
推薦專題
- 1 Intel宣布40年來(lái)最重大轉(zhuǎn)型:年底前裁員15000人、拋掉2/3房產(chǎn)
- 2 因美封殺TikTok,字節(jié)股價(jià)骨折!估值僅Meta1/5
- 3 宏山激光重磅發(fā)布行業(yè)解決方案,助力智能制造產(chǎn)業(yè)新飛躍
- 4 國(guó)產(chǎn)AI芯片公司破產(chǎn)!白菜價(jià)拍賣
- 5 具身智能火了,但規(guī)模落地還需時(shí)間
- 6 國(guó)產(chǎn)英偉達(dá)們,抓緊沖刺A股
- 7 三次錯(cuò)失風(fēng)口!OpenAI前員工殺回AI編程賽道,老東家捧金相助
- 8 英偉達(dá)的麻煩在后頭?
- 9 將“網(wǎng)紅”變成“商品”,AI“爆改”實(shí)力拉滿
- 10 智慧貨架管理引領(lǐng)零售新風(fēng)尚
- 高級(jí)軟件工程師 廣東省/深圳市
- 自動(dòng)化高級(jí)工程師 廣東省/深圳市
- 光器件研發(fā)工程師 福建省/福州市
- 銷售總監(jiān)(光器件) 北京市/海淀區(qū)
- 激光器高級(jí)銷售經(jīng)理 上海市/虹口區(qū)
- 光器件物理工程師 北京市/海淀區(qū)
- 激光研發(fā)工程師 北京市/昌平區(qū)
- 技術(shù)專家 廣東省/江門市
- 封裝工程師 北京市/海淀區(qū)
- 結(jié)構(gòu)工程師 廣東省/深圳市