订阅
纠错
加入自媒体

Eclipse华丽转身之控件表格工厂

2020-08-26 10:48
EAWorld
关注

则图片上表格中的值与模型对象之间的关系,这样就不难理解Translator数据转换器需要做的事情了,接下来看下它的类图;

Eclipse华丽转身之控件表格工厂

其中AbstractKTableFactory# doCreateControl方法,在创建UI控件的时候调用了getTranslator方法返回的就是实现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设置一个数据访问器      }    }………………………………………………………………………    return createActionComposite(r_Parent, r_UIDefinition.isView());  }看下IObjectTranslator接口中定义的方法;

Eclipse华丽转身之控件表格工厂

同样formeTree和toTree方法,适用于KTreeBuilder创建出来的UI控件上表格数据的保存和回显;

Eclipse华丽转身之控件表格工厂

fromTable方法在AbstractKTableFactory中的save方法中被调用,一般用于UI界面上编写好数据,类似按保存按钮,或者向导中“确定”或者“完成”按钮时候调用,用于把表格中填写的数据存在一个数据备忘录IMemento中。

toTable方法在这个UI界面被构造的时候方法中,new一个数据备忘录IMemento(后面的章节会讲到)的时候被调用,用于回显上一次填写的数据。备忘录IMemento提供一个数据备份和恢复的接口,可以用来备份数据和恢复数据.它与IStore非常相似,但是为了便于理解,使用Memento名字。可以参考Memento模式,下图为实现IMemento接口的子类,都可以根据自己控件的特性来备份恢复数据;

Eclipse华丽转身之控件表格工厂

接口中就定义了2个方法,分别为backup备份数据,restore恢复数据,我们先可以来看一下TableMemento中的方法;protected List doBackup(String r_Type, Object r_Model) {    if (null==this.objectTranslator) {      return new ArrayList();    } else{          return this.objectTranslator.toTable(r_Type, r_Model);    }  }

在Translator章节中我们讲述了toTable方法,它是翻译成一个可以用于表格数据的列表,在AbstractKtableFactory中构造UI的方法中(doCreateControl)方法中我们会新建一个TableMemento的实例对象。在构造TableMemento实例的时候就会调用构造函数中的backup方法来保存UI界面中控件的值。

那接口中restore恢复数据何时被调用呢?可以看下图,例如我们在数据集编辑器中空白处点击右键出现的菜单如下图;

Eclipse华丽转身之控件表格工厂

ICommand是用来提供Redo和Undo的接口,SimpleCommand则是ICommand的实现类,实现类中的redo和undo方法都会调用IMemento实现类的restore方法调用后来恢复数据。

基本概念说完了,我们看下具体的表格工厂:KTable、KTree、Table。

KTable表格工厂

Eclipse华丽转身之控件表格工厂

AbstractKtableFactory用来支持表格控件的创建。

Eclipse华丽转身之控件表格工厂

getCloumns方法:返回一个IKTableColumn []的数组,必须由子类来实现,IKTableColumn是用来支持Ktable的表格列,一般只需要构造一个KPropertyTableColumn(该数据列用来通过property来访问对象)就可以了。getActionProvider方法:返回的IKTableActionProvider是控件上的一些Action操作,通常可以通过创建DefaultKTableActionProvider对象来实现。子类可以重写这个方法来构造自己的Action来进行对表中的数据进行操作。getTranslator方法:返回数据数据转换器,通常为自己自定义的数据转换类

<上一页  1  2  3  下一页>  
声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

    人工智能 猎头职位 更多
    扫码关注公众号
    OFweek人工智能网
    获取更多精彩内容
    文章纠错
    x
    *文字标题:
    *纠错内容:
    联系邮箱:
    *验 证 码:

    粤公网安备 44030502002758号