10.2.組件

2023-07-03 17:30 更新

概述

實(shí)體定義完成之后,我們就可以來(lái)定義組件了,這里指的組件就是Dorado7中各種組件,定義方式與Dorado7IDE非常類似,組件定義也采用的是樹(shù)形結(jié)構(gòu),這樣就可以實(shí)現(xiàn)組件的嵌套定義。同樣,定義組件前要定義存放組件的包,包定義好之前就可以雙擊進(jìn)入要定義的組件頁(yè)面啦。

使用

組件定義界面如下圖所示:

添加組件同樣采用右鍵方式實(shí)現(xiàn),可以看到,Dorado7當(dāng)中絕大多數(shù)組件都可以在這里定義,添加完組件后可以定義其屬性及事件,如果當(dāng)前組件為容器類組件,還可以設(shè)置其布局方式,如果是數(shù)據(jù)敏感組件,還可以設(shè)置其綁定的實(shí)體,如果是Button類組件還可以與具體的動(dòng)作綁定等。

組件的定義,需要您熟悉Dorado7組件的各種屬性及事件。
在為組件編寫(xiě)事件時(shí),如果需要引用頁(yè)面當(dāng)中的組件,那么可以直接通過(guò)使用view.id(組件名)實(shí)現(xiàn),如果要引用實(shí)體對(duì)應(yīng)的DataSet,可使用規(guī)則“dataSet+實(shí)體名”實(shí)現(xiàn),比如引用實(shí)體Employee對(duì)應(yīng)的DataSet,那么可以采用如下方式編寫(xiě)事件:
var ds=view.id("dataSetEmployee")
這樣就可以獲取到Employee實(shí)體對(duì)象對(duì)應(yīng)的DataSet,如果要獲取動(dòng)作的引用,同樣直接用view.id(動(dòng)作名)就行。
這里需要注意的是,和Dorado7IDE一樣,如果為AutoForm或DataGrid選擇對(duì)應(yīng)的實(shí)體,那么會(huì)自動(dòng)創(chuàng)建AutoForm下面的FormElement以及DataGrid下的column,這樣就可以極大提高頁(yè)面的開(kāi)發(fā)效率。

擴(kuò)展

在使用過(guò)程當(dāng)中,如果您發(fā)現(xiàn)Dorado7中新增加一些組件,但在目前的Rapido中還未將其包含進(jìn)來(lái),那么您可以自己動(dòng)手編寫(xiě)接口的實(shí)現(xiàn)將其添加到Rapido環(huán)境當(dāng)中。
要在Rapido中添加一個(gè)新的組件,需要實(shí)現(xiàn)兩個(gè)接口,分別是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();
 /**
 * 組件顯示圖標(biāo)
 * @return 圖標(biāo)地址
 */
 String getIcon();
 /**
 * 對(duì)組件支持的某些屬性進(jìn)行特殊處理
 * @return PropertySupport對(duì)象的集合
 */
 Collection<PropertySupport> getPropertySupports();
 /**
 * 當(dāng)前組件下可以使用哪些子組件
 * @return ISupport對(duì)象集合
 */
 Collection<ISupport> getChildren();
 /**
 * 根據(jù)選擇的實(shí)體自動(dòng)創(chuàng)建子組件
 * @param entity 選擇的實(shí)體對(duì)象
 * @return 子組件集合
 */
 Collection<ComponentInfo> createChildrenByEntity(Entity entity);
 /**
 * 根據(jù)組件ID創(chuàng)建組件常用屬性
 * @param componentId 組件ID
 * @return 組件屬性集合
 */
 Collection<ComponentProperty> createComponentPropertysByComponentId(String componentId);
 /**
 * @return 是否支持實(shí)體
 */
 boolean isSupportEntity();
 /**
 * @return 是否支持布局
 */
 boolean isSupportLayout();
 /**
 * @return 是否支持動(dòng)作
 */
 boolean isSupportAction();
 /**
 * @return 是否為容器類型組件
 */
 boolean isContainer();
 /**
 * @return 是否可以獨(dú)立存在
 */
 boolean isAlone();
}
ISupport接口實(shí)現(xiàn)編寫(xiě)完成之后需要配置到Spring環(huán)境當(dāng)中,這樣在Rapido組件編輯頁(yè)面當(dāng)中就可以看到定義的組件信息。在頁(yè)面預(yù)覽時(shí)如果希望定義的組件能被正確輸出,我們還需要定義一個(gè)對(duì)應(yīng)的IConverter接口實(shí)現(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頁(yè)面生成時(shí),輸出組件對(duì)應(yīng)的xml信息
 * @author jacky.gao@bstek.com
 * @since 2012-8-25
 */
public interface IConverter{
 /**
 * 根據(jù)給定的組件信息生成組件對(duì)應(yīng)的XML
 * @param component 組件信息
 * @param ruleSet 組件對(duì)應(yīng)的Dorado7的規(guī)則信息
 * @param rootElement view.xml文檔的根
 * @return 返回組件的Dom4j的Element對(duì)象
 * @throws Exception
 */
 Element convert(ComponentInfo component,RuleSet ruleSet,Element rootElement) throws Exception;
 /**
 * 當(dāng)前Converter是否支持給定的組件
 * @param component 給定要判斷的組件
 * @return 是否支持
 */
 boolean support(ComponentInfo component);
}
IConverter編寫(xiě)完成后,同樣需要配置到Spring環(huán)境當(dāng)中,這樣新增組件的工作就完成了。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)