在Dorado中我们可以看到更多形态的Editor编辑框,以及更多样化的下拉框使用方法
本范例对应的View:com.bstek.dorado.sample.widget包下的EditorAndTrigger.view.xml.
在Dorado开发中,Editor对象可以关联一到多个Trigger,在IDE属性配置中可以用','逗号隔开,如:
<TextEditor id="editor1"> <Property name="trigger">triggerClear,dropDownPoker</Property> </TextEditor>
本例采用了FormElement代替TextEditor,进行定义,FormElement是Dorado特别提供的表单元素:表单元素是一种组合式的控件,提供此组件的目的是为了使表单的定义变得更加简单。 一般而言,一个表单元素包含文本标签、编辑器、提示信息三个部分。 我们在实际应用中所见的大部分输入域都是由这三个部分组成的。
通过FormElement我们也可以方便的定义其trigger:
<FormElement> <Property name="label">自定义的Trigger1</Property> <Property name="trigger">trigger1</Property> <Editor/> </FormElement>
自定义Trigger
第一个编辑框:自定义的Trigger1
trigger1的onExecute()代码方法
参考: onExecute声明(建议直接参考Client-API):
在该方法中,我么定义:
arg.editor.set("text", "Trigger设置的值");
第二个编辑框:自定义的Trigger2
基于第一个编辑框的使用机制,我们知道可以在Trigger的onExecute自定义自己的逻辑,则我们在trigger2的onExecute()中写入如下代码:
var dialog = view.get("#dialog2"); dialog.set("userData", arg.editor); dialog.show();
这一次我们取到系统中的一个Dialog对话框,并显示出来
第三个编辑框:自定义的Trigger3
Trigger除了自定义逻辑之外,我们还可以自由的定义它的图标,它提供了icon属性,如本例:
<Trigger id="trigger3"> ...省略 <Property name="icon">>dorado/res/com/bstek/dorado/sample/widget/m2.gif</Property> </Trigger>
下拉框
普通的列表下拉框
在Dorado中下拉框也是一种Trigger,我们可以先在View中定义DropDown对象,再通过trigger属性进行关联,如本例:
<ListDropDown id="dropDownList"> <Property name="items">${dorado.getDataProvider("categoryInterceptor#getAll").getResult()}</Property> <Property name="property">categoryName</Property> </ListDropDown> <FormElement> <Property name="label">普通的列表下拉框</Property> <Property name="trigger">dropDownList</Property> <Editor/> </FormElement>
其中items属性是Dorado的一个内置EL表达式,用于激活DataProvider机制,根据之前我们对DataProvider的了解,这段服务定位表达式"catagoryInterceptor#getAll"最终表示定位到一个服务类的getAll方法,我们看看在sample-center中CatagoryInterceptor.java的getAll方法:
@DataProvider public Collection<Category> getAll() { return categoryDao.getAll(); }
这个方法被注册为DataProvider,并返回一个Category的列表。最终这个编辑框的下拉效果如下:
包含Grid的下拉框
在了解上例的基本原理后,我们就很容易的可以将一个Grid也放在下拉框中进行trigger绑定:
<ListDropDown id="dropDownGrid"> <Property name="items">${dorado.getDataProvider("categoryInterceptor#getAll").getResult()}</Property> <Property name="property">categoryName</Property> <Property name="width">260</Property> <DataColumn> <Property name="property">categoryName</Property> <Property name="width">100</Property> </DataColumn> <DataColumn> <Property name="property">description</Property> <Property name="width">*</Property> </DataColumn> </ListDropDown> <FormElement> <Property name="label">包含Grid的下拉框</Property> <Property name="labelPosition">left</Property> <Property name="trigger">dropDownGrid</Property> <Editor/> </FormElement>
效果如下:
格式化输入编辑框
IP地址编辑框
在应用中还存在很多有格式化输入的编辑框,我们希望这种编辑框在我们输入的时候就进行格式限定,如IP地址,日期时间,邮件,网址等。
在Dorado中提供了这种机制,如本例的IP地址处理,实现方法如下:
<FormElement> <Property name="label">IP地址编辑框</Property> <Editor> <CustomSpinner> <Property name="pattern">IP: [0,255].[0,255].[0,255].[0,255]</Property> <Property name="text">192,168,0,101</Property> </CustomSpinner> </Editor> </FormElement>
本例我们是通过Spinner控件完成格式化的控制,Spinner的详细说明请参考相关的Client-API.
值得一提的是Spinner也是Trigger的一种实现,只是做成现成可复用的控件而已。
日期时间编辑框
与上例相同,代码如下:
<FormElement> <Property name="trigger">defaultDateDropDown</Property> <Property name="label">较复杂的时间编辑框</Property> <Editor> <DateTimeSpinner> <Property name="type">dateTime</Property> </DateTimeSpinner> </Editor> </FormElement>
Attachments:
Editor and Trigger 5.png (image/png)
Editor and Trigger1.png (image/png)
Trigger1.png (image/png)
image2020-5-10 10:2:28.png (image/png)
image2020-5-10 10:3:6.png (image/png)
image2020-5-10 10:3:34.png (image/png)