LAPTOP-SB56SG4Q\86185
3 years ago
28 changed files with 3035 additions and 1 deletions
Binary file not shown.
@ -1,3 +1,6 @@
|
||||
# open-JSD-4334 |
||||
|
||||
JSD-4334 GIS地图集成 |
||||
JSD-4334 GIS地图集成 \ |
||||
免责说明:该源码为第三方爱好者提供,不保证源码和方案的可靠性,也不提供任何形式的源码教学指导和协助!\ |
||||
仅作为开发者学习参考使用!禁止用于任何商业用途!\ |
||||
为保护开发者隐私,开发者信息已隐去!若原开发者希望公开自己的信息,可联系hugh处理。 |
@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
||||
<plugin> |
||||
<main-package>com.fr.plugin.shdcmap</main-package> |
||||
<id>com.fr.plugin.shdcmap.v10</id> |
||||
<name><![CDATA[基于高德地图定制]]></name> |
||||
<active>yes</active> |
||||
<version>1.1</version> |
||||
<env-version>10.0</env-version> |
||||
<jartime>2020-04-24</jartime> |
||||
<vendor>fr.open</vendor> |
||||
<description><![CDATA[<p>高德地图功能</p>]]></description> |
||||
<change-notes><![CDATA[<p>[2020-12-08]开发1.0版本</p>]]></change-notes> |
||||
<extra-report/> |
||||
<extra-designer/> |
||||
<extra-platform/> |
||||
<extra-core> |
||||
<LocaleFinder class="com.fr.plugin.shdcmap.CustomLocaleFinder"/> |
||||
</extra-core> |
||||
<extra-chart> |
||||
<IndependentChartProvider class="com.fr.plugin.shdcmap.CustomChartProvider" |
||||
plotID="ShdcGdMapChart"/> |
||||
</extra-chart> |
||||
<extra-chart-designer> |
||||
<IndependentChartUIProvider class="com.fr.plugin.shdcmap.CustomChartUI" |
||||
plotID="ShdcGdMapChart"/> |
||||
</extra-chart-designer> |
||||
<function-recorder class="com.fr.plugin.shdcmap.CustomChart"/> |
||||
</plugin> |
@ -0,0 +1,382 @@
|
||||
package com.fr.plugin.shdcmap; |
||||
|
||||
import com.fr.chart.chartattr.Chart; |
||||
import com.fr.extended.chart.*; |
||||
import com.fr.general.ComparatorUtils; |
||||
import com.fr.js.NameJavaScript; |
||||
import com.fr.js.NameJavaScriptGroup; |
||||
import com.fr.json.*; |
||||
import com.fr.plugin.shdcmap.data.CustomDataConfig; |
||||
import com.fr.plugin.transform.ExecuteFunctionRecord; |
||||
import com.fr.plugin.transform.FunctionRecorder; |
||||
import com.fr.stable.StringUtils; |
||||
import com.fr.stable.web.Repository; |
||||
import com.fr.stable.xml.XMLPrintWriter; |
||||
import com.fr.stable.xml.XMLableReader; |
||||
import com.fr.web.utils.WebUtils; |
||||
|
||||
import java.util.LinkedHashMap; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* @author duan.jingliang |
||||
*/ |
||||
@FunctionRecorder |
||||
public class CustomChart extends AbstractChart<CustomDataConfig> { |
||||
private static final String ID = "ShdcGdMapChart"; |
||||
private static final String NAME = "基于高德地图定制"; |
||||
|
||||
private JSONObject mapConf; |
||||
private JSONObject tipsConf; |
||||
private JSONArray iconConf; |
||||
private NameJavaScriptGroup linkNameGroup; |
||||
|
||||
|
||||
@Override |
||||
protected String getChartID() { |
||||
return ID; |
||||
} |
||||
|
||||
@Override |
||||
public String getChartName() { |
||||
return NAME; |
||||
} |
||||
|
||||
@ExecuteFunctionRecord |
||||
@Override |
||||
protected void addJSON(CustomDataConfig dataConfig, JSONObject jsonObject, Repository repository, JSONPara jsonPara) throws JSONException { |
||||
jsonObject.put("data", makeChartData(dataConfig)); |
||||
|
||||
jsonObject.put("mapConf", getMapConf()); |
||||
jsonObject.put("iconConf", getIconConf()); |
||||
jsonObject.put("tipsConf", getTipsConf()); |
||||
|
||||
addAutoLinkJSON(jsonObject, repository, jsonPara); |
||||
|
||||
// 联动参数
|
||||
String centerx = WebUtils.getHTTPRequestParameter(repository.getHttpServletRequest(), "CENTERLNG"); |
||||
String centery = WebUtils.getHTTPRequestParameter(repository.getHttpServletRequest(), "CENTERLAT"); |
||||
String mapzoom = WebUtils.getHTTPRequestParameter(repository.getHttpServletRequest(), "MAPZOOM"); |
||||
|
||||
JSONObject paramObj = JSONFactory.createJSON(JSON.OBJECT); |
||||
paramObj.put("centerx", centerx); |
||||
paramObj.put("centery", centery); |
||||
paramObj.put("mapzoom", mapzoom); |
||||
jsonObject.put("linkParam", paramObj); |
||||
} |
||||
|
||||
@Override |
||||
protected String[] requiredJS() { |
||||
return new String[]{ |
||||
"com/fr/plugin/shdcmap/web/ShdcGdMapWrapper.js" |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
protected String wrapperName() { |
||||
return "ShdcGdMapWrapper"; |
||||
} |
||||
|
||||
@Override |
||||
protected void readAttr(XMLableReader xmLableReader) { |
||||
super.readAttr(xmLableReader); |
||||
|
||||
String jsonStr = xmLableReader.getAttrAsString("mapConf", ""); |
||||
if (StringUtils.isNotEmpty(jsonStr)) { |
||||
this.setMapConf(new JSONObject(jsonStr)); |
||||
} |
||||
jsonStr = xmLableReader.getAttrAsString("tipsConf", ""); |
||||
if (StringUtils.isNotEmpty(jsonStr)) { |
||||
this.setTipsConf(new JSONObject(jsonStr)); |
||||
} |
||||
jsonStr = xmLableReader.getAttrAsString("iconConf", ""); |
||||
if (StringUtils.isNotEmpty(jsonStr)) { |
||||
this.setIconConf(new JSONArray(jsonStr)); |
||||
} |
||||
|
||||
if (null == linkNameGroup) { |
||||
linkNameGroup = (NameJavaScriptGroup)xmLableReader.readXMLObject(new NameJavaScriptGroup()); |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
protected void writeAttr(XMLPrintWriter xmlPrintWriter) { |
||||
super.writeAttr(xmlPrintWriter); |
||||
|
||||
if (null != mapConf) { |
||||
xmlPrintWriter.attr("mapConf", mapConf.toString()); |
||||
} |
||||
if (null != tipsConf) { |
||||
xmlPrintWriter.attr("tipsConf", tipsConf.toString()); |
||||
} |
||||
if (null != iconConf) { |
||||
xmlPrintWriter.attr("iconConf", iconConf.toString()); |
||||
} |
||||
if (null != linkNameGroup) { |
||||
linkNameGroup.writeXML(xmlPrintWriter); |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public boolean equals(Object o) { |
||||
|
||||
return super.equals(o) |
||||
&& o instanceof Chart |
||||
&& ComparatorUtils.equals(((CustomChart) o).getMapConf(), this.mapConf) |
||||
&& ComparatorUtils.equals(((CustomChart) o).getTipsConf(), this.tipsConf) |
||||
&& ComparatorUtils.equals(((CustomChart) o).getIconConf(), this.iconConf) |
||||
&& ComparatorUtils.equals(((CustomChart) o).getLinkNameGroup(), this.linkNameGroup) |
||||
; |
||||
} |
||||
|
||||
@Override |
||||
public Object clone() throws CloneNotSupportedException { |
||||
CustomChart chart = (CustomChart)super.clone(); |
||||
if (this.linkNameGroup != null) { |
||||
chart.setLinkNameGroup((NameJavaScriptGroup) this.getLinkNameGroup().clone()); |
||||
} |
||||
return chart; |
||||
} |
||||
|
||||
private void addAutoLinkJSON(JSONObject paramJSONObject, Repository paramRepository, JSONPara paramAbstractChart) |
||||
throws JSONException { |
||||
ToHyperlinkJSONHelper.addECNameToLinkGroup(paramAbstractChart.ecName, paramAbstractChart.sheetIndex, this.getLinkNameGroup()); |
||||
paramJSONObject.put("pointLink", ToHyperlinkJSONHelper.addAutoLinkJSON(paramRepository, this.getLinkNameGroup(), hyperLinkParas())); |
||||
} |
||||
|
||||
@Override |
||||
public NameJavaScriptGroup getHotHyperlink(String s) { |
||||
NameJavaScriptGroup retLinkGroup = new NameJavaScriptGroup(); |
||||
for (int i = 0; i < linkNameGroup.size(); i++) { |
||||
NameJavaScript hyperlink = linkNameGroup.getNameHyperlink(i); |
||||
String name = hyperlink.getName(); |
||||
if ("pointLink".equals(s)) { |
||||
//if (null != name && name.indexOf("地图点") > 0) {
|
||||
try { |
||||
retLinkGroup.addNameHyperlink((NameJavaScript)hyperlink.clone()); |
||||
} catch (CloneNotSupportedException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
//}
|
||||
} |
||||
} |
||||
return retLinkGroup; |
||||
} |
||||
|
||||
@Override |
||||
protected HyperLinkPara[] hyperLinkParas() { |
||||
return new HyperLinkPara[]{ |
||||
new HyperLinkPara() { |
||||
@Override |
||||
public String getName() { |
||||
return "名称"; |
||||
} |
||||
|
||||
@Override |
||||
public String getFormulaContent() { |
||||
return "POINTNAME"; |
||||
} |
||||
|
||||
@Override |
||||
public String[] getProps() { |
||||
return new String[]{"name"}; |
||||
} |
||||
}, |
||||
new HyperLinkPara() { |
||||
@Override |
||||
public String getName() { |
||||
return "编码"; |
||||
} |
||||
|
||||
@Override |
||||
public String getFormulaContent() { |
||||
return "POINTCODE"; |
||||
} |
||||
|
||||
@Override |
||||
public String[] getProps() { |
||||
return new String[]{"code"}; |
||||
} |
||||
} |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
protected List<StringFormula> formulas() { |
||||
return null; |
||||
} |
||||
|
||||
@Override |
||||
protected String demoImagePath() { |
||||
return "com/fr/plugin/shdcmap/images/demo.png"; |
||||
} |
||||
|
||||
private JSONArray makeChartData(CustomDataConfig dataConfig) { |
||||
JSONArray dataArr = JSONFactory.createJSON(JSON.ARRAY); |
||||
if (null == dataConfig) { |
||||
return dataArr; |
||||
} |
||||
|
||||
List<Object> code = dataConfig.getCode().getValues(); |
||||
List<Object> name = dataConfig.getName().getValues(); |
||||
List<Object> type = dataConfig.getType().getValues(); |
||||
List<Object> icon = dataConfig.getIcon().getValues(); |
||||
List<Object> lng = dataConfig.getCoords().getValues(); |
||||
List<Object> convert = dataConfig.getConvert().getValues(); |
||||
|
||||
List<Object> customNames = dataConfig.getCustomNameField().getValues(); |
||||
List<Object> customValues = dataConfig.getCustomValueField().getValues(); |
||||
|
||||
LinkedHashMap singleDataMap = new LinkedHashMap(); |
||||
|
||||
if (dataConfig.isCustomName() && dataConfig.getCustomFields().size() > 0) { |
||||
List customFields = dataConfig.getCustomFields(); |
||||
int recordNum = ((ExtendedField)customFields.get(0)).getValues().size(); |
||||
for (int i = 0; i < recordNum; i++) { |
||||
Object codeval = code.get(i); |
||||
Object nameval = name.get(i); |
||||
Object typeval = type.get(i); |
||||
Object iconval = icon.get(i); |
||||
Object lngval = lng.get(i); |
||||
Object convertval = convert.get(i); |
||||
String key = codeval + "*" + nameval + "*" + typeval + "*" + iconval; |
||||
JSONObject jsonObject = (JSONObject)singleDataMap.get(key); |
||||
if (null == jsonObject) { |
||||
jsonObject = JSONFactory.createJSON(JSON.OBJECT); |
||||
jsonObject.put("code", codeval); |
||||
jsonObject.put("name", nameval); |
||||
jsonObject.put("type", typeval); |
||||
jsonObject.put("icon", iconval); |
||||
jsonObject.put("coords", lngval); |
||||
jsonObject.put("convert", convertval); |
||||
jsonObject.put("customName", JSONFactory.createJSON(JSON.ARRAY)); |
||||
jsonObject.put("customValue", JSONFactory.createJSON(JSON.ARRAY)); |
||||
dataArr.put(jsonObject); |
||||
} |
||||
for (int k = 0; k < customFields.size(); k++) { |
||||
ExtendedField field = (ExtendedField)customFields.get(k); |
||||
String customName = field.getCustomName(); |
||||
List<Object> values = field.getValues(); |
||||
//jsonObject.put(customName, values.get(i));
|
||||
jsonObject.getJSONArray("customName").put(customName); |
||||
jsonObject.getJSONArray("customValue").put(values.get(i)); |
||||
} |
||||
} |
||||
|
||||
} else if (!dataConfig.isCustomName() && customNames.size() > 0 && customValues.size() > 0) { |
||||
for (int i = 0; i < code.size(); i++) { |
||||
Object codeval = code.get(i); |
||||
Object nameval = name.get(i); |
||||
Object typeval = type.get(i); |
||||
Object iconval = icon.get(i); |
||||
Object lngval = lng.get(i); |
||||
Object convertval = convert.get(i); |
||||
|
||||
String key = codeval + "*" + nameval + "*" + typeval + "*" + iconval; |
||||
JSONObject jsonObject = (JSONObject)singleDataMap.get(key); |
||||
if (null == jsonObject) { |
||||
jsonObject = JSONFactory.createJSON(JSON.OBJECT); |
||||
jsonObject.put("code", codeval); |
||||
jsonObject.put("name", nameval); |
||||
jsonObject.put("type", typeval); |
||||
jsonObject.put("icon", iconval); |
||||
jsonObject.put("coords", lngval); |
||||
jsonObject.put("convert", convertval); |
||||
jsonObject.put("customName", JSONFactory.createJSON(JSON.ARRAY)); |
||||
jsonObject.put("customValue", JSONFactory.createJSON(JSON.ARRAY)); |
||||
dataArr.put(jsonObject); |
||||
} |
||||
jsonObject.getJSONArray("customName").put(customNames.get(i)); |
||||
jsonObject.getJSONArray("customValue").put(customValues.get(i)); |
||||
//jsonObject.put((String)customNames.get(i), customValues.get(i));
|
||||
|
||||
} |
||||
} else { |
||||
for (int i = 0; i < code.size(); i++) { |
||||
JSONObject dataObj = JSONFactory.createJSON(JSON.OBJECT); |
||||
dataObj.put("code", code.get(i)); |
||||
dataObj.put("name", name.get(i)); |
||||
dataObj.put("type", type.get(i)); |
||||
dataObj.put("icon", icon.get(i)); |
||||
dataObj.put("coords", lng.get(i)); |
||||
dataObj.put("convert", convert.get(i)); |
||||
dataArr.put(dataObj); |
||||
} |
||||
} |
||||
|
||||
return dataArr; |
||||
} |
||||
|
||||
|
||||
public NameJavaScriptGroup getLinkNameGroup() { |
||||
return linkNameGroup; |
||||
} |
||||
|
||||
public void setLinkNameGroup(NameJavaScriptGroup linkNameGroup) { |
||||
this.linkNameGroup = linkNameGroup; |
||||
} |
||||
|
||||
public JSONObject getMapConf() { |
||||
if (null == mapConf) { |
||||
mapConf = new JSONObject(); |
||||
mapConf.put("mapzoom", 10); |
||||
mapConf.put("centerx", "121.474488"); |
||||
mapConf.put("centery", "31.233588"); |
||||
mapConf.put("mapStyle", "d82836f41b8b6f6123697c763867a5b1"); |
||||
mapConf.put("showGovRegion", false); |
||||
} |
||||
return mapConf; |
||||
} |
||||
|
||||
public void setMapConf(JSONObject mapConf) { |
||||
this.mapConf = mapConf; |
||||
} |
||||
|
||||
public JSONObject getTipsConf() { |
||||
if (null == tipsConf) { |
||||
tipsConf = new JSONObject(); |
||||
tipsConf.put("showtips", true); |
||||
tipsConf.put("tipbgcolor", "#000000"); |
||||
tipsConf.put("tipcolor", "#ffffff"); |
||||
tipsConf.put("tipdesc", true); |
||||
tipsConf.put("tipfamily", "微软雅黑"); |
||||
tipsConf.put("tipcode", true); |
||||
tipsConf.put("tippoint", true); |
||||
tipsConf.put("tipother", true); |
||||
tipsConf.put("tipsize", 11); |
||||
tipsConf.put("tipstyle", 1); |
||||
tipsConf.put("tiptransparent", 60); |
||||
tipsConf.put("tiptype", 1); |
||||
tipsConf.put("tipJsPane", "console.log(this);"); |
||||
tipsConf.put("tipbgwidth", 200); |
||||
} |
||||
return tipsConf; |
||||
} |
||||
|
||||
public void setTipsConf(JSONObject tipsConf) { |
||||
this.tipsConf = tipsConf; |
||||
} |
||||
|
||||
public JSONArray getIconConf() { |
||||
if (null == iconConf) { |
||||
iconConf = new JSONArray(); |
||||
JSONObject attr = new JSONObject(); |
||||
attr.put("fillColor", "#00ccff"); |
||||
attr.put("fillOpacity", 60); |
||||
attr.put("lineColor", "#fc6600"); |
||||
attr.put("lineWidth", 1); |
||||
attr.put("pointSize", 16); |
||||
attr.put("pointimg", "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABNklEQVR4nGNgwAa2/Ndh2PQ/nWHT30UQDGSDxAiCVf8lgBrmMGz69x87BsqB1GAFG/824NaIhkFqUcDm/6o4FF8H4rsMG/99wJAD6UEyYBOqDf92AMU6Gdb/MgDLb/rbCBRbjWbAJqjmnxpopu+HG7zp31OgQjdgIFZj9SZIL8PG/zFIgp+AiquAms4D6a9AWw8BxfbCDdj0twXVpUC9QEnkUL8MUfjbHuwShPhPIH4DDavLCHGgXhQDNv67A1QUAhS7B6R/IRnwg2Hbf3aot26gGoDqBVDgzIU6txoq9pdh8z+QYc+BcpdRXAb2AkYg/u+HGAD096b/PkCxK4hA/bsYMxCxRePm/8sZNv+thxpkARRbD/TeKuzRiCshgRIPKEw2/ruJNZGhJCSKkzJVMhMyICE7AwCn/eHxoKNCTAAAAABJRU5ErkJggg=="); |
||||
attr.put("pointimgtype", "png"); |
||||
attr.put("pointimgh", 16); |
||||
attr.put("pointimgw", 16); |
||||
attr.put("titleName", "图标1"); |
||||
iconConf.put(attr); |
||||
} |
||||
return iconConf; |
||||
} |
||||
|
||||
public void setIconConf(JSONArray iconConf) { |
||||
this.iconConf = iconConf; |
||||
} |
||||
} |
@ -0,0 +1,14 @@
|
||||
package com.fr.plugin.shdcmap; |
||||
|
||||
import com.fr.extended.chart.AbstractChart; |
||||
import com.fr.extended.chart.AbstractExtentChartProvider; |
||||
|
||||
/** |
||||
* @author duan.jingliang |
||||
*/ |
||||
public class CustomChartProvider extends AbstractExtentChartProvider { |
||||
@Override |
||||
protected AbstractChart createChart() { |
||||
return new CustomChart(); |
||||
} |
||||
} |
@ -0,0 +1,42 @@
|
||||
package com.fr.plugin.shdcmap; |
||||
|
||||
import com.fr.design.gui.frpane.AttributeChangeListener; |
||||
import com.fr.design.mainframe.chart.AbstractChartAttrPane; |
||||
import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPane; |
||||
import com.fr.extended.chart.AbstractExtendedChartTableDataPane; |
||||
import com.fr.extended.chart.AbstractExtendedChartUIProvider; |
||||
import com.fr.plugin.shdcmap.data.CustomDataPane; |
||||
import com.fr.plugin.shdcmap.data.CustomReportDataPane; |
||||
import com.fr.plugin.shdcmap.ui.CustomStylePane; |
||||
|
||||
/** |
||||
* @author duan.jingliang |
||||
*/ |
||||
public class CustomChartUI extends AbstractExtendedChartUIProvider { |
||||
@Override |
||||
protected AbstractExtendedChartTableDataPane getTableDataSourcePane() { |
||||
return new CustomDataPane(); |
||||
} |
||||
|
||||
@Override |
||||
protected AbstractReportDataContentPane getReportDataSourcePane() { |
||||
return new CustomReportDataPane(); |
||||
} |
||||
|
||||
@Override |
||||
public String[] getDemoImagePath() { |
||||
return new String[0]; |
||||
} |
||||
|
||||
@Override |
||||
public String getIconPath() { |
||||
return "com/fr/plugin/shdcmap/images/icon.png"; |
||||
} |
||||
|
||||
@Override |
||||
public AbstractChartAttrPane[] getAttrPaneArray(AttributeChangeListener attributeChangeListener) { |
||||
return new AbstractChartAttrPane[]{ |
||||
new CustomStylePane(attributeChangeListener) |
||||
}; |
||||
} |
||||
} |
@ -0,0 +1,13 @@
|
||||
package com.fr.plugin.shdcmap; |
||||
|
||||
import com.fr.stable.fun.impl.AbstractLocaleFinder; |
||||
|
||||
/** |
||||
* @author duan.jingliang |
||||
*/ |
||||
public class CustomLocaleFinder extends AbstractLocaleFinder { |
||||
@Override |
||||
public String find() { |
||||
return "com/fr/plugin/shdcmap/locale/shdcmap"; |
||||
} |
||||
} |
@ -0,0 +1,134 @@
|
||||
package com.fr.plugin.shdcmap.data; |
||||
|
||||
import com.fr.extended.chart.AbstractDataConfig; |
||||
import com.fr.extended.chart.ExtendedField; |
||||
import com.fr.stable.AssistUtils; |
||||
import com.fr.stable.xml.XMLPrintWriter; |
||||
import com.fr.stable.xml.XMLableReader; |
||||
|
||||
/** |
||||
* @author duan.jingliang |
||||
* @date 2020/11/13 |
||||
*/ |
||||
public class CustomDataConfig extends AbstractDataConfig { |
||||
|
||||
private ExtendedField code = new ExtendedField(); |
||||
private ExtendedField name = new ExtendedField(); |
||||
private ExtendedField type = new ExtendedField(); |
||||
private ExtendedField icon = new ExtendedField(); |
||||
private ExtendedField coords = new ExtendedField(); |
||||
private ExtendedField convert = new ExtendedField(); |
||||
|
||||
|
||||
@Override |
||||
protected void readAttr(XMLableReader xmLableReader) { |
||||
readExtendedField(code, "code", xmLableReader); |
||||
readExtendedField(name, "name", xmLableReader); |
||||
readExtendedField(type, "type", xmLableReader); |
||||
readExtendedField(icon, "icon", xmLableReader); |
||||
readExtendedField(coords, "coords", xmLableReader); |
||||
readExtendedField(convert, "convert", xmLableReader); |
||||
} |
||||
|
||||
@Override |
||||
protected void writeAttr(XMLPrintWriter xmlPrintWriter) { |
||||
writeExtendedField(code, "code", xmlPrintWriter); |
||||
writeExtendedField(name, "name", xmlPrintWriter); |
||||
writeExtendedField(type, "type", xmlPrintWriter); |
||||
writeExtendedField(icon, "icon", xmlPrintWriter); |
||||
writeExtendedField(coords, "coords", xmlPrintWriter); |
||||
writeExtendedField(convert, "convert", xmlPrintWriter); |
||||
} |
||||
|
||||
@Override |
||||
public ExtendedField[] dataSetFields() { |
||||
return new ExtendedField[]{ |
||||
code, |
||||
name, |
||||
type, |
||||
icon, |
||||
coords, |
||||
convert |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
public CustomDataConfig clone() throws CloneNotSupportedException { |
||||
CustomDataConfig result = new CustomDataConfig(); |
||||
result.setCode(this.getCode().clone()); |
||||
result.setName(this.getName().clone()); |
||||
result.setType(this.getType().clone()); |
||||
result.setIcon(this.getIcon().clone()); |
||||
result.setCoords(this.getCoords().clone()); |
||||
result.setConvert(this.getConvert().clone()); |
||||
return result; |
||||
} |
||||
|
||||
@Override |
||||
public int hashCode() { |
||||
return super.hashCode() + AssistUtils.hashCode(this.getCode(),this.getName(),this.getType(),this.getIcon(),this.getCoords(),this.getConvert()); |
||||
} |
||||
|
||||
@Override |
||||
public boolean equals(Object obj) { |
||||
return obj instanceof CustomDataConfig |
||||
&& AssistUtils.equals(this.getCode(), ((CustomDataConfig) obj).getCode()) |
||||
&& AssistUtils.equals(this.getName(), ((CustomDataConfig) obj).getName()) |
||||
&& AssistUtils.equals(this.getType(), ((CustomDataConfig) obj).getType()) |
||||
&& AssistUtils.equals(this.getIcon(), ((CustomDataConfig) obj).getIcon()) |
||||
&& AssistUtils.equals(this.getCoords(), ((CustomDataConfig) obj).getCoords()) |
||||
&& AssistUtils.equals(this.getConvert(), ((CustomDataConfig) obj).getConvert()) |
||||
&& AssistUtils.equals(this.getCustomFields(), ((CustomDataConfig) obj).getCustomFields()) |
||||
&& AssistUtils.equals(this.getCustomNameField(), ((CustomDataConfig) obj).getCustomNameField()) |
||||
&& AssistUtils.equals(this.getCustomValueField(), ((CustomDataConfig) obj).getCustomValueField()) |
||||
; |
||||
} |
||||
|
||||
public ExtendedField getName() { |
||||
return name; |
||||
} |
||||
|
||||
public void setName(ExtendedField name) { |
||||
this.name = name; |
||||
} |
||||
|
||||
public ExtendedField getType() { |
||||
return type; |
||||
} |
||||
|
||||
public void setType(ExtendedField type) { |
||||
this.type = type; |
||||
} |
||||
|
||||
public ExtendedField getIcon() { |
||||
return icon; |
||||
} |
||||
|
||||
public void setIcon(ExtendedField icon) { |
||||
this.icon = icon; |
||||
} |
||||
|
||||
public ExtendedField getCode() { |
||||
return code; |
||||
} |
||||
|
||||
public void setCode(ExtendedField code) { |
||||
this.code = code; |
||||
} |
||||
|
||||
public ExtendedField getCoords() { |
||||
return coords; |
||||
} |
||||
|
||||
public void setCoords(ExtendedField coords) { |
||||
this.coords = coords; |
||||
} |
||||
|
||||
public ExtendedField getConvert() { |
||||
return convert; |
||||
} |
||||
|
||||
public void setConvert(ExtendedField convert) { |
||||
this.convert = convert; |
||||
} |
||||
} |
@ -0,0 +1,79 @@
|
||||
package com.fr.plugin.shdcmap.data; |
||||
|
||||
import com.fr.design.gui.icombobox.UIComboBox; |
||||
import com.fr.design.i18n.Toolkit; |
||||
import com.fr.extended.chart.AbstractExtendedChartTableDataPane; |
||||
import com.fr.extended.chart.ExtendedCustomFieldComboBoxPane; |
||||
|
||||
/** |
||||
* @author duan.jingliang |
||||
* @date 2020/11/18 |
||||
*/ |
||||
public class CustomDataPane extends AbstractExtendedChartTableDataPane<CustomDataConfig> { |
||||
|
||||
private UIComboBox code; |
||||
private UIComboBox name; |
||||
private UIComboBox type; |
||||
private UIComboBox icon; |
||||
private UIComboBox coords; |
||||
private UIComboBox convert; |
||||
|
||||
@Override |
||||
protected ExtendedCustomFieldComboBoxPane createExtendedCustomFieldComboBoxPane() { |
||||
return new ExtendedCustomFieldComboBoxPane(){ |
||||
@Override |
||||
protected boolean valueComboBoxHasNone() { |
||||
return true; |
||||
} |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
protected String[] fieldLabels() { |
||||
return new String[]{ |
||||
Toolkit.i18nText("Plugin-ShdcMap_code"), |
||||
Toolkit.i18nText("Plugin-ShdcMap_name"), |
||||
Toolkit.i18nText("Plugin-ShdcMap_type"), |
||||
Toolkit.i18nText("Plugin-ShdcMap_icon"), |
||||
Toolkit.i18nText("Plugin-ShdcMap_coords"), |
||||
Toolkit.i18nText("Plugin-ShdcMap_convert") |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
protected UIComboBox[] filedComboBoxes() { |
||||
if (null == code) { |
||||
code = new UIComboBox(); |
||||
name = new UIComboBox(); |
||||
type = new UIComboBox(); |
||||
icon = new UIComboBox(); |
||||
coords = new UIComboBox(); |
||||
convert = new UIComboBox(); |
||||
} |
||||
return new UIComboBox[]{ |
||||
code, name, type, icon, coords, convert |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
protected void populate(CustomDataConfig dataConfig) { |
||||
populateField(code, dataConfig.getCode()); |
||||
populateField(name, dataConfig.getName()); |
||||
populateField(type, dataConfig.getType()); |
||||
populateField(icon, dataConfig.getIcon()); |
||||
populateField(coords, dataConfig.getCoords()); |
||||
populateField(convert, dataConfig.getConvert()); |
||||
} |
||||
|
||||
@Override |
||||
protected CustomDataConfig update() { |
||||
CustomDataConfig dataConfig = new CustomDataConfig(); |
||||
updateField(code, dataConfig.getCode()); |
||||
updateField(name, dataConfig.getName()); |
||||
updateField(type, dataConfig.getType()); |
||||
updateField(icon, dataConfig.getIcon()); |
||||
updateField(coords, dataConfig.getCoords()); |
||||
updateField(convert, dataConfig.getConvert()); |
||||
return dataConfig; |
||||
} |
||||
} |
@ -0,0 +1,73 @@
|
||||
package com.fr.plugin.shdcmap.data; |
||||
|
||||
import com.fr.design.formula.TinyFormulaPane; |
||||
import com.fr.design.i18n.Toolkit; |
||||
import com.fr.extended.chart.AbstractExtendedChartReportDataPane; |
||||
|
||||
/** |
||||
* @author duan.jingliang |
||||
* @date 2020/11/16 |
||||
*/ |
||||
public class CustomReportDataPane extends AbstractExtendedChartReportDataPane<CustomDataConfig> { |
||||
|
||||
private TinyFormulaPane code; |
||||
private TinyFormulaPane name; |
||||
private TinyFormulaPane type; |
||||
private TinyFormulaPane icon; |
||||
private TinyFormulaPane coords; |
||||
private TinyFormulaPane convert; |
||||
|
||||
@Override |
||||
protected boolean hasCustomFieldPane() { |
||||
return true; |
||||
} |
||||
|
||||
@Override |
||||
protected String[] fieldLabel() { |
||||
return new String[]{ |
||||
Toolkit.i18nText("Plugin-ShdcMap_code"), |
||||
Toolkit.i18nText("Plugin-ShdcMap_name"), |
||||
Toolkit.i18nText("Plugin-ShdcMap_type"), |
||||
Toolkit.i18nText("Plugin-ShdcMap_icon"), |
||||
Toolkit.i18nText("Plugin-ShdcMap_coords"), |
||||
Toolkit.i18nText("Plugin-ShdcMap_convert") |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
protected TinyFormulaPane[] formulaPanes() { |
||||
if (null == code) { |
||||
code = new TinyFormulaPane(); |
||||
name = new TinyFormulaPane(); |
||||
type = new TinyFormulaPane(); |
||||
icon = new TinyFormulaPane(); |
||||
coords = new TinyFormulaPane(); |
||||
convert = new TinyFormulaPane(); |
||||
} |
||||
return new TinyFormulaPane[]{ |
||||
code, name, type, icon, coords, convert |
||||
}; |
||||
} |
||||
|
||||
@Override |
||||
protected void populate(CustomDataConfig dataConfig) { |
||||
populateField(code, dataConfig.getCode()); |
||||
populateField(name, dataConfig.getName()); |
||||
populateField(type, dataConfig.getType()); |
||||
populateField(icon, dataConfig.getIcon()); |
||||
populateField(coords, dataConfig.getCoords()); |
||||
populateField(convert, dataConfig.getConvert()); |
||||
} |
||||
|
||||
@Override |
||||
protected CustomDataConfig update() { |
||||
CustomDataConfig dataConfig = new CustomDataConfig(); |
||||
updateField(code, dataConfig.getCode()); |
||||
updateField(name, dataConfig.getName()); |
||||
updateField(type, dataConfig.getType()); |
||||
updateField(icon, dataConfig.getIcon()); |
||||
updateField(coords, dataConfig.getCoords()); |
||||
updateField(convert, dataConfig.getConvert()); |
||||
return dataConfig; |
||||
} |
||||
} |
After Width: | Height: | Size: 47 KiB |
After Width: | Height: | Size: 3.6 KiB |
@ -0,0 +1,50 @@
|
||||
Plugin-ShdcMap_code=\u7F16\u7801 |
||||
Plugin-ShdcMap_name=\u540D\u79F0 |
||||
Plugin-ShdcMap_type=\u573A\u666F |
||||
Plugin-ShdcMap_icon=\u7C7B\u578B |
||||
Plugin-ShdcMap_lng=\u7ECF\u5EA6 |
||||
Plugin-ShdcMap_lat=\u7EAC\u5EA6 |
||||
Plugin-ShdcMap_coords=\u7ECF\u7EAC\u5EA6 |
||||
Plugin-ShdcMap_convert=\u5750\u6807\u8F6C\u6362 |
||||
|
||||
Plugin-ShdcMap-icontitle=\u56FE\u6807 |
||||
Plugin-ShdcMap-maptitle=\u5730\u56FE |
||||
|
||||
Plugin-ShdcMap-mapzoom=\u5730\u56FE\u7EA7\u522B |
||||
Plugin-ShdcMap-centerx=\u4E2D\u5FC3\u70B9\u7ECF\u5EA6 |
||||
Plugin-ShdcMap-centery=\u4E2D\u5FC3\u70B9\u7EAC\u5EA6 |
||||
|
||||
Plugin-ShdcMap-mapStyle=\u5730\u56FE\u6837\u5F0F |
||||
Plugin-ShdcMap-RegionExpand=\u5730\u56FE\u914D\u7F6E |
||||
|
||||
Plugin-ShdcMap-tipstitle=\u63D0\u793A\u6846 |
||||
Plugin-ShdcMap-showtips=\u663E\u793A\u63D0\u793A |
||||
Plugin-ShdcMap-tipbgcolor=\u63D0\u793A\u80CC\u666F\u8272 |
||||
Plugin-ShdcMap-tiptransparent=\u80CC\u666F\u900F\u660E\u5EA6 |
||||
Plugin-ShdcMap-PointTipExpand=\u63D0\u793A |
||||
Plugin-ShdcMap-tipbgwidth=\u63D0\u793A\u6846\u5BBD\u5EA6 |
||||
|
||||
Plugin-ShdcMap-labelTypeCheck=\u9009\u9879 |
||||
Plugin-ShdcMap-labelTypeJS=JavaScript |
||||
Plugin-ShdcMap-tipcode=\u663E\u793A\u7F16\u7801 |
||||
Plugin-ShdcMap-tippoint=\u663E\u793A\u540D\u79F0 |
||||
Plugin-ShdcMap-tiplng=\u663E\u793A\u7ECF\u5EA6 |
||||
Plugin-ShdcMap-tiplat=\u663E\u793A\u7EAC\u5EA6 |
||||
Plugin-ShdcMap-tipother=\u663E\u793A\u5176\u4ED6 |
||||
Plugin-ShdcMap-TipConentExpand=\u63D0\u793A\u5185\u5BB9 |
||||
|
||||
Plugin-ShdcMap-linktitle=\u8D85\u7EA7\u94FE\u63A5 |
||||
|
||||
Plugin-ShdcMap-pointSize=\u56FE\u6807\u5927\u5C0F |
||||
Plugin-ShdcMap-lineWidth=\u533A\u57DF\u8FB9\u6846\u5BBD\u5EA6 |
||||
Plugin-ShdcMap-lineColor=\u533A\u57DF\u8FB9\u6846\u989C\u8272 |
||||
Plugin-ShdcMap-fillColor=\u533A\u57DF\u586B\u5145\u8272 |
||||
Plugin-ShdcMap-fillOpacity=\u533A\u57DF\u4E0D\u900F\u660E\u5EA6 |
||||
|
||||
Plugin-ShdcMap-iconSymbolExpand=\u56FE\u6807\u6837\u5F0F |
||||
Plugin-ShdcMap-regionSymbolExpand=\u533A\u57DF\u6837\u5F0F |
||||
|
||||
Plugin-ShdcMap-tiptype=\u5185\u5BB9\u6765\u6E90 |
||||
|
||||
Plugin-ShdcMap-showGovRegion=\u542F\u7528\u884C\u653F\u533A\u57DF |
||||
Plugin-ShdcMap-showSateLayer=\u542F\u7528\u536B\u661F\u56FE\u5C42 |
@ -0,0 +1,50 @@
|
||||
Plugin-ShdcMap_code=\u7F16\u7801 |
||||
Plugin-ShdcMap_name=\u540D\u79F0 |
||||
Plugin-ShdcMap_type=\u573A\u666F |
||||
Plugin-ShdcMap_icon=\u7C7B\u578B |
||||
Plugin-ShdcMap_lng=\u7ECF\u5EA6 |
||||
Plugin-ShdcMap_lat=\u7EAC\u5EA6 |
||||
Plugin-ShdcMap_coords=\u7ECF\u7EAC\u5EA6 |
||||
Plugin-ShdcMap_convert=\u5750\u6807\u8F6C\u6362 |
||||
|
||||
Plugin-ShdcMap-icontitle=\u56FE\u6807 |
||||
Plugin-ShdcMap-maptitle=\u5730\u56FE |
||||
|
||||
Plugin-ShdcMap-mapzoom=\u5730\u56FE\u7EA7\u522B |
||||
Plugin-ShdcMap-centerx=\u4E2D\u5FC3\u70B9\u7ECF\u5EA6 |
||||
Plugin-ShdcMap-centery=\u4E2D\u5FC3\u70B9\u7EAC\u5EA6 |
||||
|
||||
Plugin-ShdcMap-mapStyle=\u5730\u56FE\u6837\u5F0F |
||||
Plugin-ShdcMap-RegionExpand=\u5730\u56FE\u914D\u7F6E |
||||
|
||||
Plugin-ShdcMap-tipstitle=\u63D0\u793A\u6846 |
||||
Plugin-ShdcMap-showtips=\u663E\u793A\u63D0\u793A |
||||
Plugin-ShdcMap-tipbgcolor=\u63D0\u793A\u80CC\u666F\u8272 |
||||
Plugin-ShdcMap-tiptransparent=\u80CC\u666F\u900F\u660E\u5EA6 |
||||
Plugin-ShdcMap-PointTipExpand=\u63D0\u793A |
||||
Plugin-ShdcMap-tipbgwidth=\u63D0\u793A\u6846\u5BBD\u5EA6 |
||||
|
||||
Plugin-ShdcMap-labelTypeCheck=\u9009\u9879 |
||||
Plugin-ShdcMap-labelTypeJS=JavaScript |
||||
Plugin-ShdcMap-tipcode=\u663E\u793A\u7F16\u7801 |
||||
Plugin-ShdcMap-tippoint=\u663E\u793A\u540D\u79F0 |
||||
Plugin-ShdcMap-tiplng=\u663E\u793A\u7ECF\u5EA6 |
||||
Plugin-ShdcMap-tiplat=\u663E\u793A\u7EAC\u5EA6 |
||||
Plugin-ShdcMap-tipother=\u663E\u793A\u5176\u4ED6 |
||||
Plugin-ShdcMap-TipConentExpand=\u63D0\u793A\u5185\u5BB9 |
||||
|
||||
Plugin-ShdcMap-linktitle=\u8D85\u7EA7\u94FE\u63A5 |
||||
|
||||
Plugin-ShdcMap-pointSize=\u56FE\u6807\u5927\u5C0F |
||||
Plugin-ShdcMap-lineWidth=\u533A\u57DF\u8FB9\u6846\u5BBD\u5EA6 |
||||
Plugin-ShdcMap-lineColor=\u533A\u57DF\u8FB9\u6846\u989C\u8272 |
||||
Plugin-ShdcMap-fillColor=\u533A\u57DF\u586B\u5145\u8272 |
||||
Plugin-ShdcMap-fillOpacity=\u533A\u57DF\u4E0D\u900F\u660E\u5EA6 |
||||
|
||||
Plugin-ShdcMap-iconSymbolExpand=\u56FE\u6807\u6837\u5F0F |
||||
Plugin-ShdcMap-regionSymbolExpand=\u533A\u57DF\u6837\u5F0F |
||||
|
||||
Plugin-ShdcMap-tiptype=\u5185\u5BB9\u6765\u6E90 |
||||
|
||||
Plugin-ShdcMap-showGovRegion=\u542F\u7528\u884C\u653F\u533A\u57DF |
||||
Plugin-ShdcMap-showSateLayer=\u542F\u7528\u536B\u661F\u56FE\u5C42 |
@ -0,0 +1,164 @@
|
||||
package com.fr.plugin.shdcmap.ui; |
||||
|
||||
import com.fr.base.BaseFormula; |
||||
import com.fr.chart.chartattr.Plot; |
||||
import com.fr.chart.web.ChartHyperRelateFloatLink; |
||||
import com.fr.design.beans.BasicBeanPane; |
||||
import com.fr.design.chart.series.SeriesCondition.impl.ChartHyperRelateFloatLinkPane; |
||||
import com.fr.design.chart.series.SeriesCondition.impl.FormHyperlinkPane; |
||||
import com.fr.design.gui.controlpane.NameObjectCreator; |
||||
import com.fr.design.gui.controlpane.NameableCreator; |
||||
import com.fr.design.gui.imenutable.UIMenuNameableCreator; |
||||
import com.fr.design.javascript.JavaScriptImplPane; |
||||
import com.fr.design.module.DesignModuleFactory; |
||||
import com.fr.extended.chart.HyperLinkPara; |
||||
import com.fr.form.main.FormHyperlink; |
||||
import com.fr.general.NameObject; |
||||
import com.fr.js.*; |
||||
import com.fr.log.FineLoggerFactory; |
||||
import com.fr.plugin.shdcmap.CustomChart; |
||||
import com.fr.stable.ListMap; |
||||
import com.fr.stable.Nameable; |
||||
import com.fr.van.chart.designer.component.VanChartUIListControlPane; |
||||
|
||||
import java.lang.reflect.Constructor; |
||||
import java.lang.reflect.InvocationTargetException; |
||||
import java.util.ArrayList; |
||||
import java.util.HashMap; |
||||
import java.util.Iterator; |
||||
import java.util.Map; |
||||
|
||||
/** |
||||
* @author duan.jingliang |
||||
*/ |
||||
public class ChartHyperLinkPane extends VanChartUIListControlPane { |
||||
|
||||
private CustomChart shdcChart; |
||||
|
||||
public ChartHyperLinkPane() { |
||||
} |
||||
|
||||
@Override |
||||
protected void update(Plot plot) { |
||||
|
||||
} |
||||
|
||||
public void populateHyperLink(CustomChart chart) { |
||||
this.shdcChart = chart; |
||||
NameJavaScriptGroup njsg = chart.getLinkNameGroup(); |
||||
HashMap hyperlinkMap = getHyperlinkMap(); |
||||
ArrayList noList = new ArrayList(); |
||||
for(int i = 0; njsg != null && i < njsg.size(); i++) { |
||||
NameJavaScript njs = njsg.getNameHyperlink(i); |
||||
if (njs != null && njs.getJavaScript() != null) { |
||||
JavaScript js = njs.getJavaScript(); |
||||
UIMenuNameableCreator var11 = new UIMenuNameableCreator(njs.getName(), js, this.getUseMap(hyperlinkMap, js.getClass())); |
||||
noList.add(new NameObject(var11.getName(), var11.getObj())); |
||||
} |
||||
} |
||||
|
||||
this.populate((Nameable[])noList.toArray(new NameObject[noList.size()])); |
||||
this.doLayout(); |
||||
} |
||||
|
||||
public void updateHyperLink(CustomChart chart) { |
||||
Nameable[] nameables = this.update(); |
||||
NameJavaScriptGroup njsg = new NameJavaScriptGroup(); |
||||
njsg.clear(); |
||||
for (int i = 0; i < nameables.length; i++) { |
||||
JavaScript noObj = (JavaScript)((NameObject)nameables[i]).getObject(); |
||||
String noName = nameables[i].getName(); |
||||
NameJavaScript njs = new NameJavaScript(noName, noObj); |
||||
njsg.addNameHyperlink(njs); |
||||
} |
||||
|
||||
chart.setLinkNameGroup(njsg); |
||||
} |
||||
|
||||
@Override |
||||
public NameableCreator[] createNameableCreators() { |
||||
ListMap creatorMap = new ListMap(); |
||||
NameableCreator[] chartHyperLinkCreators = DesignModuleFactory.getHyperlinkGroupType().getHyperlinkCreators(); |
||||
|
||||
NameableCreator creator; |
||||
for(int i = 0; i < chartHyperLinkCreators.length; i++) { |
||||
creator = chartHyperLinkCreators[i]; |
||||
NameObjectCreator noc = (NameObjectCreator)creator; |
||||
|
||||
if ("图表超链-联动悬浮元素".equals(creator.menuName())) { |
||||
creatorMap.put(creator.menuName(), creator); |
||||
} |
||||
if ("当前决策报表对象".equals(creator.menuName())) { |
||||
creatorMap.put(creator.menuName(), creator); |
||||
} |
||||
if ("JavaScript脚本".equals(creator.menuName())) { |
||||
NameableCreator newCreatorPoint = new NameObjectCreator(creator.menuName(), JavaScriptImpl.class, JavaScriptImplPane.class); |
||||
creatorMap.put(creator.menuName(), newCreatorPoint); |
||||
} |
||||
} |
||||
|
||||
return (NameableCreator[])creatorMap.values().toArray(new NameableCreator[creatorMap.size()]); |
||||
} |
||||
|
||||
@Override |
||||
protected String title4PopupWindow() { |
||||
return "添加链接"; |
||||
} |
||||
|
||||
@Override |
||||
protected String getAddItemText() { |
||||
return "添加链接"; |
||||
} |
||||
|
||||
|
||||
protected Map<String, BaseFormula> getHyperLinkEditorMap() { |
||||
return shdcChart.getHyperLinkEditorMap(); |
||||
} |
||||
|
||||
@Override |
||||
public BasicBeanPane createPaneByCreators(NameableCreator nameableCreator) { |
||||
Constructor var2 = null; |
||||
|
||||
try { |
||||
var2 = nameableCreator.getUpdatePane().getConstructor(HashMap.class, Boolean.TYPE); |
||||
return (BasicBeanPane)var2.newInstance(this.getHyperLinkEditorMap(), false); |
||||
} catch (InstantiationException var4) { |
||||
FineLoggerFactory.getLogger().error(var4.getMessage(), var4); |
||||
} catch (IllegalAccessException var5) { |
||||
FineLoggerFactory.getLogger().error(var5.getMessage(), var5); |
||||
} catch (NoSuchMethodException var6) { |
||||
return super.createPaneByCreators(nameableCreator); |
||||
} catch (InvocationTargetException var7) { |
||||
FineLoggerFactory.getLogger().error(var7.getMessage(), var7); |
||||
} |
||||
|
||||
return null; |
||||
} |
||||
|
||||
protected HashMap getHyperlinkMap() { |
||||
HashMap var2 = new HashMap(10); |
||||
var2.put(ChartHyperRelateFloatLink.class, ChartHyperRelateFloatLinkPane.class); |
||||
var2.put(FormHyperlinkProvider.class, FormHyperlinkPane.class); |
||||
var2.put(JavaScriptImplPane.class, JavaScriptImplPane.class); |
||||
return var2; |
||||
} |
||||
|
||||
protected Class<? extends BasicBeanPane> getUseMap(HashMap var1, Object var2) { |
||||
if (var1.get(var2) != null) { |
||||
return (Class)var1.get(var2); |
||||
} else { |
||||
Iterator var3 = var1.keySet().iterator(); |
||||
|
||||
Object var4; |
||||
do { |
||||
if (!var3.hasNext()) { |
||||
return null; |
||||
} |
||||
|
||||
var4 = var3.next(); |
||||
} while(!((Class)var4).isAssignableFrom((Class)var2)); |
||||
|
||||
return (Class)var1.get(var4); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,133 @@
|
||||
package com.fr.plugin.shdcmap.ui; |
||||
|
||||
import com.fr.chart.chartattr.Plot; |
||||
import com.fr.design.beans.BasicBeanPane; |
||||
import com.fr.design.gui.controlpane.NameObjectCreator; |
||||
import com.fr.design.gui.controlpane.NameableCreator; |
||||
import com.fr.design.gui.imenutable.UIMenuNameableCreator; |
||||
import com.fr.general.NameObject; |
||||
import com.fr.json.JSONArray; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.log.FineLoggerFactory; |
||||
import com.fr.plugin.shdcmap.CustomChart; |
||||
import com.fr.stable.ListMap; |
||||
import com.fr.stable.Nameable; |
||||
import com.fr.van.chart.designer.component.VanChartUIListControlPane; |
||||
|
||||
import java.lang.reflect.Constructor; |
||||
import java.lang.reflect.InvocationTargetException; |
||||
import java.util.ArrayList; |
||||
import java.util.HashMap; |
||||
import java.util.Iterator; |
||||
|
||||
/** |
||||
* @author duan.jingliang |
||||
*/ |
||||
public class ChartIconListPane extends VanChartUIListControlPane { |
||||
|
||||
private CustomChart chart; |
||||
|
||||
public ChartIconListPane() { |
||||
} |
||||
|
||||
@Override |
||||
protected void update(Plot plot) { |
||||
} |
||||
|
||||
public void populateStyle(CustomChart chart) { |
||||
this.chart = chart; |
||||
JSONArray iconConf = chart.getIconConf(); |
||||
HashMap hyperlinkMap = getHyperlinkMap(); |
||||
ArrayList noList = new ArrayList(); |
||||
for (int i = 0; null != iconConf && i < iconConf.size(); i++) { |
||||
JSONObject icon = iconConf.getJSONObject(i); |
||||
if (null != icon) { |
||||
UIMenuNameableCreator var11 = new UIMenuNameableCreator(icon.getString("titleName"), icon, this.getUseMap(hyperlinkMap, JSONObject.class)); |
||||
noList.add(new NameObject(var11.getName(), var11.getObj())); |
||||
} |
||||
} |
||||
|
||||
this.populate((Nameable[])noList.toArray(new NameObject[noList.size()])); |
||||
this.doLayout(); |
||||
} |
||||
|
||||
public void updateStyle(CustomChart chart) { |
||||
Nameable[] nameables = this.update(); |
||||
|
||||
JSONArray iconConf = JSONArray.create(); |
||||
for (int i = 0; i < nameables.length; i++) { |
||||
JSONObject noObj = (JSONObject)((NameObject)nameables[i]).getObject(); |
||||
if (null == noObj) { |
||||
noObj = JSONObject.create(); |
||||
} |
||||
noObj.put("titleName", ((NameObject)nameables[i]).getName()); |
||||
iconConf.add(noObj); |
||||
} |
||||
|
||||
chart.setIconConf(iconConf); |
||||
|
||||
} |
||||
|
||||
@Override |
||||
public NameableCreator[] createNameableCreators() { |
||||
ListMap creatorMap = new ListMap(); |
||||
|
||||
NameableCreator newCreatorPoint = new NameObjectCreator("标注类型", JSONObject.class, CustomChartPointCreator.class); |
||||
creatorMap.put(newCreatorPoint.menuName(), newCreatorPoint); |
||||
|
||||
return (NameableCreator[])creatorMap.values().toArray(new NameableCreator[creatorMap.size()]); |
||||
} |
||||
|
||||
@Override |
||||
protected String title4PopupWindow() { |
||||
return "添加图标"; |
||||
} |
||||
|
||||
@Override |
||||
protected String getAddItemText() { |
||||
return "添加图标"; |
||||
} |
||||
|
||||
@Override |
||||
public BasicBeanPane createPaneByCreators(NameableCreator nameableCreator) { |
||||
Constructor var2 = null; |
||||
try { |
||||
var2 = nameableCreator.getUpdatePane().getConstructor(); |
||||
return (BasicBeanPane)var2.newInstance(); |
||||
} catch (InstantiationException var4) { |
||||
FineLoggerFactory.getLogger().error(var4.getMessage(), var4); |
||||
} catch (IllegalAccessException var5) { |
||||
FineLoggerFactory.getLogger().error(var5.getMessage(), var5); |
||||
} catch (NoSuchMethodException var6) { |
||||
return super.createPaneByCreators(nameableCreator); |
||||
} catch (InvocationTargetException var7) { |
||||
FineLoggerFactory.getLogger().error(var7.getMessage(), var7); |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
protected HashMap getHyperlinkMap() { |
||||
HashMap var2 = new HashMap(10); |
||||
var2.put(JSONObject.class, CustomChartPointCreator.class); |
||||
return var2; |
||||
} |
||||
|
||||
protected Class<? extends BasicBeanPane> getUseMap(HashMap var1, Object var2) { |
||||
if (var1.get(var2) != null) { |
||||
return (Class)var1.get(var2); |
||||
} else { |
||||
Iterator var3 = var1.keySet().iterator(); |
||||
|
||||
Object var4; |
||||
do { |
||||
if (!var3.hasNext()) { |
||||
return null; |
||||
} |
||||
|
||||
var4 = var3.next(); |
||||
} while(!((Class)var4).isAssignableFrom((Class)var2)); |
||||
|
||||
return (Class)var1.get(var4); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,77 @@
|
||||
package com.fr.plugin.shdcmap.ui; |
||||
|
||||
import com.fr.design.i18n.Toolkit; |
||||
import com.fr.design.layout.TableLayout; |
||||
import com.fr.design.layout.TableLayoutHelper; |
||||
import com.fr.extended.chart.ExtendedScrollPane; |
||||
import com.fr.plugin.shdcmap.CustomChart; |
||||
|
||||
import javax.swing.*; |
||||
import java.awt.*; |
||||
|
||||
/** |
||||
* @author duan.jingliang |
||||
*/ |
||||
public class CustomChartIconStylePane extends ExtendedScrollPane<CustomChart> { |
||||
|
||||
private ChartIconListPane hyperLinkPane; |
||||
|
||||
|
||||
@Override |
||||
protected JPanel createContentPane() { |
||||
return new ContentPane(); |
||||
} |
||||
|
||||
@Override |
||||
public void populateBean(CustomChart chart) { |
||||
hyperLinkPane.populateStyle(chart); |
||||
} |
||||
|
||||
@Override |
||||
public void updateBean(CustomChart chart) { |
||||
hyperLinkPane.updateStyle(chart); |
||||
} |
||||
|
||||
@Override |
||||
protected String title4PopupWindow() { |
||||
return Toolkit.i18nText("Plugin-ShdcMap-icontitle"); |
||||
} |
||||
|
||||
private class ContentPane extends JPanel { |
||||
public ContentPane() { |
||||
initComponents(); |
||||
} |
||||
|
||||
private void initComponents() { |
||||
this.setLayout(new BorderLayout()); |
||||
|
||||
// 链接
|
||||
JPanel linkContentPane = createLinkContentPane(); |
||||
|
||||
double p = TableLayout.PREFERRED; |
||||
double f = TableLayout.FILL; |
||||
double[] columnSize = {f}; |
||||
double[] rowSize = {p, p}; |
||||
Component[][] acomponents = new Component[][]{ |
||||
new Component[]{linkContentPane} |
||||
} ; |
||||
|
||||
JPanel panel = TableLayoutHelper.createTableLayoutPane(acomponents,rowSize,columnSize); |
||||
this.add(panel,BorderLayout.CENTER); |
||||
this.setVisible(true); |
||||
} |
||||
} |
||||
|
||||
private JPanel createLinkContentPane(){ |
||||
hyperLinkPane = new ChartIconListPane(); |
||||
Component[][] comps = new Component[][]{ |
||||
new Component[]{null}, |
||||
new Component[]{hyperLinkPane} |
||||
}; |
||||
double p = TableLayout.PREFERRED; |
||||
double f = TableLayout.FILL; |
||||
JPanel panel = TableLayoutHelper.createTableLayoutPane(comps, new double[]{p, p}, new double[]{f}); |
||||
return panel; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,77 @@
|
||||
package com.fr.plugin.shdcmap.ui; |
||||
|
||||
import com.fr.design.i18n.Toolkit; |
||||
import com.fr.design.layout.TableLayout; |
||||
import com.fr.design.layout.TableLayoutHelper; |
||||
import com.fr.extended.chart.ExtendedScrollPane; |
||||
import com.fr.plugin.shdcmap.CustomChart; |
||||
|
||||
import javax.swing.*; |
||||
import java.awt.*; |
||||
|
||||
/** |
||||
* @author duan.jingliang |
||||
*/ |
||||
public class CustomChartLinkPane extends ExtendedScrollPane<CustomChart> { |
||||
|
||||
private ChartHyperLinkPane hyperLinkPane; |
||||
|
||||
|
||||
@Override |
||||
protected JPanel createContentPane() { |
||||
return new ContentPane(); |
||||
} |
||||
|
||||
@Override |
||||
public void populateBean(CustomChart chart) { |
||||
hyperLinkPane.populateHyperLink(chart); |
||||
} |
||||
|
||||
@Override |
||||
public void updateBean(CustomChart chart) { |
||||
hyperLinkPane.updateHyperLink(chart); |
||||
} |
||||
|
||||
@Override |
||||
protected String title4PopupWindow() { |
||||
return Toolkit.i18nText("Plugin-ShdcMap-linktitle"); |
||||
} |
||||
|
||||
private class ContentPane extends JPanel { |
||||
public ContentPane() { |
||||
initComponents(); |
||||
} |
||||
|
||||
private void initComponents() { |
||||
this.setLayout(new BorderLayout()); |
||||
|
||||
// 链接
|
||||
JPanel linkContentPane = createLinkContentPane(); |
||||
|
||||
double p = TableLayout.PREFERRED; |
||||
double f = TableLayout.FILL; |
||||
double[] columnSize = {f}; |
||||
double[] rowSize = {p, p}; |
||||
Component[][] acomponents = new Component[][]{ |
||||
new Component[]{linkContentPane} |
||||
} ; |
||||
|
||||
JPanel panel = TableLayoutHelper.createTableLayoutPane(acomponents,rowSize,columnSize); |
||||
this.add(panel,BorderLayout.CENTER); |
||||
this.setVisible(true); |
||||
} |
||||
} |
||||
|
||||
private JPanel createLinkContentPane(){ |
||||
hyperLinkPane = new ChartHyperLinkPane(); |
||||
Component[][] comps = new Component[][]{ |
||||
new Component[]{null}, |
||||
new Component[]{hyperLinkPane} |
||||
}; |
||||
double p = TableLayout.PREFERRED; |
||||
double f = TableLayout.FILL; |
||||
JPanel panel = TableLayoutHelper.createTableLayoutPane(comps, new double[]{p, p}, new double[]{f}); |
||||
return panel; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,119 @@
|
||||
package com.fr.plugin.shdcmap.ui; |
||||
|
||||
import com.fr.design.gui.icheckbox.UICheckBox; |
||||
import com.fr.design.gui.ilable.UILabel; |
||||
import com.fr.design.gui.ispinner.UISpinner; |
||||
import com.fr.design.gui.itextfield.UITextField; |
||||
import com.fr.design.i18n.Toolkit; |
||||
import com.fr.design.layout.TableLayout; |
||||
import com.fr.design.layout.TableLayoutHelper; |
||||
import com.fr.extended.chart.ExtendedScrollPane; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.plugin.shdcmap.CustomChart; |
||||
import com.fr.van.chart.designer.TableLayout4VanChartHelper; |
||||
|
||||
import javax.swing.*; |
||||
import java.awt.*; |
||||
|
||||
/** |
||||
* @author duan.jingliang |
||||
*/ |
||||
public class CustomChartMapPane extends ExtendedScrollPane<CustomChart> { |
||||
|
||||
private UISpinner mapzoom; |
||||
private UITextField centerx; |
||||
private UITextField centery; |
||||
|
||||
private UITextField mapStyle; |
||||
|
||||
private UICheckBox showGovRegion; |
||||
|
||||
private UICheckBox showSateLayer; |
||||
|
||||
@Override |
||||
protected JPanel createContentPane() { |
||||
return new ContentPane(); |
||||
} |
||||
|
||||
@Override |
||||
public void populateBean(CustomChart chart) { |
||||
JSONObject regionConf = chart.getMapConf(); |
||||
this.mapzoom.setValue(regionConf.getDouble("mapzoom")); |
||||
this.centerx.setText(regionConf.getString("centerx")); |
||||
this.centery.setText(regionConf.getString("centery")); |
||||
|
||||
this.mapStyle.setText(regionConf.getString("mapStyle")); |
||||
|
||||
this.showGovRegion.setSelected(regionConf.getBoolean("showGovRegion")); |
||||
this.showSateLayer.setSelected(regionConf.getBoolean("showSateLayer")); |
||||
} |
||||
|
||||
@Override |
||||
public void updateBean(CustomChart chart) { |
||||
JSONObject regionConf = JSONObject.create(); |
||||
regionConf.put("mapzoom", this.mapzoom.getValue()); |
||||
regionConf.put("centerx", this.centerx.getText()); |
||||
regionConf.put("centery", this.centery.getText()); |
||||
|
||||
regionConf.put("mapStyle", this.mapStyle.getText()); |
||||
|
||||
regionConf.put("showGovRegion", this.showGovRegion.isSelected()); |
||||
regionConf.put("showSateLayer", this.showSateLayer.isSelected()); |
||||
|
||||
chart.setMapConf(regionConf); |
||||
} |
||||
|
||||
@Override |
||||
protected String title4PopupWindow() { |
||||
return Toolkit.i18nText("Plugin-ShdcMap-maptitle"); |
||||
} |
||||
|
||||
private class ContentPane extends JPanel { |
||||
public ContentPane() { |
||||
initComponents(); |
||||
} |
||||
|
||||
private void initComponents() { |
||||
this.setLayout(new BorderLayout()); |
||||
|
||||
JPanel regionContentPane = createRegionContentPane(); |
||||
|
||||
double p = TableLayout.PREFERRED; |
||||
double f = TableLayout.FILL; |
||||
double[] columnSize = {f}; |
||||
double[] rowSize = {p, p}; |
||||
Component[][] acomponents = new Component[][]{ |
||||
new Component[]{regionContentPane} |
||||
}; |
||||
|
||||
JPanel panel = TableLayoutHelper.createTableLayoutPane(acomponents,rowSize,columnSize); |
||||
this.add(panel,BorderLayout.CENTER); |
||||
this.setVisible(true); |
||||
} |
||||
} |
||||
|
||||
private JPanel createRegionContentPane(){ |
||||
|
||||
mapzoom = new UISpinner(1, 18, 1, 1); |
||||
centerx = new UITextField(); |
||||
centery = new UITextField(); |
||||
|
||||
mapStyle = new UITextField(); |
||||
|
||||
showGovRegion = new UICheckBox(Toolkit.i18nText("Plugin-ShdcMap-showGovRegion")); |
||||
showSateLayer = new UICheckBox(Toolkit.i18nText("Plugin-ShdcMap-showSateLayer")); |
||||
Component[][] components = new Component[][]{ |
||||
{null, null}, |
||||
new Component[]{new UILabel(Toolkit.i18nText("Plugin-ShdcMap-mapzoom")), this.mapzoom}, |
||||
new Component[]{new UILabel(Toolkit.i18nText("Plugin-ShdcMap-centerx")), this.centerx}, |
||||
new Component[]{new UILabel(Toolkit.i18nText("Plugin-ShdcMap-centery")), this.centery}, |
||||
|
||||
new Component[]{new UILabel(Toolkit.i18nText("Plugin-ShdcMap-mapStyle")), this.mapStyle}, |
||||
new Component[]{null, showGovRegion}, |
||||
new Component[]{null, showSateLayer} |
||||
} ; |
||||
return TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Plugin-ShdcMap-RegionExpand"), components); |
||||
} |
||||
|
||||
|
||||
} |
@ -0,0 +1,153 @@
|
||||
package com.fr.plugin.shdcmap.ui; |
||||
|
||||
import com.fr.chart.base.TextAttr; |
||||
import com.fr.design.gui.frpane.UINumberDragPane; |
||||
import com.fr.design.gui.ibutton.UIButtonGroup; |
||||
import com.fr.design.gui.icheckbox.UICheckBox; |
||||
import com.fr.design.gui.ilable.UILabel; |
||||
import com.fr.design.gui.ispinner.UISpinner; |
||||
import com.fr.design.gui.itextarea.UITextArea; |
||||
import com.fr.design.i18n.Toolkit; |
||||
import com.fr.design.layout.TableLayout; |
||||
import com.fr.design.layout.TableLayoutHelper; |
||||
import com.fr.design.mainframe.chart.gui.style.ChartTextAttrPane; |
||||
import com.fr.design.style.color.ColorSelectBox; |
||||
import com.fr.general.FRFont; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.van.chart.designer.AbstractVanChartScrollPane; |
||||
import com.fr.van.chart.designer.TableLayout4VanChartHelper; |
||||
|
||||
import javax.swing.*; |
||||
import javax.swing.event.ChangeEvent; |
||||
import javax.swing.event.ChangeListener; |
||||
import java.awt.*; |
||||
|
||||
/** |
||||
* @author duan.jingliang |
||||
*/ |
||||
public class CustomChartPointCreator extends AbstractVanChartScrollPane<JSONObject> { |
||||
|
||||
private ImageChooserPane pointPane; |
||||
private UISpinner pointSize; |
||||
|
||||
private UISpinner lineWidth; |
||||
private ColorSelectBox lineColor; |
||||
private ColorSelectBox fillColor; |
||||
private UINumberDragPane fillOpacity; |
||||
|
||||
|
||||
|
||||
@Override |
||||
protected JPanel createContentPane() { |
||||
return new ContentPane(); |
||||
} |
||||
|
||||
@Override |
||||
public void populateBean(JSONObject pointConf) { |
||||
if (null != pointConf) { |
||||
pointSize.setValue(pointConf.getDouble("pointSize")); |
||||
ImageEntity imgEnt = new ImageEntity(); |
||||
imgEnt.setImagestr(pointConf.getString("pointimg")); |
||||
imgEnt.setImagetype(pointConf.getString("pointimgtype")); |
||||
imgEnt.setWidth(pointConf.getInt("pointimgw")); |
||||
imgEnt.setHeight(pointConf.getInt("pointimgh")); |
||||
this.pointPane.populateBean(imgEnt); |
||||
|
||||
this.lineWidth.setValue(pointConf.getDouble("lineWidth")); |
||||
this.lineColor.setSelectObject(MapUtil.toColor(pointConf.getString("lineColor"))); |
||||
this.fillColor.setSelectObject(MapUtil.toColor(pointConf.getString("fillColor"))); |
||||
this.fillOpacity.populateBean(pointConf.getDouble("fillOpacity")); |
||||
} |
||||
|
||||
} |
||||
|
||||
@Override |
||||
public JSONObject updateBean() { |
||||
JSONObject pointConf = JSONObject.create(); |
||||
pointConf.put("pointSize", pointSize.getValue()); |
||||
ImageEntity imgEnt = this.pointPane.updateBean(); |
||||
if (null != imgEnt) { |
||||
pointConf.put("pointimg", imgEnt.getImagestr()); |
||||
pointConf.put("pointimgtype", imgEnt.getImagetype()); |
||||
pointConf.put("pointimgw", imgEnt.getWidth()); |
||||
pointConf.put("pointimgh", imgEnt.getHeight()); |
||||
} |
||||
pointConf.put("lineWidth", this.lineWidth.getValue()); |
||||
pointConf.put("lineColor", MapUtil.toHex(this.lineColor.getSelectObject())); |
||||
pointConf.put("fillColor", MapUtil.toHex(this.fillColor.getSelectObject())); |
||||
pointConf.put("fillOpacity", this.fillOpacity.updateBean()); |
||||
return pointConf; |
||||
} |
||||
|
||||
@Override |
||||
protected String title4PopupWindow() { |
||||
return Toolkit.i18nText("Plugin-ShdcMap-icontitle"); |
||||
} |
||||
|
||||
private class ContentPane extends JPanel { |
||||
public ContentPane() { |
||||
initComponents(); |
||||
} |
||||
|
||||
private void initComponents() { |
||||
this.setLayout(new BorderLayout()); |
||||
|
||||
JPanel pointPane = createPointPane(); |
||||
JPanel regionPane = createRegionPane(); |
||||
|
||||
double p = TableLayout.PREFERRED; |
||||
double f = TableLayout.FILL; |
||||
double[] columnSize = {f}; |
||||
double[] rowSize = {p, p, p, p}; |
||||
Component[][] acomponents = new Component[][]{ |
||||
new Component[]{pointPane}, |
||||
new Component[]{regionPane} |
||||
}; |
||||
|
||||
JPanel panel = TableLayoutHelper.createTableLayoutPane(acomponents, rowSize, columnSize); |
||||
this.add(panel, BorderLayout.CENTER); |
||||
this.setVisible(true); |
||||
} |
||||
} |
||||
|
||||
private JPanel createPointPane() { |
||||
pointSize = new UISpinner(1, 200, 1, 80); |
||||
pointPane = new ImageChooserPane(); |
||||
|
||||
double p = TableLayout.PREFERRED; |
||||
double f = TableLayout.FILL; |
||||
Component[][] components = new Component[][]{ |
||||
{null, null}, |
||||
new Component[]{new UILabel(Toolkit.i18nText("Plugin-ShdcMap-pointSize")), this.pointSize} |
||||
}; |
||||
JPanel sizePane = TableLayout4VanChartHelper.createGapTableLayoutPane(components, new double[]{p, p}, new double[]{p, f}); |
||||
|
||||
Component[][] comp1 = new Component[][]{ |
||||
new Component[]{sizePane}, |
||||
new Component[]{pointPane} |
||||
}; |
||||
JPanel pane = TableLayout4VanChartHelper.createGapTableLayoutPane(comp1, new double[]{p, p, p}, new double[]{f}); |
||||
|
||||
return TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Plugin-ShdcMap-iconSymbolExpand"), pane); |
||||
} |
||||
|
||||
private JPanel createRegionPane() { |
||||
this.lineWidth = new UISpinner(1, 10, 1, 1); |
||||
this.lineColor = new ColorSelectBox(100); |
||||
this.fillColor = new ColorSelectBox(100); |
||||
this.fillOpacity = new UINumberDragPane(0, 100); |
||||
|
||||
double p = TableLayout.PREFERRED; |
||||
double f = TableLayout.FILL; |
||||
Component[][] comps = new Component[][]{ |
||||
{null, null}, |
||||
new Component[]{new UILabel(Toolkit.i18nText("Plugin-ShdcMap-lineWidth")), this.lineWidth}, |
||||
new Component[]{new UILabel(Toolkit.i18nText("Plugin-ShdcMap-lineColor")), this.lineColor}, |
||||
new Component[]{new UILabel(Toolkit.i18nText("Plugin-ShdcMap-fillColor")), this.fillColor}, |
||||
new Component[]{new UILabel(Toolkit.i18nText("Plugin-ShdcMap-fillOpacity")), this.fillOpacity} |
||||
}; |
||||
JPanel regionPane = TableLayout4VanChartHelper.createGapTableLayoutPane(comps, new double[]{p, p, p, p, p}, new double[]{p, f}); |
||||
|
||||
return TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Plugin-ShdcMap-regionSymbolExpand"), regionPane); |
||||
} |
||||
} |
@ -0,0 +1,214 @@
|
||||
package com.fr.plugin.shdcmap.ui; |
||||
|
||||
import com.fr.chart.base.TextAttr; |
||||
import com.fr.design.gui.frpane.UINumberDragPane; |
||||
import com.fr.design.gui.ibutton.UIButtonGroup; |
||||
import com.fr.design.gui.icheckbox.UICheckBox; |
||||
import com.fr.design.gui.ilable.UILabel; |
||||
import com.fr.design.gui.ispinner.UISpinner; |
||||
import com.fr.design.gui.itextarea.UITextArea; |
||||
import com.fr.design.i18n.Toolkit; |
||||
import com.fr.design.layout.TableLayout; |
||||
import com.fr.design.layout.TableLayoutHelper; |
||||
import com.fr.design.mainframe.chart.gui.style.ChartTextAttrPane; |
||||
import com.fr.design.style.color.ColorSelectBox; |
||||
import com.fr.extended.chart.ExtendedScrollPane; |
||||
import com.fr.general.FRFont; |
||||
import com.fr.json.JSONObject; |
||||
import com.fr.plugin.shdcmap.CustomChart; |
||||
import com.fr.van.chart.designer.TableLayout4VanChartHelper; |
||||
|
||||
import javax.swing.*; |
||||
import javax.swing.event.ChangeEvent; |
||||
import javax.swing.event.ChangeListener; |
||||
import java.awt.*; |
||||
|
||||
/** |
||||
* @author duan.jingliang |
||||
*/ |
||||
public class CustomChartTipsPane extends ExtendedScrollPane<CustomChart> { |
||||
|
||||
private UICheckBox showtips; |
||||
private ColorSelectBox tipbgcolor; |
||||
private UINumberDragPane tiptransparent; |
||||
private ChartTextAttrPane tipTextAttrPane; |
||||
private UISpinner tipbgwidth; |
||||
|
||||
private UICheckBox tipcode; |
||||
private UICheckBox tippoint; |
||||
private UICheckBox tipother; |
||||
|
||||
|
||||
private UIButtonGroup<Integer> tiptype; |
||||
private UITextArea tipJsPane; |
||||
private CardLayout tipCardLayout; |
||||
|
||||
@Override |
||||
protected JPanel createContentPane() { |
||||
return new ContentPane(); |
||||
} |
||||
|
||||
@Override |
||||
public void populateBean(CustomChart chart) { |
||||
JSONObject tipsConf = chart.getTipsConf(); |
||||
|
||||
showtips.setSelected(tipsConf.getBoolean("showtips")); |
||||
tipbgcolor.setSelectObject(MapUtil.toColor(tipsConf.getString("tipbgcolor"))); |
||||
tiptransparent.populateBean(tipsConf.getDouble("tiptransparent")); |
||||
FRFont tipFont = FRFont.getInstance(tipsConf.getString("tipfamily"), |
||||
tipsConf.getInt("tipstyle"), |
||||
tipsConf.getInt("tipsize"), |
||||
MapUtil.toColor(tipsConf.getString("tipcolor"))); |
||||
tipTextAttrPane.populate(tipFont); |
||||
tipbgwidth.setValue(tipsConf.getDouble("tipbgwidth")); |
||||
|
||||
tipcode.setSelected(tipsConf.getBoolean("tipcode")); |
||||
tippoint.setSelected(tipsConf.getBoolean("tippoint")); |
||||
tipother.setSelected(tipsConf.getBoolean("tipother")); |
||||
tiptype.setSelectedItem(tipsConf.getInt("tiptype")); |
||||
tipJsPane.setText(tipsConf.getString("tipJsPane")); |
||||
} |
||||
|
||||
@Override |
||||
public void updateBean(CustomChart chart) { |
||||
JSONObject tipsConf = JSONObject.create(); |
||||
|
||||
tipsConf.put("showtips", showtips.isSelected()); |
||||
tipsConf.put("tipbgcolor", MapUtil.toHex(tipbgcolor.getSelectObject())); |
||||
tipsConf.put("tiptransparent", tiptransparent.updateBean()); |
||||
TextAttr tipText = this.tipTextAttrPane.update(); |
||||
tipsConf.put("tipsize", tipText.getFRFont().getSize()); |
||||
tipsConf.put("tipstyle", tipText.getFRFont().getStyle()); |
||||
tipsConf.put("tipfamily", tipText.getFRFont().getFamily()); |
||||
tipsConf.put("tipcolor", MapUtil.toHex(tipText.getFRFont().getForeground())); |
||||
tipsConf.put("tipbgwidth", tipbgwidth.getValue()); |
||||
|
||||
tipsConf.put("tipcode", tipcode.isSelected()); |
||||
tipsConf.put("tippoint", tippoint.isSelected()); |
||||
tipsConf.put("tipother", tipother.isSelected()); |
||||
tipsConf.put("tiptype", tiptype.getSelectedItem()); |
||||
tipsConf.put("tipJsPane", tipJsPane.getText()); |
||||
|
||||
chart.setTipsConf(tipsConf); |
||||
} |
||||
|
||||
@Override |
||||
protected String title4PopupWindow() { |
||||
return Toolkit.i18nText("Plugin-ShdcMap-tipstitle"); |
||||
} |
||||
|
||||
private class ContentPane extends JPanel { |
||||
public ContentPane() { |
||||
initComponents(); |
||||
} |
||||
|
||||
private void initComponents() { |
||||
this.setLayout(new BorderLayout()); |
||||
|
||||
JPanel tipPane = createTipStylePane(); |
||||
JPanel tipContentPane = createTipContentPane(); |
||||
|
||||
double p = TableLayout.PREFERRED; |
||||
double f = TableLayout.FILL; |
||||
double[] columnSize = {f}; |
||||
double[] rowSize = {p, p, p}; |
||||
Component[][] acomponents = new Component[][]{ |
||||
new Component[]{tipPane}, |
||||
new Component[]{tipContentPane} |
||||
}; |
||||
|
||||
JPanel panel = TableLayoutHelper.createTableLayoutPane(acomponents, rowSize, columnSize); |
||||
this.add(panel, BorderLayout.CENTER); |
||||
this.setVisible(true); |
||||
} |
||||
} |
||||
|
||||
private JPanel createTipStylePane() { |
||||
showtips = new UICheckBox(Toolkit.i18nText("Plugin-ShdcMap-showtips")); |
||||
tipbgcolor = new ColorSelectBox(100); |
||||
tiptransparent = new UINumberDragPane(0.0, 100.0); |
||||
tipTextAttrPane = new ChartTextAttrPane(); |
||||
tipbgwidth = new UISpinner(0.0, 1000.0, 1.0, 200.0); |
||||
|
||||
Component[][] comp1 = new Component[][]{ |
||||
{null, null}, |
||||
new Component[]{new UILabel(Toolkit.i18nText("Plugin-ShdcMap-tipbgwidth")), this.tipbgwidth}, |
||||
new Component[]{new UILabel(Toolkit.i18nText("Plugin-ShdcMap-tipbgcolor")), this.tipbgcolor}, |
||||
new Component[]{new UILabel(Toolkit.i18nText("Plugin-ShdcMap-tiptransparent")), this.tiptransparent} |
||||
}; |
||||
|
||||
double p = TableLayout.PREFERRED; |
||||
double[] columnSize = {TableLayout.PREFERRED, TableLayout.FILL}; |
||||
double[] rowSize = {p, p, p, p, p}; |
||||
JPanel panel1 = TableLayout4VanChartHelper.createGapTableLayoutPane(comp1, rowSize, columnSize); |
||||
|
||||
Component[][] comp2 = new Component[][]{ |
||||
new Component[]{this.showtips}, |
||||
new Component[]{panel1}, |
||||
new Component[]{tipTextAttrPane} |
||||
}; |
||||
|
||||
JPanel panel2 = TableLayoutHelper.createTableLayoutPane(comp2, new double[]{p, p, p}, new double[]{TableLayout.FILL}); |
||||
|
||||
return TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Plugin-ShdcMap-PointTipExpand"), panel2); |
||||
} |
||||
|
||||
private JPanel createTipContentPane() { |
||||
tiptype = new UIButtonGroup<Integer>(new String[]{Toolkit.i18nText("Plugin-ShdcMap-labelTypeCheck"), Toolkit.i18nText("Plugin-ShdcMap-labelTypeJS")}, new Integer[]{1,2}); |
||||
//tiptype.setSelectedItem(1);
|
||||
|
||||
tipcode = new UICheckBox(Toolkit.i18nText("Plugin-ShdcMap-tipcode")); |
||||
tippoint = new UICheckBox(Toolkit.i18nText("Plugin-ShdcMap-tippoint")); |
||||
tipother = new UICheckBox(Toolkit.i18nText("Plugin-ShdcMap-tipother")); |
||||
tipJsPane = new UITextArea(10, 6); |
||||
|
||||
double p = TableLayout.PREFERRED; |
||||
double f = TableLayout.FILL; |
||||
Component[][] compCheck = new Component[][]{ |
||||
new Component[]{null, tipcode}, |
||||
new Component[]{null, tippoint}, |
||||
new Component[]{null, tipother} |
||||
}; |
||||
final JPanel checkPane = TableLayout4VanChartHelper.createGapTableLayoutPane(compCheck, new double[]{p, p, p, p, p}, new double[]{p, f}); |
||||
|
||||
final JPanel cardPane = new JPanel(this.tipCardLayout = new CardLayout()){ |
||||
@Override |
||||
public Dimension getPreferredSize() { |
||||
if (null != tiptype.getSelectedItem() && tiptype.getSelectedItem() == 2) { |
||||
return tipJsPane.getPreferredSize(); |
||||
} else { |
||||
return checkPane.getPreferredSize(); |
||||
} |
||||
} |
||||
}; |
||||
cardPane.add(checkPane, "check"); |
||||
cardPane.add(tipJsPane, "js"); |
||||
this.tipCardLayout.show(cardPane, "check"); |
||||
tiptype.addChangeListener(new ChangeListener() { |
||||
@Override |
||||
public void stateChanged(ChangeEvent var1x) { |
||||
if (tiptype.getSelectedItem() == 1) { |
||||
tipCardLayout.show(cardPane, "check"); |
||||
} else { |
||||
tipCardLayout.show(cardPane, "js"); |
||||
} |
||||
} |
||||
}); |
||||
|
||||
Component[][] compLabel = new Component[][]{ |
||||
{null, null}, |
||||
new Component[]{new UILabel(Toolkit.i18nText("Plugin-ShdcMap-tiptype")), this.tiptype} |
||||
}; |
||||
JPanel labelTypePane = TableLayout4VanChartHelper.createGapTableLayoutPane(compLabel, new double[]{p, p}, new double[]{p, f}); |
||||
|
||||
Component[][] comp1 = new Component[][]{ |
||||
new Component[]{labelTypePane}, |
||||
new Component[]{cardPane} |
||||
}; |
||||
JPanel pane = TableLayout4VanChartHelper.createGapTableLayoutPane(comp1, new double[]{p, p, p}, new double[]{f}); |
||||
|
||||
|
||||
return TableLayout4VanChartHelper.createExpandablePaneWithTitle(Toolkit.i18nText("Plugin-ShdcMap-TipConentExpand"), pane); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,30 @@
|
||||
package com.fr.plugin.shdcmap.ui; |
||||
|
||||
import com.fr.design.gui.frpane.AttributeChangeListener; |
||||
import com.fr.extended.chart.AbstractExtendedStylePane; |
||||
import com.fr.extended.chart.ExtendedScrollPane; |
||||
import com.fr.plugin.shdcmap.CustomChart; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* @author duan.jingliang |
||||
*/ |
||||
public class CustomStylePane extends AbstractExtendedStylePane<CustomChart> { |
||||
public CustomStylePane(){ |
||||
super(); |
||||
} |
||||
public CustomStylePane(AttributeChangeListener attributeChangeListener){ |
||||
super(attributeChangeListener); |
||||
} |
||||
@Override |
||||
protected List<ExtendedScrollPane<CustomChart>> initPaneList() { |
||||
List<ExtendedScrollPane<CustomChart>> list = new ArrayList<ExtendedScrollPane<CustomChart>>(); |
||||
list.add(new CustomChartMapPane()); |
||||
list.add(new CustomChartIconStylePane()); |
||||
list.add(new CustomChartTipsPane()); |
||||
list.add(new CustomChartLinkPane()); |
||||
return list; |
||||
} |
||||
} |
@ -0,0 +1,143 @@
|
||||
package com.fr.plugin.shdcmap.ui; |
||||
|
||||
import com.bulenkov.iconloader.util.Base64Converter; |
||||
import com.fr.base.BaseUtils; |
||||
import com.fr.base.Style; |
||||
import com.fr.design.beans.BasicBeanPane; |
||||
import com.fr.design.gui.ibutton.UIButton; |
||||
import com.fr.design.gui.ilable.UILabel; |
||||
import com.fr.design.layout.TableLayout; |
||||
import com.fr.design.layout.TableLayoutHelper; |
||||
import com.fr.design.style.background.image.ImageFileChooser; |
||||
import com.fr.design.style.background.image.ImagePreviewPane; |
||||
import com.fr.design.utils.ImageUtils; |
||||
import com.fr.general.ImageWithSuffix; |
||||
import com.fr.general.xml.GeneralXMLTools; |
||||
|
||||
import javax.swing.*; |
||||
import java.awt.*; |
||||
import java.awt.event.ActionEvent; |
||||
import java.awt.event.ActionListener; |
||||
import java.awt.image.BufferedImage; |
||||
import java.io.File; |
||||
|
||||
public class ImageChooserPane extends BasicBeanPane<ImageEntity> { |
||||
private ImageFileChooser imageChooser; |
||||
private ImagePreviewPane imagePreview; |
||||
|
||||
private UIButton imagebtn; |
||||
|
||||
private ImageEntity imageEntity; |
||||
|
||||
private CustomStylePane stylePane; |
||||
|
||||
public ImageChooserPane(){ |
||||
this.setLayout(new BorderLayout()); |
||||
|
||||
imagePreview = new ImagePreviewPane(); |
||||
imageEntity = new ImageEntity(); |
||||
imagebtn = new UIButton("选择图标"); |
||||
UILabel imageLab = new UILabel("点图标"); |
||||
|
||||
double p = TableLayout.PREFERRED; |
||||
double f = TableLayout.FILL; |
||||
double[] columnSize = {p, f}; |
||||
double[] rowSize = {p, p, p}; |
||||
Component[][] acomponents = new Component[][]{ |
||||
new Component[]{imageLab, imagebtn}, |
||||
new Component[]{null, imagePreview} |
||||
}; |
||||
|
||||
JPanel panel = TableLayoutHelper.createTableLayoutPane(acomponents,rowSize,columnSize); |
||||
|
||||
this.add(panel, BorderLayout.CENTER); |
||||
|
||||
this.setVisible(true); |
||||
|
||||
imageChooser = new ImageFileChooser(); |
||||
imageChooser.setMultiSelectionEnabled(false); |
||||
initLiseners(); |
||||
} |
||||
|
||||
private void initLiseners() { |
||||
this.imagebtn.addActionListener(new ActionListener() { |
||||
@Override |
||||
public void actionPerformed(ActionEvent e) { |
||||
int returnVal = imageChooser.showOpenDialog(ImageChooserPane.this); |
||||
if (returnVal != JFileChooser.CANCEL_OPTION) { |
||||
dealWithImageFile(); |
||||
if (null != ImageChooserPane.this.stylePane) { |
||||
ImageChooserPane.this.stylePane.attributeChanged(); |
||||
} |
||||
} |
||||
} |
||||
}); |
||||
} |
||||
|
||||
private void dealWithImageFile() { |
||||
final File selectedFile = imageChooser.getSelectedFile(); |
||||
if (selectedFile != null && selectedFile.isFile()) { |
||||
BufferedImage image = BaseUtils.readImage(selectedFile.getPath()); |
||||
if (null == image) { |
||||
return; |
||||
} |
||||
if (image.getWidth() > 300 || image.getHeight() > 300) { |
||||
JOptionPane.showMessageDialog(null, |
||||
"图片太大,请重新选择!大小不超过300*300,当前尺寸:" + image.getWidth() + "*" + image.getHeight(), |
||||
"信息提示", |
||||
JOptionPane.ERROR_MESSAGE); |
||||
return; |
||||
} |
||||
|
||||
String type = ImageUtils.getImageType(selectedFile); |
||||
String iconBase64 = Base64Converter.encode(GeneralXMLTools.imageEncode(image, type)); |
||||
|
||||
if (null == this.imageEntity) { |
||||
this.imageEntity = new ImageEntity(); |
||||
} |
||||
this.imageEntity.setImagestr(iconBase64); |
||||
this.imageEntity.setImagetype(type); |
||||
this.imageEntity.setWidth(image.getWidth()); |
||||
this.imageEntity.setHeight(image.getHeight()); |
||||
|
||||
if (imagePreview != null) { |
||||
ImageWithSuffix imageWithSuffix = new ImageWithSuffix(image, type); |
||||
imagePreview.setImageStyle(Style.getInstance()); |
||||
imagePreview.setImageWithSuffix(imageWithSuffix); |
||||
imagePreview.repaint(); |
||||
} |
||||
} |
||||
} |
||||
@Override |
||||
public void populateBean(ImageEntity ob) { |
||||
if (null == ob || null == ob.getImagestr() || "".equals(ob.getImagestr())) { |
||||
this.imageEntity = new ImageEntity(); |
||||
this.imagePreview.setImage(null); |
||||
this.imagePreview.repaint(); |
||||
new ImagePreviewPane(); |
||||
return; |
||||
} |
||||
this.imageEntity = ob; |
||||
BufferedImage image = (BufferedImage)GeneralXMLTools.imageDecode(Base64Converter.decode(ob.getImagestr().getBytes())); |
||||
if (imagePreview != null && null != image) { |
||||
ImageWithSuffix imageWithSuffix = new ImageWithSuffix(image, ob.getImagetype()); |
||||
imagePreview.setImageStyle(Style.getInstance()); |
||||
imagePreview.setImageWithSuffix(imageWithSuffix); |
||||
imagePreview.repaint(); |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public ImageEntity updateBean() { |
||||
return this.imageEntity; |
||||
} |
||||
|
||||
@Override |
||||
protected String title4PopupWindow() { |
||||
return "点图标设置"; |
||||
} |
||||
|
||||
public void setStylePane(CustomStylePane stylePane) { |
||||
this.stylePane = stylePane; |
||||
} |
||||
} |
@ -0,0 +1,42 @@
|
||||
package com.fr.plugin.shdcmap.ui; |
||||
|
||||
import java.io.Serializable; |
||||
|
||||
public class ImageEntity implements Serializable { |
||||
private String imagestr; |
||||
private String imagetype; |
||||
private int width; |
||||
private int height; |
||||
|
||||
public String getImagestr() { |
||||
return imagestr; |
||||
} |
||||
|
||||
public void setImagestr(String imagestr) { |
||||
this.imagestr = imagestr; |
||||
} |
||||
|
||||
public String getImagetype() { |
||||
return imagetype; |
||||
} |
||||
|
||||
public void setImagetype(String imagetype) { |
||||
this.imagetype = imagetype; |
||||
} |
||||
|
||||
public int getWidth() { |
||||
return width; |
||||
} |
||||
|
||||
public void setWidth(int width) { |
||||
this.width = width; |
||||
} |
||||
|
||||
public int getHeight() { |
||||
return height; |
||||
} |
||||
|
||||
public void setHeight(int height) { |
||||
this.height = height; |
||||
} |
||||
} |
@ -0,0 +1,94 @@
|
||||
package com.fr.plugin.shdcmap.ui; |
||||
|
||||
import java.awt.*; |
||||
import java.util.Map; |
||||
|
||||
/** |
||||
* @author duan.jingliang |
||||
*/ |
||||
public class MapUtil { |
||||
public static String getString(Map map, String key) { |
||||
return getString(map, key, null); |
||||
} |
||||
|
||||
public static String getString(Map map, String key, String def) { |
||||
if (null == map) { |
||||
return def; |
||||
} |
||||
if (null != map.get(key)) { |
||||
return map.get(key).toString(); |
||||
} else { |
||||
return def; |
||||
} |
||||
} |
||||
|
||||
public static Integer getInteger(Map map, String key) { |
||||
return getInteger(map, key, null); |
||||
} |
||||
|
||||
public static Integer getInteger(Map map, String key, Integer def) { |
||||
if (null == map) { |
||||
return def; |
||||
} |
||||
if (null != map.get(key)) { |
||||
return Integer.parseInt(map.get(key).toString()); |
||||
} else { |
||||
return def; |
||||
} |
||||
} |
||||
|
||||
public static Double getDouble(Map map, String key) { |
||||
return getDouble(map, key, null); |
||||
} |
||||
|
||||
public static Double getDouble(Map map, String key, Double def) { |
||||
if (null == map) { |
||||
return def; |
||||
} |
||||
if (null != map.get(key)) { |
||||
return Double.parseDouble(map.get(key).toString()); |
||||
} else { |
||||
return def; |
||||
} |
||||
} |
||||
|
||||
public static Boolean getBoolean(Map map, String key) { |
||||
return getBoolean(map, key, null); |
||||
} |
||||
|
||||
public static Boolean getBoolean(Map map, String key, Boolean def) { |
||||
if (null == map) { |
||||
return def; |
||||
} |
||||
String s = getString(map, key); |
||||
if (null != s) { |
||||
if ("true".equals(s)) { |
||||
return true; |
||||
} else if ("false".equals(s)){ |
||||
return false; |
||||
} else { |
||||
return def; |
||||
} |
||||
} else { |
||||
return def; |
||||
} |
||||
} |
||||
|
||||
public static String toHex(Color c) { |
||||
if (null == c) { |
||||
return "transparent"; |
||||
} |
||||
String hex = Integer.toHexString(c.getRGB()); |
||||
if (hex.length() == 8) { |
||||
hex = "#" + hex.substring(2); |
||||
} |
||||
return hex; |
||||
} |
||||
public static Color toColor(String c) { |
||||
if (null != c && c.startsWith("#")) { |
||||
c = c.substring(1); |
||||
return new Color(Integer.parseInt(c, 16)); |
||||
} |
||||
return null; |
||||
} |
||||
} |
@ -0,0 +1,300 @@
|
||||
package com.fr.plugin.shdcmap.ui; |
||||
|
||||
import com.fr.design.beans.BasicBeanPane; |
||||
import com.fr.design.dialog.BasicPane; |
||||
import com.fr.design.gui.icheckbox.UICheckBox; |
||||
import com.fr.design.gui.icontainer.UIScrollPane; |
||||
import com.fr.design.gui.ilable.UILabel; |
||||
import com.fr.design.gui.ispinner.UISpinner; |
||||
import com.fr.design.layout.FRGUIPaneFactory; |
||||
import com.fr.design.layout.TableLayout; |
||||
import com.fr.design.layout.TableLayoutHelper; |
||||
import com.fr.design.scrollruler.ModLineBorder; |
||||
import com.fr.design.style.color.ColorSelectBox; |
||||
import com.fr.stable.StringUtils; |
||||
|
||||
import javax.swing.*; |
||||
import javax.swing.border.Border; |
||||
import javax.swing.border.MatteBorder; |
||||
import javax.swing.event.ChangeEvent; |
||||
import javax.swing.event.ChangeListener; |
||||
import javax.swing.plaf.ColorUIResource; |
||||
import java.awt.*; |
||||
import java.util.HashMap; |
||||
import java.util.Map; |
||||
|
||||
/** |
||||
* @author duan.jingliang |
||||
* @create 2019/9/6 |
||||
* 设计器配置界面 |
||||
* 配置父格关系、公式关系、死循环关系的功能开关,及样式配置。 |
||||
*/ |
||||
public class RelationSettingPane extends BasicBeanPane<String> { |
||||
private static final ColorUIResource BORDER_COLOR = new ColorUIResource(168, 172, 180); |
||||
private static final Border TIP_BORDER = BorderFactory.createEmptyBorder(10, 4, 4, 4); |
||||
private static final Border DIALOG_BORDER = BorderFactory.createEmptyBorder(0, 6, 4, 6); |
||||
private static final Border INNER_LEFT_BORDER = BorderFactory.createEmptyBorder(15, 35, 15, 0); |
||||
private UICheckBox formulaCheckBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Relation_Setting_Formula"), true); |
||||
private UICheckBox parentCheckBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Relation_Setting_Parent"), true); |
||||
private UICheckBox leftParentCheckBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Relation_Setting_Left_Parent"), true); |
||||
private UICheckBox topParentCheckBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Relation_Setting_Top_Paren"), true); |
||||
private UISpinner parentCount = new UISpinner(1, 20, 1, 5); |
||||
|
||||
private final double p = TableLayout.PREFERRED; |
||||
private final double f = TableLayout.FILL; |
||||
private final String checkedValue = "1"; |
||||
private final String uncheckedValue = "0"; |
||||
|
||||
private ColorSelectBox parentBgColor = new ColorSelectBox(100); |
||||
private ColorSelectBox parentTextColor = new ColorSelectBox(100);; |
||||
|
||||
private ColorSelectBox formulaBgColor = new ColorSelectBox(100); |
||||
private ColorSelectBox formulaTextColor = new ColorSelectBox(100); |
||||
|
||||
private UICheckBox endlessLoopCheckBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Relation_Setting_Endless_Loop"), true); |
||||
private ColorSelectBox endlessLoopColor = new ColorSelectBox(100); |
||||
|
||||
public RelationSettingPane() { |
||||
setLayout(FRGUIPaneFactory.createBorderLayout()); |
||||
UILabel titleLabel = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Relation_Setting_Explain")); |
||||
titleLabel.setBorder(TIP_BORDER); |
||||
add(titleLabel, "North"); |
||||
UIScrollPane detailScrollPane = new UIScrollPane(initDetailPane()); |
||||
detailScrollPane.setBorder(new MatteBorder(1, 1, 1, 1, BORDER_COLOR)); |
||||
add(detailScrollPane, "Center"); |
||||
setBorder(DIALOG_BORDER); |
||||
|
||||
checkEndlessEnabled(); |
||||
} |
||||
|
||||
@Override |
||||
public void populateBean(String o) { |
||||
|
||||
} |
||||
|
||||
@Override |
||||
public String updateBean() { |
||||
return "hello"; |
||||
} |
||||
|
||||
private JPanel initDetailPane() { |
||||
UILabel outerBorder = new UILabel(""); |
||||
outerBorder.setBorder(INNER_LEFT_BORDER); |
||||
|
||||
// 父格关系设置面板
|
||||
JPanel parentSettingPanel = FRGUIPaneFactory.createNColumnGridInnerContainer_S_Pane(1); |
||||
parentSettingPanel.setBorder(BorderFactory.createTitledBorder(new ModLineBorder(1), com.fr.design.i18n.Toolkit.i18nText("Relation_Setting_Parent_Group"))); |
||||
JPanel parentSettingCompsPanel = getParentSettingCompsPanel(); |
||||
parentSettingCompsPanel.setBorder(INNER_LEFT_BORDER); |
||||
parentSettingPanel.add(parentSettingCompsPanel); |
||||
|
||||
// 公式关系设置面板
|
||||
JPanel formulaSettingPanel = FRGUIPaneFactory.createNColumnGridInnerContainer_Pane(1, 2, 2); |
||||
formulaSettingPanel.setBorder(BorderFactory.createTitledBorder(new ModLineBorder(1), com.fr.design.i18n.Toolkit.i18nText("Relation_Setting_Formula_Group"))); |
||||
JPanel formulaSettingCompsPanel = getFormulaSettingCompsPanel(); |
||||
formulaSettingCompsPanel.setBorder(INNER_LEFT_BORDER); |
||||
formulaSettingPanel.add(formulaSettingCompsPanel); |
||||
|
||||
// 死循环设置面板
|
||||
JPanel endlessLoopSettingPanel = FRGUIPaneFactory.createNColumnGridInnerContainer_Pane(1, 2, 2); |
||||
endlessLoopSettingPanel.setBorder(BorderFactory.createTitledBorder(new ModLineBorder(1), com.fr.design.i18n.Toolkit.i18nText("Relation_Setting_EndlessLoop_Group"))); |
||||
JPanel endlessLoopSettingCompsPanel = getEndlessLoopSettingCompsPanel(); |
||||
endlessLoopSettingCompsPanel.setBorder(INNER_LEFT_BORDER); |
||||
endlessLoopSettingPanel.add(endlessLoopSettingCompsPanel); |
||||
|
||||
Component[][] arrayOfComponent = {{outerBorder}, {parentSettingPanel}, {formulaSettingPanel}, {endlessLoopSettingPanel}}; |
||||
return TableLayoutHelper.createGapTableLayoutPane(arrayOfComponent, new double[]{p, p, p, p}, new double[]{p},1.0D, 1.0D); |
||||
} |
||||
|
||||
protected JPanel getParentSettingCompsPanel() { |
||||
|
||||
//this.parentCount.setValue(Integer.valueOf(RelationSetting.getInstance().getParentCount()));
|
||||
if (uncheckedValue.equals(0)) { |
||||
this.parentCheckBox.setSelected(false); |
||||
|
||||
this.parentCount.setEnabled(false); |
||||
this.leftParentCheckBox.setSelected(false); |
||||
this.leftParentCheckBox.setEnabled(false); |
||||
this.topParentCheckBox.setSelected(false); |
||||
this.topParentCheckBox.setEnabled(false); |
||||
} |
||||
String parentBgColorStr = ""; //RelationSetting.getInstance().get("parentBgColor");
|
||||
String parentTextColorStr = ""; //RelationSetting.getInstance().get("parentTextColor");
|
||||
if (StringUtils.isNotEmpty(parentBgColorStr)) { |
||||
this.parentBgColor.setSelectObject(MapUtil.toColor(parentBgColorStr)); |
||||
} else { |
||||
this.parentBgColor.setSelectObject(MapUtil.toColor("#00ccff")); |
||||
} |
||||
if (StringUtils.isNotEmpty(parentTextColorStr)) { |
||||
this.parentTextColor.setSelectObject(MapUtil.toColor(parentTextColorStr)); |
||||
} else { |
||||
this.parentTextColor.setSelectObject(MapUtil.toColor("#ffffff")); |
||||
} |
||||
this.parentCheckBox.addChangeListener(new ChangeListener() { |
||||
|
||||
@Override |
||||
public void stateChanged(ChangeEvent paramAnonymousChangeEvent) { |
||||
if (RelationSettingPane.this.parentCheckBox.isSelected()) { |
||||
RelationSettingPane.this.parentCount.setEnabled(true); |
||||
RelationSettingPane.this.leftParentCheckBox.setEnabled(true); |
||||
RelationSettingPane.this.topParentCheckBox.setEnabled(true); |
||||
} else { |
||||
RelationSettingPane.this.parentCount.setEnabled(false); |
||||
RelationSettingPane.this.leftParentCheckBox.setSelected(false); |
||||
RelationSettingPane.this.leftParentCheckBox.setEnabled(false); |
||||
RelationSettingPane.this.topParentCheckBox.setSelected(false); |
||||
RelationSettingPane.this.topParentCheckBox.setEnabled(false); |
||||
} |
||||
RelationSettingPane.this.checkEndlessEnabled(); |
||||
} |
||||
}); |
||||
|
||||
Component[][] settingComps = { |
||||
{this.parentCheckBox, null}, |
||||
{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Relation_Setting_ParentCount") + ":", 4), this.parentCount}, |
||||
{this.leftParentCheckBox, this.topParentCheckBox} |
||||
}; |
||||
JPanel settingPane = TableLayoutHelper.createGapTableLayoutPane(settingComps, new double[]{p, p, p}, new double[]{p, p}, 6.0D, 6.0D); |
||||
|
||||
Component[][] styleComps = new Component[][]{ |
||||
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Relation_Setting_ParentStyle_BgColor")), |
||||
this.parentBgColor, |
||||
new UILabel(com.fr.design.i18n.Toolkit.i18nText("Relation_Setting_ParentStyle_TextColor")), |
||||
this.parentTextColor |
||||
} |
||||
}; |
||||
JPanel stylePane = TableLayoutHelper.createGapTableLayoutPane(styleComps, new double[]{p}, new double[]{p, p, p, p}, 6.0D, 6.0D); |
||||
|
||||
Component[][] comps = new Component[][]{ |
||||
{settingPane}, |
||||
{stylePane} |
||||
}; |
||||
return TableLayoutHelper.createGapTableLayoutPane(comps, new double[]{p, p}, new double[]{p}, 6.0D, 6.0D); |
||||
} |
||||
|
||||
private JPanel getFormulaSettingCompsPanel() { |
||||
|
||||
String formulaBgColorStr = ""; // = RelationSetting.getInstance().get("formulaBgColor");
|
||||
if (StringUtils.isNotEmpty(formulaBgColorStr)) { |
||||
this.formulaBgColor.setSelectObject(MapUtil.toColor(formulaBgColorStr)); |
||||
} else { |
||||
this.formulaBgColor.setSelectObject(MapUtil.toColor("#00ccff")); |
||||
} |
||||
String formulaTextColorStr = ""; //RelationSetting.getInstance().get("formulaTextColor");
|
||||
if (StringUtils.isNotEmpty(formulaTextColorStr)) { |
||||
this.formulaTextColor.setSelectObject(MapUtil.toColor(formulaTextColorStr)); |
||||
} else { |
||||
this.formulaTextColor.setSelectObject(MapUtil.toColor("#ffffff")); |
||||
} |
||||
|
||||
this.formulaCheckBox.addChangeListener(new ChangeListener() { |
||||
@Override |
||||
public void stateChanged(ChangeEvent e) { |
||||
RelationSettingPane.this.checkEndlessEnabled(); |
||||
} |
||||
}); |
||||
|
||||
Component[][] settingComps = new Component[][]{ |
||||
new Component[]{this.formulaCheckBox, null} |
||||
}; |
||||
JPanel settingPane = TableLayoutHelper.createGapTableLayoutPane(settingComps, new double[]{p}, new double[]{p, p}, 6.0D, 6.0D); |
||||
|
||||
Component[][] styleComps = new Component[][]{ |
||||
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Relation_Setting_ParentStyle_BgColor")), |
||||
this.formulaBgColor, |
||||
new UILabel(com.fr.design.i18n.Toolkit.i18nText("Relation_Setting_ParentStyle_TextColor")), |
||||
this.formulaTextColor |
||||
} |
||||
}; |
||||
JPanel stylePane = TableLayoutHelper.createGapTableLayoutPane(styleComps, new double[]{p}, new double[]{p, p, p, p}, 6.0D, 6.0D); |
||||
|
||||
Component[][] comps = new Component[][]{ |
||||
{settingPane}, |
||||
{stylePane} |
||||
}; |
||||
return TableLayoutHelper.createGapTableLayoutPane(comps, new double[]{p, p}, new double[]{p}, 6.0D, 6.0D); |
||||
} |
||||
|
||||
private JPanel getEndlessLoopSettingCompsPanel() { |
||||
|
||||
|
||||
|
||||
Component[][] components = new Component[][]{ |
||||
new Component[]{this.endlessLoopCheckBox, null}, |
||||
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Relation_Setting_ParentStyle_EndLoopColor")), this.endlessLoopColor} |
||||
}; |
||||
return TableLayoutHelper.createGapTableLayoutPane(components, new double[]{p, p}, new double[]{p, p}, 6.0D, 6.0D); |
||||
} |
||||
|
||||
public void doWithProcess() { |
||||
//RelationSetting.getInstance().saveRelationSetting(getParentSwitch(), getLeftParentSwitch(), getTopParentSwitch(), getParentCount(), getFormulaSwitch());
|
||||
Map<String, String> confMap = new HashMap(10); |
||||
confMap.put("parentBgColor", MapUtil.toHex(this.parentBgColor.getSelectObject())); |
||||
confMap.put("parentTextColor", MapUtil.toHex(this.parentTextColor.getSelectObject())); |
||||
confMap.put("formulaBgColor", MapUtil.toHex(this.formulaBgColor.getSelectObject())); |
||||
confMap.put("formulaTextColor", MapUtil.toHex(this.formulaTextColor.getSelectObject())); |
||||
confMap.put("endlessLoop", getEndlessLoopSwitch()); |
||||
confMap.put("endlessLoopColor", MapUtil.toHex(this.endlessLoopColor.getSelectObject())); |
||||
//RelationSetting.getInstance().saveRelationSetting(confMap);
|
||||
} |
||||
|
||||
private void checkEndlessEnabled() { |
||||
if (!this.parentCheckBox.isSelected() && !this.formulaCheckBox.isSelected()) { |
||||
this.endlessLoopCheckBox.setEnabled(false); |
||||
this.endlessLoopColor.setEnabled(false); |
||||
} else { |
||||
this.endlessLoopCheckBox.setEnabled(true); |
||||
this.endlessLoopColor.setEnabled(true); |
||||
} |
||||
} |
||||
private String getEndlessLoopSwitch() { |
||||
String str = "0"; |
||||
if (this.endlessLoopCheckBox.isSelected()) { |
||||
str = "1"; |
||||
} |
||||
return str; |
||||
} |
||||
|
||||
private int getParentCount() { |
||||
Double countDouble = this.parentCount.getValue(); |
||||
return countDouble.intValue(); |
||||
} |
||||
|
||||
private String getParentSwitch() { |
||||
String str = "0"; |
||||
boolean isOpenSwitch = (this.parentCheckBox.isSelected()) && ((this.topParentCheckBox.isSelected()) || (this.leftParentCheckBox.isSelected())); |
||||
if (isOpenSwitch) { |
||||
str = "1"; |
||||
} |
||||
return str; |
||||
} |
||||
|
||||
private String getTopParentSwitch() { |
||||
String str = "0"; |
||||
if (this.topParentCheckBox.isSelected()) { |
||||
str = "1"; |
||||
} |
||||
return str; |
||||
} |
||||
|
||||
private String getLeftParentSwitch() { |
||||
String str = "0"; |
||||
if (this.leftParentCheckBox.isSelected()) { |
||||
str = "1"; |
||||
} |
||||
return str; |
||||
} |
||||
|
||||
private String getFormulaSwitch() { |
||||
String str = "0"; |
||||
if (this.formulaCheckBox.isSelected()) { |
||||
str = "1"; |
||||
} |
||||
return str; |
||||
} |
||||
|
||||
@Override |
||||
protected String title4PopupWindow() { |
||||
return com.fr.design.i18n.Toolkit.i18nText("Relation_Setting_Name"); |
||||
} |
||||
} |
@ -0,0 +1,510 @@
|
||||
ShdcGdMapWrapper = ExtendedChart.extend({ |
||||
|
||||
_init: function (dom, option) { |
||||
debugger; |
||||
|
||||
var self = this; |
||||
self.chartBaseOption = option; |
||||
|
||||
this._dom = dom; |
||||
this.width = option.width || $(dom).width();// 补充从dom获取.
|
||||
this.height = option.height || $(dom).height(); |
||||
this.loadMapNum = 0; |
||||
|
||||
this.chartData = option.data; |
||||
|
||||
this.mapConf = option.mapConf; |
||||
this.iconConf = option.iconConf; |
||||
this.tipsConf = option.tipsConf; |
||||
this.pointLink = option.pointLink; |
||||
this.linkParam = option.linkParam; |
||||
|
||||
this.initTips(); |
||||
this.initMaps(); |
||||
|
||||
return {}; |
||||
}, |
||||
initTips: function() { |
||||
var self = this; |
||||
$('<div></div>').css({ |
||||
'position': 'absolute', |
||||
'left': '0px', |
||||
'top': '0px', |
||||
'width': (self.tipsConf.tipbgwidth || 200) + 'px', |
||||
'padding': '10px', |
||||
'background-color': self.hexToRgba(self.tipsConf.tipbgcolor, self.tipsConf.tiptransparent).rgba, |
||||
'border-radius': '5px', |
||||
'color': self.tipsConf.tipcolor, |
||||
'font-size': self.tipsConf.tipsize, |
||||
'font-family': self.tipsConf.tipfamily, |
||||
'font-style': self.getFontStyle(self.tipsConf.tipstyle), |
||||
'font-weight': self.getFontWeight(self.tipsConf.tipstyle) |
||||
}).addClass('ShdcAMap_custom_tips').appendTo($(this._dom).parent()); |
||||
|
||||
$(this._dom).parent().find('div.ShdcAMap_custom_tips').hide(); |
||||
}, |
||||
|
||||
initMaps: function() { |
||||
var self = this; |
||||
|
||||
var mapUrl = "https://webapi.amap.com/maps?v=1.4.15&key=96a69f5b479081b2de6ce05669b60578&plugin=Map3D,AMap.DistrictLayer,AMap.Scale,AMap.ToolBar"; |
||||
|
||||
$.getScript(mapUrl,function(){ |
||||
var mapStyleId = self.mapConf.mapStyle || "d82836f41b8b6f6123697c763867a5b1"; |
||||
var centerx = self.linkParam.centerx || self.mapConf.centerx || 121.485950661; |
||||
var centery = self.linkParam.centery || self.mapConf.centery || 31.730548215; |
||||
var mapzoom = self.linkParam.mapzoom || self.mapConf.mapzoom || 13; |
||||
var map = new AMap.Map(self._dom, { |
||||
resizeEnable: true, |
||||
center: [centerx, centery], |
||||
zoom: mapzoom, |
||||
mapStyle: 'amap://styles/' + mapStyleId |
||||
}); |
||||
|
||||
|
||||
self.baseMap = map; |
||||
|
||||
if (self.mapConf.showGovRegion) { |
||||
self.initGovRegion(); |
||||
} |
||||
if (self.mapConf.showSateLayer) { |
||||
var satellite = new AMap.TileLayer.Satellite(); |
||||
map.add(satellite); |
||||
} |
||||
self.loadRsPoint(); |
||||
|
||||
}); |
||||
|
||||
|
||||
}, |
||||
|
||||
initGovRegion: function(){ |
||||
var self = this; |
||||
|
||||
//var regionStyle = self.getGovRegionStyle();
|
||||
self.disProvince = new AMap.DistrictLayer.Province({ |
||||
zIndex: 1, |
||||
adcode: "310000", |
||||
depth: 5, |
||||
styles: { |
||||
'fill': function (properties) { |
||||
// properties为可用于做样式映射的字段,包含
|
||||
// NAME_CHN:中文名称
|
||||
// adcode_pro
|
||||
// adcode_cit
|
||||
// adcode
|
||||
console.log(properties.NAME_CHN); |
||||
var styleAttr = self.getGovRegionStyle(properties.NAME_CHN); |
||||
|
||||
|
||||
return self.hexToRgba(styleAttr.fillColor, styleAttr.fillOpacity).rgba; |
||||
}, |
||||
'province-stroke': function(properties){ |
||||
return self.getGovRegionStyle(properties.NAME_CHN).lineColor; |
||||
}, |
||||
'city-stroke': function(properties){ |
||||
return self.getGovRegionStyle(properties.NAME_CHN).lineColor; |
||||
}, // 中国地级市边界
|
||||
'county-stroke': function(properties){ |
||||
//'rgba(255,255,255,0.5)' // 中国区县边界
|
||||
return self.getGovRegionStyle(properties.NAME_CHN).lineColor; |
||||
} |
||||
} |
||||
}); |
||||
|
||||
self.disProvince.setMap(self.baseMap); |
||||
|
||||
}, |
||||
|
||||
getGovRegionStyle: function(region){ |
||||
var self = this; |
||||
var iconAttr = {}; |
||||
var isSetStyle = false; |
||||
for (var i = 0; i < self.iconConf.length; i++) { |
||||
if (region == self.iconConf[i].titleName) { |
||||
iconAttr = self.iconConf[i]; |
||||
isSetStyle = true; |
||||
break; |
||||
} |
||||
} |
||||
if (isSetStyle) { |
||||
return iconAttr; |
||||
} else { |
||||
var gb = Math.random() * 155 + 50; |
||||
var randomColor = 'rgba(' + gb + ',' + gb + ',255,0.8)'; |
||||
return { |
||||
lineWidth: 0, |
||||
lineColor: 'rgba(255,255,255,0)', |
||||
fillColor: randomColor, |
||||
fillOpacity: 0, |
||||
}; |
||||
} |
||||
|
||||
}, |
||||
|
||||
calImgSize: function(imgw, imgh, size) { |
||||
if (size && size > 0) { |
||||
if (imgw > imgh) { |
||||
imgh = size * imgh / imgw; |
||||
imgw = size; |
||||
} else { |
||||
imgw = size * imgw / imgh; |
||||
imgh = size; |
||||
} |
||||
} |
||||
return { |
||||
imgw: imgw, |
||||
imgh: imgh |
||||
}; |
||||
}, |
||||
_customDoLink: function(params) { |
||||
params.linkKey = params.linkKey || 'pointLink'; |
||||
var hyperLink = this.pointLink; |
||||
if (params && hyperLink && hyperLink.parasMap) { |
||||
params.chartIndex = this.chartIndex || 0; |
||||
this._doLinkWithFilter(params, hyperLink); |
||||
} |
||||
}, |
||||
|
||||
|
||||
loadRsPoint: function() { |
||||
var self = this; |
||||
this.rsPointMaps = {}; |
||||
this.chartData.map(function (item) { |
||||
self.rsPointMaps[item.code] = item; |
||||
|
||||
var lnglatArr = self.lnglatToArr(item.coords); |
||||
|
||||
// 转换经纬度
|
||||
if (item.convert == "是") { |
||||
self.coordsConvert(lnglatArr, item); |
||||
} else { |
||||
var showCoords = []; |
||||
lnglatArr.map(function(e){ |
||||
showCoords.push(new AMap.LngLat(e[0], e[1])); |
||||
}); |
||||
self.loadIcon(item, showCoords); |
||||
} |
||||
|
||||
/*AMap.convertFrom(lnglatArr, 'gps', function (status, result) { |
||||
if (result.info === 'ok') { |
||||
var aLnglatArr = result.locations; |
||||
self.loadIcon(item, aLnglatArr); |
||||
} |
||||
});*/ |
||||
|
||||
}); |
||||
}, |
||||
|
||||
coordsConvert: function(LngLatArray, item) { |
||||
var self = this; |
||||
var LngLatArray2 = []; |
||||
var size = 40; |
||||
var pageNum = parseInt((LngLatArray.length + size - 1) / size); |
||||
var convertNum = 0; |
||||
|
||||
var convert = function(LngLatArraySlice, n) { |
||||
AMap.convertFrom(LngLatArraySlice, 'gps', function (status, result) { |
||||
if (result.info === 'ok') { |
||||
LngLatArray2[n] = (result.locations); |
||||
convertNum++; |
||||
if (convertNum >= pageNum) { |
||||
self.loadIcon(item, [].concat.apply([], LngLatArray2)); |
||||
} |
||||
} |
||||
}); |
||||
}; |
||||
for (var i = 0; i < pageNum; i++) { |
||||
var LngLatArraySlice = LngLatArray.slice(i * size, (i + 1) * size); |
||||
convert(LngLatArraySlice, i); |
||||
} |
||||
}, |
||||
|
||||
loadIcon: function(data, lnglat) { |
||||
var self = this; |
||||
|
||||
var iconAttr = {}; |
||||
for (var i = 0; i < self.iconConf.length; i++) { |
||||
if (data.icon == self.iconConf[i].titleName) { |
||||
iconAttr = self.iconConf[i]; |
||||
break; |
||||
} |
||||
} |
||||
|
||||
if (data.type == "点" || data.type == "组合") { |
||||
var realImgSize = self.calImgSize(iconAttr.pointimgw, iconAttr.pointimgh, iconAttr.pointSize); |
||||
iconAttr.pointimgw = realImgSize.imgw; |
||||
iconAttr.pointimgh = realImgSize.imgh; |
||||
var imgstr = 'data:image/' + iconAttr.pointimgtype + ';base64,' + iconAttr.pointimg; |
||||
|
||||
var icon = new AMap.Icon({ |
||||
size: new AMap.Size(iconAttr.pointimgw, iconAttr.pointimgh), |
||||
image: imgstr, |
||||
imageSize: new AMap.Size(iconAttr.pointimgw, iconAttr.pointimgh) |
||||
}); |
||||
|
||||
var markerPos = lnglat[0]; |
||||
if (data.type == "组合") { |
||||
markerPos = self.getAreaCenter(lnglat); |
||||
} |
||||
|
||||
var marker = new AMap.Marker({ |
||||
//title: data.name,
|
||||
position: markerPos, |
||||
offset: new AMap.Pixel(-iconAttr.pointimgw/2, -iconAttr.pointimgh), |
||||
icon: icon |
||||
}); |
||||
|
||||
marker.on('mouseover', function(ev){ |
||||
if (self.tipsConf.showtips) { |
||||
var tmpDom = $(self._dom).parent().find('div.ShdcAMap_custom_tips'); |
||||
if (self.tipsConf.tiptype == "2") { |
||||
var tipFunc = function(){ |
||||
return eval(self.tipsConf.tipJsPane); |
||||
} |
||||
tipFunc.call(data); |
||||
var tipContent = data.tipContent; |
||||
|
||||
tmpDom.html(tipContent); |
||||
tmpDom.css({ |
||||
"left": (ev.pixel.x + 10) + "px", |
||||
"top": (ev.pixel.y + 10) + "px" |
||||
}); |
||||
tmpDom.show(); |
||||
} else { |
||||
var tipHtmls = '<div>'; |
||||
if (self.tipsConf.tipcode) { |
||||
tipHtmls += '编码:' + data.code + '<br/>'; |
||||
} |
||||
if (self.tipsConf.tippoint) { |
||||
tipHtmls += '名字:' + data.name + '<br/>'; |
||||
} |
||||
if (self.tipsConf.tipother) { |
||||
if (data.customName && data.customName.length == data.customValue.length) { |
||||
for (var i = 0; i < data.customName.length; i++) { |
||||
tipHtmls += data.customName[i] + ':' + data.customValue[i] + '<br/>'; |
||||
} |
||||
} |
||||
} |
||||
tipHtmls += '</div>'; |
||||
tmpDom.html(tipHtmls); |
||||
tmpDom.css({ |
||||
"left": (ev.pixel.x + 10) + "px", |
||||
"top": (ev.pixel.y + 10) + "px" |
||||
}); |
||||
tmpDom.show(); |
||||
} |
||||
|
||||
} |
||||
|
||||
}); |
||||
marker.on('mouseout', function(ev){ |
||||
if (self.tipsConf.showtips) { |
||||
var tmpDom = $(self._dom).parent().find('div.ShdcAMap_custom_tips'); |
||||
tmpDom.hide(); |
||||
} |
||||
}); |
||||
|
||||
marker.on('click', function(ev){ |
||||
self._customDoLink(data); |
||||
}); |
||||
|
||||
self.baseMap.add(marker); |
||||
} |
||||
if (data.type == "区域" || data.type == "组合") { |
||||
var polygon = new AMap.Polygon({ |
||||
path: lnglat, |
||||
fillColor: iconAttr.fillColor, |
||||
fillOpacity: iconAttr.fillOpacity / 100, |
||||
strokeWeight: iconAttr.lineWidth, |
||||
strokeColor: iconAttr.lineColor, |
||||
strokeOpacity: 1 |
||||
}); |
||||
|
||||
polygon.on('mouseover', function(ev){ |
||||
if (self.tipsConf.showtips) { |
||||
var tmpDom = $(self._dom).parent().find('div.ShdcAMap_custom_tips'); |
||||
|
||||
if (self.tipsConf.tiptype == "2") { |
||||
var tipFunc = function(){ |
||||
return eval(self.tipsConf.tipJsPane); |
||||
} |
||||
tipFunc.call(data); |
||||
var tipContent = data.tipContent; |
||||
|
||||
tmpDom.html(tipContent); |
||||
tmpDom.css({ |
||||
"left": (ev.pixel.x + 10) + "px", |
||||
"top": (ev.pixel.y + 10) + "px" |
||||
}); |
||||
tmpDom.show(); |
||||
} else { |
||||
var tipHtmls = '<div>'; |
||||
if (self.tipsConf.tipcode) { |
||||
tipHtmls += '编码:' + data.code + '<br/>'; |
||||
} |
||||
if (self.tipsConf.tippoint) { |
||||
tipHtmls += '名字:' + data.name + '<br/>'; |
||||
} |
||||
if (self.tipsConf.tipother) { |
||||
if (data.customName && data.customName.length == data.customValue.length) { |
||||
for (var i = 0; i < data.customName.length; i++) { |
||||
tipHtmls += data.customName[i] + ':' + data.customValue[i] + '<br/>'; |
||||
} |
||||
} |
||||
} |
||||
tipHtmls += '</div>'; |
||||
tmpDom.html(tipHtmls); |
||||
tmpDom.css({ |
||||
"left": (ev.pixel.x + 10) + "px", |
||||
"top": (ev.pixel.y + 10) + "px" |
||||
}); |
||||
tmpDom.show(); |
||||
} |
||||
|
||||
} |
||||
|
||||
}); |
||||
polygon.on('mouseout', function(ev){ |
||||
if (self.tipsConf.showtips) { |
||||
var tmpDom = $(self._dom).parent().find('div.ShdcAMap_custom_tips'); |
||||
tmpDom.hide(); |
||||
} |
||||
}); |
||||
|
||||
polygon.on('click', function(ev){ |
||||
self._customDoLink(data); |
||||
}); |
||||
|
||||
self.baseMap.add(polygon); |
||||
} |
||||
}, |
||||
|
||||
lnglatToArr: function(fromStr){ |
||||
var retArr = []; |
||||
if (fromStr) { |
||||
var lnglatArr = fromStr.split(","); |
||||
for (var i = 0; i < lnglatArr.length; i++) { |
||||
retArr.push(lnglatArr[i].trim().split(" ")); |
||||
} |
||||
} |
||||
return retArr; |
||||
}, |
||||
getAreaCenter: function(coords){ |
||||
var total = coords.length; |
||||
var X = 0, Y = 0, Z = 0; |
||||
for (var i = 0; i < coords.length; i++) { |
||||
var lnglat = coords[i]; |
||||
var lng = (lnglat.lng * Math.PI) / 180; |
||||
var lat = (lnglat.lat * Math.PI) / 180; |
||||
var x, y, z; |
||||
x = Math.cos(lat) * Math.cos(lng); |
||||
y = Math.cos(lat) * Math.sin(lng); |
||||
z = Math.sin(lat); |
||||
X += x; |
||||
Y += y; |
||||
Z += z; |
||||
} |
||||
|
||||
X = X / total; |
||||
Y = Y / total; |
||||
Z = Z / total; |
||||
|
||||
var Lng = Math.atan2(Y, X); |
||||
var Hyp = Math.sqrt(X * X + Y * Y); |
||||
var Lat = Math.atan2(Z, Hyp); |
||||
return [ |
||||
parseFloat((Lng * 180) / Math.PI), |
||||
parseFloat((Lat * 180) / Math.PI) |
||||
]; |
||||
}, |
||||
calTextWidth: function(str, fontSize) { |
||||
var fontSize = fontSize || 12; |
||||
var strHtml = $('<span>') |
||||
.attr("id", "temp_cal_text_font_size") |
||||
.css({ |
||||
"display": "none", |
||||
"font-size": fontSize + "px", |
||||
"font-family": "Microsoft YaHei" |
||||
}).html(str); |
||||
$(document.body).append(strHtml); |
||||
var width = $('#temp_cal_text_font_size').width(); |
||||
var height = $('#temp_cal_text_font_size').height(); |
||||
$('#temp_cal_text_font_size').remove(); |
||||
return [width, height]; |
||||
}, |
||||
hexToRgba: function(hex, al) { |
||||
var hexColor = /^#/.test(hex) ? hex.slice(1) : hex, |
||||
alp = hex === 'transparent' ? 0 : Math.ceil(al), |
||||
r, g, b; |
||||
hexColor = /^[0-9a-f]{3}|[0-9a-f]{6}$/i.test(hexColor) ? hexColor : 'fffff'; |
||||
if (hexColor.length === 3) { |
||||
hexColor = hexColor.replace(/(\w)(\w)(\w)/gi, '$1$1$2$2$3$3'); |
||||
} |
||||
r = hexColor.slice(0, 2); |
||||
g = hexColor.slice(2, 4); |
||||
b = hexColor.slice(4, 6); |
||||
r = parseInt(r, 16); |
||||
g = parseInt(g, 16); |
||||
b = parseInt(b, 16); |
||||
return { |
||||
hex: '#' + hexColor, |
||||
alpha: alp, |
||||
rgba: 'rgba(' + r + ', ' + g + ', ' + b + ', ' + (alp / 100).toFixed(2) + ')' |
||||
}; |
||||
}, |
||||
isNullStr: function (val, def) { |
||||
if (typeof(val) == undefined || "" == val || null == val || val.length <= 0) { |
||||
if (typeof(def) == undefined || "" == def || null == def || def.length <= 0) { |
||||
return ""; |
||||
} |
||||
return def; |
||||
} |
||||
if (val.trim) { |
||||
return val.trim(); |
||||
} |
||||
return val; |
||||
}, |
||||
isNullInt: function (val, def) { |
||||
if (typeof(val) == undefined || "" == val || null == val || val.length <= 0) { |
||||
if (typeof(def) == undefined || "" == def || null == def || def.length <= 0) { |
||||
return 0; |
||||
} |
||||
return parseInt(def); |
||||
} |
||||
return parseInt(val); |
||||
}, |
||||
isNullBoolean: function (val, def) { |
||||
if (typeof(val) == undefined || "" == val || null == val) { |
||||
if (typeof(def) == undefined || "" == def || null == def) { |
||||
return false; |
||||
} |
||||
return def; |
||||
} |
||||
return val; |
||||
}, |
||||
getAlign: function (align) { |
||||
if ("2" == align) { |
||||
return "left"; |
||||
} else if ("0" == align) { |
||||
return "center"; |
||||
} else if ("4" == align) { |
||||
return "right"; |
||||
} |
||||
}, |
||||
getFontStyle: function (style) { |
||||
if ("2" == style || "3" == style) { |
||||
return "italic"; |
||||
} else { |
||||
return "normal"; |
||||
} |
||||
}, |
||||
getFontWeight: function(style){ |
||||
if ("1" == style || "3" == style) { |
||||
return "bold"; |
||||
} else { |
||||
return "normal"; |
||||
} |
||||
} |
||||
|
||||
}); |
@ -0,0 +1,110 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<WorkBook xmlVersion="20170720" releaseVersion="10.0.0"> |
||||
<TableDataMap> |
||||
<TableData name="ds1" class="com.fr.data.impl.EmbeddedTableData"> |
||||
<Parameters/> |
||||
<DSName> |
||||
<![CDATA[]]></DSName> |
||||
<ColumnNames> |
||||
<![CDATA[编码,,.,,名字,,.,,场景,,.,,类型,,.,,经纬度,,.,,系列名,,.,,系列值,,.,,地块名称,,.,,土地面积,,.,,土地权利人]]></ColumnNames> |
||||
<ColumnTypes> |
||||
<![CDATA[java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String]]></ColumnTypes> |
||||
<RowData ColumnTypes="java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String"> |
||||
<![CDATA[Fco$c"#13QfARE,5ZPdHCrb-p/<HN&(Ech1b(=IZ)]A#g4+`4anR>_BMUX!VMVp,%qE?LLrZ> |
||||
?*T*3[,pn,E.TnK%[=+c)Ln7^,.;657T5mBD!E(<Xg5H*':B0-hOOmS;NWTAAoBh1T8O/#q^ |
||||
V"A3>_QuL29DPFCm"HYZA+u$Dj6rTi@UADR\Q1b!t77OhS0h[t]A)J"u%5sjj>!_1-m29)$^U |
||||
t)_JUWUO=oNXEk9N),F$YhZhDp%A=C]ARF>WF#WkoE8#iC'dG!dG$'I6>;[8'V*0Hg`"ElK$5 |
||||
l^LQ4FG0mgrgTjuV"iD*FEOutZn'58%HF]A7R)W'7!mCg#;XB8cG3gY"UigH[K5H[I*/9q7pp |
||||
o[G)bT,i%k#0IS]Ar;c~ |
||||
]]></RowData> |
||||
</TableData> |
||||
</TableDataMap> |
||||
<Report class="com.fr.report.worksheet.WorkSheet" name="sheet1"> |
||||
<ReportPageAttr> |
||||
<HR/> |
||||
<FR/> |
||||
<HC/> |
||||
<FC/> |
||||
</ReportPageAttr> |
||||
<ColumnPrivilegeControl/> |
||||
<RowPrivilegeControl/> |
||||
<RowHeight defaultValue="723900"> |
||||
<![CDATA[723900,723900,723900,723900,723900,723900,723900,723900,723900,723900,723900]]></RowHeight> |
||||
<ColumnWidth defaultValue="2743200"> |
||||
<![CDATA[2743200,2743200,2743200,2743200,2743200,2743200,2743200,2743200,2743200,2743200,2743200]]></ColumnWidth> |
||||
<FloatElementList> |
||||
<com.fr.report.cell.FloatElement> |
||||
<FloatElementName name="Float4"/> |
||||
<PrivilegeControl/> |
||||
<Location leftDistance="304800" topDistance="152400" width="23279100" height="17411700"/> |
||||
<O t="CC"> |
||||
<LayoutAttr selectedIndex="0"/> |
||||
<ChangeAttr enable="false" changeType="button" timeInterval="5" buttonColor="-8421505" carouselColor="-8421505" showArrow="true"> |
||||
<TextAttr> |
||||
<Attr alignText="0"/> |
||||
</TextAttr> |
||||
</ChangeAttr> |
||||
<Chart name="默认" chartClass="com.fr.plugin.shdcmap.CustomChart"> |
||||
<attr refreshEnabled="false" refreshTime="10.0" mapConf="{"mapzoom":10.0,"centerx":"121.474488","centery":"31.233588","mapStyle":"d82836f41b8b6f6123697c763867a5b1","showGovRegion":false}" tipsConf="{"showtips":true,"tipbgcolor":"#000000","tiptransparent":60.0,"tipsize":11,"tipstyle":1,"tipfamily":"微软雅黑","tipcolor":"#ffffff","tipbgwidth":150.0,"tipcode":true,"tippoint":true,"tipother":true,"tiptype":1,"tipJsPane":"console.log(this);"}" iconConf="[{"pointSize":16.0,"pointimg":"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACNklEQVR4nL2XPUgcQRTHt3DeXKJoEcTE7MzcGQsRTCNYWKURAknA1s6PJoVYCPZWqYKVIKZIJRamEIVY2ASSQkkVE3O75/lVKKSwFgQheW+5O4+Ttzdzu5uBPwwz8+b/m6/Hruc5lHPz8EmgYTFQsBdqOEPdoK5QP1HbR1q+dpnPqZAxmlyi/jbRdujLl6kZl/IwgJOGFsYNkiuJzU/6vC534zuVtFxNBBAa+JgEIJIR0y2ai5nE5hWVNQy6A2j5NS0AusBO5iUF4xYTX+MRHUSieuxdgEMngECJ97HmCnaOfdlfHU91aouL+d3tdVgDYMBazGQbMXEbXNwvJZ/Z74AWu9xEmO3muDjqY++BaRu1BqD3y07kt71gwbGPizvufaDsd8DIWf78xVsujvqYuEtrcypFLcfYG21gn4ujPibusxNAtBoN3/nzFEvlx153dSzVqY0dr8SkO4CRC03e9jW974ri8sDZQY/X7gwQPPUeYXBgkZDihQtxNq/tghJTyQDkt5bNaxAGNlsFCLR8kxgAk9IwnvGtqznmkg+Jze8g4J3bysWfcr8nUwOoQBxaAyg5n6o5laKRr6wAlPiSunm1oMGnZgDFQs5kBlCBuInLkJmaRwD4kckAXGRuXoNQ8OPes/PFyH8xx+fVeaRzfQ0AW6eF9h7qy9Q8yOfylJii5KTEct27H64qNLlCdgB1RpEUrKMmGtuzA6jbAU6Z7gAVOuci/qaX8Ss39OF54MMQmbZ6B/4B04EuO98sPxEAAAAASUVORK5CYII=","pointimgtype":"png","pointimgw":32,"pointimgh":32,"lineWidth":3.0,"lineColor":"#ffffff","fillColor":"#00ff00","fillOpacity":60.0,"titleName":"默认"}]"/> |
||||
<DataSet class="com.fr.extended.chart.ExtendedTableDataSet"> |
||||
<TableData class="com.fr.data.impl.NameTableData"> |
||||
<Name> |
||||
<![CDATA[ds1]]></Name> |
||||
</TableData> |
||||
<AbstractDataConfig class="com.fr.plugin.shdcmap.data.CustomDataConfig" pluginID="com.fr.plugin.shdcmap.v10"> |
||||
<attr code="编码" code_customName="" name="名字" name_customName="" type="场景" type_customName="" icon="类型" icon_customName="" coords="经纬度" coords_customName="" customName="true" customField_0="地块名称" customField_0_function="com.fr.data.util.function.NoneFunction" customField_0_customName="地块名称" customField_1="土地面积" customField_1_function="com.fr.data.util.function.NoneFunction" customField_1_customName="土地面积" customField_2="土地权利人" customField_2_function="com.fr.data.util.function.NoneFunction" customField_2_customName="土地权利人"/> |
||||
</AbstractDataConfig> |
||||
</DataSet> |
||||
</Chart> |
||||
</O> |
||||
<Style index="0"/> |
||||
</com.fr.report.cell.FloatElement> |
||||
</FloatElementList> |
||||
<CellElementList> |
||||
<C c="0" r="0"> |
||||
<PrivilegeControl/> |
||||
<Expand/> |
||||
</C> |
||||
<C c="11" r="0"> |
||||
<PrivilegeControl/> |
||||
<Expand dir="0"/> |
||||
</C> |
||||
</CellElementList> |
||||
<ReportAttrSet> |
||||
<ReportSettings headerHeight="0" footerHeight="0"> |
||||
<PaperSetting/> |
||||
<Background name="ColorBackground" color="-1"/> |
||||
</ReportSettings> |
||||
<Header reportPageType="0"> |
||||
<Background name="NullBackground"/> |
||||
<LeftList/> |
||||
<CenterList/> |
||||
<RightList/> |
||||
</Header> |
||||
<Footer reportPageType="0"> |
||||
<Background name="NullBackground"/> |
||||
<LeftList/> |
||||
<CenterList/> |
||||
<RightList/> |
||||
</Footer> |
||||
</ReportAttrSet> |
||||
<PrivilegeControl/> |
||||
</Report> |
||||
<ReportParameterAttr> |
||||
<Attributes showWindow="true" delayPlaying="true" windowPosition="1" align="0" useParamsTemplate="true"/> |
||||
<PWTitle> |
||||
<![CDATA[参数]]></PWTitle> |
||||
</ReportParameterAttr> |
||||
<StyleList> |
||||
<Style imageLayout="1"> |
||||
<FRFont name="SimSun" style="0" size="72"/> |
||||
<Background name="ColorBackground" color="-1"/> |
||||
<Border/> |
||||
</Style> |
||||
</StyleList> |
||||
<DesignerVersion DesignerVersion="KAA"/> |
||||
<PreviewType PreviewType="0"/> |
||||
<TemplateIdAttMark class="com.fr.base.iofile.attr.TemplateIdAttrMark"> |
||||
<TemplateIdAttMark TemplateId="4780bd0d-47a7-447a-92dc-d247f71b2143"/> |
||||
</TemplateIdAttMark> |
||||
</WorkBook> |
Loading…
Reference in new issue