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

EAWorld

    Eclipse插件开发
    书归正传,接演前文~(Eclipse插件开发之简单控件封装——那些年冗长的裹脚布)上回我们介绍了对象编辑器的封装,对象编辑器之外就是控件工厂的封装,而在众多类型的控件工厂中,想必大家最关心的,莫过于对槽点满满的原生Tree/Table的封装。这回我们便好好来说道说道~
    在此之前,我们还是要简单介绍一下控件工厂。
    控件工厂
    根据不同的UI需求,我们框架封装了许多控件工厂来完成灵活的应用需求。
    
    IControlFactory控件工厂,因为有一些控件是运行时才会被创建的,而且要创建的控件也有可能不确定,所以提供一个这样的工厂用来创建控件,下图为它的类结构图。
    
    AbstractControlFactory是IControlFactory的基类。这个基类在实现IValueContaier的同时还实现了IValueChangeListener和IValidateListener这样主要是通过Proxy的模式,只在内部的控件中添加自己作为Listener。
    表格工厂
    我们知道,无论是SWT的Table还是JFace的TableViewer/TreeViewer,都不能满。我们广泛需求,比如修改数据。而在我们开发过程中,表格往往是个非常普遍多次使用的控件,所以这里就要引入我们的表格工厂的封装了。那么,我们先简述以下表格工厂相关的几个概念(构建器、数据转换器、备忘录)。
    表格构建器Builder分为KTableBuilder和KTreeBuilder,其实他们是使用了第三方表格组件KTable来进行构造表格。
    
    先来说一下KTable表格工厂的构建器KTableBuilder,下图为Builder的关系类图;
    
    当需要使用一个KTableBuilder的时候我们一般直接new一个对象出来,可以看下它三种构造函数中带参数的一种;public KTableBuilder(KTable r_KTable, IKTableColumn[] r_Columns, ITableDataProvider r_TableDataProvider, IAdaptable r_Adaptable) {    this.setTableColumns(r_Columns);    this.setDataProvider(r_TableDataProvider);    this.build(r_KTable,r_Adaptable);  }其中的ITableDataProvider就是数据提供者接口,为表格提供数据和排序。然后表格构建器通过doBuild方法来绘制表格。数据转换器Translator数据转换器,可以将数据转换成复杂控件使用的数据,如表格使用的列表数据;举一个例子来理解什么是Translator,例如Stuido的逻辑流文件(*.bizx文件),用文本编辑器开打后可以看到图形化编辑器中的图元的信息都是使用XML规范来描述的,比如一个运算逻辑图元属性如下图;
    
    
    
    1  2  3  下一页>