控件Widget

冀耀
2023-12-01
package api;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.util.ArrayList;

import com.fr.base.Formula;
import com.fr.base.IconManager;
import com.fr.base.Parameter;
import com.fr.base.background.ColorBackground;
import com.fr.base.mobile.FileUploadModeState;
import com.fr.base.mobile.TextInputMode;
import com.fr.data.ClassSubmitJob;
import com.fr.data.condition.CommonCondition;
import com.fr.data.core.Compare;
import com.fr.data.core.db.dml.Table;
import com.fr.data.impl.CustomDictionary;
import com.fr.data.impl.DBTableData;
import com.fr.data.impl.DatabaseDictionary;
import com.fr.data.impl.FormulaDictionary;
import com.fr.data.impl.NameDatabaseConnection;
import com.fr.data.impl.NameTableData;
import com.fr.data.impl.RecursionTableData;
import com.fr.data.impl.TableDataDictionary;
import com.fr.data.impl.TreeNodeAttr;
import com.fr.design.form.layout.FRHorizontalLayout;
import com.fr.form.main.parameter.FormParameterUI;
import com.fr.form.parameter.FormSubmitButton;
import com.fr.form.ui.CheckBox;
import com.fr.form.ui.CheckBoxGroup;
import com.fr.form.ui.ComboBox;
import com.fr.form.ui.ComboCheckBox;
import com.fr.form.ui.DateEditor;
import com.fr.form.ui.FileEditor;
import com.fr.form.ui.FreeButton;
import com.fr.form.ui.IframeEditor;
import com.fr.form.ui.ListEditor;
import com.fr.form.ui.MultiFileEditor;
import com.fr.form.ui.NumberEditor;
import com.fr.form.ui.Password;
import com.fr.form.ui.RadioGroup;
import com.fr.form.ui.TextArea;
import com.fr.form.ui.TextEditor;
import com.fr.form.ui.TreeComboBoxEditor;
import com.fr.form.ui.TreeEditor;
import com.fr.form.ui.Widget;
import com.fr.form.ui.container.WAbsoluteLayout;
import com.fr.form.ui.container.WParameterLayout;
import com.fr.form.ui.mobile.impl.DefaultMobileParameterStyle;
import com.fr.form.ui.reg.CustomReg;
import com.fr.form.ui.tree.LayerConfig;
import com.fr.form.ui.tree.LayerDependence;
import com.fr.io.TemplateWorkBookIO;
import com.fr.js.Commit2DBJavaScript;
import com.fr.js.EmailJavaScript;
import com.fr.js.JavaScriptImpl;
import com.fr.main.impl.WorkBook;
import com.fr.main.parameter.ReportParameterAttr;
import com.fr.report.cell.DefaultTemplateCellElement;
import com.fr.report.cell.cellattr.CellExpandAttr;
import com.fr.report.web.button.form.DefaultListener;
import com.fr.report.web.button.form.TreeNodeToggleButton;
import com.fr.report.web.button.write.AppendRowButton;
import com.fr.report.web.button.write.DeleteRowButton;
import com.fr.report.worksheet.WorkSheet;
import com.fr.stable.ColumnRow;
import com.fr.stable.ColumnRowGroup;
import com.fr.stable.ListMap;
import com.fr.write.DBManipulation;
import com.fr.write.DMLConfigJob;
import com.fr.write.NameSubmitJob;
import com.fr.write.config.ColumnConfig;
import com.fr.write.config.IntelliDMLConfig;

import java.util.Arrays;
import java.util.TreeMap;

/**
 * 控件
 * 
 * @author Administrator
 */
public class CellWidget {

