Eclipse華麗轉(zhuǎn)身之控件表格工廠
則圖片上表格中的值與模型對象之間的關(guān)系,這樣就不難理解Translator數(shù)據(jù)轉(zhuǎn)換器需要做的事情了,接下來看下它的類圖;

其中AbstractKTableFactory# doCreateControl方法,在創(chuàng)建UI控件的時候調(diào)用了getTranslator方法返回的就是實現(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());//這里會為每一個column設(shè)置一個數(shù)據(jù)訪問器 } }……………………………………………………………………… return createActionComposite(r_Parent, r_UIDefinition.isView()); }看下IObjectTranslator接口中定義的方法;

同樣formeTree和toTree方法,適用于KTreeBuilder創(chuàng)建出來的UI控件上表格數(shù)據(jù)的保存和回顯;

fromTable方法在AbstractKTableFactory中的save方法中被調(diào)用,一般用于UI界面上編寫好數(shù)據(jù),類似按保存按鈕,或者向?qū)е小按_定”或者“完成”按鈕時候調(diào)用,用于把表格中填寫的數(shù)據(jù)存在一個數(shù)據(jù)備忘錄IMemento中。
toTable方法在這個UI界面被構(gòu)造的時候方法中,new一個數(shù)據(jù)備忘錄IMemento(后面的章節(jié)會講到)的時候被調(diào)用,用于回顯上一次填寫的數(shù)據(jù)。備忘錄IMemento提供一個數(shù)據(jù)備份和恢復(fù)的接口,可以用來備份數(shù)據(jù)和恢復(fù)數(shù)據(jù).它與IStore非常相似,但是為了便于理解,使用Memento名字。可以參考Memento模式,下圖為實現(xiàn)IMemento接口的子類,都可以根據(jù)自己控件的特性來備份恢復(fù)數(shù)據(jù);

接口中就定義了2個方法,分別為backup備份數(shù)據(jù),restore恢復(fù)數(shù)據(jù),我們先可以來看一下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方法,它是翻譯成一個可以用于表格數(shù)據(jù)的列表,在AbstractKtableFactory中構(gòu)造UI的方法中(doCreateControl)方法中我們會新建一個TableMemento的實例對象。在構(gòu)造TableMemento實例的時候就會調(diào)用構(gòu)造函數(shù)中的backup方法來保存UI界面中控件的值。
那接口中restore恢復(fù)數(shù)據(jù)何時被調(diào)用呢?可以看下圖,例如我們在數(shù)據(jù)集編輯器中空白處點擊右鍵出現(xiàn)的菜單如下圖;

ICommand是用來提供Redo和Undo的接口,SimpleCommand則是ICommand的實現(xiàn)類,實現(xiàn)類中的redo和undo方法都會調(diào)用IMemento實現(xiàn)類的restore方法調(diào)用后來恢復(fù)數(shù)據(jù)。
基本概念說完了,我們看下具體的表格工廠:KTable、KTree、Table。
KTable表格工廠

AbstractKtableFactory用來支持表格控件的創(chuàng)建。

getCloumns方法:返回一個IKTableColumn []的數(shù)組,必須由子類來實現(xiàn),IKTableColumn是用來支持Ktable的表格列,一般只需要構(gòu)造一個KPropertyTableColumn(該數(shù)據(jù)列用來通過property來訪問對象)就可以了。getActionProvider方法:返回的IKTableActionProvider是控件上的一些Action操作,通常可以通過創(chuàng)建DefaultKTableActionProvider對象來實現(xiàn)。子類可以重寫這個方法來構(gòu)造自己的Action來進(jìn)行對表中的數(shù)據(jù)進(jìn)行操作。getTranslator方法:返回數(shù)據(jù)數(shù)據(jù)轉(zhuǎn)換器,通常為自己自定義的數(shù)據(jù)轉(zhuǎn)換類
請輸入評論內(nèi)容...
請輸入評論/評論長度6~500個字
最新活動更多
-
6月30日立即申請試用>> 【免費試用】旭之源工業(yè)電源一一機(jī)器人的穩(wěn)定“心臟“
-
精彩回顧立即查看>> 【限時免費】物理場仿真助力生物醫(yī)學(xué)領(lǐng)域技術(shù)創(chuàng)新
-
精彩回顧立即查看>> 【直播】 智測未來·2026海克斯康春季產(chǎn)品創(chuàng)新日
-
精彩回顧立即查看>> 【線下論壇】新唐科技×芯唐南京 2026 年度研討會
-
精彩回顧立即查看>> OFweek 2026(第十五屆)中國機(jī)器人產(chǎn)業(yè)大會
-
精彩回顧立即查看>> 維科杯· OFweek 2025中國機(jī)器人行業(yè)年度評選
推薦專題
-
2 華為,重大突破!
- 1 人形機(jī)器人“第一股”來了!宇樹科技即將上會
- 2 全球股市陷AI獨大結(jié)構(gòu)性瘋狂
- 3 AI狂歡遇上油價破百,全球股市還能漲多久? | 產(chǎn)聯(lián)看全球
- 4 DeepSeek融資500億,梁文鋒難逃資本局
- 5 谷歌2026 I/O大會完整回顧:模型依然重要,但智能體正在接管一切
- 6 全球資本,重倉中國機(jī)器人
- 7 Figure AI 交付突破350臺,陪跑特斯拉會迎來iPhone 時刻嗎?
- 8 Anthropic發(fā)布2028年全球AI領(lǐng)導(dǎo)力的兩種情景報告
- 9 “國產(chǎn)GPU第一股”摩爾線程首季扭虧,但造血能力仍待考驗
- 10 特斯拉宣布監(jiān)督版FSD登陸中國?
- 高級軟件工程師 廣東省/深圳市
- 自動化高級工程師 廣東省/深圳市
- 光器件研發(fā)工程師 福建省/福州市
- 銷售總監(jiān)(光器件) 北京市/海淀區(qū)
- 激光器高級銷售經(jīng)理 上海市/虹口區(qū)
- 光器件物理工程師 北京市/海淀區(qū)
- 激光研發(fā)工程師 北京市/昌平區(qū)
- 技術(shù)專家 廣東省/江門市
- 封裝工程師 北京市/海淀區(qū)
- 結(jié)構(gòu)工程師 廣東省/深圳市


分享













