KTree表格工厂
AbstractKTreeFactory和AbstractKTableFacotory区别不大。通过UI界面可以看到区别,“参数”和“返回值”就好比一个树的跟节点root,而参数param1和参数param2为“参数”root的子节点。AbstractKTreeFactory中是使用KTreeBuilder来构造表格的,KTreeBuilde中有一个重要的属性ITreeNode,下图是它的类关系图:
DefaultTreeNode实现了ITreeNode的接口并且继承了AbstractPropertyAwareElement(能够监控属性改变的类,当属性改变时,会发出相应的信息通知所有的监听者),KTreeBuilder类里面有一个方法叫做setRootNode()可以设置树的根节点,而ITreeNode的子类都可以构造自己的节点然后通过setParent()的方法设置父类节点,或者调用add()方法来添加自己的孩子节点,其中重要的是DefaultTreeNode的setUserObject()方法,它是用来为每个节点set一个对象的方法。我们来看一个示例(逻辑流出入参的数据转换器BusinessLogicTranslator):
Table表格工厂
AbstractTableFactory和AbstractKTableFactory基本很相像,看下一它的类关系图如下:
在AbstractTableFactory中构造表格的TableBuilder可以从上类图中看出来,其实是就是封装了eclipse自身的TableViewer,而不是AbstractKTableFactory中封装的KTable,这是两者之间本质的区别。
IKTableColumn
说完了表格工厂以后,我们回头再来看之前表格工厂里提到的一个方法getCloumns(),在这个方法中返回的是IKTableColumn []的数组。上文图中的表格列都是最基本的输入框也就是KPropertyTableColumn,除此之外还有哪些Column的封装呢?
通过此图列举的类不难看出,表格Column的常用封装都可以满足了,无论是下拉框、复选框、还是带有图片的Column。那么下一篇我们就来详细说一下,表格工厂Column的封装,除此之外还有更为复杂的Column封装(如图),以及其他几个控件工厂的介绍。
- end -