codecamp

10.2.组件

概述

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

使用

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

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

组件的定义,需要您熟悉Dorado7组件的各种属性及事件。
在为组件编写事件时,如果需要引用页面当中的组件,那么可以直接通过使用view.id(组件名)实现,如果要引用实体对应的DataSet,可使用规则“dataSet+实体名”实现,比如引用实体Employee对应的DataSet,那么可以采用如下方式编写事件:
var ds=view.id("dataSetEmployee")
这样就可以获取到Employee实体对象对应的DataSet,如果要获取动作的引用,同样直接用view.id(动作名)就行。
这里需要注意的是,和Dorado7IDE一样,如果为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环境当中,这样新增组件的工作就完成了。

10.1.实体
10.3.页面
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }