当前位置: 智能网 > 人工智能 > Eclipse华丽转身之控件表格工厂

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

放大字体 缩小字体 发布日期:2020-08-26 14:04:25   浏览次数:121


则图片上表格中的值与模型对象之间的关系,这样就不难理解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方法:返回数据数据转换器,通常为自己自定义的数据转换类

3  
 
关键词: 表格 控件 工厂

[ 智能网搜索 ]  [ 打印本文 ]  [ 违规举报

猜你喜欢

 
推荐图文
推荐智能网
点击排行