From 21d0422f021e4b5e7c3bf6044ab173b22dedd00e Mon Sep 17 00:00:00 2001 From: "Qinghui.Liu" Date: Wed, 2 Sep 2020 10:15:55 +0800 Subject: [PATCH 1/4] =?UTF-8?q?CHART-15510=20=E6=A0=87=E7=AD=BE=E5=92=8C?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E4=B8=AD=E6=8F=92=E5=85=A5BI=E7=9A=84?= =?UTF-8?q?=E5=AF=8C=E6=96=87=E6=9C=AC=E7=BC=96=E8=BE=91=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/VanChartRichEditorPane.java | 78 +++++++ .../component/VanChartTooltipContentPane.java | 194 ++++++++++++++++-- .../VanChartFormatPaneWithCheckBox.java | 13 +- 3 files changed, 264 insertions(+), 21 deletions(-) create mode 100644 designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartRichEditorPane.java diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartRichEditorPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartRichEditorPane.java new file mode 100644 index 000000000..c4588ce1c --- /dev/null +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartRichEditorPane.java @@ -0,0 +1,78 @@ +package com.fr.van.chart.designer.component; + +import com.fr.design.ui.ModernUIPane; +import com.fr.plugin.chart.base.AttrTooltipRichEditor; +import com.fr.stable.StringUtils; + +import java.util.Map; + +public class VanChartRichEditorPane { + + private static ModernUIPane richEditorPane; + + public static ModernUIPane getInstance() { + if (richEditorPane == null) { + richEditorPane = new ModernUIPane.Builder() + .withEMB("/com/fr/design/editor/rich_editor.html") + .namespace("Pool").build(); + } + + return richEditorPane; + } + + public static RichEditorModel getRichEditorModel(AttrTooltipRichEditor richEditor) { + Map paramsMap = richEditor.getParams(); + StringBuilder paramsStr = new StringBuilder(StringUtils.EMPTY); + + if (paramsMap != null) { + for (Map.Entry entry : paramsMap.entrySet()) { + paramsStr.append(entry.getKey()).append(":").append(entry.getValue()); + paramsStr.append("-"); + } + } + + int len = paramsStr.length(); + + if (len > 0) { + paramsStr.deleteCharAt(len - 1); + } + + return new RichEditorModel(richEditor.getContent(), richEditor.isAuto(), paramsStr.toString()); + } + + public static class RichEditorModel { + private String content; + private boolean auto; + private String params; + + public RichEditorModel(String content, boolean auto, String params) { + this.content = content; + this.auto = auto; + this.params = params; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public boolean isAuto() { + return auto; + } + + public void setAuto(boolean auto) { + this.auto = auto; + } + + public String getParams() { + return params; + } + + public void setParams(String params) { + this.params = params; + } + } +} diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTooltipContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTooltipContentPane.java index 5920dd969..b52e4fda4 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTooltipContentPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTooltipContentPane.java @@ -1,12 +1,23 @@ package com.fr.van.chart.designer.component; +import com.fr.design.DesignerEnvManager; import com.fr.design.beans.BasicBeanPane; +import com.fr.design.dialog.BasicDialog; +import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.gui.autocomplete.AutoCompletion; +import com.fr.design.gui.autocomplete.DefaultCompletionProvider; import com.fr.design.gui.ibutton.UIButtonGroup; +import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.syntax.ui.rtextarea.RTextArea; +import com.fr.design.i18n.Toolkit; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; - +import com.fr.design.ui.ModernUIPane; +import com.fr.log.FineLoggerFactory; import com.fr.plugin.chart.base.AttrTooltipContent; +import com.fr.plugin.chart.base.AttrTooltipRichEditor; +import com.fr.plugin.chart.base.format.AttrTooltipFormat; import com.fr.van.chart.designer.TableLayout4VanChartHelper; import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithCheckBox; import com.fr.van.chart.designer.component.format.ChangedPercentFormatPaneWithCheckBox; @@ -14,15 +25,23 @@ import com.fr.van.chart.designer.component.format.ChangedValueFormatPaneWithChec import com.fr.van.chart.designer.component.format.PercentFormatPaneWithCheckBox; import com.fr.van.chart.designer.component.format.SeriesNameFormatPaneWithCheckBox; import com.fr.van.chart.designer.component.format.ValueFormatPaneWithCheckBox; +import com.fr.van.chart.designer.component.format.VanChartFormatPaneWithCheckBox; import com.fr.van.chart.designer.style.VanChartStylePane; +import javax.swing.JComponent; +import javax.swing.JFrame; import javax.swing.JPanel; +import javax.swing.KeyStroke; +import javax.swing.SwingUtilities; +import javax.swing.text.Document; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Component; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; /** * 内容界面 。数据点提示 @@ -43,22 +62,29 @@ public class VanChartTooltipContentPane extends BasicBeanPane(new String[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Common"), - com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Custom")}); + content = new UIButtonGroup<>(new String[]{ + Toolkit.i18nText("Fine-Design_Chart_Common"), + Toolkit.i18nText("Fine-Design_Chart_Custom") + }); initFormatPane(parent, showOnPane); @@ -80,8 +106,8 @@ public class VanChartTooltipContentPane extends BasicBeanPane pane = VanChartRichEditorPane.getInstance(); + BasicDialog dialog = pane.showWindow(new JFrame()); + + pane.populate(VanChartRichEditorPane.getRichEditorModel(richEditor)); + + dialog.addDialogActionListener(new DialogActionAdapter() { + + public void doOk() { + VanChartRichEditorPane.RichEditorModel model = pane.update(); + + String content = model.getContent(); + + populateContentTextArea(content); + + richEditor.setContent(content); + richEditor.setAuto(model.isAuto()); + + SwingUtilities.getWindowAncestor(pane).setVisible(false); + } + + public void doCancel() { + SwingUtilities.getWindowAncestor(pane).setVisible(false); + } + }); + + dialog.setVisible(true); + + if (parent != null) { + parent.attributeChanged(); + } + } + protected void initFormatPane(VanChartStylePane parent, JPanel showOnPane){ categoryNameFormatPane = new CategoryNameFormatPaneWithCheckBox(parent, showOnPane); seriesNameFormatPane = new SeriesNameFormatPaneWithCheckBox(parent, showOnPane); @@ -154,13 +267,17 @@ public class VanChartTooltipContentPane extends BasicBeanPane paramMap, String value) { + String key = this.getCheckBoxText(); + + if (paramMap != null && !paramMap.containsKey(key)) { + paramMap.put(key, value); + } + } } From bf14ab15b726ec35744850023e68fbb95d8abf5b Mon Sep 17 00:00:00 2001 From: "Qinghui.Liu" Date: Mon, 7 Sep 2020 17:28:15 +0800 Subject: [PATCH 2/4] =?UTF-8?q?CHART-15510=20=E5=AE=8C=E5=96=84=E5=86=85?= =?UTF-8?q?=E5=AE=B9=E6=A0=B7=E5=BC=8F=E7=95=8C=E9=9D=A2=E4=BA=A4=E4=BA=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/VanChartRichEditorPane.java | 67 ++++++- .../component/VanChartTooltipContentPane.java | 163 +++++++++++------- .../VanChartFormatPaneWithCheckBox.java | 46 ++--- 3 files changed, 180 insertions(+), 96 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartRichEditorPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartRichEditorPane.java index c4588ce1c..b4b9dd32f 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartRichEditorPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartRichEditorPane.java @@ -1,27 +1,61 @@ package com.fr.van.chart.designer.component; import com.fr.design.ui.ModernUIPane; -import com.fr.plugin.chart.base.AttrTooltipRichEditor; +import com.fr.plugin.chart.base.AttrTooltipRichText; import com.fr.stable.StringUtils; +import com.teamdev.jxbrowser.chromium.Browser; +import com.teamdev.jxbrowser.chromium.JSValue; +import com.teamdev.jxbrowser.chromium.events.ScriptContextAdapter; +import com.teamdev.jxbrowser.chromium.events.ScriptContextEvent; +import java.util.ArrayList; +import java.util.List; import java.util.Map; public class VanChartRichEditorPane { + private static final String namespace = "Pool"; + private static final String variable = "data"; + private static final String richEditorPath = "/com/fr/design/editor/rich_editor.html"; + private static final String expression = "dispatch()"; + private static ModernUIPane richEditorPane; + private static Browser browser; + + public static ModernUIPane createRichEditorPane(AttrTooltipRichText richEditor) { + RichEditorModel model = getRichEditorModel(richEditor); - public static ModernUIPane getInstance() { if (richEditorPane == null) { - richEditorPane = new ModernUIPane.Builder() - .withEMB("/com/fr/design/editor/rich_editor.html") - .namespace("Pool").build(); + richEditorPane = initPane(model); + } else if (browser != null) { + updatePane(browser, model); } return richEditorPane; } - public static RichEditorModel getRichEditorModel(AttrTooltipRichEditor richEditor) { - Map paramsMap = richEditor.getParams(); + public static ModernUIPane initPane(RichEditorModel model) { + return new ModernUIPane.Builder() + .prepare(new ScriptContextAdapter() { + public void onScriptContextCreated(ScriptContextEvent event) { + browser = event.getBrowser(); + + JSValue ns = browser.executeJavaScriptAndReturnValue("window." + namespace); + ns.asObject().setProperty(variable, model); + } + }) + .withEMB(richEditorPath) + .namespace(namespace).build(); + } + + public static void updatePane(Browser browser, RichEditorModel model) { + JSValue ns = browser.executeJavaScriptAndReturnValue("window." + namespace); + ns.asObject().setProperty(variable, model); + browser.executeJavaScript("window." + namespace + "." + expression); + } + + public static RichEditorModel getRichEditorModel(AttrTooltipRichText richText) { + Map paramsMap = richText.getParams(); StringBuilder paramsStr = new StringBuilder(StringUtils.EMPTY); if (paramsMap != null) { @@ -37,7 +71,24 @@ public class VanChartRichEditorPane { paramsStr.deleteCharAt(len - 1); } - return new RichEditorModel(richEditor.getContent(), richEditor.isAuto(), paramsStr.toString()); + return new RichEditorModel(richText.getContent(), richText.isAuto(), paramsStr.toString()); + } + + public static List richParamsParser(String content, Map paramsMap) { + if (content == null || paramsMap == null) { + return null; + } + + List result = new ArrayList<>(); + + for (Map.Entry entry : paramsMap.entrySet()) { + String param = entry.getValue(); + if (content.contains(param)) { + result.add(param); + } + } + + return result; } public static class RichEditorModel { diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTooltipContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTooltipContentPane.java index b52e4fda4..084d12194 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTooltipContentPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTooltipContentPane.java @@ -1,22 +1,19 @@ package com.fr.van.chart.designer.component; -import com.fr.design.DesignerEnvManager; import com.fr.design.beans.BasicBeanPane; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.DialogActionAdapter; -import com.fr.design.gui.autocomplete.AutoCompletion; -import com.fr.design.gui.autocomplete.DefaultCompletionProvider; +import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButtonGroup; -import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.gui.syntax.ui.rtextarea.RTextArea; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.ui.ModernUIPane; +import com.fr.general.ComparatorUtils; import com.fr.log.FineLoggerFactory; import com.fr.plugin.chart.base.AttrTooltipContent; -import com.fr.plugin.chart.base.AttrTooltipRichEditor; +import com.fr.plugin.chart.base.AttrTooltipRichText; import com.fr.plugin.chart.base.format.AttrTooltipFormat; import com.fr.van.chart.designer.TableLayout4VanChartHelper; import com.fr.van.chart.designer.component.format.CategoryNameFormatPaneWithCheckBox; @@ -31,9 +28,7 @@ import com.fr.van.chart.designer.style.VanChartStylePane; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JPanel; -import javax.swing.KeyStroke; import javax.swing.SwingUtilities; -import javax.swing.text.Document; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Component; @@ -42,6 +37,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.util.List; /** * 内容界面 。数据点提示 @@ -63,18 +59,17 @@ public class VanChartTooltipContentPane extends BasicBeanPane pane = VanChartRichEditorPane.getInstance(); + final ModernUIPane pane = VanChartRichEditorPane.createRichEditorPane(richText); BasicDialog dialog = pane.showWindow(new JFrame()); - pane.populate(VanChartRichEditorPane.getRichEditorModel(richEditor)); + pane.populate(VanChartRichEditorPane.getRichEditorModel(richText)); dialog.addDialogActionListener(new DialogActionAdapter() { @@ -209,11 +189,9 @@ public class VanChartTooltipContentPane extends BasicBeanPane params = VanChartRichEditorPane.richParamsParser(content, richText.getParams()); + populateFormatParams(params); + updateLocalRichText(content, model.isAuto()); SwingUtilities.getWindowAncestor(pane).setVisible(false); } @@ -304,6 +282,59 @@ public class VanChartTooltipContentPane extends BasicBeanPane", + "\"seriesFormat\"", + "\"valueFormat\"", + "\"percentFormat\"", + "\"changedValueFormat\"", + "\"changedPercentFormat\"" + }; + + StringBuilder result = new StringBuilder("

"); + + for (int i = 0, len = formatPaneGroup.length; i < len; i++) { + VanChartFormatPaneWithCheckBox formatPane = formatPaneGroup[i]; + String paramRichText = richTextGroup[i]; + + if (formatPane != null && formatPane.isSelected()) { + result.append(paramRichText); + } + } + + result.append("

"); + + return result.toString(); + } + @Override protected String title4PopupWindow() { return ""; @@ -328,10 +359,7 @@ public class VanChartTooltipContentPane extends BasicBeanPane params) { + if (params == null) { + return; + } + + for (String param : params) { + VanChartFormatPaneWithCheckBox formatPane = getTargetFormatPane(param); + + if (formatPane != null) { + formatPane.setSelected(true); } - } catch (Exception e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); } } public AttrTooltipContent updateBean() { AttrTooltipContent attrTooltipContent = createAttrTooltip(); - attrTooltipContent.setCommon(content.getSelectedIndex() == 0); + boolean isCommon = content.getSelectedIndex() == 0; - updateFormatPane(attrTooltipContent); - updateRichEditor(attrTooltipContent); + attrTooltipContent.setCommon(isCommon); + if (isDirty() && isCommon) { + updateLocalRichText(getParamsRichText(), false); + setDirty(false); + } + updateFormatPane(attrTooltipContent); + updateTooltipRichText(attrTooltipContent); updateFormatsWithPaneWidth(attrTooltipContent); htmlLabelPane.update(attrTooltipContent.getHtmlLabel()); @@ -406,9 +442,18 @@ public class VanChartTooltipContentPane extends BasicBeanPane Date: Tue, 8 Sep 2020 10:29:57 +0800 Subject: [PATCH 3/4] CHART-15510 toJSON --- .../component/VanChartTooltipContentPane.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTooltipContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTooltipContentPane.java index 084d12194..20aacca01 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTooltipContentPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTooltipContentPane.java @@ -159,14 +159,14 @@ public class VanChartTooltipContentPane extends BasicBeanPane Date: Tue, 8 Sep 2020 12:22:57 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/VanChartRichEditorPane.java | 3 ++- .../component/VanChartTooltipContentPane.java | 27 ++++++++----------- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartRichEditorPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartRichEditorPane.java index b4b9dd32f..4dfd250a1 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartRichEditorPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartRichEditorPane.java @@ -8,6 +8,7 @@ import com.teamdev.jxbrowser.chromium.JSValue; import com.teamdev.jxbrowser.chromium.events.ScriptContextAdapter; import com.teamdev.jxbrowser.chromium.events.ScriptContextEvent; +import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -83,7 +84,7 @@ public class VanChartRichEditorPane { for (Map.Entry entry : paramsMap.entrySet()) { String param = entry.getValue(); - if (content.contains(param)) { + if (content.contains(URLEncoder.encode(param))) { result.add(param); } } diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTooltipContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTooltipContentPane.java index 20aacca01..a5aafc79a 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTooltipContentPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTooltipContentPane.java @@ -11,7 +11,6 @@ import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.ui.ModernUIPane; import com.fr.general.ComparatorUtils; -import com.fr.log.FineLoggerFactory; import com.fr.plugin.chart.base.AttrTooltipContent; import com.fr.plugin.chart.base.AttrTooltipRichText; import com.fr.plugin.chart.base.format.AttrTooltipFormat; @@ -311,12 +310,12 @@ public class VanChartTooltipContentPane extends BasicBeanPane", - "\"seriesFormat\"", - "\"valueFormat\"", - "\"percentFormat\"", - "\"changedValueFormat\"", - "\"changedPercentFormat\"" + "\"%24%7BCATEGORY%7D\"", + "\"%24%7BSERIES%7D\"", + "\"%24%7BVALUE%7D\"", + "\"%24%7BPERCENT%7D\"", + "\"%24%7BCHANGEDVALUE%7D\"", + "\"%24%7BCHANGEDPERCENT%7D\"" }; StringBuilder result = new StringBuilder("

"); @@ -378,7 +377,7 @@ public class VanChartTooltipContentPane extends BasicBeanPane