	public static void main(String[] args) {
		try {
			ServerConnector.remote();

			WorkBook workbook = new WorkBook();

			workbook.putTableData("ds1",
					new DBTableData(new NameDatabaseConnection("FRDemo"), "select * from department"));

			RecursionTableData treeDS = new RecursionTableData();
			treeDS.setOriginalTableDataName("ds1");
			treeDS.setMarkFieldName("did");
			treeDS.setParentmarkFieldName("fid");
			workbook.putTableData("Tree1", treeDS);

			WorkSheet sheet = new WorkSheet();

			int row = 0;

			DefaultTemplateCellElement cell = new DefaultTemplateCellElement(0, row ++);
			cell.setWidget(getTextEditor());
			sheet.addCellElement(cell);

			cell = new DefaultTemplateCellElement(0, row ++);
			cell.setWidget(getTextArea());
			sheet.addCellElement(cell);

			cell = new DefaultTemplateCellElement(0, row ++);
			cell.setWidget(getNumberEditor());
			sheet.addCellElement(cell);

			cell = new DefaultTemplateCellElement(0, row ++);
			cell.setWidget(getPassword());
			sheet.addCellElement(cell);

			cell = new DefaultTemplateCellElement(0, row);
			cell.setWidget(getFreeButton());
			CellExpandAttr expand = new CellExpandAttr();
			expand.setUpParentDefault(false);
			// 上父格折叠一片,左父格折叠一个
			expand.setUpParentColumnRow(ColumnRow.valueOf(4, row));
			cell.setCellExpandAttr(expand);
			sheet.addCellElement(cell);
			cell = new DefaultTemplateCellElement(1, row);
			cell.setWidget(getCustomButton());
			sheet.addCellElement(cell);
			cell = new DefaultTemplateCellElement(2, row);
			cell.setWidget(getAppendRowButton());
			sheet.addCellElement(cell);
			cell = new DefaultTemplateCellElement(3, row);
			cell.setWidget(getDeleteRowButton());
			sheet.addCellElement(cell);
			cell = new DefaultTemplateCellElement(4, row);
			cell.setWidget(getTreeNodeToggleButton());
			sheet.addCellElement(cell);
			expand = new CellExpandAttr();
			expand.setDirection((byte) 1);
			cell.setCellExpandAttr(expand);
			cell = new DefaultTemplateCellElement(5, row);
			cell.setWidget(getFormSubmitButton());
			sheet.addCellElement(cell);

			row ++;

			cell = new DefaultTemplateCellElement(0, row ++);
			cell.setWidget(getCheckBox());
			sheet.addCellElement(cell);

			cell = new DefaultTemplateCellElement(0, row ++);
			cell.setWidget(getRadioGroup());
			sheet.addCellElement(cell);

			cell = new DefaultTemplateCellElement(0, row ++);
			cell.setWidget(getCheckBox());
			sheet.addCellElement(cell);

			cell = new DefaultTemplateCellElement(0, row ++);
			cell.setWidget(getComboBox());
			sheet.addCellElement(cell);

			cell = new DefaultTemplateCellElement(0, row ++);
			cell.setWidget(getComboCheckBox());
			sheet.addCellElement(cell);

			cell = new DefaultTemplateCellElement(0, row ++);
			cell.setWidget(getDateEditor());
			sheet.addCellElement(cell);

			cell = new DefaultTemplateCellElement(0, row ++);
			cell.setWidget(getMultiFileEditor());
			sheet.addCellElement(cell);

			cell = new DefaultTemplateCellElement(0, row ++);
			cell.setWidget(getListEditor());
			sheet.addCellElement(cell);

			cell = new DefaultTemplateCellElement(0, row ++);
			cell.setWidget(getIframeEditor());
			sheet.addCellElement(cell);

			cell = new DefaultTemplateCellElement(0, row ++);
			cell.setWidget(getTreeComboBoxEditor());
			sheet.addCellElement(cell);

			cell = new DefaultTemplateCellElement(0, row ++, 4, 8, "");
			cell.setWidget(getTreeEditor());
			sheet.addCellElement(cell);

			workbook.addReport(sheet);

			parameter(workbook);

			TemplateWorkBookIO.writeTemplateWorkBook(workbook, "控件.cpt");
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		ServerConnector.disconnect();
	}

	/**
	 * 参数面板
	 * 
	 * @param workbook
	 */
	public static void parameter(WorkBook workbook) {
		ReportParameterAttr p = new ReportParameterAttr();
		FormParameterUI ui = new FormParameterUI();
		WParameterLayout layout = new WParameterLayout();
		ui.setContainer(layout);
		p.setParameterUI(ui);
		workbook.setReportParameterAttr(p);

		/*
		 * 添加控件
		 */
		TextEditor te = new TextEditor();
		te.setWidgetName("te");
		layout.addWidget(new WAbsoluteLayout.BoundsWidget(te, new Rectangle(0, 0, 70, 20)));
		NumberEditor ne = new NumberEditor();
		ne.setWidgetName("ne");
		layout.addWidget(new WAbsoluteLayout.BoundsWidget(ne, new Rectangle(100, 0, 70, 20)));
		FreeButton fb = new FreeButton();
		fb.setWidgetName("fb");
		layout.addWidget(new WAbsoluteLayout.BoundsWidget(fb, new Rectangle(200, 0, 70, 20)));

		layout.addMobileWidget("ne");
		layout.addToMobileList("te");

		/*
		 * 属性
		 */
		// 基本
		layout.setWidgetName("para2");
		// 高级
		layout.setLabelName("label_name");
		layout.setBackground(ColorBackground.getInstance(Color.green));
		layout.setDelayDisplayContent(false);
		layout.setUseParamsTemplate(true);
		layout.setPosition(FRHorizontalLayout.RIGHT);
		p.setAlign(FRHorizontalLayout.RIGHT);
		// 尺寸
		layout.setDesignWidth(801);
		ui.setDesignSize(new Dimension(801, 70));

		/*
		 * 事件
		 */
		layout.addListener(new DefaultListener(Widget.EVENT_CLICK, new JavaScriptImpl("alert(123);")));

		/*
		 * 移动端
		 */
		// 手机属性
		layout.setMobileParamStyle(new DefaultMobileParameterStyle());
		// 组件顺序
		layout.setSorted(true);
	}

	/**
	 * 文本控件
	 * 
	 * @return
	 */
	public static Widget getTextEditor() {
		TextEditor w = new TextEditor();
		// 控件名称
		w.setWidgetName("TextEditor");
		// 可用
		w.setEnabled(true);
		// 可见
		w.setVisible(true);
		// 水印
		w.setWaterMark("watermark");
		// 允许为空
		w.setAllowBlank(true);
		// 填写规则 - 长度
		// LengthReg regex = new LengthReg();
		// regex.setMaxLen(3);
		// regex.setMinLen(1);
		// 填写规则 - 邮件
		// MailReg regex = new MailReg();
		// 填写规则 - 身份证
		// IDCardReg regex = new IDCardReg();
		// 填写规则 - 邮编
		// PostCardReg regex = new PostCardReg();
		// 填写规则 - 身份证
		// IDCardReg regex = new IDCardReg();
		// 填写规则 - 电话
		// PhoneReg regex = new PhoneReg();
		// regex.setRegString("024-12345678");
		// 填写规则 - 手机
		// MobileReg regex = new MobileReg();
		// 填写规则 - 自定义
		CustomReg regex = new CustomReg("#0.00");
		w.setRegex(regex);

		// 错误提示
		w.setRegErrorMessage("error");

		// 事件
		JavaScriptImpl j = new JavaScriptImpl("alert(ddd);");
		j.setParameters(new Parameter[] { new Parameter("ddd", new Formula("now()")) });
		j.addJSImort("scripts/js/my.js");
		w.addListener(new DefaultListener(Widget.AFTEREDIT, j));

		// 移动端
		w.getMobileScanCodeAttr().setTextInputMode(TextInputMode.ONLY_SUPPORT_MANUAL);

		return w;
	}

	/**
	 * 文本域控件
	 * 
	 * @return
	 */
	public static Widget getTextArea() {
		TextArea w = new TextArea();
		// 控件名称
		w.setWidgetName("TextArea");
		// 可用
		w.setEnabled(true);
		// 可见
		w.setVisible(true);
		// 水印
		w.setWaterMark("watermark");
		// 允许为空
		w.setAllowBlank(false);
		// 错误提示
		w.setErrorMessage("error");
		// 填写规则 - 长度
		// LengthReg regex = new LengthReg();
		// regex.setMaxLen(3);
		// regex.setMinLen(1);
		// MobileReg regex = new MobileReg();
		// 填写规则 - 自定义
		CustomReg regex = new CustomReg("#0.00");
		w.setRegex(regex);

		// 错误提示
		w.setRegErrorMessage("error");

		// 事件
		JavaScriptImpl j = new JavaScriptImpl("alert(ddd);");
		j.setParameters(new Parameter[] { new Parameter("ddd", new Formula("now()")) });
		j.addJSImort("scripts/js/my.js");
		w.addListener(new DefaultListener(Widget.AFTEREDIT, j));

		return w;
	}

	/**
	 * 数字控件
	 * 
	 * @return
	 */
	public static Widget getNumberEditor() {
		NumberEditor w = new NumberEditor();
		// 控件名称
		w.setWidgetName("NumberEditor");
		// 可用
		w.setEnabled(true);
		// 可见
		w.setVisible(true);
		// 水印
		w.setWaterMark("watermark");
		// 允许为空
		w.setAllowBlank(false);
		// 错误提示
		w.setErrorMessage("error");
		// 允许小数
		w.setAllowDecimals(true);
		// 小数位数
		w.setMaxDecimalLength(3);
		// 允许负数
		w.setAllowNegative(false);
		// 需要最大值
		w.setMaxValue(1000d);
		// 需要最小值
		w.setMinValue(2d);

		// 错误提示
		w.setRegErrorMessage("error");

		// 事件
		JavaScriptImpl j = new JavaScriptImpl("alert(ddd);");
		j.setParameters(new Parameter[] { new Parameter("ddd", new Formula("now()")) });
		j.addJSImort("scripts/js/my.js");
		w.addListener(new DefaultListener(Widget.AFTEREDIT, j));

		return w;
	}

	/**
	 * 密码控件
	 * 
	 * @return
	 */
	public static Widget getPassword() {
		Password w = new Password();
		// 控件名称
		w.setWidgetName("Password");
		// 可用
		w.setEnabled(true);
		// 可见
		w.setVisible(true);
		// 水印
		w.setWaterMark("watermark");
		// 允许为空
		w.setAllowBlank(false);
		// 错误提示
		w.setErrorMessage("error");
		// 填写规则 - 长度
		// LengthReg regex = new LengthReg();
		// regex.setMaxLen(3);
		// regex.setMinLen(1);
		// MobileReg regex = new MobileReg();
		// 填写规则 - 自定义
		CustomReg regex = new CustomReg("#0.00");
		w.setRegex(regex);

		// 错误提示
		w.setRegErrorMessage("error");

		// 事件
		JavaScriptImpl j = new JavaScriptImpl("alert(ddd);");
		j.setParameters(new Parameter[] { new Parameter("ddd", new Formula("now()")) });
		j.addJSImort("scripts/js/my.js");
		w.addListener(new DefaultListener(Widget.AFTEREDIT, j));

		return w;
	}

	/**
	 * 普通按钮控件
	 * 
	 * @return
	 */
	public static Widget getFreeButton() {
		FreeButton w = new FreeButton();
		// 控件名称
		w.setWidgetName("FreeButton");
		// 可用
		w.setEnabled(true);
		// 可见
		w.setVisible(true);
		// 按钮名字
		w.setText("FreeButton");
		// 按钮图标
		w.setIconName(IconManager.SUBMIT.getName());
		// 快捷键
		w.setHotkeys("tab");

		// 事件 - 提交入库
		Commit2DBJavaScript d = new Commit2DBJavaScript();
		DBManipulation db = new DBManipulation();
		db.setName("提交1");
		// 数据库
		db.setDBName("FRDemo");
		// 模式、表名
		Table table = new Table("", "销量");
		// 提交类型
		IntelliDMLConfig c = new IntelliDMLConfig();
		/*
		 * // 删除提交
		 * DeleteConfig c = new DeleteConfig();
		 * // 插入提交
		 * InsertConfig c = new InsertConfig();
		 * // 更新提交
		 * UpdateConfig c = new UpdateConfig();
		 */
		c.setTable(table);
		// 未修改不更新
		c.setUpdateSelected(true);
		c.setDialect(null);
		// 值
		c.addColumnConfig(new ColumnConfig("地区", ColumnRow.valueOf(0, 0), true, true));
		c.addColumnConfig(new ColumnConfig("销售员",
				new ColumnRowGroup(new ColumnRow[] { ColumnRow.valueOf("A1"), ColumnRow.valueOf("B2") }),
				false, false));
		// 提交条件
		c.setCondition(new CommonCondition("地区", Compare.NOT_EQUAL, ""));
		// 提交事件
		c.addSubmitJob(new NameSubmitJob("提交事件", new DMLConfigJob()));
		ClassSubmitJob cj = new ClassSubmitJob("custom.MySubmitJob");
		TreeMap<String, Object> map = new TreeMap<String, Object>();
		map.put("p1", "123");
		cj.setPropertyMap(new ListMap<String, Object>(map));
		c.addSubmitJob(new NameSubmitJob("自定义事件", cj));
		// 回调函数
		d.setCallBack(new JavaScriptImpl("alert(123);"));

		db.setDmlConfig(c);
		d.setDBManipulation(Arrays.asList(db));

		w.addListener(new DefaultListener(Widget.EVENT_CLICK, d));

		return w;
	}

	/**
	 * 自定义按钮控件
	 * 
	 * @return
	 */
	public static Widget getCustomButton() {
		FreeButton w = new FreeButton();
		w.setCustomStyle(true);
		// 控件名称
		w.setWidgetName("CustomButton");
		// 可用
		w.setEnabled(true);
		// 可见
		w.setVisible(true);
		// 按钮名字
		w.setText("CustomButton");
		// 按钮图标
		w.setIconName(IconManager.ADD.getName());
		// 快捷键
		w.setHotkeys("tab");
		// 初始背景
		w.setInitialBackground(ColorBackground.getInstance(Color.yellow));
		// 鼠标浮动背景
		w.setOverBackground(ColorBackground.getInstance(Color.RED));
		// 鼠标点击背景
		w.setClickBackground(ColorBackground.getInstance(Color.GREEN));

		// 事件
		EmailJavaScript e = new EmailJavaScript();
		e.setMailTo("");
		e.setTitle("title");
		e.setMainText("text");
		w.addListener(new DefaultListener(Widget.EVENT_CLICK, e));

		return w;
	}

	/**
	 * 插入行按钮控件
	 * 
	 * @return
	 */
	public static Widget getAppendRowButton() {
		AppendRowButton w = new AppendRowButton();
		// 控件名称
		w.setWidgetName("AppendRowButton");
		// 可用
		w.setEnabled(true);
		// 可见
		w.setVisible(true);
		// 按钮名字
		w.setText("AppendRowButton");
		// 快捷键
		w.setHotkeys("tab");
		// 指定单元格
		w.setFixCell(ColumnRow.valueOf(3, 3));
		// 指定行数
		w.setCount(2);
		// 按钮图标
		w.setIconName(IconManager.APPENDROW.getName());
		// 事件
		JavaScriptImpl j = new JavaScriptImpl("alert(ddd);");
		j.setParameters(new Parameter[] { new Parameter("ddd", new Formula("now()")) });
		j.addJSImort("scripts/js/my.js");
		w.addListener(new DefaultListener(Widget.EVENT_CLICK, j));

		return w;
	}

	/**
	 * 删除行按钮控件
	 * 
	 * @return
	 */
	public static Widget getDeleteRowButton() {
		DeleteRowButton w = new DeleteRowButton();
		// 控件名称
		w.setWidgetName("DeleteRowButton");
		// 可用
		w.setEnabled(true);
		// 可见
		w.setVisible(true);
		// 按钮名字
		w.setText("DeleteRowButton");
		// 快捷键
		w.setHotkeys("tab");
		// 指定单元格
		w.setFixCell(ColumnRow.valueOf("A1"));
		// 按钮图标
		w.setIconName(IconManager.DELETEROW.getName());
		// 事件
		JavaScriptImpl j = new JavaScriptImpl("alert(ddd);");
		j.setParameters(new Parameter[] { new Parameter("ddd", new Formula("now()")) });
		j.addJSImort("scripts/js/my.js");
		w.addListener(new DefaultListener(Widget.EVENT_CLICK, j));

		return w;
	}

	/**
	 * 参数提交按钮控件
	 * 
	 * @return
	 */
	public static Widget getFormSubmitButton() {
		FormSubmitButton w = new FormSubmitButton();
		w.setCustomStyle(true);
		// 控件名称
		w.setWidgetName("FormSubmitButton");
		// 可用
		w.setEnabled(true);
		// 可见
		w.setVisible(true);
		// 按钮名字
		w.setText("FormSubmitButton");
		// 按钮图标
		w.setIconName(IconManager.SUBMIT.getName());
		// 快捷键
		w.setHotkeys("enter");
		// 事件
		JavaScriptImpl j = new JavaScriptImpl("alert(ddd);");
		j.setParameters(new Parameter[] { new Parameter("ddd", new Formula("now()")) });
		j.addJSImort("scripts/js/my.js");
		w.addListener(new DefaultListener(Widget.EVENT_CLICK, j));

		return w;
	}

	/**
	 * 节点数按钮控件
	 * 
	 * @return
	 */
	public static Widget getTreeNodeToggleButton() {
		TreeNodeToggleButton w = new TreeNodeToggleButton();
		// 控件名称
		w.setWidgetName("TreeNodeToggleButton");
		// 可用
		w.setEnabled(true);
		// 可见
		w.setVisible(true);

		// 事件
		JavaScriptImpl j = new JavaScriptImpl("alert(ddd);");
		j.setParameters(new Parameter[] { new Parameter("ddd", new Formula("now()")) });
		j.addJSImort("scripts/js/my.js");
		w.addListener(new DefaultListener(Widget.EVENT_CLICK, j));

		return w;
	}

	/**
	 * 复选按钮控件
	 * 
	 * @return
	 */
	public static Widget getCheckBox() {
		CheckBox w = new CheckBox();
		// 控件名称
		w.setWidgetName("CheckBox");
		// 可用
		w.setEnabled(true);
		// 可见
		w.setVisible(true);
		// 文本
		w.setText("CheckBox");

		// 事件
		JavaScriptImpl j = new JavaScriptImpl("alert(ddd);");
		j.setParameters(new Parameter[] { new Parameter("ddd", new Formula("now()")) });
		j.addJSImort("scripts/js/my.js");
		w.addListener(new DefaultListener(Widget.EVENT_STATECHANGE, j));

		return w;
	}

	/**
	 * 单选按钮组控件
	 * 
	 * @return
	 */
	public static Widget getRadioGroup() {
		RadioGroup w = new RadioGroup();
		// 控件名称
		w.setWidgetName("RadioGroup");
		// 可用
		w.setEnabled(true);
		// 可见
		w.setVisible(true);
		// 允许为空
		w.setAllowBlank(false);
		// 错误提示
		w.setErrorMessage("error");
		// 自适应
		w.setAdaptive(false);
		// 展示列数
		w.setColumnsInRow(3);
		// 数据字典
		FormulaDictionary dic = new FormulaDictionary();
		dic.setProduceFormula("'实际值'");
		dic.setExcuteFormula("'显示值'");
		w.setDictionary(dic);

		// 事件
		JavaScriptImpl j = new JavaScriptImpl("alert(ddd);");
		j.setParameters(new Parameter[] { new Parameter("ddd", new Formula("now()")) });
		j.addJSImort("scripts/js/my.js");
		w.addListener(new DefaultListener(Widget.EVENT_STATECHANGE, j));

		return w;
	}

	/**
	 * 复选按钮组控件
	 * 
	 * @return
	 */
	public static Widget getCheckboxGroup() {
		CheckBoxGroup w = new CheckBoxGroup();
		// 控件名称
		w.setWidgetName("CheckboxGroup");
		// 可用
		w.setEnabled(true);
		// 可见
		w.setVisible(true);
		// 允许为空
		w.setAllowBlank(false);
		// 错误提示
		w.setErrorMessage("error");
		// 自适应
		w.setAdaptive(false);
		// 展示列数
		w.setColumnsInRow(3);
		// 数据字典
		FormulaDictionary dic = new FormulaDictionary();
		dic.setProduceFormula("'实际值'");
		dic.setExcuteFormula("'显示值'");
		w.setDictionary(dic);
		// 提供全选
		w.setChooseAll(true);
		// 返回类型
		w.setReturnString(true);
		// 分隔符
		w.setDelimiter(",");
		// 起始符
		w.setStartSymbol("'");
		// 结束符
		w.setEndSymbol("'");

		// 事件
		JavaScriptImpl j = new JavaScriptImpl("alert(ddd);");
		j.setParameters(new Parameter[] { new Parameter("ddd", new Formula("now()")) });
		j.addJSImort("scripts/js/my.js");
		w.addListener(new DefaultListener(Widget.EVENT_STATECHANGE, j));

		return w;
	}

	/**
	 * 下拉框控件
	 * 
	 * @return
	 */
	public static Widget getComboBox() {
		ComboBox w = new ComboBox();
		// 控件名称
		w.setWidgetName("ComboBox");
		// 可用
		w.setEnabled(true);
		// 可见
		w.setVisible(true);
		// 允许为空
		w.setAllowBlank(false);
		// 错误提示
		w.setErrorMessage("error");
		// 水印
		w.setWaterMark("watermark");
		// 数据字典
		FormulaDictionary dic = new FormulaDictionary();
		dic.setProduceFormula("'实际值'");
		dic.setExcuteFormula("'显示值'");
		w.setDictionary(dic);
		// 允许直接编辑
		w.setDirectEdit(true);
		// 允许自定义值
		w.setCustomData(false);

		// 事件
		JavaScriptImpl j = new JavaScriptImpl("alert(ddd);");
		j.setParameters(new Parameter[] { new Parameter("ddd", new Formula("now()")) });
		j.addJSImort("scripts/js/my.js");
		w.addListener(new DefaultListener(Widget.AFTEREDIT, j));

		return w;
	}

	/**
	 * 下拉复选框控件
	 * 
	 * @return
	 */
	public static Widget getComboCheckBox() {
		ComboCheckBox w = new ComboCheckBox();
		// 控件名称
		w.setWidgetName("ComboCheckBox");
		// 可用
		w.setEnabled(true);
		// 可见
		w.setVisible(true);
		// 允许为空
		w.setAllowBlank(false);
		// 错误提示
		w.setErrorMessage("error");
		// 水印
		w.setWaterMark("watermark");
		// 标签形式显示
		w.setSupportTag(false);
		// 数据字典
		FormulaDictionary dic = new FormulaDictionary();
		dic.setProduceFormula("'实际值'");
		dic.setExcuteFormula("'显示值'");
		w.setDictionary(dic);
		// 返回类型
		w.setReturnString(true);
		// 分隔符
		w.setDelimiter(",");
		// 起始符
		w.setStartSymbol("'");
		// 结束符
		w.setEndSymbol("'");
		// 允许直接编辑
		w.setDirectEdit(true);
		// 允许自定义值
		w.setCustomData(false);

		// 事件
		JavaScriptImpl j = new JavaScriptImpl("alert(ddd);");
		j.setParameters(new Parameter[] { new Parameter("ddd", new Formula("now()")) });
		j.addJSImort("scripts/js/my.js");
		w.addListener(new DefaultListener(Widget.AFTEREDIT, j));

		return w;
	}

	/**
	 * 日期框控件
	 * 
	 * @return
	 */
	public static Widget getDateEditor() {
		DateEditor w = new DateEditor();
		// 控件名称
		w.setWidgetName("DateEditor");
		// 可用
		w.setEnabled(true);
		// 可见
		w.setVisible(true);
		// 格式
		w.setReturnDate(true);
		w.setFormatText("yyyy-MM-dd");
		// 起始日期
		// w.setStartDate(new java.util.Date());
		w.setStartDateFM(new Formula("now()"));
		// 结束日期
		w.setEndText("2022-01-01");
		// 属性 - 允许为空
		w.setAllowBlank(false);
		// 错误提示
		w.setErrorMessage("error");
		// 水印
		w.setWaterMark("watermark");
		// 返回类型
		w.setReturnDate(true);
		// 允许直接编辑
		w.setDirectEdit(true);

		// 事件
		JavaScriptImpl j = new JavaScriptImpl("alert(ddd);");
		j.setParameters(new Parameter[] { new Parameter("ddd", new Formula("now()")) });
		j.addJSImort("scripts/js/my.js");
		w.addListener(new DefaultListener(Widget.AFTEREDIT, j));

		return w;
	}

	/**
	 * 文件框控件
	 * 
	 * @return
	 */
	public static Widget getMultiFileEditor() {
		MultiFileEditor w = new MultiFileEditor();
		// 控件名称
		w.setWidgetName("MultiFileEditor");
		// 可用
		w.setEnabled(true);
		// 可见
		w.setVisible(true);
		// 允许为空
		w.setAllowBlank(false);
		// 错误提示
		w.setErrorMessage("error");
		// 只支持单文件上传
		w.setSingleFile(true);
		// 文件类型
		w.setAccept("jpg|png|gif");
		// 大小限制
		w.setMaxSize(300);
		// 上传方式
		w.getMobileAttr().setFileUploadModeState(FileUploadModeState.ONLY_TAKE_PHOTOS);

		// 事件
		JavaScriptImpl j = new JavaScriptImpl("alert(ddd);");
		j.setParameters(new Parameter[] { new Parameter("ddd", new Formula("now()")) });
		j.addJSImort("scripts/js/my.js");
		w.addListener(new DefaultListener(FileEditor.EVENT_UPLOAD_CALLBACK, j));

		return w;
	}

	/**
	 * 列表控件
	 * 
	 * @return
	 */
	public static Widget getListEditor() {
		ListEditor w = new ListEditor();
		// 控件名称
		w.setWidgetName("ListEditor");
		// 可用
		w.setEnabled(true);
		// 可见
		w.setVisible(true);
		// 允许为空
		w.setAllowBlank(false);
		// 错误提示
		w.setErrorMessage("error");
		// 数据字典
		FormulaDictionary dic = new FormulaDictionary();
		dic.setProduceFormula("'实际值'");
		dic.setExcuteFormula("'显示值'");
		w.setDictionary(dic);
		// 去除重复数据
		w.setRemoveRepeat(true);
		// 需要表头
		w.setNeedHead(true);

		// 事件
		JavaScriptImpl j = new JavaScriptImpl("alert(ddd);");
		j.setParameters(new Parameter[] { new Parameter("ddd", new Formula("now()")) });
		j.addJSImort("scripts/js/my.js");
		w.addListener(new DefaultListener(FileEditor.EVENT_CLICK, j));

		return w;
	}

	/**
	 * 网页框控件
	 * 
	 * @return
	 */
	public static Widget getIframeEditor() {
		IframeEditor w = new IframeEditor();
		// 控件名称
		w.setWidgetName("IframeEditor");
		// 可用
		w.setEnabled(true);
		// 可见
		w.setVisible(true);
		// 水平滚动条可见
		w.setOverflowx(true);
		// 垂直滚动条可见
		w.setOverflowy(false);
		// 地址
		w.setSrc("http://www.baidu.com");
		// 参数
		w.setParameters(new Parameter[] { new Parameter("p1", "123") });

		return w;
	}

	/**
	 * 下拉树控件
	 * 
	 * @return
	 */
	public static Widget getTreeComboBoxEditor() {
		TreeComboBoxEditor w = new TreeComboBoxEditor();
		// 控件名称
		w.setWidgetName("TreeComboBoxEditor");
		// 可用
		w.setEnabled(true);
		// 可见
		w.setVisible(true);
		// 构建树
		w.setLayerBuild(true);
		ArrayList<LayerConfig> lcs = new ArrayList<LayerConfig>();
		LayerConfig lc;
		lc = new LayerConfig(1);
		lc.setTableData(new NameTableData("ds1"));
		lc.setDictionary(new TableDataDictionary(new NameTableData("ds1"), 2, 4));
		lc.setModelColumn(2);
		lc.setViewColumn(4);
		lcs.add(lc);
		lc = new LayerConfig(2);
		lc.setTableData(new NameTableData("ds1"));
		lc.setDictionary(new TableDataDictionary(new NameTableData("ds1"), 2, 4));
		lc.setModelColumn(2);
		lc.setViewColumn(4);
		ArrayList<LayerDependence> list = new ArrayList<LayerDependence>();
		list.add(new LayerDependence(1, 3));
		lc.addAll(list);
		lcs.add(lc);
		lc = new LayerConfig(3);
		lc.setTableData(new NameTableData("ds1"));
		lc.setDictionary(new TableDataDictionary(new NameTableData("ds1"), 2, 4));
		lc.setModelColumn(2);
		lc.setViewColumn(4);
		list = new ArrayList<LayerDependence>();
		list.add(new LayerDependence(2, 3));
		lc.addAll(list);
		lcs.add(lc);
		w.setLayerConfigs(lcs);
		// 水印
		w.setWaterMark("watermark");
		// 多选
		w.setMultipleSelection(true);
		// 异步加载
		w.setAjax(true);
		// 只返回叶子节点
		w.setSelectLeafOnly(false);
		// 结果返回完整层次路径
		w.setReturnFullPath(true);
		// 允许为空
		w.setAllowBlank(false);
		w.setErrorMessage("error");
		// 允许直接编辑
		w.setDirectEdit(true);
		// 允许自定义值
		w.setCustomData(false);

		// 事件
		JavaScriptImpl j = new JavaScriptImpl("alert(ddd);");
		j.setParameters(new Parameter[] { new Parameter("ddd", new Formula("now()")) });
		j.addJSImort("scripts/js/my.js");
		w.addListener(new DefaultListener("nodeadd", j));

		return w;
	}

	/**
	 * 视图树控件
	 * 
	 * @return
	 */
	public static Widget getTreeEditor() {
		TreeEditor w = new TreeEditor();
		// 控件名称
		w.setWidgetName("TreeEditor");
		// 可用
		w.setEnabled(true);
		// 可见
		w.setVisible(true);
		// 构建树
		w.setLayerBuild(false);
		// 自动构建
		// w.setDictionary(new TableDataDictionary(new NameTableData("Tree1"), 2, 4));
		// 普通分层构建
		// 性能优先
		w.setPerformanceFirst(true);
		TreeNodeAttr node = new TreeNodeAttr();
		// 数据库表
		node.setDictionary(new DatabaseDictionary(new NameDatabaseConnection("FRDemo"), "department", 2, 4));
		// 数据查询
		node.setDictionary(new TableDataDictionary(new NameTableData("ds1"), 2, 4));
		// 自定义查询
		node.setDictionary(new CustomDictionary(new Object[] { 1, 2 }, new Object[] { 1, 2 }));
		// 公式
		FormulaDictionary fd = new FormulaDictionary();
		fd.setExcuteFormula("1");
		fd.setProduceFormula("2");
		node.setDictionary(fd);
		w.setTreeNodeAttr(new TreeNodeAttr[] { node });
		// 去除重复
		w.setRemoveRepeat(true);
		// 多选
		w.setMultipleSelection(true);
		// 异步加载
		w.setAjax(true);
		// 只返回叶子节点
		w.setSelectLeafOnly(false);
		// 结果返回完整层次路径
		w.setReturnFullPath(true);
		// 属性 - 允许为空
		w.setAllowBlank(false);
		w.setErrorMessage("error");

		// 事件
		JavaScriptImpl j = new JavaScriptImpl("alert(ddd);");
		j.setParameters(new Parameter[] { new Parameter("ddd", new Formula("now()")) });
		j.addJSImort("scripts/js/my.js");
		w.addListener(new DefaultListener("nodeadd", j));

		return w;
	}
}

 类似资料: