From 460d9e8f3da19b1b7a626bb7c74698146d7657d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=B2=B3?= <445798420@qq.com> Date: Mon, 30 Dec 2019 14:03:30 +0800 Subject: [PATCH 1/9] =?UTF-8?q?MOBILE-24622=20=E5=9B=BE=E8=A1=A8=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E8=B6=85=E9=93=BE=E5=BC=B9=E6=A1=86=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E4=B8=AD=E7=9A=84=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/VanChartHyperLinkPane.java | 104 +++++------------- 1 file changed, 28 insertions(+), 76 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java b/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java index af11a8b96..a2a615079 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java @@ -16,12 +16,11 @@ import com.fr.design.designer.TargetComponent; import com.fr.design.fun.HyperlinkProvider; 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.hyperlink.ReportletHyperlinkPane; import com.fr.design.hyperlink.WebHyperlinkPane; +import com.fr.design.i18n.Toolkit; import com.fr.design.javascript.JavaScriptImplPane; import com.fr.design.javascript.ParameterJavaScriptPane; -import com.fr.design.module.DesignModuleFactory; import com.fr.general.NameObject; import com.fr.js.EmailJavaScript; import com.fr.js.FormHyperlinkProvider; @@ -33,7 +32,6 @@ import com.fr.js.ParameterJavaScript; import com.fr.js.ReportletHyperlink; import com.fr.js.WebHyperlink; import com.fr.log.FineLoggerFactory; -import com.fr.stable.ListMap; import com.fr.stable.Nameable; import com.fr.stable.bridge.StableFactory; import com.fr.van.chart.designer.component.VanChartUIListControlPane; @@ -42,6 +40,7 @@ import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Set; @@ -57,18 +56,35 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane { @Override public NameableCreator[] createNameableCreators() { - //面板初始化,需要在populate的时候更新 - Map nameCreators = new ListMap<>(); - NameableCreator[] creators = DesignModuleFactory.getHyperlinkGroupType().getHyperlinkCreators(); - for (NameableCreator creator : creators) { - nameCreators.put(creator.menuName(), creator); - } + List creators = new ArrayList(); + + creators.add(new NameObjectCreator(Toolkit.i18nText("Fine-Design_Chart_Link_Reportlet"), + ReportletHyperlink.class, ReportletHyperlinkPane.class)); + creators.add(new NameObjectCreator(Toolkit.i18nText("Fine-Design_Chart_Link_Mail"), EmailJavaScript.class, VanChartEmailPane.class)); + creators.add(new NameObjectCreator(Toolkit.i18nText("Fine-Design_Chart_Link_Web"), + WebHyperlink.class, WebHyperlinkPane.class)); + creators.add(new NameObjectCreator(Toolkit.i18nText("Fine-Design_Chart_Link_Dynamic_Parameters"), + ParameterJavaScript.class, ParameterJavaScriptPane.class)); + creators.add(new NameObjectCreator("JavaScript", JavaScriptImpl.class, JavaScriptImplPane.class)); + + creators.add(new NameObjectCreator(Toolkit.i18nText("Fine-Design_Chart_Float_Chart"), + ChartHyperPoplink.class, ChartHyperPoplinkPane.class)); + creators.add(new NameObjectCreator(Toolkit.i18nText("Fine-Design_Chart_Link_Cell"), + ChartHyperRelateCellLink.class, ChartHyperRelateCellLinkPane.class)); + creators.add(new NameObjectCreator(Toolkit.i18nText("Fine-Design_Chart_Link_Float"), + ChartHyperRelateFloatLink.class, ChartHyperRelateFloatLinkPane.class)); + + FormHyperlinkProvider hyperlink = StableFactory.getMarkedInstanceObjectFromClass(FormHyperlinkProvider.XML_TAG, FormHyperlinkProvider.class); + creators.add(new NameObjectCreator(Toolkit.i18nText("Fine-Design_Chart_Link_Form"), + hyperlink.getClass(), FormHyperlinkPane.class)); + Set providers = ExtraDesignClassManager.getInstance().getArray(HyperlinkProvider.XML_TAG); for (HyperlinkProvider provider : providers) { NameableCreator nc = provider.createHyperlinkCreator(); - nameCreators.put(nc.menuName(), nc); + creators.add(nc); } - return nameCreators.values().toArray(new NameableCreator[nameCreators.size()]); + + return creators.toArray(new NameableCreator[creators.size()]); } @@ -146,24 +162,6 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane { public void populate(Plot plot) { setPlot(plot); - HashMap paneMap = getHyperlinkMap(plot); - - //安装平台内打开插件时,添加相应按钮 - Set providers = ExtraDesignClassManager.getInstance().getArray(HyperlinkProvider.XML_TAG); - for (HyperlinkProvider provider : providers) { - NameableCreator nc = provider.createHyperlinkCreator(); - paneMap.put(nc.getHyperlink(), nc.getUpdatePane()); - } - - java.util.List list = refreshList(paneMap); - NameObjectCreator[] creators = new NameObjectCreator[list.size()]; - for (int i = 0; list != null && i < list.size(); i++) { - UIMenuNameableCreator uiMenuNameableCreator = list.get(i); - creators[i] = new NameObjectCreator(uiMenuNameableCreator.getName(), uiMenuNameableCreator.getObj().getClass(), uiMenuNameableCreator.getPaneClazz()); - - } - - refreshNameableCreator(creators); java.util.List nameObjects = new ArrayList(); @@ -172,9 +170,7 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane { NameJavaScript javaScript = nameGroup.getNameHyperlink(i); if (javaScript != null && javaScript.getJavaScript() != null) { JavaScript script = javaScript.getJavaScript(); - UIMenuNameableCreator uiMenuNameableCreator = new UIMenuNameableCreator(javaScript.getName(), script, getUseMap(paneMap, script.getClass())); - nameObjects.add(new NameObject(uiMenuNameableCreator.getName(), uiMenuNameableCreator.getObj())); - + nameObjects.add(new NameObject(javaScript.getName(), script)); } } @@ -186,23 +182,6 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane { return plot.getHotHyperLink(); } - protected HashMap getHyperlinkMap(Plot plot) { - HashMap map = new HashMap(); - - map.put(ReportletHyperlink.class, ReportletHyperlinkPane.class); - map.put(EmailJavaScript.class, ChartEmailPane.class); - map.put(WebHyperlink.class, WebHyperlinkPane.class); - map.put(ParameterJavaScript.class, ParameterJavaScriptPane.class); - - map.put(JavaScriptImpl.class, JavaScriptImplPane.class); - map.put(ChartHyperPoplink.class, ChartHyperPoplinkPane.class); - map.put(ChartHyperRelateCellLink.class, ChartHyperRelateCellLinkPane.class); - map.put(ChartHyperRelateFloatLink.class, ChartHyperRelateFloatLinkPane.class); - - map.put(FormHyperlinkProvider.class, FormHyperlinkPane.class); - return map; - } - public void update(Plot plot) { NameJavaScriptGroup nameGroup = updateNameGroup(); @@ -230,33 +209,6 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane { return nameGroup; } - - protected java.util.List refreshList(HashMap map) { - java.util.List list = new ArrayList(); - - list.add(new UIMenuNameableCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Link_Reportlet"), - new ReportletHyperlink(), getUseMap(map, ReportletHyperlink.class))); - list.add(new UIMenuNameableCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Link_Mail"), new EmailJavaScript(), VanChartEmailPane.class)); - list.add(new UIMenuNameableCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Link_Web"), - new WebHyperlink(), getUseMap(map, WebHyperlink.class))); - list.add(new UIMenuNameableCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Link_Dynamic_Parameters"), - new ParameterJavaScript(), getUseMap(map, ParameterJavaScript.class))); - list.add(new UIMenuNameableCreator("JavaScript", new JavaScriptImpl(), getUseMap(map, JavaScriptImpl.class))); - - list.add(new UIMenuNameableCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Float_Chart"), - new ChartHyperPoplink(), getUseMap(map, ChartHyperPoplink.class))); - list.add(new UIMenuNameableCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Link_Cell"), - new ChartHyperRelateCellLink(), getUseMap(map, ChartHyperRelateCellLink.class))); - list.add(new UIMenuNameableCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Link_Float"), - new ChartHyperRelateFloatLink(), getUseMap(map, ChartHyperRelateFloatLink.class))); - - FormHyperlinkProvider hyperlink = StableFactory.getMarkedInstanceObjectFromClass(FormHyperlinkProvider.XML_TAG, FormHyperlinkProvider.class); - list.add(new UIMenuNameableCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Link_Form"), - hyperlink, getUseMap(map, FormHyperlinkProvider.class))); - - return list; - } - protected Class getUseMap(HashMap map, Object key) { if (map.get(key) != null) { return (Class) map.get(key); From 923312bc64b8084f9595ed0a63f2885819bc7927 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=B2=B3?= <445798420@qq.com> Date: Mon, 30 Dec 2019 15:36:55 +0800 Subject: [PATCH 2/9] =?UTF-8?q?MOBILE-24622=20=E4=BB=A3=E7=A0=81=E8=B4=A8?= =?UTF-8?q?=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chart/javascript/ChartEmailPane.java | 7 ++ .../component/VanChartHyperLinkPane.java | 95 +++---------------- 2 files changed, 20 insertions(+), 82 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/chart/javascript/ChartEmailPane.java b/designer-chart/src/main/java/com/fr/design/chart/javascript/ChartEmailPane.java index a27bf328e..f48304a16 100644 --- a/designer-chart/src/main/java/com/fr/design/chart/javascript/ChartEmailPane.java +++ b/designer-chart/src/main/java/com/fr/design/chart/javascript/ChartEmailPane.java @@ -87,4 +87,11 @@ public class ChartEmailPane extends EmailPane{ super.updateBean(email); } + //邮箱 + public static class NoRename extends ChartEmailPane { + @Override + protected boolean needRenamePane() { + return false; + } + } } \ No newline at end of file diff --git a/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java b/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java index a2a615079..79ed161a0 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java @@ -2,45 +2,29 @@ package com.fr.van.chart.custom.component; import com.fr.base.BaseFormula; import com.fr.chart.chartattr.Plot; -import com.fr.chart.web.ChartHyperPoplink; -import com.fr.chart.web.ChartHyperRelateCellLink; -import com.fr.chart.web.ChartHyperRelateFloatLink; import com.fr.design.ExtraDesignClassManager; import com.fr.design.beans.BasicBeanPane; import com.fr.design.chart.javascript.ChartEmailPane; -import com.fr.design.chart.series.SeriesCondition.impl.ChartHyperPoplinkPane; -import com.fr.design.chart.series.SeriesCondition.impl.ChartHyperRelateCellLinkPane; -import com.fr.design.chart.series.SeriesCondition.impl.ChartHyperRelateFloatLinkPane; -import com.fr.design.chart.series.SeriesCondition.impl.FormHyperlinkPane; import com.fr.design.designer.TargetComponent; import com.fr.design.fun.HyperlinkProvider; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; -import com.fr.design.hyperlink.ReportletHyperlinkPane; -import com.fr.design.hyperlink.WebHyperlinkPane; import com.fr.design.i18n.Toolkit; -import com.fr.design.javascript.JavaScriptImplPane; -import com.fr.design.javascript.ParameterJavaScriptPane; +import com.fr.design.module.DesignModuleFactory; import com.fr.general.NameObject; import com.fr.js.EmailJavaScript; -import com.fr.js.FormHyperlinkProvider; import com.fr.js.JavaScript; -import com.fr.js.JavaScriptImpl; import com.fr.js.NameJavaScript; import com.fr.js.NameJavaScriptGroup; -import com.fr.js.ParameterJavaScript; -import com.fr.js.ReportletHyperlink; -import com.fr.js.WebHyperlink; import com.fr.log.FineLoggerFactory; +import com.fr.stable.ListMap; import com.fr.stable.Nameable; -import com.fr.stable.bridge.StableFactory; 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.List; import java.util.Map; import java.util.Set; @@ -55,36 +39,22 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane { @Override public NameableCreator[] createNameableCreators() { - - List creators = new ArrayList(); - - creators.add(new NameObjectCreator(Toolkit.i18nText("Fine-Design_Chart_Link_Reportlet"), - ReportletHyperlink.class, ReportletHyperlinkPane.class)); - creators.add(new NameObjectCreator(Toolkit.i18nText("Fine-Design_Chart_Link_Mail"), EmailJavaScript.class, VanChartEmailPane.class)); - creators.add(new NameObjectCreator(Toolkit.i18nText("Fine-Design_Chart_Link_Web"), - WebHyperlink.class, WebHyperlinkPane.class)); - creators.add(new NameObjectCreator(Toolkit.i18nText("Fine-Design_Chart_Link_Dynamic_Parameters"), - ParameterJavaScript.class, ParameterJavaScriptPane.class)); - creators.add(new NameObjectCreator("JavaScript", JavaScriptImpl.class, JavaScriptImplPane.class)); - - creators.add(new NameObjectCreator(Toolkit.i18nText("Fine-Design_Chart_Float_Chart"), - ChartHyperPoplink.class, ChartHyperPoplinkPane.class)); - creators.add(new NameObjectCreator(Toolkit.i18nText("Fine-Design_Chart_Link_Cell"), - ChartHyperRelateCellLink.class, ChartHyperRelateCellLinkPane.class)); - creators.add(new NameObjectCreator(Toolkit.i18nText("Fine-Design_Chart_Link_Float"), - ChartHyperRelateFloatLink.class, ChartHyperRelateFloatLinkPane.class)); - - FormHyperlinkProvider hyperlink = StableFactory.getMarkedInstanceObjectFromClass(FormHyperlinkProvider.XML_TAG, FormHyperlinkProvider.class); - creators.add(new NameObjectCreator(Toolkit.i18nText("Fine-Design_Chart_Link_Form"), - hyperlink.getClass(), FormHyperlinkPane.class)); + //面板初始化 + Map nameCreators = new ListMap<>(); + NameableCreator[] creators = DesignModuleFactory.getHyperlinkGroupType().getHyperlinkCreators(); + for (NameableCreator creator : creators) { + nameCreators.put(creator.menuName(), creator); + } + //使用chart的email替换掉报表的email + String email = Toolkit.i18nText("Fine-Design_Basic_Email"); + nameCreators.put(email, new NameObjectCreator(email, EmailJavaScript.class, ChartEmailPane.NoRename.class)); Set providers = ExtraDesignClassManager.getInstance().getArray(HyperlinkProvider.XML_TAG); for (HyperlinkProvider provider : providers) { NameableCreator nc = provider.createHyperlinkCreator(); - creators.add(nc); + nameCreators.put(nc.menuName(), nc); } - - return creators.toArray(new NameableCreator[creators.size()]); + return nameCreators.values().toArray(new NameableCreator[nameCreators.size()]); } @@ -144,22 +114,6 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane { //populate } - /** - * updateJs的Group - * - * @return 返回NameJavaScriptGroup - */ - public NameJavaScriptGroup updateJSGroup() { - Nameable[] res = this.update(); - NameJavaScript[] res_array = new NameJavaScript[res.length]; - for (int i = 0; i < res.length; i++) { - NameObject no = (NameObject) res[i]; - res_array[i] = new NameJavaScript(no.getName(), (JavaScript) no.getObject()); - } - - return new NameJavaScriptGroup(res_array); - } - public void populate(Plot plot) { setPlot(plot); @@ -208,27 +162,4 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane { return nameGroup; } - - protected Class getUseMap(HashMap map, Object key) { - if (map.get(key) != null) { - return (Class) map.get(key); - } - //引擎在这边放了个provider,当前表单对象 - for (Object tempKey : map.keySet()) { - if (((Class) tempKey).isAssignableFrom((Class) key)) { - return (Class) map.get(tempKey); - } - } - return null; - } - - //邮箱 - public static class VanChartEmailPane extends ChartEmailPane { - @Override - protected boolean needRenamePane() { - return false; - } - } - - } From 336322a0931576d3a0169d6a8f763e2438ba3248 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=B2=B3?= <445798420@qq.com> Date: Tue, 31 Dec 2019 13:41:39 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E8=BF=98=E5=8E=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chart/javascript/ChartEmailPane.java | 9 +- .../component/VanChartHyperLinkPane.java | 133 ++++++++++++++++-- 2 files changed, 126 insertions(+), 16 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/chart/javascript/ChartEmailPane.java b/designer-chart/src/main/java/com/fr/design/chart/javascript/ChartEmailPane.java index f48304a16..a8b3b4536 100644 --- a/designer-chart/src/main/java/com/fr/design/chart/javascript/ChartEmailPane.java +++ b/designer-chart/src/main/java/com/fr/design/chart/javascript/ChartEmailPane.java @@ -86,12 +86,5 @@ public class ChartEmailPane extends EmailPane{ } super.updateBean(email); } - - //邮箱 - public static class NoRename extends ChartEmailPane { - @Override - protected boolean needRenamePane() { - return false; - } - } + } \ No newline at end of file diff --git a/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java b/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java index 79ed161a0..b0e244583 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java @@ -2,23 +2,40 @@ package com.fr.van.chart.custom.component; import com.fr.base.BaseFormula; import com.fr.chart.chartattr.Plot; +import com.fr.chart.web.ChartHyperPoplink; +import com.fr.chart.web.ChartHyperRelateCellLink; +import com.fr.chart.web.ChartHyperRelateFloatLink; import com.fr.design.ExtraDesignClassManager; import com.fr.design.beans.BasicBeanPane; import com.fr.design.chart.javascript.ChartEmailPane; +import com.fr.design.chart.series.SeriesCondition.impl.ChartHyperPoplinkPane; +import com.fr.design.chart.series.SeriesCondition.impl.ChartHyperRelateCellLinkPane; +import com.fr.design.chart.series.SeriesCondition.impl.ChartHyperRelateFloatLinkPane; +import com.fr.design.chart.series.SeriesCondition.impl.FormHyperlinkPane; import com.fr.design.designer.TargetComponent; import com.fr.design.fun.HyperlinkProvider; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; -import com.fr.design.i18n.Toolkit; +import com.fr.design.gui.imenutable.UIMenuNameableCreator; +import com.fr.design.hyperlink.ReportletHyperlinkPane; +import com.fr.design.hyperlink.WebHyperlinkPane; +import com.fr.design.javascript.JavaScriptImplPane; +import com.fr.design.javascript.ParameterJavaScriptPane; import com.fr.design.module.DesignModuleFactory; import com.fr.general.NameObject; import com.fr.js.EmailJavaScript; +import com.fr.js.FormHyperlinkProvider; import com.fr.js.JavaScript; +import com.fr.js.JavaScriptImpl; import com.fr.js.NameJavaScript; import com.fr.js.NameJavaScriptGroup; +import com.fr.js.ParameterJavaScript; +import com.fr.js.ReportletHyperlink; +import com.fr.js.WebHyperlink; import com.fr.log.FineLoggerFactory; import com.fr.stable.ListMap; import com.fr.stable.Nameable; +import com.fr.stable.bridge.StableFactory; import com.fr.van.chart.designer.component.VanChartUIListControlPane; import java.lang.reflect.Constructor; @@ -39,16 +56,13 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane { @Override public NameableCreator[] createNameableCreators() { - //面板初始化 + + //面板初始化,需要在populate的时候更新 Map nameCreators = new ListMap<>(); NameableCreator[] creators = DesignModuleFactory.getHyperlinkGroupType().getHyperlinkCreators(); for (NameableCreator creator : creators) { nameCreators.put(creator.menuName(), creator); } - //使用chart的email替换掉报表的email - String email = Toolkit.i18nText("Fine-Design_Basic_Email"); - nameCreators.put(email, new NameObjectCreator(email, EmailJavaScript.class, ChartEmailPane.NoRename.class)); - Set providers = ExtraDesignClassManager.getInstance().getArray(HyperlinkProvider.XML_TAG); for (HyperlinkProvider provider : providers) { NameableCreator nc = provider.createHyperlinkCreator(); @@ -114,8 +128,42 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane { //populate } + /** + * updateJs的Group + * + * @return 返回NameJavaScriptGroup + */ + public NameJavaScriptGroup updateJSGroup() { + Nameable[] res = this.update(); + NameJavaScript[] res_array = new NameJavaScript[res.length]; + for (int i = 0; i < res.length; i++) { + NameObject no = (NameObject) res[i]; + res_array[i] = new NameJavaScript(no.getName(), (JavaScript) no.getObject()); + } + + return new NameJavaScriptGroup(res_array); + } + public void populate(Plot plot) { setPlot(plot); + HashMap paneMap = getHyperlinkMap(plot); + + //安装平台内打开插件时,添加相应按钮 + Set providers = ExtraDesignClassManager.getInstance().getArray(HyperlinkProvider.XML_TAG); + for (HyperlinkProvider provider : providers) { + NameableCreator nc = provider.createHyperlinkCreator(); + paneMap.put(nc.getHyperlink(), nc.getUpdatePane()); + } + + java.util.List list = refreshList(paneMap); + NameObjectCreator[] creators = new NameObjectCreator[list.size()]; + for (int i = 0; list != null && i < list.size(); i++) { + UIMenuNameableCreator uiMenuNameableCreator = list.get(i); + creators[i] = new NameObjectCreator(uiMenuNameableCreator.getName(), uiMenuNameableCreator.getObj().getClass(), uiMenuNameableCreator.getPaneClazz()); + + } + + refreshNameableCreator(creators); java.util.List nameObjects = new ArrayList(); @@ -124,7 +172,9 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane { NameJavaScript javaScript = nameGroup.getNameHyperlink(i); if (javaScript != null && javaScript.getJavaScript() != null) { JavaScript script = javaScript.getJavaScript(); - nameObjects.add(new NameObject(javaScript.getName(), script)); + UIMenuNameableCreator uiMenuNameableCreator = new UIMenuNameableCreator(javaScript.getName(), script, getUseMap(paneMap, script.getClass())); + nameObjects.add(new NameObject(uiMenuNameableCreator.getName(), uiMenuNameableCreator.getObj())); + } } @@ -136,6 +186,23 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane { return plot.getHotHyperLink(); } + protected HashMap getHyperlinkMap(Plot plot) { + HashMap map = new HashMap(); + + map.put(ReportletHyperlink.class, ReportletHyperlinkPane.class); + map.put(EmailJavaScript.class, ChartEmailPane.class); + map.put(WebHyperlink.class, WebHyperlinkPane.class); + map.put(ParameterJavaScript.class, ParameterJavaScriptPane.class); + + map.put(JavaScriptImpl.class, JavaScriptImplPane.class); + map.put(ChartHyperPoplink.class, ChartHyperPoplinkPane.class); + map.put(ChartHyperRelateCellLink.class, ChartHyperRelateCellLinkPane.class); + map.put(ChartHyperRelateFloatLink.class, ChartHyperRelateFloatLinkPane.class); + + map.put(FormHyperlinkProvider.class, FormHyperlinkPane.class); + return map; + } + public void update(Plot plot) { NameJavaScriptGroup nameGroup = updateNameGroup(); @@ -162,4 +229,54 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane { return nameGroup; } -} + + + protected java.util.List refreshList(HashMap map) { + java.util.List list = new ArrayList(); + + list.add(new UIMenuNameableCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Link_Reportlet"), + new ReportletHyperlink(), getUseMap(map, ReportletHyperlink.class))); + list.add(new UIMenuNameableCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Link_Mail"), new EmailJavaScript(), VanChartEmailPane.class)); + list.add(new UIMenuNameableCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Link_Web"), + new WebHyperlink(), getUseMap(map, WebHyperlink.class))); + list.add(new UIMenuNameableCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Link_Dynamic_Parameters"), + new ParameterJavaScript(), getUseMap(map, ParameterJavaScript.class))); + list.add(new UIMenuNameableCreator("JavaScript", new JavaScriptImpl(), getUseMap(map, JavaScriptImpl.class))); + + list.add(new UIMenuNameableCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Float_Chart"), + new ChartHyperPoplink(), getUseMap(map, ChartHyperPoplink.class))); + list.add(new UIMenuNameableCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Link_Cell"), + new ChartHyperRelateCellLink(), getUseMap(map, ChartHyperRelateCellLink.class))); + list.add(new UIMenuNameableCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Link_Float"), + new ChartHyperRelateFloatLink(), getUseMap(map, ChartHyperRelateFloatLink.class))); + + FormHyperlinkProvider hyperlink = StableFactory.getMarkedInstanceObjectFromClass(FormHyperlinkProvider.XML_TAG, FormHyperlinkProvider.class); + list.add(new UIMenuNameableCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Link_Form"), + hyperlink, getUseMap(map, FormHyperlinkProvider.class))); + + return list; + } + + protected Class getUseMap(HashMap map, Object key) { + if (map.get(key) != null) { + return (Class) map.get(key); + } + //引擎在这边放了个provider,当前表单对象 + for (Object tempKey : map.keySet()) { + if (((Class) tempKey).isAssignableFrom((Class) key)) { + return (Class) map.get(tempKey); + } + } + return null; + } + + //邮箱 + public static class VanChartEmailPane extends ChartEmailPane { + @Override + protected boolean needRenamePane() { + return false; + } + } + + +} \ No newline at end of file From 91eeafb551767de27cc80a389a5f306aa6cef657 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=B2=B3?= <445798420@qq.com> Date: Tue, 31 Dec 2019 13:44:04 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E8=BF=98=E5=8E=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/chart/javascript/ChartEmailPane.java | 2 +- .../fr/van/chart/custom/component/VanChartHyperLinkPane.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/chart/javascript/ChartEmailPane.java b/designer-chart/src/main/java/com/fr/design/chart/javascript/ChartEmailPane.java index a8b3b4536..a27bf328e 100644 --- a/designer-chart/src/main/java/com/fr/design/chart/javascript/ChartEmailPane.java +++ b/designer-chart/src/main/java/com/fr/design/chart/javascript/ChartEmailPane.java @@ -86,5 +86,5 @@ public class ChartEmailPane extends EmailPane{ } super.updateBean(email); } - + } \ No newline at end of file diff --git a/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java b/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java index b0e244583..b5efad3b6 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java @@ -152,7 +152,7 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane { Set providers = ExtraDesignClassManager.getInstance().getArray(HyperlinkProvider.XML_TAG); for (HyperlinkProvider provider : providers) { NameableCreator nc = provider.createHyperlinkCreator(); - paneMap.put(nc.getHyperlink(), nc.getUpdatePane()); + paneMap.put(nc.getHyperlink(), nc.getUpdatePane()); } java.util.List list = refreshList(paneMap); From 472b0ffa9031acfd8136bac4461786f3276c7955 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=B2=B3?= <445798420@qq.com> Date: Tue, 31 Dec 2019 13:47:21 +0800 Subject: [PATCH 5/9] =?UTF-8?q?CHART-11090=20=E5=9C=B0=E5=9B=BE=E6=A8=A1?= =?UTF-8?q?=E7=B3=8A=E5=8C=B9=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chartx/component/MapAreaMatchPane.java | 373 ++++++++++++++++++ .../chartx/component/MatchAreaTable.java | 148 +++++++ .../chartx/component/MatchResultTable.java | 146 +++++++ .../chartx/component/TableTreeComboBox.java | 100 +++++ .../data/drillMap/DrillMapChartDataPane.java | 2 +- .../data/drillMap/DrillMapDataPane.java | 14 +- .../data/drillMap/DrillMapLayerPane.java | 18 +- .../drillMap/EachLayerDataDefinitionPane.java | 42 +- .../data/map/AbstractAreaLngLatPane.java | 6 +- .../LineMapAreaLngLatPaneWithComboBox.java | 21 +- .../chartx/data/map/MapChartDataPane.java | 27 +- .../PointMapAreaLngLatPaneWithComboBox.java | 19 +- .../fields/diff/AreaMapDataSetFieldsPane.java | 16 +- .../fields/diff/LineMapDataSetFieldsPane.java | 9 +- .../fields/diff/MapDataSetFieldsPane.java | 89 +++++ .../diff/PointMapDataSetFieldsPane.java | 11 +- .../designer/VanHeatMapChartTypeUI.java | 4 +- 17 files changed, 1002 insertions(+), 43 deletions(-) create mode 100644 designer-chart/src/main/java/com/fr/design/chartx/component/MapAreaMatchPane.java create mode 100644 designer-chart/src/main/java/com/fr/design/chartx/component/MatchAreaTable.java create mode 100644 designer-chart/src/main/java/com/fr/design/chartx/component/MatchResultTable.java create mode 100644 designer-chart/src/main/java/com/fr/design/chartx/component/TableTreeComboBox.java create mode 100644 designer-chart/src/main/java/com/fr/design/chartx/fields/diff/MapDataSetFieldsPane.java diff --git a/designer-chart/src/main/java/com/fr/design/chartx/component/MapAreaMatchPane.java b/designer-chart/src/main/java/com/fr/design/chartx/component/MapAreaMatchPane.java new file mode 100644 index 000000000..fcf737991 --- /dev/null +++ b/designer-chart/src/main/java/com/fr/design/chartx/component/MapAreaMatchPane.java @@ -0,0 +1,373 @@ +package com.fr.design.chartx.component; + +import com.fr.base.BaseUtils; +import com.fr.base.ParameterMapNameSpace; +import com.fr.chartx.TwoTuple; +import com.fr.chartx.data.ChartDataDefinitionProvider; +import com.fr.chartx.data.DataSetDefinition; +import com.fr.chartx.data.DrillMapChartDataDefinition; +import com.fr.chartx.data.MapChartDataDefinition; +import com.fr.chartx.data.execute.ExecuteDataSetHelper; +import com.fr.chartx.data.field.CollectionWithMapAreaAttr; +import com.fr.data.TableDataSource; +import com.fr.data.TableDataSourceTailor; +import com.fr.data.core.DataCoreUtils; +import com.fr.data.impl.NameTableData; +import com.fr.design.beans.BasicBeanPane; +import com.fr.design.data.DesignTableDataManager; +import com.fr.design.data.datapane.TableDataComboBox; +import com.fr.design.data.tabledata.wrapper.TableDataWrapper; +import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.file.HistoryTemplateListPane; +import com.fr.design.gui.icombobox.UIComboBox; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.i18n.Toolkit; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.mainframe.DesignerContext; +import com.fr.design.mainframe.chart.gui.data.table.DataPaneHelper; +import com.fr.design.parameter.ParameterInputPane; +import com.fr.general.GeneralUtils; +import com.fr.general.data.DataModel; +import com.fr.general.data.TableDataException; +import com.fr.plugin.chart.drillmap.VanChartDrillMapPlot; +import com.fr.plugin.chart.map.MapMatchResult; +import com.fr.plugin.chart.map.VanChartMapPlot; +import com.fr.plugin.chart.map.server.ChartGEOJSONHelper; +import com.fr.plugin.chart.type.MapType; +import com.fr.plugin.chart.vanchart.VanChart; +import com.fr.script.Calculator; +import com.fr.stable.ArrayUtils; +import com.fr.stable.ParameterProvider; +import com.fr.stable.StringUtils; + +import javax.swing.BorderFactory; +import javax.swing.Icon; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.table.DefaultTableModel; +import javax.swing.tree.DefaultMutableTreeNode; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; + +/** + * @author Bjorn + * @version 10.0 + * Created by Bjorn on 2019-11-04 + */ +public class MapAreaMatchPane extends BasicBeanPane { + + private TableDataComboBox tableNameCombox; + private UIComboBox areaNameBox; + private UILabel refreshLabel; + + private MatchAreaTable matchAreaTable; + + private MatchResultTable matchResultTable; + + private static final Object[] HEADER = new Object[]{Toolkit.i18nText("Fine-Design_Chart_Area_Name"), Toolkit.i18nText("Fine-Design_Chart_Match_To")}; + + private static final Object[] HEADER_WITH_EMPTY = new Object[]{Toolkit.i18nText("Fine-Design_Chart_Area_Name"), Toolkit.i18nText("Fine-Design_Chart_Match_To"), ""}; + + private MapType mapType; + + private int level; + + + public MapAreaMatchPane(MapType mapType, int level, TwoTuple> treeNodeAndItems) { + this.mapType = mapType; + this.level = level; + + initButtonGroup(); + initRefreshLabel(); + areaNameBox = new UIComboBox(); + this.setLayout(new BorderLayout(5, 10)); + this.add(createContentPane(), BorderLayout.NORTH); + initTable(treeNodeAndItems); + JScrollPane matchAreaScroll = new JScrollPane(matchAreaTable) { + @Override + public Dimension getPreferredSize() { + return new Dimension(400, 300); + } + }; + this.add(matchAreaScroll, BorderLayout.CENTER); + JScrollPane matchResultScroll = new JScrollPane(matchResultTable) { + @Override + public Dimension getPreferredSize() { + return new Dimension(400, 200); + } + }; + matchResultScroll.setBorder(BorderFactory.createTitledBorder(Toolkit.i18nText("Fine-Design_Chart_Custom_Match_List"))); + this.add(matchResultScroll, BorderLayout.SOUTH); + this.setBorder(BorderFactory.createEmptyBorder(5, 20, 5, 20)); + } + + private JPanel createContentPane() { + JPanel panel = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); + + JPanel tableDataPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); + panel.add(tableDataPane); + tableDataPane.add(new UILabel(Toolkit.i18nText("Fine-Design_Chart_Table_Data") + ":")); + tableNameCombox.setPreferredSize(new Dimension(96, 20)); + tableDataPane.add(tableNameCombox); + + JPanel areaNamePane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); + panel.add(areaNamePane); + areaNamePane.add(new UILabel(Toolkit.i18nText("Fine-Design_Chart_Area_Name") + ":")); + areaNamePane.add(areaNameBox); + areaNameBox.setPreferredSize(new Dimension(96, 20)); + panel.add(refreshLabel); + return panel; + } + + private void initTable(TwoTuple> treeNodeAndItems) { + matchAreaTable = new MatchAreaTable(new Object[0][2], HEADER); + matchAreaTable.setRoot(treeNodeAndItems.getFirst()); + matchAreaTable.setItems(treeNodeAndItems.getSecond()); + + matchResultTable = new MatchResultTable(new Object[0][3], HEADER_WITH_EMPTY); + + DefaultTableModel model = new DefaultTableModel(new Object[0][3], HEADER_WITH_EMPTY); + matchResultTable.setModel(model); + + matchAreaTable.setMatchResultTable(matchResultTable); + matchResultTable.setMatchAreaTable(matchAreaTable); + } + + private void initButtonGroup() { + tableNameCombox = new TableDataComboBox(DesignTableDataManager.getEditingTableDataSource()); + tableNameCombox.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + refreshBox(); + } + } + }); + } + + private void initRefreshLabel() { + Icon refreshImage = BaseUtils.readIcon("/com/fr/design/images/control/refresh.png"); + refreshLabel = new UILabel(refreshImage); + refreshLabel.addMouseListener(new MouseAdapter() { + boolean mouseEntered = false; + boolean buttonPressed = false; + + public void mouseEntered(MouseEvent e) { // 当鼠标进入时候调用. + mouseEntered = true; + if (!buttonPressed) { + refreshLabel.setBackground(java.awt.Color.WHITE); + refreshLabel.setOpaque(true); + refreshLabel.setBorder(BorderFactory.createLineBorder(java.awt.Color.GRAY)); + } + } + + public void mouseExited(MouseEvent e) { + mouseEntered = false; + refreshLabel.setOpaque(false); + refreshLabel.setBorder(BorderFactory.createEmptyBorder()); + } + + public void mousePressed(MouseEvent e) { + buttonPressed = true; + refreshLabel.setBackground(java.awt.Color.lightGray); + } + + public void mouseReleased(MouseEvent e) { + buttonPressed = false; + if (mouseEntered) { + refreshLabel.setBackground(java.awt.Color.WHITE); + populateData(tableNameCombox.getSelectedItem().getTableDataName(), GeneralUtils.objectToString(areaNameBox.getSelectedItem())); + } + } + }); + } + + public void updateBean(VanChart chart) { + MapMatchResult matchResult = new MapMatchResult(); + if (level < 0) { + VanChartMapPlot plot = chart.getPlot(); + plot.setMatchResult(matchResult); + } else { + VanChartDrillMapPlot plot = chart.getPlot(); + plot.getMatchResultList().set(level, matchResult); + } + if (tableNameCombox.getSelectedItem() != null) { + matchResult.setTableName(tableNameCombox.getSelectedItem().getTableDataName()); + } + matchResult.setColumnName(GeneralUtils.objectToString(areaNameBox.getSelectedItem())); + + matchResultTable.updateBean(matchResult); + } + + public void populateBean(VanChart chart) { + //先取保存的数据集名称和区域名,若不存在,就取数据集面板配置的数据集名称和区域名 + MapMatchResult matchResult; + if (level < 0) { + VanChartMapPlot plot = chart.getPlot(); + matchResult = plot.getMatchResult(); + } else { + VanChartDrillMapPlot plot = chart.getPlot(); + matchResult = plot.getMatchResultList().get(level); + } + matchResultTable.populateBean(matchResult); + + String tableName = matchResult.getTableName(); + String areaName = matchResult.getColumnName(); + if (tableName == null) { + DataSetDefinition dataSetDefinition = getDataSetDefinition(chart.getChartDataDefinition()); + if (dataSetDefinition == null) { + return; + } + NameTableData nameTableData = dataSetDefinition.getNameTableData(); + if (nameTableData == null) { + return; + } + tableName = nameTableData.getName(); + CollectionWithMapAreaAttr columnFieldCollection = (CollectionWithMapAreaAttr) dataSetDefinition.getColumnFieldCollection(); + + areaName = columnFieldCollection.getMatchColumn(); + } + tableNameCombox.setSelectedTableDataByName(tableName); + if (StringUtils.isEmpty(areaName)) { + return; + } + areaNameBox.setSelectedItem(areaName); + populateData(tableName, areaName); + } + + private DataSetDefinition getDataSetDefinition(ChartDataDefinitionProvider chartDataDefinitionProvider) { + DataSetDefinition dataSetDefinition = null; + if (chartDataDefinitionProvider instanceof MapChartDataDefinition) { + MapChartDataDefinition mapChartDataDefinition = (MapChartDataDefinition) chartDataDefinitionProvider; + if (mapChartDataDefinition == null) { + return null; + } + switch (mapType) { + case AREA: + dataSetDefinition = (DataSetDefinition) mapChartDataDefinition.getAreaMapDataDefinition(); + break; + case POINT: + dataSetDefinition = (DataSetDefinition) mapChartDataDefinition.getPointMapDataDefinition(); + break; + case LINE: + dataSetDefinition = (DataSetDefinition) mapChartDataDefinition.getLineMapDataDefinition(); + break; + } + } else if (chartDataDefinitionProvider instanceof DrillMapChartDataDefinition) { + DrillMapChartDataDefinition drillMapChartDataDefinition = (DrillMapChartDataDefinition) chartDataDefinitionProvider; + if (drillMapChartDataDefinition == null) { + return null; + } + if (drillMapChartDataDefinition.isFromBottomData()) { + dataSetDefinition = (DataSetDefinition) drillMapChartDataDefinition.getBottomDataDefinition(); + } else { + dataSetDefinition = (DataSetDefinition) drillMapChartDataDefinition.getEachLayerDataDefinitionList().get(level); + } + + } else { + dataSetDefinition = (DataSetDefinition) chartDataDefinitionProvider; + } + return dataSetDefinition; + } + + private void populateData(String tableName, String columnName) { + Object[] columnData = getColumnData(tableName, columnName); + if (columnData == null) { + return; + } + populateMatchData(columnData); + } + + private Object[] getColumnData(String tableName, String columnName) { + NameTableData nameTableData = new NameTableData(tableName); + TableDataSource dataSource = TableDataSourceTailor.extractTableData(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getTarget()); + Calculator calculator = Calculator.createCalculator(); + calculator.setAttribute(TableDataSource.KEY, dataSource); + ParameterProvider[] parameters = nameTableData.getParameters(calculator); + final Map parameterMap = new HashMap<>(); + + if (ArrayUtils.isNotEmpty(parameters)) { + final ParameterInputPane pPane = new ParameterInputPane(parameters); + pPane.showSmallWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { + @Override + public void doOk() { + parameterMap.putAll(pPane.update()); + } + }).setVisible(true); + } + for (ParameterProvider parameter : parameters) { + if (parameterMap.containsKey(parameter.getName())) { + parameter.setValue(parameterMap.get(parameter.getName())); + } + } + ParameterMapNameSpace parameterMapNameSpace = ParameterMapNameSpace.create(parameterMap); + calculator.pushNameSpace(parameterMapNameSpace); + + try { + DataModel dataModel = ExecuteDataSetHelper.createDataModel(calculator, nameTableData); + int colIndex = DataCoreUtils.getColumnIndexByName(dataModel, columnName); + if (colIndex == DataModel.COLUMN_NAME_NOT_FOUND) { + return null; + } + int size = dataModel.getRowCount(); + HashSet columnData = new LinkedHashSet<>(); + for (int i = 0; i < size; i++) { + columnData.add(dataModel.getValueAt(i, colIndex)); + } + return columnData.toArray(); + } catch (TableDataException ignore) { + return null; + } + } + + private void populateMatchData(Object[] columnData) { + Set geoAreas = matchAreaTable.getItems(); + + Map resultMap = ChartGEOJSONHelper.matchArea(columnData, geoAreas, matchResultTable.getCustomResult()); + + Object[][] data = new Object[resultMap.size()][2]; + + //构造table的数据结构 + Map areaNameIndex = new HashMap<>(); + int i = 0; + for (Map.Entry entry : resultMap.entrySet()) { + areaNameIndex.put(entry.getKey(), i); + data[i++] = new Object[]{entry.getKey(), entry.getValue()}; + } + + matchAreaTable.setAreaNameIndex(areaNameIndex); + matchAreaTable.setModel(new DefaultTableModel(data, HEADER)); + } + + private void refreshBox() { + TableDataWrapper dataWrap = tableNameCombox.getSelectedItem(); + + if (dataWrap == null) { + return; + } + + List columnNameList = dataWrap.calculateColumnNameList(); + + DataPaneHelper.refreshBoxItems(areaNameBox, columnNameList); + areaNameBox.setSelectedItem(null); + } + + public VanChart updateBean() { + return null; + } + + @Override + protected String title4PopupWindow() { + return Toolkit.i18nText("Fine-Design_Chart_Location_With_Area_Name"); + } +} diff --git a/designer-chart/src/main/java/com/fr/design/chartx/component/MatchAreaTable.java b/designer-chart/src/main/java/com/fr/design/chartx/component/MatchAreaTable.java new file mode 100644 index 000000000..e8f98f2a3 --- /dev/null +++ b/designer-chart/src/main/java/com/fr/design/chartx/component/MatchAreaTable.java @@ -0,0 +1,148 @@ +package com.fr.design.chartx.component; + +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.i18n.Toolkit; +import com.fr.general.GeneralUtils; +import com.fr.plugin.chart.map.server.ChartGEOJSONHelper; + +import javax.swing.AbstractCellEditor; +import javax.swing.JTable; +import javax.swing.JTextField; +import javax.swing.JTree; +import javax.swing.table.TableCellEditor; +import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableColumnModel; +import javax.swing.table.TableModel; +import javax.swing.tree.DefaultMutableTreeNode; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.awt.Color; +import java.awt.Component; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; + +/** + * @author Bjorn + * @version 10.0 + * Created by Bjorn on 2019-11-19 + */ +public class MatchAreaTable extends JTable { + + private Set items; + + private MatchResultTable matchResultTable; + + private Map areaNameIndex = new HashMap<>(); + + private DefaultMutableTreeNode root; + + public MatchAreaTable(Object[][] data, Object[] header) { + super(data, header); + this.getTableHeader().setReorderingAllowed(false); + } + + public void setItems(Set items) { + this.items = items; + } + + public Set getItems() { + return items; + } + + public void setRoot(DefaultMutableTreeNode root) { + this.root = root; + } + + public void setMatchResultTable(MatchResultTable matchResultTable) { + this.matchResultTable = matchResultTable; + } + + public void setAreaNameIndex(Map areaNameIndex) { + this.areaNameIndex = areaNameIndex; + } + + public void setModel(TableModel dataModel) { + super.setModel(dataModel); + + if (items == null) { + items = new HashSet<>(); + } + TableColumnModel columnModel = getColumnModel(); + columnModel.getColumn(0).setCellEditor(new UILabelEditor()); + columnModel.getColumn(1).setCellEditor(new UIComboBoxRenderAndEditor()); + columnModel.getColumn(1).setCellRenderer(new UIComboBoxRenderAndEditor()); + } + + public void reMatch(Object areaName) { + if (!areaNameIndex.containsKey(areaName)) { + return; + } + int index = areaNameIndex.get(areaName); + Map resultMap = ChartGEOJSONHelper.matchArea(new Object[]{areaName}, items); + String result = resultMap.get(areaName); + getColumnModel().getColumn(1).getCellEditor().stopCellEditing(); + this.setValueAt(result, index, 1); + } + + public class UIComboBoxRenderAndEditor extends AbstractCellEditor implements TableCellRenderer, TableCellEditor { + + TableTreeComboBox comboBox; + + public UIComboBoxRenderAndEditor() { + } + + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { + initComboBox(value, false); + return comboBox; + } + + public Component getTableCellEditorComponent(final JTable table, Object value, boolean isSelected, final int row, int column) { + initComboBox(value, true); + comboBox.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + UIComboBoxRenderAndEditor.this.stopCellEditing(); + Object areaName = MatchAreaTable.this.getValueAt(row, 0); + Object result = MatchAreaTable.this.getValueAt(row, 1); + if (items.contains(result)) { + matchResultTable.dealMatch(areaName, result); + } + } + }); + return comboBox; + } + + private void initComboBox(Object value, boolean editor) { + comboBox = new TableTreeComboBox(new JTree(root)); + comboBox.setEditable(true); + + comboBox.setSelectedItem(value); + if (!editor && value == null) { + JTextField textField = (JTextField) (comboBox.getEditor().getEditorComponent()); + textField.setForeground(Color.RED); + textField.setText(Toolkit.i18nText("Fine-Design_Chart_Prompt_Not_Selected")); + } + } + + public Object getCellEditorValue() { + return comboBox.getSelectedItem(); + } + } + + public static class UILabelEditor extends AbstractCellEditor implements TableCellEditor { + + UILabel uiLabel; + + public Component getTableCellEditorComponent(JTable table, Object value, + boolean isSelected, + int row, int column) { + uiLabel = new UILabel(GeneralUtils.objectToString(value)); + return uiLabel; + } + + public Object getCellEditorValue() { + return uiLabel.getText(); + } + } +} diff --git a/designer-chart/src/main/java/com/fr/design/chartx/component/MatchResultTable.java b/designer-chart/src/main/java/com/fr/design/chartx/component/MatchResultTable.java new file mode 100644 index 000000000..55287f00a --- /dev/null +++ b/designer-chart/src/main/java/com/fr/design/chartx/component/MatchResultTable.java @@ -0,0 +1,146 @@ +package com.fr.design.chartx.component; + +import com.fr.base.BaseUtils; +import com.fr.base.Utils; +import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.i18n.Toolkit; +import com.fr.general.ComparatorUtils; +import com.fr.plugin.chart.map.MapMatchResult; +import com.fr.stable.StringUtils; + +import javax.swing.AbstractCellEditor; +import javax.swing.JOptionPane; +import javax.swing.JTable; +import javax.swing.table.DefaultTableModel; +import javax.swing.table.TableCellEditor; +import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableColumnModel; +import javax.swing.table.TableModel; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Vector; +import java.awt.Component; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; + +/** + * @author Bjorn + * @version 10.0 + * Created by Bjorn on 2019-11-20 + */ +public class MatchResultTable extends JTable { + + private MatchAreaTable matchAreaTable; + + public MatchResultTable(Object[][] data, Object[] header) { + super(data, header); + this.getTableHeader().setReorderingAllowed(false); + } + + public void setMatchAreaTable(MatchAreaTable matchAreaTable) { + this.matchAreaTable = matchAreaTable; + } + + public void setModel(TableModel dataModel) { + super.setModel(dataModel); + + TableColumnModel columnModel = getColumnModel(); + columnModel.getColumn(0).setCellEditor(new MatchAreaTable.UILabelEditor()); + columnModel.getColumn(1).setCellEditor(new MatchAreaTable.UILabelEditor()); + columnModel.getColumn(2).setCellEditor(new UIButtonEditorAndRender()); + columnModel.getColumn(2).setCellRenderer(new UIButtonEditorAndRender()); + columnModel.getColumn(2).setMaxWidth(20); + } + + public void dealMatch(Object areaName, Object result) { + int rowCount = this.getRowCount(); + for (int i = 0; i < rowCount; i++) { + if (ComparatorUtils.equals(this.getValueAt(i, 0), areaName)) { + getColumnModel().getColumn(1).getCellEditor().stopCellEditing(); + this.setValueAt(result, i, 1); + return; + } + } + DefaultTableModel model = (DefaultTableModel) this.getModel(); + Vector vector = new Vector(); + vector.add(areaName); + vector.add(result); + vector.add(""); + model.addRow(vector); + } + + public void populateBean(MapMatchResult matchResult) { + if (matchResult == null) { + return; + } + Map customResult = matchResult.getCustomResult(); + if (customResult == null) { + return; + } + DefaultTableModel model = (DefaultTableModel) this.getModel(); + for (Map.Entry entry : customResult.entrySet()) { + Vector vector = new Vector(); + vector.add(entry.getKey()); + vector.add(entry.getValue()); + vector.add(""); + model.addRow(vector); + } + } + + public void updateBean(MapMatchResult matchResult) { + matchResult.setCustomResult(getCustomResult()); + } + + public Map getCustomResult() { + Map customResult = new LinkedHashMap<>(); + DefaultTableModel model = (DefaultTableModel) this.getModel(); + for (int i = 0, rowCount = model.getRowCount(); i < rowCount; i++) { + customResult.put(Utils.objectToString(model.getValueAt(i, 0)), Utils.objectToString(model.getValueAt(i, 1))); + } + return customResult; + } + + public class UIButtonEditorAndRender extends AbstractCellEditor implements TableCellEditor, TableCellRenderer { + + public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, final int row, int column) { + UIButton uiButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/toolbarbtn/close.png")); + uiButton.addMouseListener(new MouseAdapter() { + boolean mouseEntered = false; + + public void mouseEntered(MouseEvent e) { // 当鼠标进入时候调用. + mouseEntered = true; + + } + + public void mouseExited(MouseEvent e) { + mouseEntered = false; + } + + public void mouseReleased(MouseEvent e) { + if (mouseEntered) { + MatchResultTable.this.getCellEditor().stopCellEditing(); + int val = JOptionPane.showConfirmDialog(MatchResultTable.this, Toolkit.i18nText("Fine-Design_Basic_Utils_Are_You_Sure_To_Remove_The_Selected_Item") + "?", + Toolkit.i18nText("Fine-Design_Basic_Remove"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); + if (val == JOptionPane.OK_OPTION) { + DefaultTableModel model = (DefaultTableModel) MatchResultTable.this.getModel(); + Object areaName = MatchResultTable.this.getValueAt(row, 0); + model.removeRow(row); + matchAreaTable.reMatch(areaName); + } + } + } + }); + return uiButton; + } + + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { + UIButton button = new UIButton(BaseUtils.readIcon("com/fr/design/images/toolbarbtn/close.png")); + return button; + } + + public Object getCellEditorValue() { + return StringUtils.EMPTY; + } + } + +} diff --git a/designer-chart/src/main/java/com/fr/design/chartx/component/TableTreeComboBox.java b/designer-chart/src/main/java/com/fr/design/chartx/component/TableTreeComboBox.java new file mode 100644 index 000000000..793b49b31 --- /dev/null +++ b/designer-chart/src/main/java/com/fr/design/chartx/component/TableTreeComboBox.java @@ -0,0 +1,100 @@ +package com.fr.design.chartx.component; + +import com.fr.design.gui.icombobox.FRTreeComboBox; +import com.fr.design.gui.itextfield.UITextField; +import com.fr.general.IOUtils; +import com.fr.plugin.chart.map.server.ChartGEOJSONHelper; + +import javax.swing.JTextField; +import javax.swing.JTree; +import javax.swing.MenuSelectionManager; +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.DefaultTreeCellRenderer; +import javax.swing.tree.TreeCellRenderer; +import javax.swing.tree.TreeNode; +import javax.swing.tree.TreePath; +import java.util.Enumeration; +import java.awt.Component; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; + +/** + * @author Bjorn + * @version 10.0 + * Created by Bjorn on 2019-12-24 + */ +public class TableTreeComboBox extends FRTreeComboBox { + + private JTextField textField; + + public TableTreeComboBox(JTree tree) { + super(tree, null); + textField = (JTextField) (this.getEditor().getEditorComponent()); + textField.addKeyListener(treeKeyListener); + tree.setCellRenderer(tableNameTreeRenderer); + } + + @Override + protected void dealSamePath(TreePath parent, TreeNode node, UITextField textField) { + matchLeafNode(parent, node, textField); + } + + private boolean matchLeafNode(TreePath parent, TreeNode node, UITextField textField) { + for (Enumeration e = node.children(); e.hasMoreElements(); ) { + TreeNode n = (TreeNode) e.nextElement(); + TreePath path = parent.pathByAddingChild(n); + TreeNode pathNode = (TreeNode) path.getLastPathComponent(); + if (pathNode.getChildCount() == 0) { + if (pathToString(path).toUpperCase().contains(textField.getText().toUpperCase())) { + tree.scrollPathToVisible(path); + tree.setSelectionPath(path); + return true; + } + } else { + if (matchLeafNode(path, pathNode, textField)) { + return true; + } + } + } + return false; + } + + private KeyListener treeKeyListener = new KeyAdapter() { + public void keyPressed(KeyEvent e) { + int key = e.getKeyCode(); + if (key == KeyEvent.VK_ENTER) { + TreePath treePath = tree.getSelectionPath(); + if (treePath == null) { + return; + } + DefaultMutableTreeNode node = (DefaultMutableTreeNode) treePath + .getLastPathComponent(); + if (node.isLeaf()) { + TableTreeComboBox.this.setSelectedItem(treePath); + textField.setText(pathToString(treePath)); + MenuSelectionManager.defaultManager().clearSelectedPath(); + } + } + } + }; + + private TreeCellRenderer tableNameTreeRenderer = new DefaultTreeCellRenderer() { + @Override + public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) { + super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); + if (value instanceof DefaultMutableTreeNode) { + DefaultMutableTreeNode node = (DefaultMutableTreeNode) value; + Object userObj = node.getUserObject(); + if (node.getChildCount() > 0) { + this.setIcon(IOUtils.readIcon("com/fr/design/images/m_insert/expandCell.gif")); + } + if (userObj != null) { + this.setText(ChartGEOJSONHelper.getPresentNameWithPath(userObj.toString())); + } + } + return this; + } + }; + +} diff --git a/designer-chart/src/main/java/com/fr/design/chartx/data/drillMap/DrillMapChartDataPane.java b/designer-chart/src/main/java/com/fr/design/chartx/data/drillMap/DrillMapChartDataPane.java index ae52b401d..7d1d1c52a 100644 --- a/designer-chart/src/main/java/com/fr/design/chartx/data/drillMap/DrillMapChartDataPane.java +++ b/designer-chart/src/main/java/com/fr/design/chartx/data/drillMap/DrillMapChartDataPane.java @@ -37,7 +37,7 @@ public class DrillMapChartDataPane extends AbstractChartDataPane private EachLayerDataDefinitionPane eachLayerDataDefinitionPane;//各层级分别指定 - public DrillMapDataPane(VanChartDrillMapPlot drillMapPlot) { - bottomDataPane = new SingleDataPane(new AreaMapDataSetFieldsPane(), new AreaMapCellDataFieldsPane()); - eachLayerDataDefinitionPane = new EachLayerDataDefinitionPane(drillMapPlot); + public DrillMapDataPane(VanChart vanChart) { + AreaMapDataSetFieldsPane areaMapDataSetFieldsPane = new AreaMapDataSetFieldsPane(); + areaMapDataSetFieldsPane.setChart(vanChart); + areaMapDataSetFieldsPane.setLevel(ChartGEOJSONHelper.BOTTOM_LEVEL); + bottomDataPane = new SingleDataPane(areaMapDataSetFieldsPane, new AreaMapCellDataFieldsPane()); + eachLayerDataDefinitionPane = new EachLayerDataDefinitionPane(vanChart); dataDefinitionType = new UIComboBoxPane() { @Override diff --git a/designer-chart/src/main/java/com/fr/design/chartx/data/drillMap/DrillMapLayerPane.java b/designer-chart/src/main/java/com/fr/design/chartx/data/drillMap/DrillMapLayerPane.java index b12bf385a..975faffca 100644 --- a/designer-chart/src/main/java/com/fr/design/chartx/data/drillMap/DrillMapLayerPane.java +++ b/designer-chart/src/main/java/com/fr/design/chartx/data/drillMap/DrillMapLayerPane.java @@ -8,6 +8,7 @@ import com.fr.design.i18n.Toolkit; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.plugin.chart.drillmap.VanChartDrillMapPlot; +import com.fr.plugin.chart.map.MapMatchResult; import com.fr.plugin.chart.map.server.CompatibleGeoJSONTreeHelper; import com.fr.plugin.chart.type.MapType; import com.fr.plugin.chart.type.ZoomLevel; @@ -18,10 +19,11 @@ import com.fr.van.chart.map.designer.type.VanChartMapSourceChoosePane; import javax.swing.BorderFactory; import javax.swing.JPanel; import javax.swing.tree.DefaultMutableTreeNode; -import java.awt.BorderLayout; -import java.awt.Component; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; +import java.awt.BorderLayout; +import java.awt.Component; /** * Created by Mitisky on 16/6/20. @@ -62,6 +64,7 @@ public class DrillMapLayerPane extends BasicBeanPane { java.util.List levelList = drillMapPlot.getLayerLevelList(); java.util.List mapTypeList = drillMapPlot.getLayerMapTypeList(); + List matchResultList = drillMapPlot.getMatchResultList(); //根据层级初始属性,一切以json那边读到的层级为准 int levelSize = levelList.size(); @@ -73,6 +76,11 @@ public class DrillMapLayerPane extends BasicBeanPane { for (int j = typeSize; j < depth; j++) { mapTypeList.add(mapType); } + + int matchSize = matchResultList.size(); + for (int k = matchSize; k < depth; k++) { + matchResultList.add(new MapMatchResult()); + } } } @@ -120,10 +128,10 @@ public class DrillMapLayerPane extends BasicBeanPane { return panel; } - private JPanel createTitlePane (String title, JPanel panel) { + private JPanel createTitlePane(String title, JPanel panel) { JPanel jPanel = TableLayout4VanChartHelper.createExpandablePaneWithTitle(title, panel); - panel.setBorder(BorderFactory.createEmptyBorder(10,5,0,0)); - jPanel.setBorder(BorderFactory.createEmptyBorder(0,5,0,0)); + panel.setBorder(BorderFactory.createEmptyBorder(10, 5, 0, 0)); + jPanel.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0)); return jPanel; } diff --git a/designer-chart/src/main/java/com/fr/design/chartx/data/drillMap/EachLayerDataDefinitionPane.java b/designer-chart/src/main/java/com/fr/design/chartx/data/drillMap/EachLayerDataDefinitionPane.java index 02c6c4d08..a7180e4c5 100644 --- a/designer-chart/src/main/java/com/fr/design/chartx/data/drillMap/EachLayerDataDefinitionPane.java +++ b/designer-chart/src/main/java/com/fr/design/chartx/data/drillMap/EachLayerDataDefinitionPane.java @@ -13,6 +13,7 @@ import com.fr.design.i18n.Toolkit; import com.fr.general.ComparatorUtils; import com.fr.plugin.chart.drillmap.VanChartDrillMapPlot; import com.fr.plugin.chart.type.MapType; +import com.fr.plugin.chart.vanchart.VanChart; import java.util.ArrayList; import java.util.List; @@ -26,8 +27,11 @@ public class EachLayerDataDefinitionPane extends MultiTabPane oldTypeList; private VanChartDrillMapPlot plot; - public EachLayerDataDefinitionPane(VanChartDrillMapPlot drillMapPlot) { - this.plot = drillMapPlot; + private VanChart vanChart; + + public EachLayerDataDefinitionPane(VanChart vanChart) { + this.vanChart = vanChart; + this.plot = vanChart.getPlot(); initComps(); } @@ -52,17 +56,29 @@ public class EachLayerDataDefinitionPane extends MultiTabPane { +public class AreaMapDataSetFieldsPane extends MapDataSetFieldsPane { private UIComboBox areaName; @@ -27,6 +30,13 @@ public class AreaMapDataSetFieldsPane extends AbstractDataSetFieldsWithSeriesVal }; } + @Override + protected Component[] fieldComponents() { + return new Component[]{ + createAreaPanel(createAreaName()) + }; + } + private UIComboBox createAreaName() { if (areaName == null) { areaName = new UIComboBox(); @@ -47,4 +57,8 @@ public class AreaMapDataSetFieldsPane extends AbstractDataSetFieldsWithSeriesVal updateSeriesValuePane(fieldCollection); return fieldCollection; } + + public MapType getMapType() { + return MapType.AREA; + } } diff --git a/designer-chart/src/main/java/com/fr/design/chartx/fields/diff/LineMapDataSetFieldsPane.java b/designer-chart/src/main/java/com/fr/design/chartx/fields/diff/LineMapDataSetFieldsPane.java index 24220b993..0b5253644 100644 --- a/designer-chart/src/main/java/com/fr/design/chartx/fields/diff/LineMapDataSetFieldsPane.java +++ b/designer-chart/src/main/java/com/fr/design/chartx/fields/diff/LineMapDataSetFieldsPane.java @@ -3,6 +3,7 @@ package com.fr.design.chartx.fields.diff; import com.fr.chartx.data.field.diff.LineMapColumnFieldCollection; import com.fr.design.chartx.data.map.LineMapAreaLngLatPaneWithComboBox; import com.fr.design.gui.icombobox.UIComboBox; +import com.fr.plugin.chart.type.MapType; import com.fr.third.jodd.util.ArraysUtil; import javax.swing.JPanel; @@ -12,7 +13,7 @@ import javax.swing.JPanel; * @version 10.0 * Created by shine on 2019/11/11 */ -public class LineMapDataSetFieldsPane extends AbstractDataSetFieldsWithSeriesValuePane { +public class LineMapDataSetFieldsPane extends MapDataSetFieldsPane { private LineMapAreaLngLatPaneWithComboBox areaLngLatPane; private UIComboBox lineName; @@ -20,7 +21,7 @@ public class LineMapDataSetFieldsPane extends AbstractDataSetFieldsWithSeriesVal @Override protected JPanel createNorthPane() { if (areaLngLatPane == null) { - areaLngLatPane = new LineMapAreaLngLatPaneWithComboBox(); + areaLngLatPane = new LineMapAreaLngLatPaneWithComboBox(this); } return areaLngLatPane; } @@ -58,4 +59,8 @@ public class LineMapDataSetFieldsPane extends AbstractDataSetFieldsWithSeriesVal updateSeriesValuePane(columnFieldCollection); return columnFieldCollection; } + + public MapType getMapType() { + return MapType.LINE; + } } diff --git a/designer-chart/src/main/java/com/fr/design/chartx/fields/diff/MapDataSetFieldsPane.java b/designer-chart/src/main/java/com/fr/design/chartx/fields/diff/MapDataSetFieldsPane.java new file mode 100644 index 000000000..df7938e07 --- /dev/null +++ b/designer-chart/src/main/java/com/fr/design/chartx/fields/diff/MapDataSetFieldsPane.java @@ -0,0 +1,89 @@ +package com.fr.design.chartx.fields.diff; + +import com.fr.base.BaseUtils; +import com.fr.chartx.TwoTuple; +import com.fr.chartx.data.field.diff.ColumnFieldCollectionWithSeriesValue; +import com.fr.design.beans.BasicBeanPane; +import com.fr.design.chartx.component.MapAreaMatchPane; +import com.fr.design.dialog.BasicDialog; +import com.fr.design.dialog.DialogActionListener; +import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.gui.icombobox.UIComboBox; +import com.fr.plugin.chart.map.VanChartMapPlot; +import com.fr.plugin.chart.map.server.ChartGEOJSONHelper; +import com.fr.plugin.chart.type.MapType; +import com.fr.plugin.chart.vanchart.VanChart; + +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.tree.DefaultMutableTreeNode; +import java.util.Set; +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +/** + * @author Bjorn + * @version 10.0 + * Created by Bjorn on 2019-12-25 + */ +public abstract class MapDataSetFieldsPane extends AbstractDataSetFieldsWithSeriesValuePane { + + private VanChart chart; + + //钻取地图有层级,默认-1代表无层级关系 + private int level = ChartGEOJSONHelper.DEFAULT_LEVEL; + + public int getLevel() { + return level; + } + + public void setLevel(int level) { + this.level = level; + } + + public void setChart(VanChart chart) { + this.chart = chart; + } + + public VanChart getChart() { + return chart; + } + + public JPanel createAreaPanel(UIComboBox areaBox) { + JPanel areaPanel = new JPanel(new BorderLayout(10, 0)); + areaBox.setPreferredSize(new Dimension(91, 20)); + areaPanel.add(areaBox, BorderLayout.WEST); + UIButton uiButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/config.png")); + uiButton.addActionListener(new ActionListener() { + private TwoTuple> treeNodeAndItems; + + @Override + public void actionPerformed(ActionEvent e) { + if (treeNodeAndItems == null) { + treeNodeAndItems = ChartGEOJSONHelper.getTreeNodeAndItems(((VanChartMapPlot) chart.getPlot()).getGeoUrl(), level); + } + final BasicBeanPane pane = new MapAreaMatchPane(MapDataSetFieldsPane.this.getMapType(), level, treeNodeAndItems); + pane.populateBean(chart); + BasicDialog dialog = pane.showWindow(new JFrame()); + dialog.addDialogActionListener(new DialogActionListener() { + @Override + public void doOk() { + pane.updateBean(chart); + } + + @Override + public void doCancel() { + + } + }); + dialog.setVisible(true); + } + }); + areaPanel.add(uiButton, BorderLayout.EAST); + return areaPanel; + } + + public abstract MapType getMapType(); +} diff --git a/designer-chart/src/main/java/com/fr/design/chartx/fields/diff/PointMapDataSetFieldsPane.java b/designer-chart/src/main/java/com/fr/design/chartx/fields/diff/PointMapDataSetFieldsPane.java index 1771637ab..2eae509ca 100644 --- a/designer-chart/src/main/java/com/fr/design/chartx/fields/diff/PointMapDataSetFieldsPane.java +++ b/designer-chart/src/main/java/com/fr/design/chartx/fields/diff/PointMapDataSetFieldsPane.java @@ -3,6 +3,7 @@ package com.fr.design.chartx.fields.diff; import com.fr.chartx.data.field.diff.PointMapColumnFieldCollection; import com.fr.design.chartx.data.map.PointMapAreaLngLatPaneWithComboBox; import com.fr.design.gui.icombobox.UIComboBox; +import com.fr.plugin.chart.type.MapType; import javax.swing.JPanel; @@ -11,13 +12,13 @@ import javax.swing.JPanel; * @version 10.0 * Created by shine on 2019/11/8 */ -public class PointMapDataSetFieldsPane extends AbstractDataSetFieldsWithSeriesValuePane { +public class PointMapDataSetFieldsPane extends MapDataSetFieldsPane { private PointMapAreaLngLatPaneWithComboBox areaLngLatPane; @Override protected JPanel createNorthPane() { if (areaLngLatPane == null) { - areaLngLatPane = new PointMapAreaLngLatPaneWithComboBox(); + areaLngLatPane = new PointMapAreaLngLatPaneWithComboBox(this); } return areaLngLatPane; } @@ -30,7 +31,7 @@ public class PointMapDataSetFieldsPane extends AbstractDataSetFieldsWithSeriesVa @Override protected UIComboBox[] filedComboBoxes() { if (areaLngLatPane == null) { - areaLngLatPane = new PointMapAreaLngLatPaneWithComboBox(); + areaLngLatPane = new PointMapAreaLngLatPaneWithComboBox(this); } return areaLngLatPane.allFieldComboBox(); } @@ -48,4 +49,8 @@ public class PointMapDataSetFieldsPane extends AbstractDataSetFieldsWithSeriesVa updateSeriesValuePane(fieldCollection); return fieldCollection; } + + public MapType getMapType() { + return MapType.POINT; + } } diff --git a/designer-chart/src/main/java/com/fr/van/chart/heatmap/designer/VanHeatMapChartTypeUI.java b/designer-chart/src/main/java/com/fr/van/chart/heatmap/designer/VanHeatMapChartTypeUI.java index 90926a106..f3ad4e22d 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/heatmap/designer/VanHeatMapChartTypeUI.java +++ b/designer-chart/src/main/java/com/fr/van/chart/heatmap/designer/VanHeatMapChartTypeUI.java @@ -66,7 +66,9 @@ public class VanHeatMapChartTypeUI extends VanMapChartTypeUI { return new AbstractVanSingleDataPane(listener) { @Override protected SingleDataPane createSingleDataPane() { - return new SingleDataPane(new PointMapDataSetFieldsPane(), new PointMapCellDataFieldsPane()); + PointMapDataSetFieldsPane pointMapDataSetFieldsPane = new PointMapDataSetFieldsPane(); + pointMapDataSetFieldsPane.setChart(getVanChart()); + return new SingleDataPane(pointMapDataSetFieldsPane, new PointMapCellDataFieldsPane()); } }; } From e4ddae1b6d2e75c3ba3f83ee36795b168c5cdaae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=B2=B3?= <445798420@qq.com> Date: Tue, 31 Dec 2019 14:51:26 +0800 Subject: [PATCH 6/9] =?UTF-8?q?CHART-11090=20=E5=9C=B0=E5=9B=BE=E6=A8=A1?= =?UTF-8?q?=E7=B3=8A=E5=8C=B9=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chartx/component/MapAreaMatchPane.java | 20 +++++++++---------- .../fields/diff/MapDataSetFieldsPane.java | 8 ++++---- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/chartx/component/MapAreaMatchPane.java b/designer-chart/src/main/java/com/fr/design/chartx/component/MapAreaMatchPane.java index fcf737991..981a190a4 100644 --- a/designer-chart/src/main/java/com/fr/design/chartx/component/MapAreaMatchPane.java +++ b/designer-chart/src/main/java/com/fr/design/chartx/component/MapAreaMatchPane.java @@ -8,7 +8,6 @@ import com.fr.chartx.data.DataSetDefinition; import com.fr.chartx.data.DrillMapChartDataDefinition; import com.fr.chartx.data.MapChartDataDefinition; import com.fr.chartx.data.execute.ExecuteDataSetHelper; -import com.fr.chartx.data.field.CollectionWithMapAreaAttr; import com.fr.data.TableDataSource; import com.fr.data.TableDataSourceTailor; import com.fr.data.core.DataCoreUtils; @@ -78,13 +77,10 @@ public class MapAreaMatchPane extends BasicBeanPane { private static final Object[] HEADER_WITH_EMPTY = new Object[]{Toolkit.i18nText("Fine-Design_Chart_Area_Name"), Toolkit.i18nText("Fine-Design_Chart_Match_To"), ""}; - private MapType mapType; - private int level; - public MapAreaMatchPane(MapType mapType, int level, TwoTuple> treeNodeAndItems) { - this.mapType = mapType; + public MapAreaMatchPane(int level, TwoTuple> treeNodeAndItems) { this.level = level; initButtonGroup(); @@ -209,7 +205,11 @@ public class MapAreaMatchPane extends BasicBeanPane { matchResultTable.updateBean(matchResult); } - public void populateBean(VanChart chart) { + public void populateBean(VanChart vanChart) { + + } + + public void populateBean(VanChart chart, String comboBoxName, MapType mapType) { //先取保存的数据集名称和区域名,若不存在,就取数据集面板配置的数据集名称和区域名 MapMatchResult matchResult; if (level < 0) { @@ -224,7 +224,7 @@ public class MapAreaMatchPane extends BasicBeanPane { String tableName = matchResult.getTableName(); String areaName = matchResult.getColumnName(); if (tableName == null) { - DataSetDefinition dataSetDefinition = getDataSetDefinition(chart.getChartDataDefinition()); + DataSetDefinition dataSetDefinition = getDataSetDefinition(chart.getChartDataDefinition(), mapType); if (dataSetDefinition == null) { return; } @@ -233,9 +233,7 @@ public class MapAreaMatchPane extends BasicBeanPane { return; } tableName = nameTableData.getName(); - CollectionWithMapAreaAttr columnFieldCollection = (CollectionWithMapAreaAttr) dataSetDefinition.getColumnFieldCollection(); - - areaName = columnFieldCollection.getMatchColumn(); + areaName = comboBoxName; } tableNameCombox.setSelectedTableDataByName(tableName); if (StringUtils.isEmpty(areaName)) { @@ -245,7 +243,7 @@ public class MapAreaMatchPane extends BasicBeanPane { populateData(tableName, areaName); } - private DataSetDefinition getDataSetDefinition(ChartDataDefinitionProvider chartDataDefinitionProvider) { + private DataSetDefinition getDataSetDefinition(ChartDataDefinitionProvider chartDataDefinitionProvider, MapType mapType) { DataSetDefinition dataSetDefinition = null; if (chartDataDefinitionProvider instanceof MapChartDataDefinition) { MapChartDataDefinition mapChartDataDefinition = (MapChartDataDefinition) chartDataDefinitionProvider; diff --git a/designer-chart/src/main/java/com/fr/design/chartx/fields/diff/MapDataSetFieldsPane.java b/designer-chart/src/main/java/com/fr/design/chartx/fields/diff/MapDataSetFieldsPane.java index df7938e07..01a963ea0 100644 --- a/designer-chart/src/main/java/com/fr/design/chartx/fields/diff/MapDataSetFieldsPane.java +++ b/designer-chart/src/main/java/com/fr/design/chartx/fields/diff/MapDataSetFieldsPane.java @@ -1,9 +1,9 @@ package com.fr.design.chartx.fields.diff; import com.fr.base.BaseUtils; +import com.fr.base.Utils; import com.fr.chartx.TwoTuple; import com.fr.chartx.data.field.diff.ColumnFieldCollectionWithSeriesValue; -import com.fr.design.beans.BasicBeanPane; import com.fr.design.chartx.component.MapAreaMatchPane; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.DialogActionListener; @@ -51,7 +51,7 @@ public abstract class MapDataSetFieldsPane Date: Mon, 6 Jan 2020 13:36:40 +0800 Subject: [PATCH 7/9] =?UTF-8?q?CHART-11090=20=E4=BB=A3=E7=A0=81=E8=B4=A8?= =?UTF-8?q?=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chartx/component/MapAreaMatchPane.java | 87 ++++--------------- 1 file changed, 16 insertions(+), 71 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/chartx/component/MapAreaMatchPane.java b/designer-chart/src/main/java/com/fr/design/chartx/component/MapAreaMatchPane.java index 981a190a4..1bd7b3f6c 100644 --- a/designer-chart/src/main/java/com/fr/design/chartx/component/MapAreaMatchPane.java +++ b/designer-chart/src/main/java/com/fr/design/chartx/component/MapAreaMatchPane.java @@ -3,10 +3,6 @@ package com.fr.design.chartx.component; import com.fr.base.BaseUtils; import com.fr.base.ParameterMapNameSpace; import com.fr.chartx.TwoTuple; -import com.fr.chartx.data.ChartDataDefinitionProvider; -import com.fr.chartx.data.DataSetDefinition; -import com.fr.chartx.data.DrillMapChartDataDefinition; -import com.fr.chartx.data.MapChartDataDefinition; import com.fr.chartx.data.execute.ExecuteDataSetHelper; import com.fr.data.TableDataSource; import com.fr.data.TableDataSourceTailor; @@ -28,9 +24,8 @@ import com.fr.design.parameter.ParameterInputPane; import com.fr.general.GeneralUtils; import com.fr.general.data.DataModel; import com.fr.general.data.TableDataException; -import com.fr.plugin.chart.drillmap.VanChartDrillMapPlot; +import com.fr.plugin.chart.map.MapMatchProvider; import com.fr.plugin.chart.map.MapMatchResult; -import com.fr.plugin.chart.map.VanChartMapPlot; import com.fr.plugin.chart.map.server.ChartGEOJSONHelper; import com.fr.plugin.chart.type.MapType; import com.fr.plugin.chart.vanchart.VanChart; @@ -63,7 +58,7 @@ import java.awt.event.MouseEvent; * @version 10.0 * Created by Bjorn on 2019-11-04 */ -public class MapAreaMatchPane extends BasicBeanPane { +public class MapAreaMatchPane extends BasicBeanPane { private TableDataComboBox tableNameCombox; private UIComboBox areaNameBox; @@ -188,14 +183,10 @@ public class MapAreaMatchPane extends BasicBeanPane { }); } - public void updateBean(VanChart chart) { - MapMatchResult matchResult = new MapMatchResult(); - if (level < 0) { - VanChartMapPlot plot = chart.getPlot(); - plot.setMatchResult(matchResult); - } else { - VanChartDrillMapPlot plot = chart.getPlot(); - plot.getMatchResultList().set(level, matchResult); + public void updateBean(MapMatchProvider mapMatchProvider) { + MapMatchResult matchResult = mapMatchProvider.getMatchResult(level); + if (matchResult == null) { + return; } if (tableNameCombox.getSelectedItem() != null) { matchResult.setTableName(tableNameCombox.getSelectedItem().getTableDataName()); @@ -205,34 +196,23 @@ public class MapAreaMatchPane extends BasicBeanPane { matchResultTable.updateBean(matchResult); } - public void populateBean(VanChart vanChart) { + public void populateBean(MapMatchProvider vanChart) { } - public void populateBean(VanChart chart, String comboBoxName, MapType mapType) { + public void populateBean(MapMatchProvider mapMatchProvider, String comboBoxName, MapType mapType) { //先取保存的数据集名称和区域名,若不存在,就取数据集面板配置的数据集名称和区域名 - MapMatchResult matchResult; - if (level < 0) { - VanChartMapPlot plot = chart.getPlot(); - matchResult = plot.getMatchResult(); - } else { - VanChartDrillMapPlot plot = chart.getPlot(); - matchResult = plot.getMatchResultList().get(level); - } + MapMatchResult matchResult = mapMatchProvider.getMatchResult(level); matchResultTable.populateBean(matchResult); - String tableName = matchResult.getTableName(); - String areaName = matchResult.getColumnName(); + String tableName = null; + String areaName = null; + if (matchResult != null) { + tableName = matchResult.getTableName(); + areaName = matchResult.getColumnName(); + } if (tableName == null) { - DataSetDefinition dataSetDefinition = getDataSetDefinition(chart.getChartDataDefinition(), mapType); - if (dataSetDefinition == null) { - return; - } - NameTableData nameTableData = dataSetDefinition.getNameTableData(); - if (nameTableData == null) { - return; - } - tableName = nameTableData.getName(); + tableName = mapMatchProvider.getNameTable(mapType, level); areaName = comboBoxName; } tableNameCombox.setSelectedTableDataByName(tableName); @@ -243,41 +223,6 @@ public class MapAreaMatchPane extends BasicBeanPane { populateData(tableName, areaName); } - private DataSetDefinition getDataSetDefinition(ChartDataDefinitionProvider chartDataDefinitionProvider, MapType mapType) { - DataSetDefinition dataSetDefinition = null; - if (chartDataDefinitionProvider instanceof MapChartDataDefinition) { - MapChartDataDefinition mapChartDataDefinition = (MapChartDataDefinition) chartDataDefinitionProvider; - if (mapChartDataDefinition == null) { - return null; - } - switch (mapType) { - case AREA: - dataSetDefinition = (DataSetDefinition) mapChartDataDefinition.getAreaMapDataDefinition(); - break; - case POINT: - dataSetDefinition = (DataSetDefinition) mapChartDataDefinition.getPointMapDataDefinition(); - break; - case LINE: - dataSetDefinition = (DataSetDefinition) mapChartDataDefinition.getLineMapDataDefinition(); - break; - } - } else if (chartDataDefinitionProvider instanceof DrillMapChartDataDefinition) { - DrillMapChartDataDefinition drillMapChartDataDefinition = (DrillMapChartDataDefinition) chartDataDefinitionProvider; - if (drillMapChartDataDefinition == null) { - return null; - } - if (drillMapChartDataDefinition.isFromBottomData()) { - dataSetDefinition = (DataSetDefinition) drillMapChartDataDefinition.getBottomDataDefinition(); - } else { - dataSetDefinition = (DataSetDefinition) drillMapChartDataDefinition.getEachLayerDataDefinitionList().get(level); - } - - } else { - dataSetDefinition = (DataSetDefinition) chartDataDefinitionProvider; - } - return dataSetDefinition; - } - private void populateData(String tableName, String columnName) { Object[] columnData = getColumnData(tableName, columnName); if (columnData == null) { From 8b1ddf4f940dad22bb14331914bfb215451758e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=B2=B3?= <445798420@qq.com> Date: Mon, 6 Jan 2020 17:39:08 +0800 Subject: [PATCH 8/9] =?UTF-8?q?CHART-11090=20=E4=BB=A3=E7=A0=81=E8=B4=A8?= =?UTF-8?q?=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chartx/component/MapAreaMatchPane.java | 29 ++------ .../fields/diff/MapDataSetFieldsPane.java | 71 ++++++++++++++++++- 2 files changed, 75 insertions(+), 25 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/chartx/component/MapAreaMatchPane.java b/designer-chart/src/main/java/com/fr/design/chartx/component/MapAreaMatchPane.java index 1bd7b3f6c..708b99365 100644 --- a/designer-chart/src/main/java/com/fr/design/chartx/component/MapAreaMatchPane.java +++ b/designer-chart/src/main/java/com/fr/design/chartx/component/MapAreaMatchPane.java @@ -24,11 +24,8 @@ import com.fr.design.parameter.ParameterInputPane; import com.fr.general.GeneralUtils; import com.fr.general.data.DataModel; import com.fr.general.data.TableDataException; -import com.fr.plugin.chart.map.MapMatchProvider; import com.fr.plugin.chart.map.MapMatchResult; import com.fr.plugin.chart.map.server.ChartGEOJSONHelper; -import com.fr.plugin.chart.type.MapType; -import com.fr.plugin.chart.vanchart.VanChart; import com.fr.script.Calculator; import com.fr.stable.ArrayUtils; import com.fr.stable.ParameterProvider; @@ -58,7 +55,7 @@ import java.awt.event.MouseEvent; * @version 10.0 * Created by Bjorn on 2019-11-04 */ -public class MapAreaMatchPane extends BasicBeanPane { +public class MapAreaMatchPane extends BasicBeanPane { private TableDataComboBox tableNameCombox; private UIComboBox areaNameBox; @@ -72,12 +69,8 @@ public class MapAreaMatchPane extends BasicBeanPane { private static final Object[] HEADER_WITH_EMPTY = new Object[]{Toolkit.i18nText("Fine-Design_Chart_Area_Name"), Toolkit.i18nText("Fine-Design_Chart_Match_To"), ""}; - private int level; - - - public MapAreaMatchPane(int level, TwoTuple> treeNodeAndItems) { - this.level = level; + public MapAreaMatchPane(TwoTuple> treeNodeAndItems) { initButtonGroup(); initRefreshLabel(); areaNameBox = new UIComboBox(); @@ -183,8 +176,7 @@ public class MapAreaMatchPane extends BasicBeanPane { }); } - public void updateBean(MapMatchProvider mapMatchProvider) { - MapMatchResult matchResult = mapMatchProvider.getMatchResult(level); + public void updateBean(MapMatchResult matchResult) { if (matchResult == null) { return; } @@ -196,25 +188,18 @@ public class MapAreaMatchPane extends BasicBeanPane { matchResultTable.updateBean(matchResult); } - public void populateBean(MapMatchProvider vanChart) { + public void populateBean(MapMatchResult matchResult) { } - public void populateBean(MapMatchProvider mapMatchProvider, String comboBoxName, MapType mapType) { + public void populateBean(MapMatchResult matchResult, String tableName, String areaName) { //先取保存的数据集名称和区域名,若不存在,就取数据集面板配置的数据集名称和区域名 - MapMatchResult matchResult = mapMatchProvider.getMatchResult(level); matchResultTable.populateBean(matchResult); - String tableName = null; - String areaName = null; - if (matchResult != null) { + if (matchResult != null && matchResult.getTableName() != null) { tableName = matchResult.getTableName(); areaName = matchResult.getColumnName(); } - if (tableName == null) { - tableName = mapMatchProvider.getNameTable(mapType, level); - areaName = comboBoxName; - } tableNameCombox.setSelectedTableDataByName(tableName); if (StringUtils.isEmpty(areaName)) { return; @@ -305,7 +290,7 @@ public class MapAreaMatchPane extends BasicBeanPane { areaNameBox.setSelectedItem(null); } - public VanChart updateBean() { + public MapMatchResult updateBean() { return null; } diff --git a/designer-chart/src/main/java/com/fr/design/chartx/fields/diff/MapDataSetFieldsPane.java b/designer-chart/src/main/java/com/fr/design/chartx/fields/diff/MapDataSetFieldsPane.java index 01a963ea0..37b6220d0 100644 --- a/designer-chart/src/main/java/com/fr/design/chartx/fields/diff/MapDataSetFieldsPane.java +++ b/designer-chart/src/main/java/com/fr/design/chartx/fields/diff/MapDataSetFieldsPane.java @@ -2,13 +2,21 @@ package com.fr.design.chartx.fields.diff; import com.fr.base.BaseUtils; import com.fr.base.Utils; +import com.fr.chart.chartattr.Plot; import com.fr.chartx.TwoTuple; +import com.fr.chartx.data.ChartDataDefinitionProvider; +import com.fr.chartx.data.DataSetDefinition; +import com.fr.chartx.data.DrillMapChartDataDefinition; +import com.fr.chartx.data.MapChartDataDefinition; import com.fr.chartx.data.field.diff.ColumnFieldCollectionWithSeriesValue; +import com.fr.data.impl.NameTableData; import com.fr.design.chartx.component.MapAreaMatchPane; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.DialogActionListener; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.icombobox.UIComboBox; +import com.fr.plugin.chart.drillmap.VanChartDrillMapPlot; +import com.fr.plugin.chart.map.MapMatchResult; import com.fr.plugin.chart.map.VanChartMapPlot; import com.fr.plugin.chart.map.server.ChartGEOJSONHelper; import com.fr.plugin.chart.type.MapType; @@ -64,13 +72,17 @@ public abstract class MapDataSetFieldsPane Date: Tue, 7 Jan 2020 14:44:56 +0800 Subject: [PATCH 9/9] =?UTF-8?q?CHART-11090=20=E4=BB=A3=E7=A0=81=E8=B4=A8?= =?UTF-8?q?=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fields/AbstractDataSetFieldsPane.java | 10 +++ .../fields/diff/AreaMapDataSetFieldsPane.java | 5 -- .../fields/diff/LineMapDataSetFieldsPane.java | 5 -- .../fields/diff/MapDataSetFieldsPane.java | 70 ++----------------- .../diff/PointMapDataSetFieldsPane.java | 5 -- .../fr/design/chartx/single/DataSetPane.java | 7 +- 6 files changed, 18 insertions(+), 84 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/chartx/fields/AbstractDataSetFieldsPane.java b/designer-chart/src/main/java/com/fr/design/chartx/fields/AbstractDataSetFieldsPane.java index 034e17fdb..e5fff790c 100644 --- a/designer-chart/src/main/java/com/fr/design/chartx/fields/AbstractDataSetFieldsPane.java +++ b/designer-chart/src/main/java/com/fr/design/chartx/fields/AbstractDataSetFieldsPane.java @@ -32,10 +32,20 @@ import static com.fr.design.mainframe.chart.gui.data.table.DataPaneHelper.refres */ public abstract class AbstractDataSetFieldsPane extends BasicBeanPane { + public String tableName; + public AbstractDataSetFieldsPane() { initComponents(); } + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + protected void initComponents() { this.setLayout(new BorderLayout(0, 6)); diff --git a/designer-chart/src/main/java/com/fr/design/chartx/fields/diff/AreaMapDataSetFieldsPane.java b/designer-chart/src/main/java/com/fr/design/chartx/fields/diff/AreaMapDataSetFieldsPane.java index a9d1d48d1..2f4dc37ea 100644 --- a/designer-chart/src/main/java/com/fr/design/chartx/fields/diff/AreaMapDataSetFieldsPane.java +++ b/designer-chart/src/main/java/com/fr/design/chartx/fields/diff/AreaMapDataSetFieldsPane.java @@ -3,7 +3,6 @@ package com.fr.design.chartx.fields.diff; import com.fr.chartx.data.field.diff.AreaMapColumnFieldCollection; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.i18n.Toolkit; -import com.fr.plugin.chart.type.MapType; import java.awt.Component; @@ -57,8 +56,4 @@ public class AreaMapDataSetFieldsPane extends MapDataSetFieldsPane { tableDataPane = new DatabaseTableDataPane(label) { @Override protected void userEvent() { - refreshBoxList(); + refreshBoxListAndTableName(); checkBoxUse(); } }; @@ -67,7 +67,7 @@ public class DataSetPane extends FurtherBasicBeanPane { /** * 刷新字段下拉列表 */ - private void refreshBoxList() { + private void refreshBoxListAndTableName() { TableDataWrapper dataWrap = tableDataPane.getTableDataWrapper(); if (dataWrap == null) { @@ -78,6 +78,7 @@ public class DataSetPane extends FurtherBasicBeanPane { if (dataSetFieldsPane != null) { dataSetFieldsPane.refreshBoxListWithSelectTableData(columnNameList); + dataSetFieldsPane.setTableName(dataWrap.getTableDataName()); } } @@ -102,7 +103,7 @@ public class DataSetPane extends FurtherBasicBeanPane { return; } - refreshBoxList(); + refreshBoxListAndTableName(); tableDataPane.populateBean(ob.getNameTableData());