概述
實體定義完成之后,我們就可以來定義組件了,這里指的組件就是Dorado7中各種組件,定義方式與Dorado7IDE非常類似,組件定義也采用的是樹形結構,這樣就可以實現(xiàn)組件的嵌套定義。同樣,定義組件前要定義存放組件的包,包定義好之前就可以雙擊進入要定義的組件頁面啦。
使用
組件定義界面如下圖所示:

添加組件同樣采用右鍵方式實現(xiàn),可以看到,Dorado7當中絕大多數(shù)組件都可以在這里定義,添加完組件后可以定義其屬性及事件,如果當前組件為容器類組件,還可以設置其布局方式,如果是數(shù)據(jù)敏感組件,還可以設置其綁定的實體,如果是Button類組件還可以與具體的動作綁定等。
組件的定義,需要您熟悉Dorado7組件的各種屬性及事件。
在為組件編寫事件時,如果需要引用頁面當中的組件,那么可以直接通過使用view.id(組件名)實現(xiàn),如果要引用實體對應的DataSet,可使用規(guī)則“dataSet+實體名”實現(xiàn),比如引用實體Employee對應的DataSet,那么可以采用如下方式編寫事件:
var ds=view.id("dataSetEmployee")
這樣就可以獲取到Employee實體對象對應的DataSet,如果要獲取動作的引用,同樣直接用view.id(動作名)就行。
這里需要注意的是,和Dorado7IDE一樣,如果為AutoForm或DataGrid選擇對應的實體,那么會自動創(chuàng)建AutoForm下面的FormElement以及DataGrid下的column,這樣就可以極大提高頁面的開發(fā)效率。
擴展
在使用過程當中,如果您發(fā)現(xiàn)Dorado7中新增加一些組件,但在目前的Rapido中還未將其包含進來,那么您可以自己動手編寫接口的實現(xiàn)將其添加到Rapido環(huán)境當中。
要在Rapido中添加一個新的組件,需要實現(xiàn)兩個接口,分別是com.bstek.bdf.rapido.component.ISupport和com.bstek.bdf.rapido.xml.IConverter。ISupport用于定義組件的一些顯示信息,其內(nèi)容如下:
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();
/**
* 根據(jù)選擇的實體自動創(chuàng)建子組件
* @param entity 選擇的實體對象
* @return 子組件集合
*/
Collection<ComponentInfo> createChildrenByEntity(Entity entity);
/**
* 根據(jù)組件ID創(chuàng)建組件常用屬性
* @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接口實現(xiàn)編寫完成之后需要配置到Spring環(huán)境當中,這樣在Rapido組件編輯頁面當中就可以看到定義的組件信息。在頁面預覽時如果希望定義的組件能被正確輸出,我們還需要定義一個對應的IConverter接口實現(xiàn)。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{
/**
* 根據(jù)給定的組件信息生成組件對應的XML
* @param component 組件信息
* @param ruleSet 組件對應的Dorado7的規(guī)則信息
* @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環(huán)境當中,這樣新增組件的工作就完成了。
更多建議: