You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.2 KiB
72 lines
2.2 KiB
package com.fr.plugin.xx.jsd9663.hyperlink; |
|
|
|
|
|
import com.fanruan.api.json.JSONKit; |
|
import com.fr.base.Formula; |
|
import com.fr.js.Hyperlink; |
|
import com.fr.json.JSONObject; |
|
import com.fr.stable.ParameterProvider; |
|
import com.fr.stable.web.Repository; |
|
import com.fr.stable.xml.XMLPrintWriter; |
|
import com.fr.stable.xml.XMLableReader; |
|
|
|
public class PostMessageHyperlink extends Hyperlink { |
|
private Integer parentNode; |
|
|
|
@Override |
|
protected String actionJS(Repository repository) { |
|
ParameterProvider[] parameters = this.getParameters(); |
|
JSONObject entries = JSONKit.create(); |
|
for (ParameterProvider parameter : parameters) { |
|
Object value = parameter.getValue(); |
|
if(value instanceof Formula){ |
|
entries.put(parameter.getName(),((Formula)value).getResult()); |
|
}else{ |
|
entries.put(parameter.getName(),value); |
|
} |
|
} |
|
if(parentNode == null){ |
|
parentNode = 1; |
|
} |
|
return "FR.postMessage("+entries.toString() +","+parentNode+");"; |
|
} |
|
|
|
public Integer getParentNode() { |
|
return parentNode; |
|
} |
|
|
|
public void setParentNode(Integer parentNode) { |
|
if(parentNode == null || parentNode == 0){parentNode = 1;} |
|
this.parentNode = parentNode; |
|
} |
|
|
|
private static final String XML_TAG = "PostMessageHyperlink"; |
|
@Override |
|
public void writeXML( XMLPrintWriter writer ){ |
|
super.writeXML(writer); |
|
writer.startTAG(XML_TAG) |
|
.attr("parentNode", parentNode).end(); |
|
} |
|
|
|
@Override |
|
public void readXML(XMLableReader reader){ |
|
super.readXML(reader); |
|
String tag = reader.getTagName(); |
|
if( XML_TAG.equals(tag) ){ |
|
parentNode = reader.getAttrAsInt("parentNode", 1); |
|
} |
|
} |
|
|
|
@Override |
|
public Object clone() throws CloneNotSupportedException { |
|
PostMessageHyperlink rt = (PostMessageHyperlink)super.clone(); |
|
rt.setParentNode( this.getParentNode() ); |
|
return rt; |
|
} |
|
|
|
@Override |
|
public boolean equals(Object obj){ |
|
return obj instanceof PostMessageHyperlink |
|
&& (((PostMessageHyperlink)obj).getParentNode() == getParentNode()); |
|
} |
|
}
|
|
|