diff --git a/src/com/fr/plugin/form/widget/core/RHIframe.java b/src/com/fr/plugin/form/widget/core/RHIframe.java index 8b00578..56e5b8f 100644 --- a/src/com/fr/plugin/form/widget/core/RHIframe.java +++ b/src/com/fr/plugin/form/widget/core/RHIframe.java @@ -1,6 +1,9 @@ package com.fr.plugin.form.widget.core; +import com.fr.form.ui.DataControl; import com.fr.form.ui.FieldEditor; +import com.fr.form.ui.WidgetValue; +import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.general.xml.GeneralXMLTools; import com.fr.json.JSONArray; @@ -9,6 +12,8 @@ import com.fr.json.JSONObject; import com.fr.plugin.ExtraClassManager; import com.fr.plugin.form.widget.monitor.RHFunctionProcessor; import com.fr.script.Calculator; +import com.fr.stable.ArrayUtils; +import com.fr.stable.DependenceProvider; import com.fr.stable.core.NodeVisitor; import com.fr.stable.fun.FunctionHelper; import com.fr.stable.fun.FunctionProcessor; @@ -24,7 +29,7 @@ import javax.servlet.http.HttpServletRequest; /** * Created by richie on 15/12/2. */ -public class RHIframe extends FieldEditor { +public class RHIframe extends FieldEditor implements DataControl { private static final FunctionProcessor RH = new AbstractFunctionProcessor() { @Override @@ -72,7 +77,6 @@ public class RHIframe extends FieldEditor { this.overflowY = overflowY; } - @Override public JSONObject createJSONConfig(Repository repo, Calculator c, NodeVisitor nodeVisitor) throws JSONException { FunctionProcessor p = ExtraClassManager.getInstance().getFunctionProcessor(); @@ -114,7 +118,10 @@ public class RHIframe extends FieldEditor { @Override public String[] dependence(CalculatorProvider ca) { - return new String[0]; + if (attr == null) { + return ArrayUtils.EMPTY_STRING_ARRAY; + } + return attr.dependence(ca); } @Override @@ -142,4 +149,29 @@ public class RHIframe extends FieldEditor { GeneralXMLTools.writeXMLable(writer, attr, RHIframeAttr.XML_TAG); } } + + @Override + public int[] getValueType() { + return new int[0]; + } + + @Override + public void setWidgetValue(WidgetValue value) { + + } + + @Override + public WidgetValue getWidgetValue() { + return null; + } + + @Override + public void createValueResult(DataControl widget, Calculator widgetCalculator, JSONObject widgetResult, JSONObject attrSourceCache) { + try { + JSONObject data = JSONObject.create(); + widgetResult.put(widgetName.toUpperCase(), data); + } catch (JSONException e) { + FRLogger.getLogger().error(e.getMessage(), e); + } + } } \ No newline at end of file diff --git a/src/com/fr/plugin/form/widget/core/RHIframeAttr.java b/src/com/fr/plugin/form/widget/core/RHIframeAttr.java index 7cd7126..0c50a2c 100644 --- a/src/com/fr/plugin/form/widget/core/RHIframeAttr.java +++ b/src/com/fr/plugin/form/widget/core/RHIframeAttr.java @@ -8,22 +8,22 @@ import com.fr.json.JSONArray; import com.fr.json.JSONException; import com.fr.json.JSONObject; import com.fr.script.Calculator; -import com.fr.stable.CodeUtils; -import com.fr.stable.ParameterProvider; -import com.fr.stable.UtilEvalError; +import com.fr.stable.*; import com.fr.stable.js.WidgetName; +import com.fr.stable.script.CalculatorProvider; import com.fr.stable.script.NameSpace; import com.fr.stable.xml.*; import com.fr.web.core.SessionIDInfor; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** * Created by richie on 15/12/2. */ -public class RHIframeAttr implements XMLable { +public class RHIframeAttr implements XMLable, DependenceProvider { public static final String XML_TAG = "RHIframeAttr"; private RHIframeSource source; @@ -46,10 +46,26 @@ public class RHIframeAttr implements XMLable { this.parameters = parameters; } + @Override + public String[] dependence(CalculatorProvider ca) { + List data = new ArrayList(); + data.addAll(Arrays.asList(source.dependence(ca))); + if (parameters != null) { + for (ParameterProvider parameter : parameters) { + data.addAll(Arrays.asList(parameter.dependence(ca))); + } + } + return data.toArray(new String[data.size()]); + } + public void mixConfig(JSONObject jo, Calculator c, HttpServletRequest req) throws JSONException { if (source != null) { jo.put("src", source.getCalculatedUrl(c, req)); } + String[] dependence = dependence(c); + if (!ArrayUtils.isEmpty(dependence)) { + jo.put("dependence", dependence); + } } public void mixJSONData(JSONArray ja, SessionIDInfor sessionIDInfor, Calculator c) throws JSONException, UtilEvalError { diff --git a/src/com/fr/plugin/form/widget/core/RHIframeSource.java b/src/com/fr/plugin/form/widget/core/RHIframeSource.java index c690aa1..aec6d43 100644 --- a/src/com/fr/plugin/form/widget/core/RHIframeSource.java +++ b/src/com/fr/plugin/form/widget/core/RHIframeSource.java @@ -1,6 +1,7 @@ package com.fr.plugin.form.widget.core; import com.fr.script.Calculator; +import com.fr.stable.DependenceProvider; import com.fr.stable.xml.XMLPrintWriter; import com.fr.stable.xml.XMLable; import com.fr.stable.xml.XMLableReader; @@ -10,7 +11,7 @@ import javax.servlet.http.HttpServletRequest; /** * Created by richie on 15/12/2. */ -public class RHIframeSource implements XMLable { +public abstract class RHIframeSource implements XMLable, DependenceProvider { public static final String XML_TAG = "RHIframeSource"; diff --git a/src/com/fr/plugin/form/widget/core/TemplateSource.java b/src/com/fr/plugin/form/widget/core/TemplateSource.java index f5c5cec..af9a444 100644 --- a/src/com/fr/plugin/form/widget/core/TemplateSource.java +++ b/src/com/fr/plugin/form/widget/core/TemplateSource.java @@ -1,13 +1,21 @@ package com.fr.plugin.form.widget.core; +import com.fr.base.Parameter; +import com.fr.base.ParameterHelper; import com.fr.base.TemplateUtils; import com.fr.data.NetworkHelper; import com.fr.general.Inter; import com.fr.script.Calculator; +import com.fr.stable.ArrayUtils; +import com.fr.stable.script.CalculatorProvider; import com.fr.stable.xml.XMLPrintWriter; import com.fr.stable.xml.XMLableReader; import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; /** * Created by richie on 15/12/2. @@ -48,6 +56,16 @@ public class TemplateSource extends RHIframeSource { return null; } + @Override + public String[] dependence(CalculatorProvider ca) { + Parameter[] parameters = ParameterHelper.analyze4Parameters(path, false); + List collections = new ArrayList(); + for (Parameter parameter : parameters) { + collections.addAll(Arrays.asList(parameter.dependence(ca))); + } + return collections.toArray(new String[collections.size()]); + } + @Override public String toString() { return Inter.getLocText("Plugin_RH_Iframe_Template_Path"); diff --git a/src/com/fr/plugin/form/widget/core/URLSource.java b/src/com/fr/plugin/form/widget/core/URLSource.java index c5133f0..81512c0 100644 --- a/src/com/fr/plugin/form/widget/core/URLSource.java +++ b/src/com/fr/plugin/form/widget/core/URLSource.java @@ -1,12 +1,18 @@ package com.fr.plugin.form.widget.core; +import com.fr.base.Parameter; +import com.fr.base.ParameterHelper; import com.fr.base.TemplateUtils; import com.fr.general.Inter; import com.fr.script.Calculator; +import com.fr.stable.script.CalculatorProvider; import com.fr.stable.xml.XMLPrintWriter; import com.fr.stable.xml.XMLableReader; import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; /** * Created by richie on 15/12/2. @@ -39,6 +45,16 @@ public class URLSource extends RHIframeSource { } } + @Override + public String[] dependence(CalculatorProvider ca) { + Parameter[] parameters = ParameterHelper.analyze4Parameters(url, false); + List collections = new ArrayList(); + for (Parameter parameter : parameters) { + collections.addAll(Arrays.asList(parameter.dependence(ca))); + } + return collections.toArray(new String[collections.size()]); + } + @Override public String toString() { return Inter.getLocText("Plugin_RH_Iframe_Url");