forked from fanruan/finekit
richie
5 years ago
6 changed files with 306 additions and 10 deletions
@ -0,0 +1,30 @@
|
||||
package com.fanruan.api.report.form; |
||||
|
||||
import com.fr.data.act.Describer; |
||||
import com.fr.form.ui.Widget; |
||||
import com.fr.json.JSONException; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.script.Calculator; |
||||
import com.fr.stable.core.NodeVisitor; |
||||
import com.fr.stable.web.Repository; |
||||
|
||||
/** |
||||
* @author richie |
||||
* @version 10.0 |
||||
* Created by richie on 2019-09-10 |
||||
* 控件的插件接口 |
||||
*/ |
||||
public abstract class BaseWidget extends Widget implements Describer { |
||||
|
||||
@Override |
||||
public boolean isEditor() { |
||||
return false; |
||||
} |
||||
|
||||
@Override |
||||
public JSONObject createJSONConfig(Repository repository, Calculator calculator, NodeVisitor nodeVisitor) throws JSONException { |
||||
JSONObject jo = super.createJSONConfig(repository, calculator, nodeVisitor); |
||||
mixinJSON(repository, calculator, jo); |
||||
return jo; |
||||
} |
||||
} |
@ -1,10 +0,0 @@
|
||||
package com.fanruan.api.report.form; |
||||
|
||||
/** |
||||
* 允许自定义值的、允许直接编辑的、带重复的 --- 下拉框 下拉复选框 下拉树 |
||||
* @author Kalven |
||||
* @version 10.0 |
||||
* Created by Kalven on 2019/9/4 |
||||
*/ |
||||
public abstract class CustomWriteAbleRepeatEditor extends com.fr.form.ui.CustomWriteAbleRepeatEditor { |
||||
} |
@ -0,0 +1,64 @@
|
||||
package com.fanruan.api.report.form.category; |
||||
|
||||
import com.fanruan.api.report.form.BaseWidget; |
||||
import com.fanruan.api.report.form.describer.TextDescriber; |
||||
import com.fanruan.api.util.ArrayKit; |
||||
import com.fanruan.api.xml.XmlKit; |
||||
import com.fr.stable.script.CalculatorProvider; |
||||
import com.fr.stable.xml.XMLPrintWriter; |
||||
import com.fr.stable.xml.XMLableReader; |
||||
|
||||
/** |
||||
* @author richie |
||||
* @version 10.0 |
||||
* Created by richie on 2019-09-10 |
||||
*/ |
||||
public abstract class TextWidget extends BaseWidget { |
||||
|
||||
private TextDescriber textDescriber; |
||||
|
||||
/** |
||||
* 获取联动参数 |
||||
* |
||||
* @param c 当前算子 |
||||
* @return 放回当前控件依赖的参数 |
||||
*/ |
||||
public String[] dependence(CalculatorProvider c) { |
||||
return ArrayKit.EMPTY_STRING_ARRAY; |
||||
} |
||||
|
||||
/** |
||||
* 获取支持的事件 |
||||
* |
||||
* @return 当前控件支持的事件 |
||||
*/ |
||||
public String[] supportedEvents() { |
||||
return new String[]{AFTERINIT, BEFOREEDIT, AFTEREDIT, STOPEDIT}; |
||||
} |
||||
|
||||
@Override |
||||
public void readXML(XMLableReader reader) { |
||||
if (reader.isChildNode()) { |
||||
String tagName = reader.getTagName(); |
||||
if (TextDescriber.XML_TAG.equals(tagName)) { |
||||
textDescriber = (TextDescriber) XmlKit.readXMLable(reader); |
||||
} |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public void writeXML(XMLPrintWriter writer) { |
||||
if (textDescriber != null) { |
||||
XmlKit.writeXMLable(writer, textDescriber, TextDescriber.XML_TAG); |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public Object clone() throws CloneNotSupportedException { |
||||
TextWidget cloned = (TextWidget) super.clone(); |
||||
if (textDescriber != null) { |
||||
cloned.textDescriber = (TextDescriber) textDescriber.clone(); |
||||
} |
||||
return cloned; |
||||
} |
||||
} |
@ -0,0 +1,78 @@
|
||||
package com.fanruan.api.report.form.describer; |
||||
|
||||
import com.fanruan.api.cal.FormulaKit; |
||||
import com.fanruan.api.log.LogKit; |
||||
import com.fanruan.api.util.GeneralKit; |
||||
import com.fanruan.api.util.StringKit; |
||||
import com.fr.data.act.Describer; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.stable.script.CalculatorProvider; |
||||
import com.fr.stable.web.Repository; |
||||
import com.fr.stable.xml.XMLPrintWriter; |
||||
import com.fr.stable.xml.XMLable; |
||||
import com.fr.stable.xml.XMLableReader; |
||||
|
||||
/** |
||||
* @author richie |
||||
* @version 10.0 |
||||
* Created by richie on 2019-09-10 |
||||
*/ |
||||
public class EditTextDescriber implements Describer, XMLable { |
||||
|
||||
public static final String XML_TAG = "EditTextDescriber"; |
||||
|
||||
private boolean directEdit = true; |
||||
|
||||
private String waterMark; |
||||
|
||||
public EditTextDescriber() { |
||||
|
||||
} |
||||
|
||||
public boolean isDirectEdit() { |
||||
return this.directEdit; |
||||
} |
||||
|
||||
public void setDirectEdit(boolean directEdit) { |
||||
this.directEdit = directEdit; |
||||
} |
||||
|
||||
public void setWaterMark(String waterMark) { |
||||
this.waterMark = waterMark; |
||||
} |
||||
|
||||
public String getWaterMark() { |
||||
return waterMark; |
||||
} |
||||
|
||||
@Override |
||||
public void mixinJSON(Repository repo, CalculatorProvider c, JSONObject jo) { |
||||
jo.put("directEdit", directEdit); |
||||
if (StringKit.isNotBlank(waterMark)) { |
||||
if (FormulaKit.canBeFormula(waterMark)) { |
||||
try { |
||||
jo.put("watermark", GeneralKit.objectToString(FormulaKit.newFormula(waterMark).eval(c))); |
||||
} catch (Exception e) { |
||||
LogKit.error(e.getMessage(), e); |
||||
} |
||||
} else { |
||||
jo.put("watermark", waterMark); |
||||
} |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public void readXML(XMLableReader xmLableReader) { |
||||
|
||||
} |
||||
|
||||
@Override |
||||
public void writeXML(XMLPrintWriter xmlPrintWriter) { |
||||
|
||||
} |
||||
|
||||
@Override |
||||
public Object clone() throws CloneNotSupportedException { |
||||
return super.clone(); |
||||
} |
||||
} |
@ -0,0 +1,51 @@
|
||||
package com.fanruan.api.report.form.describer; |
||||
|
||||
import com.fr.data.act.Describer; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.stable.script.CalculatorProvider; |
||||
import com.fr.stable.web.Repository; |
||||
import com.fr.stable.xml.XMLPrintWriter; |
||||
import com.fr.stable.xml.XMLable; |
||||
import com.fr.stable.xml.XMLableReader; |
||||
|
||||
/** |
||||
* @author richie |
||||
* @version 10.0 |
||||
* Created by richie on 2019-09-10 |
||||
*/ |
||||
public class RepeatDescriber implements Describer, XMLable { |
||||
|
||||
public static final String XML_TAG = "RepeatDescriber"; |
||||
|
||||
private boolean removeRepeat = true; |
||||
|
||||
public boolean isRemoveRepeat() { |
||||
return this.removeRepeat; |
||||
} |
||||
|
||||
public void setRemoveRepeat(boolean removeRepeat) { |
||||
this.removeRepeat = removeRepeat; |
||||
} |
||||
|
||||
@Override |
||||
public void mixinJSON(Repository repo, CalculatorProvider c, JSONObject jo) { |
||||
if (removeRepeat) { |
||||
jo.put("norepeat", true); |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public void readXML(XMLableReader xmLableReader) { |
||||
|
||||
} |
||||
|
||||
@Override |
||||
public void writeXML(XMLPrintWriter xmlPrintWriter) { |
||||
|
||||
} |
||||
|
||||
@Override |
||||
public Object clone() throws CloneNotSupportedException { |
||||
return super.clone(); |
||||
} |
||||
} |
@ -0,0 +1,83 @@
|
||||
package com.fanruan.api.report.form.describer; |
||||
|
||||
import com.fanruan.api.util.StringKit; |
||||
import com.fr.data.act.Describer; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.stable.StringUtils; |
||||
import com.fr.stable.script.CalculatorProvider; |
||||
import com.fr.stable.web.Repository; |
||||
import com.fr.stable.xml.XMLPrintWriter; |
||||
import com.fr.stable.xml.XMLable; |
||||
import com.fr.stable.xml.XMLableReader; |
||||
|
||||
/** |
||||
* @author richie |
||||
* @version 10.0 |
||||
* Created by richie on 2019-09-10 |
||||
*/ |
||||
public class TextDescriber implements Describer, XMLable { |
||||
|
||||
public static final String XML_TAG = "TextDescriber"; |
||||
|
||||
private boolean allowBlank = true; |
||||
private String errorMessage; |
||||
private int fontSize = 12; |
||||
|
||||
public TextDescriber() { |
||||
|
||||
} |
||||
|
||||
public TextDescriber(boolean allowBlank) { |
||||
this.allowBlank = allowBlank; |
||||
} |
||||
|
||||
public boolean isAllowBlank() { |
||||
return this.allowBlank; |
||||
} |
||||
|
||||
public void setAllowBlank(boolean allowBlank) { |
||||
this.allowBlank = allowBlank; |
||||
} |
||||
|
||||
public int getFontSize() { |
||||
return this.fontSize; |
||||
} |
||||
|
||||
public void setFontSize(int size) { |
||||
this.fontSize = size; |
||||
} |
||||
|
||||
public String getErrorMessage() { |
||||
return errorMessage == null ? StringUtils.EMPTY : errorMessage; |
||||
} |
||||
|
||||
public void setErrorMessage(String errorMessage) { |
||||
this.errorMessage = errorMessage; |
||||
} |
||||
|
||||
@Override |
||||
public void readXML(XMLableReader xmLableReader) { |
||||
|
||||
} |
||||
|
||||
@Override |
||||
public void writeXML(XMLPrintWriter xmlPrintWriter) { |
||||
|
||||
} |
||||
|
||||
@Override |
||||
public Object clone() throws CloneNotSupportedException { |
||||
return super.clone(); |
||||
} |
||||
|
||||
@Override |
||||
public void mixinJSON(Repository repo, CalculatorProvider c, JSONObject jo) { |
||||
if (!allowBlank) { |
||||
jo.put("allowBlank", true); |
||||
} |
||||
if (StringKit.isNotEmpty(errorMessage)) { |
||||
jo.put("errorMessage", errorMessage); |
||||
} |
||||
jo.put("fontSize", this.fontSize); |
||||
} |
||||
} |
Loading…
Reference in new issue