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

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());
}
}