BSTEK Development Framework2(BDF2) : 10.2.组件

概述

       实体定义完成之后,我们就可以来定义组件了,这里指的组件就是Dorado7中各种组件,定义方式与Dorado7 IDE非常类似,组件定义也采用的是树形结构,这样就可以实现组件的嵌套定义。同样,定义组件前要定义存放组件的包,包定义好之前就可以双击进入要定义的组件页面啦。

使用

       组件定义界面如下图所示:

       添加组件同样采用右键方式实现,可以看到,Dorado7当中绝大多数组件都可以在这里定义,添加完组件后可以定义其属性及事件,如果当前组件为容器类组件,还可以设置其布局方式,如果是数据敏感组件,还可以设置其绑定的实体,如果是Button类组件还可以与具体的动作绑定等。

       组件的定义,需要您熟悉Dorado7组件的各种属性及事件。

在为组件编写事件时,如果需要引用页面当中的组件,那么可以直接通过使用view.id(组件名)实现,如果要引用实体对应的DataSet,可使用规则“dataSet+实体名”实现,比如引用实体Employee对应的DataSet,那么可以采用如下方式编写事件:

var ds=view.id("dataSetEmployee")

这样就可以获取到Employee实体对象对应的DataSet,如果要获取动作的引用,同样直接用view.id(动作名)就行。

 

       这里需要注意的是,和Dorado7 IDE一样,如果为AutoForm或DataGrid选择对应的实体,那么会自动创建AutoForm下面的FormElement以及DataGrid下的column,这样就可以极大提高页面的开发效率。

扩展

       在使用过程当中,如果您发现Dorado7中新增加一些组件,但在目前的Rapido中还未将其包含进来,那么您可以自己动手编写接口的实现将其添加到Rapido环境当中。

要在Rapido中添加一个新的组件,需要实现两个接口,分别是com.bstek.bdf.rapido.component.ISupport和com.bstek.bdf.rapido.xml.IConverter。ISupport用于定义组件的一些显示信息,其内容如下:

package com.bstek.bdf2.rapido.component;
import java.util.Collection;
import com.bstek.bdf2.rapido.component.property.PropertySupport;
import com.bstek.bdf2.rapido.domain.ComponentInfo;
import com.bstek.bdf2.rapido.domain.ComponentProperty;
import com.bstek.bdf2.rapido.domain.Entity;
/**
 * 用于定义组件显示信息
 * @author jacky.gao@bstek.com
 * @since 2012-8-25
 */
public interface ISupport {
	/**
	 * 组件的显示名称
	 * @return 具体要显示的名称
	 */
	String getDisplayName();
	/**
	 * Dorado7中该组件类的完全限定名
	 * @return 类全名
	 */
	String getFullClassName();
	/**
	 * 组件显示图标
	 * @return 图标地址
	 */
	String getIcon();
	/**
	 * 对组件支持的某些属性进行特殊处理
	 * @return PropertySupport对象的集合
	 */
	Collection<PropertySupport> getPropertySupports();
	/**
	 * 当前组件下可以使用哪些子组件
	 * @return ISupport对象集合
	 */
	Collection<ISupport> getChildren();
	/**
	 * 根据选择的实体自动创建子组件
	 * @param entity 选择的实体对象
	 * @return 子组件集合
	 */
	Collection<ComponentInfo> createChildrenByEntity(Entity entity);
	/**
	 * 根据组件ID创建组件常用属性
	 * @param componentId 组件ID
	 * @return 组件属性集合
	 */
	Collection<ComponentProperty> createComponentPropertysByComponentId(String componentId);
	/**
	 * @return 是否支持实体
	 */
	boolean isSupportEntity();
	/**
	 * @return 是否支持布局
	 */
	boolean isSupportLayout();
	/**
	 * @return 是否支持动作
	 */
	boolean isSupportAction();
	/**
	 * @return 是否为容器类型组件
	 */
	boolean isContainer();
	/**
	 * @return 是否可以独立存在
	 */
	boolean isAlone();
}

ISupport接口实现编写完成之后需要配置到Spring环境当中,这样在Rapido组件编辑页面当中就可以看到定义的组件信息。在页面预览时如果希望定义的组件能被正确输出,我们还需要定义一个对应的IConverter接口实现。IConverter接口代码如下:

package com.bstek.bdf2.rapido.xml;
import org.dom4j.Element;
import com.bstek.bdf2.rapido.domain.ComponentInfo;
import com.bstek.dorado.idesupport.model.RuleSet;
/**
 * 用于view.xml页面生成时,输出组件对应的xml信息
 * @author jacky.gao@bstek.com
 * @since 2012-8-25
 */
public interface IConverter{
	/**
	 * 根据给定的组件信息生成组件对应的XML
	 * @param component 组件信息
	 * @param ruleSet 组件对应的Dorado7的规则信息
	 * @param rootElement view.xml文档的根
	 * @return 返回组件的Dom4j的Element对象
	 * @throws Exception
	 */
	Element convert(ComponentInfo component,RuleSet ruleSet,Element rootElement) throws Exception;
	/**
	 * 当前Converter是否支持给定的组件
	 * @param component 给定要判断的组件
	 * @return 是否支持
	 */
	boolean support(ComponentInfo component);
}

       IConverter编写完成后,同样需要配置到Spring环境当中,这样新增组件的工作就完成了。