From 21d0422f021e4b5e7c3bf6044ab173b22dedd00e Mon Sep 17 00:00:00 2001 From: "Qinghui.Liu" Date: Wed, 2 Sep 2020 10:15:55 +0800 Subject: [PATCH 001/100] =?UTF-8?q?CHART-15510=20=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E5=92=8C=E6=8F=90=E7=A4=BA=E4=B8=AD=E6=8F=92=E5=85=A5BI?= =?UTF-8?q?=E7=9A=84=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 0000000000..c4588ce1cb --- /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 5920dd969f..b52e4fda49 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 133381c91481f375cb309e1bc32c7206da489d5b Mon Sep 17 00:00:00 2001 From: hades Date: Thu, 3 Sep 2020 16:35:19 +0700 Subject: [PATCH 002/100] =?UTF-8?q?REPORT-38645=20=E3=80=90JDK11=E3=80=91?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E5=99=A8=E5=8F=B3=E4=B8=8A=E8=A7=92=EF=BC=8C?= =?UTF-8?q?fs=E6=8F=92=E4=BB=B6=E7=AE=A1=E7=90=86=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=97=A0=E5=8F=8D=E5=BA=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/extra/WebViewDlgHelper.java | 4 ++-- .../main/java/com/fr/design/mainframe/bbs/UserInfoLabel.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/extra/WebViewDlgHelper.java b/designer-base/src/main/java/com/fr/design/extra/WebViewDlgHelper.java index d7f858b65f..628adfec64 100644 --- a/designer-base/src/main/java/com/fr/design/extra/WebViewDlgHelper.java +++ b/designer-base/src/main/java/com/fr/design/extra/WebViewDlgHelper.java @@ -159,7 +159,7 @@ public class WebViewDlgHelper { } public static void createLoginDialog() { - if (StableUtils.getMajorJavaVersion() == VERSION_8) { + if (StableUtils.getMajorJavaVersion() >= VERSION_8) { File file = new File(StableUtils.pathJoin(installHome, "scripts")); if (!file.exists()) { confirmDownLoadShopJS(); @@ -172,7 +172,7 @@ public class WebViewDlgHelper { public static void createLoginDialog(Window parent) { - if (StableUtils.getMajorJavaVersion() == VERSION_8) { + if (StableUtils.getMajorJavaVersion() >= VERSION_8) { File file = new File(StableUtils.pathJoin(installHome, "scripts")); if (!file.exists()) { confirmDownLoadShopJS(); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/bbs/UserInfoLabel.java b/designer-realize/src/main/java/com/fr/design/mainframe/bbs/UserInfoLabel.java index 6e423e1729..4d168557f6 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/bbs/UserInfoLabel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/bbs/UserInfoLabel.java @@ -199,7 +199,7 @@ public class UserInfoLabel extends UILabel { this.addMouseListener(userInfoAdapter); this.setHorizontalAlignment(SwingConstants.CENTER); - if (StableUtils.getMajorJavaVersion() == VERSION_8) { + if (StableUtils.getMajorJavaVersion() >= VERSION_8) { LoginWebBridge.getHelper().setUILabel(UserInfoLabel.this); PluginWebBridge.getHelper().setUILabel(UserInfoLabel.this); } From d15fad9502003b15d2ada766c8c0a4c854bc7075 Mon Sep 17 00:00:00 2001 From: Yvan Date: Mon, 7 Sep 2020 14:29:14 +0800 Subject: [PATCH 003/100] =?UTF-8?q?REPORT-38534=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E7=95=8C=E9=9D=A2=E4=B8=AD=E7=9A=84=E5=89=AA=E5=88=87?= =?UTF-8?q?=E5=92=8C=E5=A4=8D=E5=88=B6=E6=8C=89=E9=92=AE=E7=81=B0=E5=8C=96?= =?UTF-8?q?=E4=B8=8D=E5=8F=AF=E7=94=A8=201.=20bug=E5=8E=9F=E5=9B=A0?= =?UTF-8?q?=EF=BC=9A=E5=AF=B9=E4=BA=8E=E5=B7=A5=E5=85=B7=E6=A0=8F=E4=B8=8A?= =?UTF-8?q?=E7=9A=84=E5=B7=A5=E5=85=B7=E6=9D=A1combineUp=EF=BC=8C=E5=BD=93?= =?UTF-8?q?=E5=A4=84=E4=BA=8E=E7=BC=96=E8=BE=91sheet=E7=9A=84=E6=97=B6?= =?UTF-8?q?=E5=80=99=EF=BC=8C=E6=98=AF=E5=89=AA=E5=88=87+=E5=A4=8D?= =?UTF-8?q?=E5=88=B6+=E7=B2=98=E8=B4=B4+=E6=A0=BC=E5=BC=8F=E5=88=B7?= =?UTF-8?q?=EF=BC=8C=E5=85=B6=E5=AE=83=E6=83=85=E5=86=B5=E9=83=BD=E6=98=AF?= =?UTF-8?q?=E5=89=AA=E5=88=87+=E5=A4=8D=E5=88=B6+=E7=B2=98=E8=B4=B4+?= =?UTF-8?q?=E5=88=A0=E9=99=A4=EF=BC=8C=E8=80=8C=E5=B8=A6=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E7=9A=84=E8=BF=99=E7=A7=8D=EF=BC=8C=E6=98=AF=E4=BC=9A=E6=9C=89?= =?UTF-8?q?=E4=B8=A4=E7=A7=8D=E7=8A=B6=E6=80=81=EF=BC=8C=E9=80=89=E4=B8=AD?= =?UTF-8?q?=E4=BA=86=E6=9F=90=E4=B8=AA=E7=BB=84=E4=BB=B6=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E5=89=AA=E5=88=87=E3=80=81=E5=A4=8D=E5=88=B6=E3=80=81=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=B0=B1=E9=83=BD=E6=98=AF=E5=8F=AF=E7=94=A8=E7=9A=84?= =?UTF-8?q?=EF=BC=8C=E6=9C=AA=E9=80=89=E4=B8=AD=E6=97=B6=EF=BC=8C=E8=BF=99?= =?UTF-8?q?=E5=87=A0=E4=B8=AA=E9=83=BD=E4=B8=8D=E5=8F=AF=E7=94=A8=EF=BC=8C?= =?UTF-8?q?=E6=89=80=E4=BB=A5=E8=BF=99=E9=87=8C=E9=9C=80=E8=A6=81=E6=9C=89?= =?UTF-8?q?=E4=B8=AA=E9=80=BB=E8=BE=91=E6=9D=A5=E5=88=87=E6=8D=A2=E8=BF=99?= =?UTF-8?q?=E5=87=A0=E4=B8=AA=E6=8C=89=E9=92=AE=E7=9A=84=E7=8A=B6=E6=80=81?= =?UTF-8?q?=EF=BC=8C=E8=80=8C=E5=AF=B9=E4=BA=8E=E5=B8=A6=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E5=88=B7=E7=9A=84=EF=BC=8C=E4=B8=8D=E8=AE=BA=E6=9C=89=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E9=80=89=E4=B8=AD=E9=83=BD=E4=BC=9A=E8=B5=B0=E5=88=B0?= =?UTF-8?q?=E8=BF=99=E4=B8=AA=E9=80=BB=E8=BE=91=EF=BC=8C=E7=84=B6=E5=90=8E?= =?UTF-8?q?=E8=A2=AB=E6=97=A0=E8=84=91=E7=BD=AE=E4=B8=BA=E4=B8=8D=E5=8F=AF?= =?UTF-8?q?=E7=94=A8=202.=20=E4=BF=AE=E6=94=B9=E6=96=B9=E6=A1=88=EF=BC=9A?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=80=E4=B8=AA=E5=88=A4=E6=96=AD=EF=BC=8C?= =?UTF-8?q?=E5=A6=82=E6=9E=9C=E5=BD=93=E5=89=8D=E7=9A=84=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=98=AFWORK=5FSHEET=E7=9A=84=E6=97=B6=E5=80=99=EF=BC=8C?= =?UTF-8?q?=E5=8D=B3=E7=BC=96=E8=BE=91sheet=E6=97=B6=EF=BC=8C=E7=9B=B4?= =?UTF-8?q?=E6=8E=A5=E8=BF=94=E5=9B=9E=EF=BC=8C=E5=85=B6=E5=AE=83=E6=83=85?= =?UTF-8?q?=E5=86=B5=E6=AD=A3=E5=B8=B8=E8=B5=B0=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/mainframe/DesignerFrame.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java index 42365dcc57..8de3d89f32 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java @@ -748,9 +748,11 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * @param al 组件名称 */ public void checkCombineUp(boolean flag, ArrayList al) { - + //Yvan: 检查当前是否为WORK_SHEET状态,因为只有WORK_SHEET中含有格式刷组件,此时是不需要进行checkComponentsByNames的 + if (HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getMenuState() == DesignState.WORK_SHEET) { + return; + } combineUp.checkComponentsByNames(flag, al); - } /** From d91768f8ffe489be57754ea3cb23b7ea16c853a8 Mon Sep 17 00:00:00 2001 From: hades Date: Mon, 7 Sep 2020 16:21:20 +0800 Subject: [PATCH 004/100] REPORT-38529 && REPORT-38527 --- .../main/java/com/fr/design/form/util/FormDesignerUtils.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/designer-form/src/main/java/com/fr/design/form/util/FormDesignerUtils.java b/designer-form/src/main/java/com/fr/design/form/util/FormDesignerUtils.java index 46377b1adf..352aa80e54 100644 --- a/designer-form/src/main/java/com/fr/design/form/util/FormDesignerUtils.java +++ b/designer-form/src/main/java/com/fr/design/form/util/FormDesignerUtils.java @@ -1,5 +1,6 @@ package com.fr.design.form.util; +import com.fr.design.designer.creator.XWFitLayout; import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.JTemplate; @@ -17,7 +18,7 @@ public class FormDesignerUtils { * @return */ public static boolean isAppRelayout(FormDesigner designer) { - if (!designer.getRootComponent().acceptType(WFitLayout.class)) { + if (!designer.getRootComponent().acceptType(XWFitLayout.class)) { return false; } return ((WFitLayout) designer.getRootComponent().toData()).isAppRelayout(); From bf14ab15b726ec35744850023e68fbb95d8abf5b Mon Sep 17 00:00:00 2001 From: "Qinghui.Liu" Date: Mon, 7 Sep 2020 17:28:15 +0800 Subject: [PATCH 005/100] =?UTF-8?q?CHART-15510=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E6=A0=B7=E5=BC=8F=E7=95=8C=E9=9D=A2=E4=BA=A4?= =?UTF-8?q?=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 c4588ce1cb..b4b9dd32f3 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 b52e4fda49..084d121942 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: Mon, 7 Sep 2020 17:45:46 +0800 Subject: [PATCH 006/100] =?UTF-8?q?REPORT-38969=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=8C=89=E7=85=A7=E7=82=B9=E5=87=BB=E5=9D=90=E6=A0=87=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E7=BB=84=E4=BB=B6=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/mainframe/FormDesigner.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java index 5cb0157f9e..d66f1f2a6a 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java @@ -38,6 +38,7 @@ import com.fr.design.designer.creator.XWBorderLayout; import com.fr.design.designer.creator.XWFitLayout; import com.fr.design.designer.creator.XWParameterLayout; import com.fr.design.designer.creator.XWTitleLayout; +import com.fr.design.designer.creator.cardlayout.XWTabFitLayout; import com.fr.design.designer.properties.FormWidgetAuthorityEditPane; import com.fr.design.dialog.FineJOptionPane; import com.fr.design.event.DesignerOpenedListener; @@ -64,6 +65,7 @@ import com.fr.form.ui.Widget; import com.fr.form.ui.WidgetValue; import com.fr.form.ui.container.WBorderLayout; import com.fr.form.ui.container.WFitLayout; +import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; import com.fr.log.FineLoggerFactory; @@ -845,6 +847,7 @@ public class FormDesigner extends TargetComponent
implements TreeSelection x -= creator.getX(); y -= creator.getY(); Rectangle rect = ComponentUtils.computeVisibleRect(creator); + rect.y += nestTabCount(creator) * WCardMainBorderLayout.TAB_HEIGHT; // 判断是否处于交叉区域 if (!isIntersectArea(x, y, rect)) { continue; @@ -852,11 +855,24 @@ public class FormDesigner extends TargetComponent implements TreeSelection if (creator instanceof XWTitleLayout) { return creator.getEditingChildCreator(); } - return creator; + return xCreatorAt(x, y, creator, null); } return null; } + /** + * 计算嵌套的tab层数 + */ + private int nestTabCount(Container xCreator) { + if (xCreator == null) { + return 0; + } + if (xCreator instanceof XWTabFitLayout) { + return 1 + nestTabCount(xCreator.getParent()); + } + return nestTabCount(xCreator.getParent()); + } + /** * 刷新顶层组件 * */ From f3708aadeb90e02d8dce8725a18333496aa512e4 Mon Sep 17 00:00:00 2001 From: "Yuan.Wang" <1536296691@qq.com> Date: Mon, 7 Sep 2020 20:38:16 +0800 Subject: [PATCH 007/100] =?UTF-8?q?REPORT-38969=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=8C=89=E7=85=A7=E7=82=B9=E5=87=BB=E5=9D=90=E6=A0=87=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E7=BB=84=E4=BB=B6=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/designer/creator/XCreatorUtils.java | 7 +++++++ .../com/fr/design/mainframe/FormDesigner.java | 17 +++++++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java b/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java index 42069e4d8a..072e21fa9f 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java @@ -336,4 +336,11 @@ public class XCreatorUtils { } return IOUtils.readIcon(iconPath); } + + public static boolean containComponent(Container ancestor, Container xCreator) { + while (xCreator != null && xCreator.getParent() != ancestor) { + xCreator = xCreator.getParent(); + } + return xCreator != null; + } } \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java index d66f1f2a6a..40da109cf2 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java @@ -191,6 +191,7 @@ public class FormDesigner extends TargetComponent implements TreeSelection this.switchAction = switchAction; topXCreators=new TopXCreators(this); + topXCreators.setVisible(true); add(topXCreators); // 必须刷新"参数/控件树"面板,否则,若最近一次打开模版为 cpt,重启设计器,打开 frm,控件树消失 @@ -836,12 +837,16 @@ public class FormDesigner extends TargetComponent implements TreeSelection /** * 从已选择的组件中找x,y所在的组件 */ - private XCreator xCreatorAt(int x, int y, XCreator[] xCreators) { + private XCreator xCreatorAt(int x, int y,XCreator root) { + XCreator[] xCreators = selectionModel.getSelection().getSelectedCreators(); for (XCreator creator : xCreators) { - if (creator == null || !creator.isVisible()) { - continue; - } - if (creator instanceof XWAbsoluteBodyLayout || creator instanceof XWFitLayout || creator instanceof XWParameterLayout) { + boolean shouldContinue = creator == null + || !creator.isVisible() + || !XCreatorUtils.containComponent(root, creator) + || creator instanceof XWAbsoluteBodyLayout + || creator instanceof XWFitLayout + || creator instanceof XWParameterLayout; + if (shouldContinue) { continue; } x -= creator.getX(); @@ -1072,7 +1077,7 @@ public class FormDesigner extends TargetComponent implements TreeSelection } int relativeX = x + (int) (formArea.getHorizontalValue() / scale) - container.getX(); int relativeY = y + (int) (formArea.getVerticalValue() / scale) - container.getY(); - XCreator result = xCreatorAt(relativeX, relativeY, selectionModel.getSelection().getSelectedCreators()); + XCreator result = xCreatorAt(relativeX, relativeY, container); return result == null ? getComponentAt(x, y, null) : result; } From a1b9c0bcf424e721bbaf74a3021513f511c93712 Mon Sep 17 00:00:00 2001 From: "Qinghui.Liu" Date: Tue, 8 Sep 2020 10:29:57 +0800 Subject: [PATCH 008/100] 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 084d121942..20aacca017 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 009/100] =?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 b4b9dd32f3..4dfd250a1d 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 20aacca017..a5aafc79af 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 Date: Tue, 8 Sep 2020 15:51:26 +0800 Subject: [PATCH 010/100] =?UTF-8?q?CHART-15664=20=E9=9B=B7=E8=BE=BE?= =?UTF-8?q?=E5=9B=BE=E9=A5=BC=E5=9B=BE=E7=BB=A7=E6=89=BF=E5=A4=9A=E5=88=86?= =?UTF-8?q?=E7=B1=BB=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../type/AbstractVanChartTypePane.java | 19 +++++++++++++++++-- .../fr/van/chart/pie/VanChartPiePlotPane.java | 5 +++++ .../chart/radar/VanChartRadarPlotPane.java | 4 ++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/type/AbstractVanChartTypePane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/type/AbstractVanChartTypePane.java index a4b53796fd..9cf9165547 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/type/AbstractVanChartTypePane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/type/AbstractVanChartTypePane.java @@ -1,10 +1,13 @@ package com.fr.van.chart.designer.type; import com.fr.base.BaseUtils; +import com.fr.base.chart.chartdata.TopDefinitionProvider; import com.fr.chart.base.AttrFillStyle; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.Legend; import com.fr.chart.chartattr.Plot; +import com.fr.chart.chartdata.NormalReportDataDefinition; +import com.fr.chart.chartdata.NormalTableDataDefinition; import com.fr.chart.chartglyph.ConditionAttr; import com.fr.chart.chartglyph.ConditionCollection; import com.fr.chart.chartglyph.DataSheet; @@ -167,6 +170,7 @@ public abstract class AbstractVanChartTypePane extends AbstractChartTypePane Date: Tue, 8 Sep 2020 16:15:04 +0800 Subject: [PATCH 011/100] =?UTF-8?q?REPORT-39318=20=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E8=84=9A=E6=9C=AC=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 6446da4044..fa342ced2f 100644 --- a/build.gradle +++ b/build.gradle @@ -64,7 +64,7 @@ allprojects { implementation 'org.swingexplorer:swexpl:2.0.1' implementation 'org.swingexplorer:swag:1.0' implementation 'net.java.dev.jna:jna:5.4.0' - implementation 'org.apache.tomcat:tomcat-catalina:8.5.32' + implementation 'org.apache.tomcat:tomcat-catalina:8.5.57' implementation 'io.socket:socket.io-client:0.7.0' implementation 'com.fr.third:fine-third:' + frVersion implementation 'com.fr.core:fine-core:' + frDevVersion @@ -73,6 +73,7 @@ allprojects { implementation 'com.fr.decision:fine-decision:' + frVersion implementation 'com.fr.schedule:fine-schedule:' + frVersion implementation 'com.fr.report:fine-report-engine:' + frDevVersion + implementation 'com.fr.design:design-i18n' + frDevVersion testImplementation 'org.easymock:easymock:3.5.1' testImplementation 'org.powermock:powermock-module-junit4:1.7.1' testImplementation 'org.powermock:powermock-api-easymock:1.7.1' From f3309d289768eab3d803035d91c578305ee85495 Mon Sep 17 00:00:00 2001 From: hades Date: Wed, 9 Sep 2020 10:19:43 +0800 Subject: [PATCH 012/100] =?UTF-8?q?REPORT-39343=20=E3=80=90=E5=9B=9E?= =?UTF-8?q?=E5=BD=92=E3=80=91=E8=AE=BE=E8=AE=A1=E5=99=A8=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E6=97=B6=E5=8D=A1=E6=AD=BB=20=E6=AD=BB?= =?UTF-8?q?=E9=94=81=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/errorinfo/ErrorInfoLogAppender.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/errorinfo/ErrorInfoLogAppender.java b/designer-realize/src/main/java/com/fr/design/mainframe/errorinfo/ErrorInfoLogAppender.java index 10ac2e3a27..dd9c50c9e7 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/errorinfo/ErrorInfoLogAppender.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/errorinfo/ErrorInfoLogAppender.java @@ -4,6 +4,7 @@ import com.fr.base.io.IOFile; import com.fr.base.io.XMLReadHelper; import com.fr.config.MarketConfig; import com.fr.design.DesignerEnvManager; +import com.fr.design.i18n.Toolkit; import com.fr.web.session.SessionLocalManager; import com.fr.stable.StableUtils; @@ -31,6 +32,7 @@ public class ErrorInfoLogAppender extends AppenderSkeleton { private static final int ERROR_LEN = 8; private static final int ERROR_STACK_TRACE = 15; + private static final String ERROR_CODE = Toolkit.i18nText("Fine-Design_Report_Engine_ErrorCode_Prefix") + ".*?[:,:]"; // 缓存下不变的, 没必要频繁取. private String username; @@ -92,9 +94,8 @@ public class ErrorInfoLogAppender extends AppenderSkeleton { } private String readLogID(String log) { - String errorCode = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Engine_ErrorCode_Prefix"); // 报错信息国际化不规范, 有些是中文分号, 有些是英文 - String[] matchs = log.split(errorCode + ".*?[:,:]"); + String[] matchs = log.split(ERROR_CODE); if (matchs.length <= 1) { return StringUtils.EMPTY; } From 768129ab62f8b9e16fa8893eea6a558c3a75d0a5 Mon Sep 17 00:00:00 2001 From: Lanlan Date: Wed, 9 Sep 2020 11:10:56 +0800 Subject: [PATCH 013/100] =?UTF-8?q?REPORT-38525=20=E3=80=90JDK11=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E5=99=A8=E3=80=91=E6=8F=92=E4=BB=B6=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E4=B8=8D=E8=83=BD=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/extra/LoginDialog.java | 2 +- .../src/main/java/com/fr/design/extra/ShopDialog.java | 2 +- .../src/main/java/com/fr/design/extra/WebViewDlgHelper.java | 4 ++-- .../main/java/com/fr/design/mainframe/bbs/UserInfoLabel.java | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/extra/LoginDialog.java b/designer-base/src/main/java/com/fr/design/extra/LoginDialog.java index 42791ad522..8fbb2d2a5d 100644 --- a/designer-base/src/main/java/com/fr/design/extra/LoginDialog.java +++ b/designer-base/src/main/java/com/fr/design/extra/LoginDialog.java @@ -24,7 +24,7 @@ public class LoginDialog extends UIDialog { } private void init(Component pane) { - if (StableUtils.getMajorJavaVersion() == 8) { + if (StableUtils.getMajorJavaVersion() >= 8) { setUndecorated(true); } JPanel panel = (JPanel) getContentPane(); diff --git a/designer-base/src/main/java/com/fr/design/extra/ShopDialog.java b/designer-base/src/main/java/com/fr/design/extra/ShopDialog.java index 72fa6149b6..69ad0f08d1 100644 --- a/designer-base/src/main/java/com/fr/design/extra/ShopDialog.java +++ b/designer-base/src/main/java/com/fr/design/extra/ShopDialog.java @@ -16,7 +16,7 @@ public class ShopDialog extends UIDialog { public ShopDialog(Frame frame, BasicPane pane) { super(frame); - if (StableUtils.getMajorJavaVersion() == 8) { + if (StableUtils.getMajorJavaVersion() >= 8) { setUndecorated(true); } JPanel panel = (JPanel) getContentPane(); diff --git a/designer-base/src/main/java/com/fr/design/extra/WebViewDlgHelper.java b/designer-base/src/main/java/com/fr/design/extra/WebViewDlgHelper.java index d7f858b65f..628adfec64 100644 --- a/designer-base/src/main/java/com/fr/design/extra/WebViewDlgHelper.java +++ b/designer-base/src/main/java/com/fr/design/extra/WebViewDlgHelper.java @@ -159,7 +159,7 @@ public class WebViewDlgHelper { } public static void createLoginDialog() { - if (StableUtils.getMajorJavaVersion() == VERSION_8) { + if (StableUtils.getMajorJavaVersion() >= VERSION_8) { File file = new File(StableUtils.pathJoin(installHome, "scripts")); if (!file.exists()) { confirmDownLoadShopJS(); @@ -172,7 +172,7 @@ public class WebViewDlgHelper { public static void createLoginDialog(Window parent) { - if (StableUtils.getMajorJavaVersion() == VERSION_8) { + if (StableUtils.getMajorJavaVersion() >= VERSION_8) { File file = new File(StableUtils.pathJoin(installHome, "scripts")); if (!file.exists()) { confirmDownLoadShopJS(); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/bbs/UserInfoLabel.java b/designer-realize/src/main/java/com/fr/design/mainframe/bbs/UserInfoLabel.java index 6e423e1729..4d168557f6 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/bbs/UserInfoLabel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/bbs/UserInfoLabel.java @@ -199,7 +199,7 @@ public class UserInfoLabel extends UILabel { this.addMouseListener(userInfoAdapter); this.setHorizontalAlignment(SwingConstants.CENTER); - if (StableUtils.getMajorJavaVersion() == VERSION_8) { + if (StableUtils.getMajorJavaVersion() >= VERSION_8) { LoginWebBridge.getHelper().setUILabel(UserInfoLabel.this); PluginWebBridge.getHelper().setUILabel(UserInfoLabel.this); } From 2100f297af6500886c5a63f862dde4c025c0cc21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=B2=B3?= <445798420@qq.com> Date: Wed, 9 Sep 2020 11:22:13 +0800 Subject: [PATCH 014/100] =?UTF-8?q?CHART-15681=20=20=E7=BB=84=E5=90=88?= =?UTF-8?q?=E5=9B=BE=E5=88=87=E6=8D=A2=E5=88=B0=E5=85=B6=E4=BB=96=E5=9B=BE?= =?UTF-8?q?=E5=BD=A2=E6=98=BE=E7=A4=BA=E5=8D=95=E5=85=83=E6=A0=BC=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=BA=90=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/chart/gui/data/ReportDataPane.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/ReportDataPane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/ReportDataPane.java index 3403bf3413..3393e3aaf5 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/ReportDataPane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/ReportDataPane.java @@ -1,5 +1,6 @@ package com.fr.design.mainframe.chart.gui.data; +import com.fr.base.chart.chartdata.TopDefinitionProvider; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.ChartCollection; import com.fr.chart.chartattr.Plot; @@ -8,6 +9,7 @@ import com.fr.design.ChartTypeInterfaceManager; import com.fr.design.beans.FurtherBasicBeanPane; import com.fr.design.mainframe.chart.gui.ChartDataPane; import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPane; +import com.fr.plugin.chart.custom.CustomDefinition; import java.awt.*; @@ -45,7 +47,8 @@ public class ReportDataPane extends FurtherBasicBeanPane{ * @return 界面是否接受对象 */ public boolean accept(Object ob) { - return ob instanceof ChartCollection && ((ChartCollection)ob).getSelectedChart().getFilterDefinition() instanceof ReportDataDefinition; + TopDefinitionProvider filterDefinition = ((ChartCollection) ob).getSelectedChartProvider(Chart.class).getFilterDefinition(); + return ob instanceof ChartCollection && filterDefinition instanceof ReportDataDefinition && !(filterDefinition instanceof CustomDefinition); } /** From a946a7e3d9944e88120ecbae23dfda28f3463d96 Mon Sep 17 00:00:00 2001 From: "Yuan.Wang" <1536296691@qq.com> Date: Wed, 9 Sep 2020 13:57:56 +0800 Subject: [PATCH 015/100] =?UTF-8?q?REPORT-38954&&REPORT-38927&&REPORT-3892?= =?UTF-8?q?4&&REPORT-38896=20TopXCreator=E4=B8=AD=E6=B7=BB=E5=8A=A0XCreato?= =?UTF-8?q?r=E7=9A=84=E5=8F=98=E9=87=8F=EF=BC=8C=E7=BB=98=E5=88=B6?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E5=80=99=E7=A6=81=E7=94=A8=E5=85=B6=E5=8F=8C?= =?UTF-8?q?=E7=BC=93=E5=86=B2=E7=84=B6=E5=90=8E=E7=9B=B4=E6=8E=A5=E8=B0=83?= =?UTF-8?q?=E7=94=A8=E5=85=B6paint=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designer/beans/models/SelectionModel.java | 1 - .../design/designer/creator/XChartEditor.java | 35 ++----------- .../fr/design/designer/creator/XCreator.java | 35 ------------- .../designer/creator/XCreatorUtils.java | 15 ++++++ .../design/designer/creator/XElementCase.java | 17 ------- .../creator/XWAbsoluteBodyLayout.java | 5 -- .../designer/creator/XWAbsoluteLayout.java | 6 --- .../designer/creator/XWParameterLayout.java | 5 -- .../designer/creator/XWTitleLayout.java | 5 -- .../cardlayout/XWCardMainBorderLayout.java | 6 --- .../fr/design/mainframe/ComponentTree.java | 1 - .../mainframe/EditingMouseListener.java | 19 ++++--- .../com/fr/design/mainframe/FormDesigner.java | 39 +++++---------- ...BasicTopXCreator.java => TopXCreator.java} | 38 +++++++------- .../topxcreator => }/TopXCreators.java | 40 +++------------ .../widget/topxcreator/TopXCreator.java | 49 ------------------- 16 files changed, 65 insertions(+), 251 deletions(-) rename designer-form/src/main/java/com/fr/design/mainframe/{widget/topxcreator/BasicTopXCreator.java => TopXCreator.java} (63%) rename designer-form/src/main/java/com/fr/design/mainframe/{widget/topxcreator => }/TopXCreators.java (57%) delete mode 100644 designer-form/src/main/java/com/fr/design/mainframe/widget/topxcreator/TopXCreator.java diff --git a/designer-form/src/main/java/com/fr/design/designer/beans/models/SelectionModel.java b/designer-form/src/main/java/com/fr/design/designer/beans/models/SelectionModel.java index 42db0d8503..b3215ede1c 100644 --- a/designer-form/src/main/java/com/fr/design/designer/beans/models/SelectionModel.java +++ b/designer-form/src/main/java/com/fr/design/designer/beans/models/SelectionModel.java @@ -310,7 +310,6 @@ public class SelectionModel { designer.getEditListenerTable().fireCreatorModified(DesignerEvent.CREATOR_DELETED); setSelectedCreator(isInPara ? designer.getParaComponent() : designer.getRootComponent()); - designer.getTopXCreators().refresh(); // 触发事件 diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XChartEditor.java b/designer-form/src/main/java/com/fr/design/designer/creator/XChartEditor.java index f846f29bd2..c002bceb38 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XChartEditor.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XChartEditor.java @@ -17,8 +17,6 @@ import com.fr.design.mainframe.CoverReportPane; import com.fr.design.mainframe.EditingMouseListener; import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.HelpDialogManager; -import com.fr.design.mainframe.widget.topxcreator.BasicTopXCreator; -import com.fr.design.mainframe.widget.topxcreator.TopXCreator; import com.fr.design.mainframe.widget.editors.WLayoutBorderStyleEditor; import com.fr.design.module.DesignModuleFactory; import com.fr.form.ui.BaseChartEditor; @@ -231,6 +229,9 @@ public class XChartEditor extends XBorderStyleWidgetCreator { */ public void paint(Graphics g) { designerEditor.paintEditor(g, this.getSize()); + if (coverPanel != null) { + coverPanel.setSize(this.getSize()); + } super.paint(g); if (isEditing) { g.setColor(INNER_BORDER_COLOR); @@ -361,34 +362,4 @@ public class XChartEditor extends XBorderStyleWidgetCreator { return false; } - @Override - public BasicTopXCreator getTopXCreator() { - return new TopXChart(this); - } - - private class TopXChart extends TopXCreator { - private final DesignerEditor designerEditor; - - public TopXChart(XCreator creator) { - super(creator); - designerEditor = creator.getDesignerEditor(); - Rectangle bounds = getBounds(); - designerEditor.getEditorTarget().setBounds(bounds.x + 1, bounds.y + 1, bounds.width - 2, bounds.height - 2); - } - - /** - * 更新designerEditor的大小 - */ - protected void resetSize(Rectangle bounds) { - super.resetSize(bounds); - designerEditor.getEditorTarget().setBounds(bounds.x + 1, bounds.y + 1, bounds.width - 2, bounds.height - 2); - } - - @Override - public void paint(Graphics g) { - designerEditor.paintEditor(g, this.getSize()); - super.paint(g); - } - } - } diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XCreator.java b/designer-form/src/main/java/com/fr/design/designer/creator/XCreator.java index 20f2788117..5eb284c7ba 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XCreator.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XCreator.java @@ -19,22 +19,16 @@ import com.fr.design.mainframe.CoverReportPane; import com.fr.design.mainframe.EditingMouseListener; import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.NoSupportAuthorityEdit; -import com.fr.design.mainframe.widget.topxcreator.BasicTopXCreator; import com.fr.design.mainframe.WidgetPropertyPane; import com.fr.design.utils.gui.LayoutUtils; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WTitleLayout; import com.fr.stable.Constants; -import com.fr.stable.CoreGraphHelper; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; -import com.fr.third.javax.annotation.Nullable; import javax.swing.BorderFactory; -import javax.swing.Icon; -import javax.swing.ImageIcon; import javax.swing.JComponent; -import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.Border; import java.awt.BorderLayout; @@ -44,7 +38,6 @@ import java.awt.Dimension; import java.awt.Graphics; import java.awt.Rectangle; import java.awt.event.MouseEvent; -import java.awt.image.BufferedImage; import java.beans.IntrospectionException; import java.util.ArrayList; import java.util.List; @@ -812,32 +805,4 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo return false; } - /** - * 获得该组件的顶层显示组件 - */ - @Nullable - public BasicTopXCreator getTopXCreator() { - return new BasicTopXCreator(this) { - @Override - protected void addComponent() { - Icon icon = new ImageIcon(getImage()); - JLabel jLabel = new JLabel(icon, JLabel.CENTER); - jLabel.setSize(getSize()); - this.add(jLabel); - } - }; - } - - /** - * 获得组件的图像 - */ - public BufferedImage getImage() { - BufferedImage image = CoreGraphHelper.createBufferedImage(getWidth(), getHeight()); - Graphics g = image.createGraphics(); - this.paint(g); - return image; - } - - - } diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java b/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java index 072e21fa9f..cd3771f60e 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java @@ -343,4 +343,19 @@ public class XCreatorUtils { } return xCreator != null; } + + /** + * 获取组件的最顶层XMainBorderLayout,没有则返回null + * */ + @com.fr.third.javax.annotation.Nullable + public static XWCardMainBorderLayout getTopXMainBorderLayout(Container creator) { + XWCardMainBorderLayout result = null; + while (creator != null) { + if (creator instanceof XWCardMainBorderLayout) { + result = (XWCardMainBorderLayout) creator; + } + creator = creator.getParent(); + } + return result; + } } \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XElementCase.java b/designer-form/src/main/java/com/fr/design/designer/creator/XElementCase.java index d84fd2e0cd..718c30aeb6 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XElementCase.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XElementCase.java @@ -13,8 +13,6 @@ import com.fr.design.mainframe.widget.editors.ElementCaseToolBarEditor; import com.fr.design.mainframe.widget.editors.PaddingMarginEditor; import com.fr.design.mainframe.widget.editors.WLayoutBorderStyleEditor; import com.fr.design.mainframe.widget.propertypane.BrowserFitPropertyEditor; -import com.fr.design.mainframe.widget.topxcreator.BasicTopXCreator; -import com.fr.design.mainframe.widget.topxcreator.TopXCreator; import com.fr.form.FormElementCaseContainerProvider; import com.fr.form.FormElementCaseProvider; import com.fr.form.FormProvider; @@ -374,19 +372,4 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme return true; } - @Override - public BasicTopXCreator getTopXCreator() { - return new TopXElementCase(this); - } - - private class TopXElementCase extends TopXCreator { - private UILabel imageLabel; - - public TopXElementCase(XCreator creator) { - super(creator); - imageLabel = initImageBackground(); - add(imageLabel); - } - } - } diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XWAbsoluteBodyLayout.java b/designer-form/src/main/java/com/fr/design/designer/creator/XWAbsoluteBodyLayout.java index 5db000e189..9a7d6dc975 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XWAbsoluteBodyLayout.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XWAbsoluteBodyLayout.java @@ -7,7 +7,6 @@ import com.fr.design.form.util.XCreatorConstants; import com.fr.design.fun.WidgetPropertyUIProvider; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.widget.editors.WLayoutBorderStyleEditor; -import com.fr.design.mainframe.widget.topxcreator.BasicTopXCreator; import com.fr.form.ui.container.WAbsoluteBodyLayout; import com.fr.stable.core.PropertyChangeAdapter; @@ -132,8 +131,4 @@ public class XWAbsoluteBodyLayout extends XWAbsoluteLayout { return false; } - @Override - public BasicTopXCreator getTopXCreator() { - return null; - } } diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XWAbsoluteLayout.java b/designer-form/src/main/java/com/fr/design/designer/creator/XWAbsoluteLayout.java index 98143a7ea0..da268b0e6c 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XWAbsoluteLayout.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XWAbsoluteLayout.java @@ -25,8 +25,6 @@ import com.fr.design.mainframe.FormArea; import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.WidgetHelpDialog; import com.fr.design.mainframe.WidgetPropertyPane; -import com.fr.design.mainframe.widget.topxcreator.BasicTopXCreator; -import com.fr.design.mainframe.widget.topxcreator.TopXCreator; import com.fr.form.ui.Connector; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WAbsoluteLayout; @@ -610,8 +608,4 @@ public class XWAbsoluteLayout extends XLayoutContainer { } } - @Override - public BasicTopXCreator getTopXCreator() { - return new TopXCreator(this); - } } diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XWParameterLayout.java b/designer-form/src/main/java/com/fr/design/designer/creator/XWParameterLayout.java index 384ee07b64..3fc35a265c 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XWParameterLayout.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XWParameterLayout.java @@ -15,7 +15,6 @@ import com.fr.design.mainframe.widget.editors.BooleanEditor; import com.fr.design.mainframe.widget.editors.WidgetDisplayPosition; import com.fr.design.mainframe.widget.renderer.BackgroundRenderer; import com.fr.design.mainframe.widget.renderer.WidgetDisplayPositionRender; -import com.fr.design.mainframe.widget.topxcreator.BasicTopXCreator; import com.fr.form.ui.container.WBorderLayout; import com.fr.form.ui.container.WFitLayout; import com.fr.form.ui.container.WParameterLayout; @@ -252,10 +251,6 @@ public class XWParameterLayout extends XWAbsoluteLayout { return false; } - @Override - public BasicTopXCreator getTopXCreator() { - return null; - } } diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XWTitleLayout.java b/designer-form/src/main/java/com/fr/design/designer/creator/XWTitleLayout.java index b8fe8f0049..964f0aa03d 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XWTitleLayout.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XWTitleLayout.java @@ -7,7 +7,6 @@ import com.fr.design.designer.beans.LayoutAdapter; import com.fr.design.designer.beans.adapters.layout.FRTitleLayoutAdapter; import com.fr.design.form.layout.FRTitleLayout; import com.fr.design.fun.WidgetPropertyUIProvider; -import com.fr.design.mainframe.widget.topxcreator.BasicTopXCreator; import com.fr.form.ui.Label; import com.fr.form.ui.Widget; import com.fr.form.ui.WidgetTitle; @@ -191,8 +190,4 @@ public class XWTitleLayout extends DedicateLayoutContainer { return creator.getWidgetPropertyUIProviders(); } - @Override - public BasicTopXCreator getTopXCreator() { - return getEditingChildCreator().getTopXCreator(); - } } \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java b/designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java index 3ad1463b97..5b37ad313f 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java @@ -23,8 +23,6 @@ import com.fr.design.mainframe.EditingMouseListener; import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.WidgetHelpDialog; import com.fr.design.mainframe.WidgetPropertyPane; -import com.fr.design.mainframe.widget.topxcreator.BasicTopXCreator; -import com.fr.design.mainframe.widget.topxcreator.TopXCreator; import com.fr.form.event.Listener; import com.fr.form.ui.CardSwitchButton; import com.fr.form.ui.LayoutBorderStyle; @@ -515,8 +513,4 @@ public class XWCardMainBorderLayout extends XWBorderLayout { return true; } - @Override - public BasicTopXCreator getTopXCreator() { - return new TopXCreator(this); - } } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/ComponentTree.java b/designer-form/src/main/java/com/fr/design/mainframe/ComponentTree.java index 4dd84f528b..ee667fd38c 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/ComponentTree.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/ComponentTree.java @@ -90,7 +90,6 @@ public class ComponentTree extends JTree { public void setSelectionPath(TreePath path) { // 不管点击哪一项,都要先退出编辑状态(图表、报表块、绝对布局、tab块) designer.stopEditing(path); - designer.getTopXCreators().refresh(); super.setSelectionPath(path); } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/EditingMouseListener.java b/designer-form/src/main/java/com/fr/design/mainframe/EditingMouseListener.java index 6dcf7f34b7..4cb75e0e4a 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/EditingMouseListener.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/EditingMouseListener.java @@ -316,7 +316,6 @@ public class EditingMouseListener extends MouseInputAdapter { XCreator component = designer.getComponentAt(e); setCoverPaneNotDisplay(component, e, false); - designer.getTopXCreators().displayCoverPane(e); if (processTopLayoutMouseMove(component, e)) { return; @@ -406,16 +405,7 @@ public class EditingMouseListener extends MouseInputAdapter { } private void setCoverPaneNotDisplay(XCreator component, MouseEvent e, boolean isLinkedHelpDialog) { - if (xElementCase != null) { - int x = getParentPositionX(xElementCase, 0) - designer.getArea().getHorizontalValue(); - int y = getParentPositionY(xElementCase, 0) - designer.getArea().getVerticalValue(); - Rectangle rect = new Rectangle(x, y, xElementCase.getWidth(), xElementCase.getHeight()); - if (rect.contains(e.getPoint())) { - return; - } - xElementCase.displayCoverPane(false); - } if (xChartEditor != null) { xChartEditor.displayCoverPane(false); } @@ -426,6 +416,15 @@ public class EditingMouseListener extends MouseInputAdapter { if (xTopLayoutContainer != null) { xTopLayoutContainer.setMouseEnter(false); } + //不知道为什么要对XElementCase进行判断,但是直接return会有bug,所以把他放在最后 + if (xElementCase != null) { + int x = getParentPositionX(xElementCase, 0) - designer.getArea().getHorizontalValue(); + int y = getParentPositionY(xElementCase, 0) - designer.getArea().getVerticalValue(); + Rectangle rect = new Rectangle(x, y, xElementCase.getWidth(), xElementCase.getHeight()); + if (!rect.contains(e.getPoint())) { + xElementCase.displayCoverPane(false); + } + } designer.repaint(); } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java index 40da109cf2..eefeb01a32 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java @@ -35,9 +35,8 @@ import com.fr.design.designer.creator.XLayoutContainer; import com.fr.design.designer.creator.XWAbsoluteBodyLayout; import com.fr.design.designer.creator.XWAbsoluteLayout; import com.fr.design.designer.creator.XWBorderLayout; -import com.fr.design.designer.creator.XWFitLayout; import com.fr.design.designer.creator.XWParameterLayout; -import com.fr.design.designer.creator.XWTitleLayout; +import com.fr.design.designer.creator.cardlayout.XWCardMainBorderLayout; import com.fr.design.designer.creator.cardlayout.XWTabFitLayout; import com.fr.design.designer.properties.FormWidgetAuthorityEditPane; import com.fr.design.dialog.FineJOptionPane; @@ -46,7 +45,6 @@ import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.form.util.XCreatorConstants; import com.fr.design.fun.RightSelectionHandlerProvider; import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus; -import com.fr.design.mainframe.widget.topxcreator.TopXCreators; import com.fr.design.menu.MenuDef; import com.fr.design.menu.ShortCut; import com.fr.design.menu.ToolBarDef; @@ -65,7 +63,6 @@ import com.fr.form.ui.Widget; import com.fr.form.ui.WidgetValue; import com.fr.form.ui.container.WBorderLayout; import com.fr.form.ui.container.WFitLayout; -import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; import com.fr.log.FineLoggerFactory; @@ -837,47 +834,35 @@ public class FormDesigner extends TargetComponent implements TreeSelection /** * 从已选择的组件中找x,y所在的组件 */ - private XCreator xCreatorAt(int x, int y,XCreator root) { + private XCreator xCreatorAt(int x, int y, XCreator root) { XCreator[] xCreators = selectionModel.getSelection().getSelectedCreators(); for (XCreator creator : xCreators) { boolean shouldContinue = creator == null || !creator.isVisible() - || !XCreatorUtils.containComponent(root, creator) - || creator instanceof XWAbsoluteBodyLayout - || creator instanceof XWFitLayout - || creator instanceof XWParameterLayout; + || !XCreatorUtils.containComponent(root, creator); if (shouldContinue) { continue; } + //如果组件为XWCardMainBorderLayout的子组件,直接从XWCardMainBorderLayout中去找 + XWCardMainBorderLayout borderLayout = XCreatorUtils.getTopXMainBorderLayout(creator); + if (borderLayout != null) { + return xCreatorAt(x, y, borderLayout, null); + } + if (creator instanceof XLayoutContainer) { + return xCreatorAt(x, y, creator, null); + } x -= creator.getX(); y -= creator.getY(); Rectangle rect = ComponentUtils.computeVisibleRect(creator); - rect.y += nestTabCount(creator) * WCardMainBorderLayout.TAB_HEIGHT; // 判断是否处于交叉区域 if (!isIntersectArea(x, y, rect)) { continue; } - if (creator instanceof XWTitleLayout) { - return creator.getEditingChildCreator(); - } - return xCreatorAt(x, y, creator, null); + return creator; } return null; } - /** - * 计算嵌套的tab层数 - */ - private int nestTabCount(Container xCreator) { - if (xCreator == null) { - return 0; - } - if (xCreator instanceof XWTabFitLayout) { - return 1 + nestTabCount(xCreator.getParent()); - } - return nestTabCount(xCreator.getParent()); - } - /** * 刷新顶层组件 * */ diff --git a/designer-form/src/main/java/com/fr/design/mainframe/widget/topxcreator/BasicTopXCreator.java b/designer-form/src/main/java/com/fr/design/mainframe/TopXCreator.java similarity index 63% rename from designer-form/src/main/java/com/fr/design/mainframe/widget/topxcreator/BasicTopXCreator.java rename to designer-form/src/main/java/com/fr/design/mainframe/TopXCreator.java index e49aaf6e85..49e9a7d36a 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/widget/topxcreator/BasicTopXCreator.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/TopXCreator.java @@ -1,23 +1,28 @@ -package com.fr.design.mainframe.widget.topxcreator; +package com.fr.design.mainframe; import com.fr.design.designer.creator.XCreator; +import com.fr.design.gui.ilable.UILabel; import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.WidgetPropertyPane; import com.fr.design.utils.ComponentUtils; +import com.fr.stable.CoreGraphHelper; import javax.swing.*; import java.awt.*; import java.awt.event.MouseEvent; +import java.awt.geom.AffineTransform; +import java.awt.image.BufferedImage; +import java.util.ArrayList; /** * @Author: Yuan.Wang * @Date: 2020/8/31 */ -public class BasicTopXCreator extends JComponent { - private FormDesigner designer; - private XCreator creator; +public class TopXCreator extends JComponent { + private final FormDesigner designer; + private final XCreator creator; - public BasicTopXCreator(XCreator creator) { + public TopXCreator(XCreator creator) { this.designer = WidgetPropertyPane.getInstance().getEditingFormDesigner(); this.creator = creator; init(); @@ -28,30 +33,16 @@ public class BasicTopXCreator extends JComponent { setBackground(null); setLayout(null); setBounds(calculateBounds()); - addComponent(); } - //子类可能会重写该方法 - protected void resetSize(Rectangle bounds) { - //do nothing - } - - protected void addComponent() { - - } - /** * 重新设置组件大小 * */ public void resizeTopXCreator() { - Rectangle bounds=calculateBounds(); - setBounds(bounds); - resetSize(bounds); + setBounds(calculateBounds()); } - public void displayCoverPane(MouseEvent e, boolean visible) {} - /** * 计算显示大小 * */ @@ -63,8 +54,15 @@ public class BasicTopXCreator extends JComponent { return bounds; } + @Override public void paint(Graphics g) { super.paint(g); + ArrayList dbcomponents = new ArrayList(); + // 禁止双缓冲 + ComponentUtils.disableBuffer(creator, dbcomponents); + creator.paint(g); + // 恢复双缓冲 + ComponentUtils.resetBuffer(dbcomponents); } } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/widget/topxcreator/TopXCreators.java b/designer-form/src/main/java/com/fr/design/mainframe/TopXCreators.java similarity index 57% rename from designer-form/src/main/java/com/fr/design/mainframe/widget/topxcreator/TopXCreators.java rename to designer-form/src/main/java/com/fr/design/mainframe/TopXCreators.java index f271c3cc10..033a3352aa 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/widget/topxcreator/TopXCreators.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/TopXCreators.java @@ -1,11 +1,10 @@ -package com.fr.design.mainframe.widget.topxcreator; +package com.fr.design.mainframe; import com.fr.design.designer.beans.events.DesignerEvent; import com.fr.design.designer.beans.models.SelectionModel; import com.fr.design.designer.creator.XCreator; -import com.fr.design.mainframe.FormDesigner; - -import java.awt.event.MouseEvent; +import com.fr.design.designer.creator.XCreatorUtils; +import com.fr.design.designer.creator.cardlayout.XWCardMainBorderLayout; import javax.swing.*; import java.awt.*; @@ -31,7 +30,7 @@ public class TopXCreators extends JComponent { setBackground(null); setOpaque(false); designer.addDesignerEditListener(e -> { - if (e.getCreatorEventID() == DesignerEvent.CREATOR_EDITED) { + if (e.getCreatorEventID() == DesignerEvent.CREATOR_SELECTED) { refresh(); } }); @@ -52,28 +51,6 @@ public class TopXCreators extends JComponent { super.paint(g); } - @Override - public void setVisible(boolean aFlag) { - super.setVisible(aFlag); - for (int i = 0, count = getComponentCount(); i < count; i++) { - if (getComponent(i) instanceof TopXCreator) { - TopXCreator xCreator = (TopXCreator) getComponent(i); - xCreator.displayCoverPane(aFlag); - } - } - repaint(); - } - - /** - * 依据MouseEvent坐标来设置是否显示蒙层 - */ - public void displayCoverPane(MouseEvent e) { - for (int i = 0, count = getComponentCount(); i < count; i++) { - BasicTopXCreator xCreator = (BasicTopXCreator) getComponent(i); - xCreator.displayCoverPane(e, isVisible()); - } - } - /** * 加入被选择的组件 */ @@ -81,10 +58,9 @@ public class TopXCreators extends JComponent { SelectionModel selectionModel = designer.getSelectionModel(); XCreator[] xCreators = selectionModel.getSelection().getSelectedCreators(); for (XCreator creator : xCreators) { - BasicTopXCreator topXCreator = creator.getTopXCreator(); - if (topXCreator != null) { - add(topXCreator); - } + XWCardMainBorderLayout topXMainBorderLayout = XCreatorUtils.getTopXMainBorderLayout(creator); + TopXCreator topXCreator = topXMainBorderLayout == null ? new TopXCreator(creator) : new TopXCreator(topXMainBorderLayout); + add(topXCreator); } } @@ -93,7 +69,7 @@ public class TopXCreators extends JComponent { */ private void resizeTopXCreators() { for (int i = 0, count = getComponentCount(); i < count; i++) { - BasicTopXCreator topXCreator = (BasicTopXCreator) getComponent(i); + TopXCreator topXCreator = (TopXCreator) getComponent(i); topXCreator.resizeTopXCreator(); } repaint(); diff --git a/designer-form/src/main/java/com/fr/design/mainframe/widget/topxcreator/TopXCreator.java b/designer-form/src/main/java/com/fr/design/mainframe/widget/topxcreator/TopXCreator.java deleted file mode 100644 index 42371a44f9..0000000000 --- a/designer-form/src/main/java/com/fr/design/mainframe/widget/topxcreator/TopXCreator.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.fr.design.mainframe.widget.topxcreator; - -import com.fr.design.designer.creator.XCreator; -import com.fr.design.mainframe.CoverReportPane; - -import java.awt.*; -import java.awt.event.MouseEvent; - -/** - * @Author: Yuan.Wang - * @Date: 2020/8/26 - */ -public class TopXCreator extends BasicTopXCreator { - - private final CoverReportPane coverPanel; - - public TopXCreator(XCreator creator) { - super(creator); - coverPanel = new CoverReportPane(); - init(); - } - - private void init() { - coverPanel.setSize(getSize()); - coverPanel.setVisible(false); - add(coverPanel); - } - - - protected void resetSize(Rectangle bounds) { - coverPanel.setSize(getSize()); - } - - /** - * 设置是否显示蒙层 - * */ - public void displayCoverPane(boolean visible) { - coverPanel.setVisible(visible); - } - - /** - * 依据鼠标事件和visible设置是否显示蒙层 - * */ - public void displayCoverPane(MouseEvent event, boolean visible) { - boolean isVisible = visible && getBounds().contains(event.getX(), event.getY()); - coverPanel.setVisible(isVisible); - } - -} From 8fffceb55ef0197a1ee8af99ee7c42d296a802d9 Mon Sep 17 00:00:00 2001 From: "Yuan.Wang" <1536296691@qq.com> Date: Wed, 9 Sep 2020 15:11:21 +0800 Subject: [PATCH 016/100] =?UTF-8?q?REPORT-38954&&REPORT-38927&&REPORT-3892?= =?UTF-8?q?4&&REPORT-38896=20=E6=B6=88=E9=99=A4NPE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/mainframe/TopXCreator.java | 4 ++-- .../src/main/java/com/fr/design/mainframe/TopXCreators.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/TopXCreator.java b/designer-form/src/main/java/com/fr/design/mainframe/TopXCreator.java index 49e9a7d36a..72541a1fe6 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/TopXCreator.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/TopXCreator.java @@ -22,8 +22,8 @@ public class TopXCreator extends JComponent { private final FormDesigner designer; private final XCreator creator; - public TopXCreator(XCreator creator) { - this.designer = WidgetPropertyPane.getInstance().getEditingFormDesigner(); + public TopXCreator(FormDesigner designer, XCreator creator) { + this.designer = designer; this.creator = creator; init(); } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/TopXCreators.java b/designer-form/src/main/java/com/fr/design/mainframe/TopXCreators.java index 033a3352aa..59220d9a82 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/TopXCreators.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/TopXCreators.java @@ -59,7 +59,7 @@ public class TopXCreators extends JComponent { XCreator[] xCreators = selectionModel.getSelection().getSelectedCreators(); for (XCreator creator : xCreators) { XWCardMainBorderLayout topXMainBorderLayout = XCreatorUtils.getTopXMainBorderLayout(creator); - TopXCreator topXCreator = topXMainBorderLayout == null ? new TopXCreator(creator) : new TopXCreator(topXMainBorderLayout); + TopXCreator topXCreator = topXMainBorderLayout == null ? new TopXCreator(designer, creator) : new TopXCreator(designer, topXMainBorderLayout); add(topXCreator); } } From 5721fc4d7553db65bfca971ffb7f1a440a8f85f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=B2=B3?= <445798420@qq.com> Date: Wed, 9 Sep 2020 16:32:54 +0800 Subject: [PATCH 017/100] =?UTF-8?q?CHART-15696=20=E9=9B=B7=E8=BE=BE?= =?UTF-8?q?=E5=9B=BE=E6=9D=A1=E4=BB=B6=E5=B1=9E=E6=80=A7=E9=80=8F=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/van/chart/radar/VanChartRadarConditionPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-chart/src/main/java/com/fr/van/chart/radar/VanChartRadarConditionPane.java b/designer-chart/src/main/java/com/fr/van/chart/radar/VanChartRadarConditionPane.java index 9c46cd8ef7..0d60f64de7 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/radar/VanChartRadarConditionPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/radar/VanChartRadarConditionPane.java @@ -53,7 +53,7 @@ public class VanChartRadarConditionPane extends DataSeriesConditionPane{ } else { classPaneMap.put(VanChartAttrMarker.class, new VanChartMarkerConditionPane(this)); classPaneMap.put(VanChartAttrLine.class, new VanChartLineWidthConditionPane(this)); - classPaneMap.put(AttrAreaSeriesFillColorBackground.class, new VanChartAreaFillColorConditionPane(this)); + classPaneMap.put(AttrAreaSeriesFillColorBackground.class, new VanChartAreaFillColorConditionPane(this, plot)); classPaneMap.put(AttrEffect.class, new VanChartEffectConditionPane(this, EffectHelper.getRadarPlotDefaultEffect())); } } From c309ef5c27310c59e26e00b8cefd23ea1340345c Mon Sep 17 00:00:00 2001 From: "Yuan.Wang" <1536296691@qq.com> Date: Wed, 9 Sep 2020 17:19:13 +0800 Subject: [PATCH 018/100] =?UTF-8?q?REPORT-38954&&REPORT-38927&&REPORT-3892?= =?UTF-8?q?4&&REPORT-38896=20=E4=BF=AE=E6=94=B9Nullable=E7=9A=84import?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/designer/creator/XCreatorUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java b/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java index cd3771f60e..0c4ea6313f 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java @@ -347,7 +347,7 @@ public class XCreatorUtils { /** * 获取组件的最顶层XMainBorderLayout,没有则返回null * */ - @com.fr.third.javax.annotation.Nullable + @Nullable public static XWCardMainBorderLayout getTopXMainBorderLayout(Container creator) { XWCardMainBorderLayout result = null; while (creator != null) { From 6747fd703cd878d62b473f7093af971039903fc4 Mon Sep 17 00:00:00 2001 From: vito Date: Wed, 9 Sep 2020 17:29:07 +0800 Subject: [PATCH 019/100] =?UTF-8?q?=E6=97=A0jira=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?=E6=BC=8F=E4=BA=86=E5=86=92=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index fa342ced2f..3580cbae0d 100644 --- a/build.gradle +++ b/build.gradle @@ -73,7 +73,7 @@ allprojects { implementation 'com.fr.decision:fine-decision:' + frVersion implementation 'com.fr.schedule:fine-schedule:' + frVersion implementation 'com.fr.report:fine-report-engine:' + frDevVersion - implementation 'com.fr.design:design-i18n' + frDevVersion + implementation 'com.fr.design:design-i18n:' + frDevVersion testImplementation 'org.easymock:easymock:3.5.1' testImplementation 'org.powermock:powermock-module-junit4:1.7.1' testImplementation 'org.powermock:powermock-api-easymock:1.7.1' From b3daa1b524dd57b2bfec8ca5e7e5614725f548e3 Mon Sep 17 00:00:00 2001 From: "Yuan.Wang" <1536296691@qq.com> Date: Wed, 9 Sep 2020 17:34:28 +0800 Subject: [PATCH 020/100] =?UTF-8?q?REPORT-39481=20=E5=88=A0=E6=8E=89?= =?UTF-8?q?=E5=AF=B9repaint=E7=9A=84=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/mainframe/TopXCreators.java | 1 - 1 file changed, 1 deletion(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/TopXCreators.java b/designer-form/src/main/java/com/fr/design/mainframe/TopXCreators.java index 59220d9a82..426f167eaf 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/TopXCreators.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/TopXCreators.java @@ -72,6 +72,5 @@ public class TopXCreators extends JComponent { TopXCreator topXCreator = (TopXCreator) getComponent(i); topXCreator.resizeTopXCreator(); } - repaint(); } } From ce540ef97b54a4c4e5eef3876009b45481567df9 Mon Sep 17 00:00:00 2001 From: Yvan Date: Wed, 9 Sep 2020 17:50:19 +0800 Subject: [PATCH 021/100] =?UTF-8?q?REPORT-39341=20=E3=80=90=E5=9B=9E?= =?UTF-8?q?=E5=BD=92=E3=80=91=E3=80=90jdk11=E3=80=91=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E8=AF=BB=E5=86=99=E6=9D=83=E9=99=90=E6=8A=A5?= =?UTF-8?q?=E5=91=8A=E5=BC=B9=E7=AA=97=E6=98=AF=E8=8B=B1=E6=96=87=201.=20b?= =?UTF-8?q?ug=E5=8E=9F=E5=9B=A0=EF=BC=9A=E5=9C=A8=E4=B8=AD=E6=96=87?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E4=B8=8B=EF=BC=8C=E8=BF=99=E8=BE=B9=E4=BC=A0?= =?UTF-8?q?=E8=BF=87=E6=9D=A5=E7=9A=84Locale=E6=98=AFzh-Hans-CN=EF=BC=8C?= =?UTF-8?q?=E8=BF=9B=E5=85=A5isSupport=E6=96=B9=E6=B3=95=E4=B8=AD=E6=97=B6?= =?UTF-8?q?=E4=BC=9A=E5=8F=91=E7=8E=B0=E4=B8=8D=E5=8C=B9=E9=85=8D=EF=BC=8C?= =?UTF-8?q?=E7=84=B6=E5=90=8ELocale=E8=A2=AB=E8=AE=BE=E7=BD=AE=E6=88=90en?= =?UTF-8?q?=5FUS=EF=BC=8C=E7=84=B6=E5=90=8E=E5=9C=A8=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=E9=87=8C=E9=9D=A2=E7=9A=84=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E5=B0=B1=E9=83=BD=E6=98=AF=E8=8B=B1=E6=96=87=E4=BA=86=202.=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=96=B9=E6=A1=88=EF=BC=9A=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=88=A4=E6=96=AD=EF=BC=8C=E5=B0=86=E4=BC=A0=E8=BF=87=E6=9D=A5?= =?UTF-8?q?=E7=9A=84Locale=E7=9A=84script=E6=8A=B9=E5=8E=BB=EF=BC=8C?= =?UTF-8?q?=E5=8F=AA=E4=BF=9D=E7=95=99language=E5=92=8Cregion=EF=BC=8C?= =?UTF-8?q?=E8=B7=9F=E4=BB=A3=E7=A0=81=E9=87=8C=E9=9D=A2=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E7=9A=84Locale=E4=BF=9D=E6=8C=81=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/DesignerEnvManager.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java index 88d2625d02..375e40e4c0 100644 --- a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java +++ b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java @@ -163,7 +163,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { * alphafine */ private AlphaFineConfigManager alphaFineConfigManager = AlphaFineConfigManager.getInstance(); - + /** * 阅后即焚的配置项 */ @@ -1424,6 +1424,10 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { * @return */ private Locale checkLocale(Locale locale) { + // Yvan: REPORT-39341,有一些情况下,获取到的是zh-Hans-CN,转成zh_CN + if (locale != null) { + locale = new Locale(locale.getLanguage(), locale.getCountry()); + } return SupportLocale.getInstance().isSupport(locale) ? locale : Locale.US; } @@ -1578,7 +1582,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { } } } - + private void readSnapChatConfig(XMLableReader reader) { reader.readXMLObject(this.snapChatConfig = SnapChatConfig.getInstance()); } @@ -1801,14 +1805,14 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { writeSnapChatConfig(writer); writer.end(); } - + private void writeSnapChatConfig(XMLPrintWriter writer) { - + if (this.snapChatConfig != null) { this.snapChatConfig.writeXML(writer); } } - + private void writeAlphaFineAttr(XMLPrintWriter writer) { if (this.alphaFineConfigManager != null) { this.alphaFineConfigManager.writeXML(writer); From 2ee442f834fc964b9a9f0fa03f9ad8e64e7e6380 Mon Sep 17 00:00:00 2001 From: pengda Date: Wed, 9 Sep 2020 18:39:53 +0800 Subject: [PATCH 022/100] =?UTF-8?q?REPORT-28952=20frm=20=E7=BB=99=E5=9B=BE?= =?UTF-8?q?=E8=A1=A8=E5=9D=97=E5=8A=A0=E6=A0=87=E9=A2=98=E5=90=8E=EF=BC=8C?= =?UTF-8?q?=E5=9B=BE=E8=A1=A8=E5=9D=97=E7=9A=84=E7=BC=96=E8=BE=91=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E6=98=BE=E7=A4=BA=E4=BD=8D=E7=BD=AE=E5=92=8C=E8=A7=A6?= =?UTF-8?q?=E5=8F=91=E5=8C=BA=E5=9F=9F=E4=B8=8D=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/mainframe/EditingMouseListener.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/EditingMouseListener.java b/designer-form/src/main/java/com/fr/design/mainframe/EditingMouseListener.java index 4cb75e0e4a..2f2d8eb5b2 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/EditingMouseListener.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/EditingMouseListener.java @@ -363,7 +363,7 @@ public class EditingMouseListener extends MouseInputAdapter { designer.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); } // component.getParent() 是报表块所在的XWTitleLayout int minX = button.getX() + getParentPositionX(component, 0) - designer.getHorizontalScaleValue(); - int minY = button.getY() + getParentPositionY(component, 0) - designer.getVerticalScaleValue(); + int minY = button.getY() + getParentPositionY(component, 0) - designer.getVerticalScaleValue() + xElementCase.getY(); if (e.getX() + GAP - xElementCase.getInsets().left > minX && e.getX() - GAP - xElementCase.getInsets().left < minX + button.getWidth()) { if (e.getY() + GAP - xElementCase.getInsets().top > minY && e.getY() - GAP - xElementCase.getInsets().top < minY + button.getHeight()) { designer.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); @@ -462,7 +462,7 @@ public class EditingMouseListener extends MouseInputAdapter { designer.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); } int minX = button.getX() + getParentPositionX(component, 0) - designer.getHorizontalScaleValue(); - int minY = button.getY() + getParentPositionY(component, 0) - designer.getVerticalScaleValue(); + int minY = button.getY() + getParentPositionY(component, 0) - designer.getVerticalScaleValue() + xChartEditor.getY(); if (e.getX() + GAP > minX && e.getX() - GAP < minX + button.getWidth()) { if (e.getY() + GAP > minY && e.getY() - GAP < minY + button.getHeight()) { designer.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); From ba7a9e3aa8f1d381b442272dec823f84828fca18 Mon Sep 17 00:00:00 2001 From: Yvan Date: Wed, 9 Sep 2020 18:56:46 +0800 Subject: [PATCH 023/100] =?UTF-8?q?=E8=A1=A5=E5=85=85=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/java/com/fr/design/DesignerEnvManagerTest.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/designer-base/src/test/java/com/fr/design/DesignerEnvManagerTest.java b/designer-base/src/test/java/com/fr/design/DesignerEnvManagerTest.java index b7d123d66e..1e16a1d7c9 100644 --- a/designer-base/src/test/java/com/fr/design/DesignerEnvManagerTest.java +++ b/designer-base/src/test/java/com/fr/design/DesignerEnvManagerTest.java @@ -1,5 +1,6 @@ package com.fr.design; +import com.fr.invoke.Reflect; import junit.framework.TestCase; import java.util.Locale; @@ -17,4 +18,10 @@ public class DesignerEnvManagerTest extends TestCase{ assertEquals("下边界", envManager.getLanguage(), Locale.SIMPLIFIED_CHINESE); } + + public void testCheckLocale() { + DesignerEnvManager envManager = new DesignerEnvManager(); + Locale checkLocale = Reflect.on(envManager).call("checkLocale", Locale.getDefault()).get(); + assertEquals(Locale.SIMPLIFIED_CHINESE, checkLocale); + } } From 63ce4a6d720af6085aee9bf1eac849b3337769f3 Mon Sep 17 00:00:00 2001 From: Yvan Date: Thu, 10 Sep 2020 14:56:43 +0800 Subject: [PATCH 024/100] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/DesignerEnvManagerTest.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/designer-base/src/test/java/com/fr/design/DesignerEnvManagerTest.java b/designer-base/src/test/java/com/fr/design/DesignerEnvManagerTest.java index 1e16a1d7c9..2707d73dd5 100644 --- a/designer-base/src/test/java/com/fr/design/DesignerEnvManagerTest.java +++ b/designer-base/src/test/java/com/fr/design/DesignerEnvManagerTest.java @@ -2,6 +2,7 @@ package com.fr.design; import com.fr.invoke.Reflect; import junit.framework.TestCase; +import org.easymock.EasyMock; import java.util.Locale; @@ -20,8 +21,18 @@ public class DesignerEnvManagerTest extends TestCase{ } public void testCheckLocale() { - DesignerEnvManager envManager = new DesignerEnvManager(); - Locale checkLocale = Reflect.on(envManager).call("checkLocale", Locale.getDefault()).get(); - assertEquals(Locale.SIMPLIFIED_CHINESE, checkLocale); + DesignerEnvManager envManager = EasyMock.createMock(DesignerEnvManager.class); + Reflect on = Reflect.on(envManager); + + //验证zh-Hans-CN + Locale locale = Reflect.on(Locale.class).call("getInstance", "zh", "", "CN", "", null).get(); + assertEquals(Locale.SIMPLIFIED_CHINESE, locale); + + //验证其它语言 + assertEquals(Locale.SIMPLIFIED_CHINESE, on.call("checkLocale", Locale.SIMPLIFIED_CHINESE).get()); + assertEquals(Locale.TRADITIONAL_CHINESE, on.call("checkLocale", Locale.TRADITIONAL_CHINESE).get()); + assertEquals(Locale.US, on.call("checkLocale", Locale.US).get()); + assertEquals(Locale.JAPAN, on.call("checkLocale", Locale.JAPAN).get()); + assertEquals(Locale.KOREA, on.call("checkLocale", Locale.KOREA).get()); } } From 19e4eb426f4cc8c96725db25b3ac9143d508b758 Mon Sep 17 00:00:00 2001 From: Yvan Date: Thu, 10 Sep 2020 15:00:35 +0800 Subject: [PATCH 025/100] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/test/java/com/fr/design/DesignerEnvManagerTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/test/java/com/fr/design/DesignerEnvManagerTest.java b/designer-base/src/test/java/com/fr/design/DesignerEnvManagerTest.java index 2707d73dd5..f1e9915793 100644 --- a/designer-base/src/test/java/com/fr/design/DesignerEnvManagerTest.java +++ b/designer-base/src/test/java/com/fr/design/DesignerEnvManagerTest.java @@ -26,7 +26,7 @@ public class DesignerEnvManagerTest extends TestCase{ //验证zh-Hans-CN Locale locale = Reflect.on(Locale.class).call("getInstance", "zh", "", "CN", "", null).get(); - assertEquals(Locale.SIMPLIFIED_CHINESE, locale); + assertEquals(Locale.SIMPLIFIED_CHINESE, on.call("checkLocale", locale).get()); //验证其它语言 assertEquals(Locale.SIMPLIFIED_CHINESE, on.call("checkLocale", Locale.SIMPLIFIED_CHINESE).get()); From fe6973e495f9b322690a60eb8dce29f2f724f0ea Mon Sep 17 00:00:00 2001 From: Yvan Date: Thu, 10 Sep 2020 16:02:08 +0800 Subject: [PATCH 026/100] =?UTF-8?q?REPORT-39341=20=E3=80=90=E5=9B=9E?= =?UTF-8?q?=E5=BD=92=E3=80=91=E6=96=87=E4=BB=B6=E6=B2=A1=E6=9C=89=E8=AF=BB?= =?UTF-8?q?=E5=86=99=E6=9D=83=E9=99=90=E6=8A=A5=E5=91=8A=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E6=98=AF=E8=8B=B1=E6=96=87=20=E4=BF=AE=E6=94=B9=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=E6=96=B9=E6=A1=88=EF=BC=9A=E7=BB=8F=E8=BF=87=E5=A4=9A?= =?UTF-8?q?=E4=BD=8D=E5=A4=A7=E4=BD=AC=E6=8F=90=E9=86=92=EF=BC=8C=E6=9C=80?= =?UTF-8?q?=E5=A5=BD=E4=B8=8D=E8=A6=81=E7=9B=B4=E6=8E=A5=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=BC=A0=E8=BF=87=E6=9D=A5=E7=9A=84Locale=EF=BC=8C=E5=9B=A0?= =?UTF-8?q?=E6=AD=A4=E8=BD=AC=E5=8F=98=E6=80=9D=E8=B7=AF=E4=B8=BA=E5=A6=82?= =?UTF-8?q?=E6=9E=9C=E6=8E=A5=E6=94=B6=E5=88=B0=E4=BA=86=E6=AF=94=E8=BE=83?= =?UTF-8?q?=E5=A5=87=E6=80=AA=E7=9A=84Locale=EF=BC=8C=E5=B0=BD=E9=87=8F?= =?UTF-8?q?=E6=89=BE=E5=88=B0=E4=B8=80=E4=B8=AA=E5=9C=A8=E6=9C=AC=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E4=B8=AD=E4=BD=BF=E7=94=A8=E7=9A=84=E6=9C=80=E6=8E=A5?= =?UTF-8?q?=E8=BF=91=E7=9A=84Locale=E8=BF=94=E5=9B=9E=EF=BC=8C=E5=A6=82?= =?UTF-8?q?=E4=BC=A0=E5=85=A5=E5=8F=82=E6=95=B0=E4=B8=BAzh-Hans-CN?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E8=BF=94=E5=9B=9Ezh=5FCN=EF=BC=8C=E8=80=8C?= =?UTF-8?q?=E4=B8=8D=E6=98=AF=E4=B9=8B=E5=89=8D=E7=9A=84en=5FUS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/DesignerEnvManager.java | 8 +++----- .../com/fr/design/DesignerEnvManagerTest.java | 18 ------------------ 2 files changed, 3 insertions(+), 23 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java index 375e40e4c0..68bb917114 100644 --- a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java +++ b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java @@ -1424,11 +1424,9 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { * @return */ private Locale checkLocale(Locale locale) { - // Yvan: REPORT-39341,有一些情况下,获取到的是zh-Hans-CN,转成zh_CN - if (locale != null) { - locale = new Locale(locale.getLanguage(), locale.getCountry()); - } - return SupportLocale.getInstance().isSupport(locale) ? locale : Locale.US; + // Yvan: REPORT-39341,有一些情况下,获取到的是zh-Hans-CN这种,需要找到项目中最匹配的Locale + return SupportLocale.getInstance().isSupport(locale) ? + locale : SupportLocale.getInstance().getSuitableLocale(locale); } private void readReportLengthUnit(XMLableReader reader) { diff --git a/designer-base/src/test/java/com/fr/design/DesignerEnvManagerTest.java b/designer-base/src/test/java/com/fr/design/DesignerEnvManagerTest.java index f1e9915793..b7d123d66e 100644 --- a/designer-base/src/test/java/com/fr/design/DesignerEnvManagerTest.java +++ b/designer-base/src/test/java/com/fr/design/DesignerEnvManagerTest.java @@ -1,8 +1,6 @@ package com.fr.design; -import com.fr.invoke.Reflect; import junit.framework.TestCase; -import org.easymock.EasyMock; import java.util.Locale; @@ -19,20 +17,4 @@ public class DesignerEnvManagerTest extends TestCase{ assertEquals("下边界", envManager.getLanguage(), Locale.SIMPLIFIED_CHINESE); } - - public void testCheckLocale() { - DesignerEnvManager envManager = EasyMock.createMock(DesignerEnvManager.class); - Reflect on = Reflect.on(envManager); - - //验证zh-Hans-CN - Locale locale = Reflect.on(Locale.class).call("getInstance", "zh", "", "CN", "", null).get(); - assertEquals(Locale.SIMPLIFIED_CHINESE, on.call("checkLocale", locale).get()); - - //验证其它语言 - assertEquals(Locale.SIMPLIFIED_CHINESE, on.call("checkLocale", Locale.SIMPLIFIED_CHINESE).get()); - assertEquals(Locale.TRADITIONAL_CHINESE, on.call("checkLocale", Locale.TRADITIONAL_CHINESE).get()); - assertEquals(Locale.US, on.call("checkLocale", Locale.US).get()); - assertEquals(Locale.JAPAN, on.call("checkLocale", Locale.JAPAN).get()); - assertEquals(Locale.KOREA, on.call("checkLocale", Locale.KOREA).get()); - } } From 4e104128f1682f385eb11f1d0c3ae3abf15ba7b3 Mon Sep 17 00:00:00 2001 From: Yvan Date: Thu, 10 Sep 2020 17:36:42 +0800 Subject: [PATCH 027/100] =?UTF-8?q?REPORT-39338=20=E3=80=90=E5=9B=9E?= =?UTF-8?q?=E5=BD=92=E3=80=91=E5=86=85=E7=BD=AE=E6=9C=8D=E5=8A=A1=E5=99=A8?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E8=BF=9B=E5=BA=A6=E6=9D=A1=E4=BC=9A=E5=85=88?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=E4=B8=8A=E6=AC=A1=E7=9A=84=E8=BF=9B=E5=BA=A6?= =?UTF-8?q?=E5=86=8D=E5=88=9D=E5=A7=8B=E5=8C=96=201.=20bug=E5=8E=9F?= =?UTF-8?q?=E5=9B=A0=EF=BC=9A=EF=BC=8C=E6=AF=8F=E6=AC=A1=E5=86=85=E7=BD=AE?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=99=A8=E5=90=AF=E5=8A=A8=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E7=9A=84=E8=BF=9B=E5=BA=A6=E6=9D=A1=E5=BC=B9=E7=AA=97=E9=83=BD?= =?UTF-8?q?=E6=98=AF=E5=90=8C=E4=B8=80=E4=B8=AA=EF=BC=8C=E5=8F=AA=E6=98=AF?= =?UTF-8?q?=E5=9C=A8=E5=8F=AF=E8=A7=81=E4=B8=8E=E4=B8=8D=E5=8F=AF=E8=A7=81?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E4=B9=8B=E9=97=B4=E5=88=87=E6=8D=A2=EF=BC=8C?= =?UTF-8?q?=E8=80=8C=E5=9C=A8=E5=90=AF=E5=8A=A8=E6=88=90=E5=8A=9F=E4=B9=8B?= =?UTF-8?q?=E5=90=8E=EF=BC=8C=E6=B2=A1=E6=9C=89=E6=B8=85=E7=A9=BA=E4=B8=8A?= =?UTF-8?q?=E6=AC=A1=E8=BF=9B=E5=BA=A6=EF=BC=8C=E6=89=80=E4=BB=A5=E4=BC=9A?= =?UTF-8?q?=E5=85=88=E6=98=BE=E7=A4=BA=E4=B8=8A=E6=AC=A1=E8=BF=9B=E5=BA=A6?= =?UTF-8?q?=202.=20=E4=BF=AE=E6=94=B9=E6=96=B9=E6=A1=88=EF=BC=9A=E4=B8=BA?= =?UTF-8?q?=E8=BF=9B=E5=BA=A6=E6=9D=A1=E7=9A=84value=E7=BD=AE0=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E5=88=B7=E6=96=B0UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/gui/iprogressbar/ProgressDialog.java | 4 ++++ .../main/java/com/fr/design/mainframe/DesignerFrame.java | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/designer-base/src/main/java/com/fr/design/gui/iprogressbar/ProgressDialog.java b/designer-base/src/main/java/com/fr/design/gui/iprogressbar/ProgressDialog.java index 29214984c3..34407945f0 100644 --- a/designer-base/src/main/java/com/fr/design/gui/iprogressbar/ProgressDialog.java +++ b/designer-base/src/main/java/com/fr/design/gui/iprogressbar/ProgressDialog.java @@ -103,4 +103,8 @@ public class ProgressDialog extends UIDialog { } this.text.setText(text); } + + public void repaintProgressBar() { + progressBar.update(progressBar.getGraphics()); + } } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java index 8de3d89f32..ab4d03a87f 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java @@ -1309,4 +1309,11 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta public boolean isDesignerOpened() { return designerOpened; } + + /** + * 刷新进度框的UI部分 + */ + public void repaintProgressDialog() { + progressDialog.repaintProgressBar(); + } } From 6c8283ccad1beb1cf5aeeadf89b25c6704a05534 Mon Sep 17 00:00:00 2001 From: Yvan Date: Thu, 10 Sep 2020 17:38:53 +0800 Subject: [PATCH 028/100] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/start/server/FineEmbedServerMonitor.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/designer-base/src/main/java/com/fr/start/server/FineEmbedServerMonitor.java b/designer-base/src/main/java/com/fr/start/server/FineEmbedServerMonitor.java index 7e95c48d27..da8400c17a 100644 --- a/designer-base/src/main/java/com/fr/start/server/FineEmbedServerMonitor.java +++ b/designer-base/src/main/java/com/fr/start/server/FineEmbedServerMonitor.java @@ -92,6 +92,9 @@ public class FineEmbedServerMonitor { public void run() { if (isComplete()) { scheduler.shutdown(); + // 在进度条满了之后,将进度条置0并清空进度,不然下一次打开进度条会先显示上一次的进度 + DesignerContext.getDesignerFrame().updateProgress(0); + DesignerContext.getDesignerFrame().repaintProgressDialog(); DesignerContext.getDesignerFrame().hideProgressDialog(); return; } From a5caa2b1c81bc73d8cc63634a958f29511851ad5 Mon Sep 17 00:00:00 2001 From: Yvan Date: Fri, 11 Sep 2020 10:09:10 +0800 Subject: [PATCH 029/100] =?UTF-8?q?REPORT-39338=20=E3=80=90=E5=9B=9E?= =?UTF-8?q?=E5=BD=92=E3=80=91=E5=86=85=E7=BD=AE=E6=9C=8D=E5=8A=A1=E5=99=A8?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E8=BF=9B=E5=BA=A6=E6=9D=A1=E4=BC=9A=E5=85=88?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=E4=B8=8A=E6=AC=A1=E7=9A=84=E8=BF=9B=E5=BA=A6?= =?UTF-8?q?=E5=86=8D=E5=88=9D=E5=A7=8B=E5=8C=96=201.=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=96=B9=E6=A1=88=EF=BC=9A=E7=A1=AE=E5=AE=9A?= =?UTF-8?q?=E4=BA=86=E4=B8=80=E7=9B=B4=E7=BB=B4=E6=8A=A4=E5=90=8C=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E8=BF=9B=E5=BA=A6=E6=9D=A1dialog=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E7=89=B9=E6=AE=8A=E6=84=8F=E4=B9=89=E4=B9=8B=E5=90=8E=EF=BC=8C?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=9C=A8=E6=AF=8F=E4=B8=80=E6=AC=A1=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E6=9C=8D=E5=8A=A1=E5=99=A8=E6=88=96=E8=80=85=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8=E5=90=AF=E5=8A=A8=E5=AE=8C=E6=88=90=E5=90=8E?= =?UTF-8?q?dialog=E5=BA=9F=E5=BC=83=E6=8E=89=EF=BC=8C=E7=84=B6=E5=90=8E?= =?UTF-8?q?=E5=9C=A8=E6=AF=8F=E4=B8=80=E6=AC=A1=E9=9C=80=E8=A6=81=E6=89=93?= =?UTF-8?q?=E5=BC=80=E5=AF=B9=E8=AF=9D=E6=A1=86=E7=9A=84=E6=97=B6=E5=80=99?= =?UTF-8?q?=EF=BC=8C=E6=96=B0=E5=BB=BA=E4=B8=80=E4=B8=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gui/iprogressbar/ProgressDialog.java | 4 ---- .../com/fr/design/mainframe/DesignerFrame.java | 18 ++---------------- .../start/server/FineEmbedServerMonitor.java | 9 +++------ 3 files changed, 5 insertions(+), 26 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/iprogressbar/ProgressDialog.java b/designer-base/src/main/java/com/fr/design/gui/iprogressbar/ProgressDialog.java index 34407945f0..29214984c3 100644 --- a/designer-base/src/main/java/com/fr/design/gui/iprogressbar/ProgressDialog.java +++ b/designer-base/src/main/java/com/fr/design/gui/iprogressbar/ProgressDialog.java @@ -103,8 +103,4 @@ public class ProgressDialog extends UIDialog { } this.text.setText(text); } - - public void repaintProgressBar() { - progressBar.update(progressBar.getGraphics()); - } } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java index ab4d03a87f..4eda4e18b7 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java @@ -1269,20 +1269,12 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta return progressDialog; } - public void showProgressDialog() { - + public void openProgressDialog() { + progressDialog = new ProgressDialog(this); progressDialog.setVisible(true); } - /** - * 隐藏进度框 - */ - public void hideProgressDialog() { - - progressDialog.setVisible(false); - } - /** * 更新进度框进度 * @@ -1310,10 +1302,4 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta return designerOpened; } - /** - * 刷新进度框的UI部分 - */ - public void repaintProgressDialog() { - progressDialog.repaintProgressBar(); - } } diff --git a/designer-base/src/main/java/com/fr/start/server/FineEmbedServerMonitor.java b/designer-base/src/main/java/com/fr/start/server/FineEmbedServerMonitor.java index da8400c17a..2c77330589 100644 --- a/designer-base/src/main/java/com/fr/start/server/FineEmbedServerMonitor.java +++ b/designer-base/src/main/java/com/fr/start/server/FineEmbedServerMonitor.java @@ -47,7 +47,7 @@ public class FineEmbedServerMonitor { @Override public void on(Event event, Null aNull) { getInstance().reset(); - DesignerContext.getDesignerFrame().hideProgressDialog(); + DesignerContext.getDesignerFrame().disposeProgressDialog(); } }); } @@ -92,14 +92,11 @@ public class FineEmbedServerMonitor { public void run() { if (isComplete()) { scheduler.shutdown(); - // 在进度条满了之后,将进度条置0并清空进度,不然下一次打开进度条会先显示上一次的进度 - DesignerContext.getDesignerFrame().updateProgress(0); - DesignerContext.getDesignerFrame().repaintProgressDialog(); - DesignerContext.getDesignerFrame().hideProgressDialog(); + DesignerContext.getDesignerFrame().disposeProgressDialog(); return; } if (!DesignerContext.getDesignerFrame().getProgressDialog().isVisible()) { - DesignerContext.getDesignerFrame().showProgressDialog(); + DesignerContext.getDesignerFrame().openProgressDialog(); //如果为韩文则改变字体 LocaleCenter.buildAction(new LocaleAction() { @Override From 9e42bed9aa88cf0f440bffa6b6d4848d8430bad0 Mon Sep 17 00:00:00 2001 From: Yvan Date: Fri, 11 Sep 2020 14:01:17 +0800 Subject: [PATCH 030/100] =?UTF-8?q?=E8=80=83=E8=99=91=E5=88=B0progressDial?= =?UTF-8?q?og=E7=9B=AE=E5=89=8D=E5=8F=AA=E5=9C=A8FineEmbedServerMonitor?= =?UTF-8?q?=E4=B8=AD=E4=BD=BF=E7=94=A8=EF=BC=8C=E6=89=80=E4=BB=A5=E5=B0=86?= =?UTF-8?q?=E5=8E=9F=E6=9C=AC=E7=BB=B4=E6=8A=A4=E5=9C=A8DesignerFrame?= =?UTF-8?q?=E4=B8=AD=E7=9A=84progressDialog=E6=94=BE=E5=88=B0FineEmbedServ?= =?UTF-8?q?erMonitor=E4=B8=AD=EF=BC=8C=E8=80=8CDesignerFrame=E5=8E=9F?= =?UTF-8?q?=E6=9C=AC=E7=9A=84=E6=88=90=E5=91=98=E5=8F=98=E9=87=8F=E5=92=8C?= =?UTF-8?q?=E7=9B=B8=E5=BA=94=E5=88=9D=E5=A7=8B=E5=8C=96=E5=88=A0=E9=99=A4?= =?UTF-8?q?=EF=BC=8C=E4=B8=80=E4=BA=9B=E7=9B=B8=E5=85=B3=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E5=85=88=E5=81=9A=E6=88=90=E7=A9=BA=E5=AE=9E=E7=8E=B0=EF=BC=8C?= =?UTF-8?q?=E7=84=B6=E5=90=8E=E6=A0=87=E8=AE=B0=E4=B8=BA=E5=BA=9F=E5=BC=83?= =?UTF-8?q?=EF=BC=8C=E8=BF=99=E4=BA=9B=E6=96=B9=E6=B3=95=E5=85=B7=E4=BD=93?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=92=8C=E4=BD=BF=E7=94=A8=E9=83=BD=E6=94=BE?= =?UTF-8?q?=E5=88=B0FineEmbedServerMonitor=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/DesignerFrame.java | 13 +++++------- .../start/server/FineEmbedServerMonitor.java | 21 ++++++++++--------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java index 4eda4e18b7..fe0276b384 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java @@ -257,8 +257,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } }; - private ProgressDialog progressDialog; - public DesignerFrame(ToolBarMenuDock ad) { setName(DESIGNER_FRAME_NAME); @@ -338,7 +336,6 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta this.setDropTarget(new DropTarget(this, DnDConstants.ACTION_MOVE, new FileDropTargetListener(), true)); closeMode = UIConstants.CLOSE_OF_AUTHORITY; initMenuPane(); - this.progressDialog = new ProgressDialog(this); } public void resizeFrame() { @@ -1264,14 +1261,14 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } } + @Deprecated public ProgressDialog getProgressDialog() { - return progressDialog; + return new ProgressDialog(this); } + @Deprecated public void openProgressDialog() { - progressDialog = new ProgressDialog(this); - progressDialog.setVisible(true); } @@ -1280,17 +1277,17 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta * * @param progress 进度值 */ + @Deprecated public void updateProgress(int progress) { - progressDialog.setProgressValue(progress); } /** * 释放进度框 */ + @Deprecated public void disposeProgressDialog() { - progressDialog.dispose(); } /** diff --git a/designer-base/src/main/java/com/fr/start/server/FineEmbedServerMonitor.java b/designer-base/src/main/java/com/fr/start/server/FineEmbedServerMonitor.java index 2c77330589..f8f7a13ea2 100644 --- a/designer-base/src/main/java/com/fr/start/server/FineEmbedServerMonitor.java +++ b/designer-base/src/main/java/com/fr/start/server/FineEmbedServerMonitor.java @@ -32,7 +32,7 @@ public class FineEmbedServerMonitor { */ private static final int STEP_HEARTBEAT = 40; private static volatile FineEmbedServerMonitor monitor; - private static ProgressDialog progressBar = DesignerContext.getDesignerFrame().getProgressDialog(); + private static ProgressDialog progressDialog = new ProgressDialog(DesignerContext.getDesignerFrame()); //由于默认值的字体不支持韩文,所以要对韩文单独生成字体 private FRFont font = null; private static final int FONT_RGB = 333334; @@ -47,7 +47,7 @@ public class FineEmbedServerMonitor { @Override public void on(Event event, Null aNull) { getInstance().reset(); - DesignerContext.getDesignerFrame().disposeProgressDialog(); + progressDialog.dispose(); } }); } @@ -64,7 +64,7 @@ public class FineEmbedServerMonitor { } public int getProgress() { - if (progress == progressBar.getProgressMaximum()) { + if (progress == progressDialog.getProgressMaximum()) { return progress; } else { progress += STEP; @@ -73,7 +73,7 @@ public class FineEmbedServerMonitor { } public void setComplete() { - this.progress = progressBar.getProgressMaximum(); + this.progress = progressDialog.getProgressMaximum(); } public void reset() { @@ -81,7 +81,7 @@ public class FineEmbedServerMonitor { } public boolean isComplete() { - return this.progress >= progressBar.getProgressMaximum(); + return this.progress >= progressDialog.getProgressMaximum(); } public void monitor() { @@ -92,11 +92,12 @@ public class FineEmbedServerMonitor { public void run() { if (isComplete()) { scheduler.shutdown(); - DesignerContext.getDesignerFrame().disposeProgressDialog(); + progressDialog.dispose(); return; } - if (!DesignerContext.getDesignerFrame().getProgressDialog().isVisible()) { - DesignerContext.getDesignerFrame().openProgressDialog(); + if (!progressDialog.isVisible()) { + progressDialog = new ProgressDialog(DesignerContext.getDesignerFrame()); + progressDialog.setVisible(true); //如果为韩文则改变字体 LocaleCenter.buildAction(new LocaleAction() { @Override @@ -105,9 +106,9 @@ public class FineEmbedServerMonitor { } }, SupportLocaleImpl.SUPPORT_KOREA); String text = Toolkit.i18nText("Fine-Design_Basic_Loading_Embed_Server"); - DesignerContext.getDesignerFrame().getProgressDialog().updateLoadingText(text, font); + progressDialog.updateLoadingText(text, font); } - DesignerContext.getDesignerFrame().updateProgress(getProgress()); + progressDialog.setProgressValue(getProgress()); } }, 0, STEP_HEARTBEAT, TimeUnit.MILLISECONDS); From 39904502896f6936069c7da48bb60f4e810a20cb Mon Sep 17 00:00:00 2001 From: "Yuan.Wang" <1536296691@qq.com> Date: Tue, 15 Sep 2020 11:54:22 +0800 Subject: [PATCH 031/100] =?UTF-8?q?REPORT-39861=20=E5=90=91=E9=A1=B6?= =?UTF-8?q?=E5=B1=82=E6=B7=BB=E5=8A=A0tab=E6=97=B6=E5=90=8C=E6=97=B6?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=A2=AB=E9=80=89=E6=8B=A9=E7=9A=84=E7=BB=84?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/mainframe/TopXCreators.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/TopXCreators.java b/designer-form/src/main/java/com/fr/design/mainframe/TopXCreators.java index 426f167eaf..4c5ba6527e 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/TopXCreators.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/TopXCreators.java @@ -59,8 +59,11 @@ public class TopXCreators extends JComponent { XCreator[] xCreators = selectionModel.getSelection().getSelectedCreators(); for (XCreator creator : xCreators) { XWCardMainBorderLayout topXMainBorderLayout = XCreatorUtils.getTopXMainBorderLayout(creator); - TopXCreator topXCreator = topXMainBorderLayout == null ? new TopXCreator(designer, creator) : new TopXCreator(designer, topXMainBorderLayout); - add(topXCreator); + add(new TopXCreator(designer, creator)); + if (topXMainBorderLayout != null) { + add(new TopXCreator(designer, topXMainBorderLayout)); + } + } } From e5db574c466690c7fd3bf404cc35e90d1f7a528a Mon Sep 17 00:00:00 2001 From: Yyming Date: Tue, 15 Sep 2020 14:43:06 +0800 Subject: [PATCH 032/100] =?UTF-8?q?REPORT-39757=20AlphaFine=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E6=90=9C=E7=B4=A2=E5=90=AB=E7=A9=BA=E6=A0=BC=E7=9A=84?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/DesignerEnvManager.java | 11 +-- .../tabledatapane/DBTableDataPane.java | 2 +- .../alphafine/cell/model/BottomModel.java | 4 +- .../alphafine/component/AlphaFineDialog.java | 80 +++++++++---------- .../manager/impl/FileSearchManager.java | 5 +- .../manager/impl/FileSearchManagerTest.java | 79 ++++++++++++++++++ 6 files changed, 125 insertions(+), 56 deletions(-) create mode 100644 designer-realize/src/test/java/com.fr/design/mainframe/alphafine/search/manager/impl/FileSearchManagerTest.java diff --git a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java index 68bb917114..da2f0e0dc7 100644 --- a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java +++ b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java @@ -218,14 +218,9 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { if (needCheckEnv) { checkNameEnvMap(); } - - GeneralContext.addEnvChangedListener(new EnvChangedListener() { - @Override - public void envChanged() { - - designerEnvManager.setCurrentDirectoryPrefix(FILEFactory.ENV_PREFIX); - designerEnvManager.setDialogCurrentDirectory(ProjectConstants.REPORTLETS_NAME); - } + GeneralContext.addEnvChangedListener(() -> { + designerEnvManager.setCurrentDirectoryPrefix(FILEFactory.ENV_PREFIX); + designerEnvManager.setDialogCurrentDirectory(ProjectConstants.REPORTLETS_NAME); }); } diff --git a/designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java b/designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java index 23e6f46136..d1beacb1d8 100644 --- a/designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java +++ b/designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java @@ -218,7 +218,7 @@ public class DBTableDataPane extends AbstractTableDataPane { paramTexts[0] = SqlUtils.tryPureSqlText(sqlTextPane.getText()); paramTexts[1] = SqlUtils.tryPureSqlText(pageQuery); List existParameterList = editorPane.update(); - Parameter[] ps = existParameterList == null ? new Parameter[0] : existParameterList.toArray(new Parameter[existParameterList.size()]); + Parameter[] ps = existParameterList == null ? new Parameter[0] : existParameterList.toArray(new Parameter[0]); editorPane.populate(ParameterUtils.analyzeAndUnionParameters(paramTexts, ps)); } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/BottomModel.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/BottomModel.java index c8f92721cb..503a4f413d 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/BottomModel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/BottomModel.java @@ -49,9 +49,7 @@ public class BottomModel extends AlphaCellModel { public void doAction() { try { Desktop.getDesktop().browse(new URI(AlphaFineConstants.ALPHA_GO_TO_FORUM)); - } catch (IOException e) { - FineLoggerFactory.getLogger().error(e.getMessage()); - } catch (URISyntaxException e) { + } catch (IOException | URISyntaxException e) { FineLoggerFactory.getLogger().error(e.getMessage()); } } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java index 044a484b16..2654aca90e 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java @@ -819,56 +819,52 @@ public class AlphaFineDialog extends UIDialog { } }); - Timer timer = new Timer(TIMER_DELAY, new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - if (!alreadyInitHot && StringUtils.isEmpty(searchTextField.getText())) { - alreadyInitHot = true; + Timer timer = new Timer(TIMER_DELAY, e -> { + if (!alreadyInitHot && StringUtils.isEmpty(searchTextField.getText())) { + alreadyInitHot = true; + removeSearchResult(); + refreshContainer(); + if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isNeedIntelligentCustomerService()) { + initHotPane(); + setSize(AlphaFineConstants.FULL_SIZE); + } else { + setSize(AlphaFineConstants.FIELD_SIZE); + } + refreshContainer(); + return; + } else if (beforeSearchStr.equals(searchTextField.getText()) && StringUtils.isNotEmpty(beforeSearchStr)) { + if (alreadySearch) { + return; + } else { + removeHotPane(); removeSearchResult(); refreshContainer(); - if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isNeedIntelligentCustomerService()) { - initHotPane(); - setSize(AlphaFineConstants.FULL_SIZE); - } else { - setSize(AlphaFineConstants.FIELD_SIZE); - } - refreshContainer(); - return; - } else if (beforeSearchStr.equals(searchTextField.getText()) && StringUtils.isNotEmpty(beforeSearchStr)) { - if (alreadySearch) { - return; + if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isNeedSegmentationCheckbox()) { + //是高级搜索 + if (searchTextField.getText().toLowerCase().startsWith(ADVANCED_SEARCH_MARK)) { + segmentationResult = SegmentationManager.getInstance().startSegmentation(getStoreText(searchTextField.getText().toLowerCase())); + } + //是普通搜索 + else { + segmentationResult = SegmentationManager.getInstance().startSegmentation(searchTextField.getText().toLowerCase()); + } } else { - removeHotPane(); - removeSearchResult(); - refreshContainer(); - if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isNeedSegmentationCheckbox()) { - //是高级搜索 - if (searchTextField.getText().toLowerCase().startsWith(ADVANCED_SEARCH_MARK)) { - segmentationResult = SegmentationManager.getInstance().startSegmentation(getStoreText(searchTextField.getText().toLowerCase())); - } - //是普通搜索 - else { - segmentationResult = SegmentationManager.getInstance().startSegmentation(searchTextField.getText().toLowerCase()); - } + if (StringUtils.isEmpty(getRealSearchText(searchTextField.getText()))) { + segmentationResult = null; } else { - if (StringUtils.isEmpty(getRealSearchText(searchTextField.getText()))) { - segmentationResult = null; - } else { - segmentationResult = new String[]{getRealSearchText(searchTextField.getText())}; - } + segmentationResult = new String[]{getRealSearchText(searchTextField.getText())}; } - doSearch(searchTextField.getText().toLowerCase()); - alreadySearch = true; } - } else { - beforeSearchStr = searchTextField.getText(); - alreadySearch = false; - } - if (beforeSearchStr.equals(searchTextField.getText()) && beforeSearchStr.length() != 0) { - alreadyInitHot = false; + doSearch(searchTextField.getText().toLowerCase()); + alreadySearch = true; } + } else { + beforeSearchStr = searchTextField.getText(); + alreadySearch = false; + } + if (beforeSearchStr.equals(searchTextField.getText()) && beforeSearchStr.length() != 0) { + alreadyInitHot = false; } - }); timer.start(); } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java index 17c58998df..c867390702 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java @@ -108,14 +108,15 @@ public class FileSearchManager implements AlphaFineSearchProvider { private void doSearch(String searchText) { if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isContainTemplate()) { for (FileNode node : fileNodes) { - if (node.getName().toLowerCase().contains(searchText)) { + String name = node.getName().toLowerCase(); + name = name.replaceAll(StringUtils.BLANK,StringUtils.EMPTY); + if (name.contains(searchText)) { FileModel model = new FileModel(node.getName(), node.getEnvPath()); if (!AlphaFineHelper.getFilterResult().contains(model)) { AlphaFineHelper.checkCancel(); filterModelList.add(model); } } - } } } diff --git a/designer-realize/src/test/java/com.fr/design/mainframe/alphafine/search/manager/impl/FileSearchManagerTest.java b/designer-realize/src/test/java/com.fr/design/mainframe/alphafine/search/manager/impl/FileSearchManagerTest.java new file mode 100644 index 0000000000..093fb533c7 --- /dev/null +++ b/designer-realize/src/test/java/com.fr/design/mainframe/alphafine/search/manager/impl/FileSearchManagerTest.java @@ -0,0 +1,79 @@ +package com.fr.design.mainframe.alphafine.search.manager.impl; + +import com.fr.base.FRContext; +import com.fr.base.extension.FileExtension; +import com.fr.design.DesignerEnvManager; +import com.fr.design.actions.help.alphafine.AlphaFineConfigManager; +import com.fr.design.mainframe.alphafine.AlphaFineHelper; +import com.fr.design.mainframe.alphafine.cell.model.AlphaCellModel; +import com.fr.design.mainframe.alphafine.model.SearchResult; +import com.fr.file.filetree.FileNode; +import com.fr.invoke.Reflect; +import com.fr.stable.project.ProjectConstants; +import com.fr.web.core.SessionPoolManager; +import com.fr.web.utils.WebUtils; +import org.easymock.EasyMock; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.powermock.api.easymock.PowerMock; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor; +import org.powermock.modules.junit4.PowerMockRunner; + +import java.util.ArrayList; +import java.util.List; + +import static org.junit.Assert.*; + +/** + * @author Yyming + * @version 10.0 + * Created by Yyming on 2020/9/15 + */ +@RunWith(PowerMockRunner.class) +@PrepareForTest({AlphaFineHelper.class,DesignerEnvManager.class}) +@SuppressStaticInitializationFor("com.fr.design.mainframe.alphafine.AlphaFineHelper") +public class FileSearchManagerTest { + + @Test + public void doSearch() { + String searchText = "workb"; + FileSearchManager instance = FileSearchManager.getInstance(); + FileNode fileNode1 = EasyMock.createMock(FileNode.class); + FileNode fileNode2 = EasyMock.createMock(FileNode.class); + EasyMock.expect(fileNode1.getName()).andReturn("workbook").anyTimes(); + EasyMock.expect(fileNode2.getName()).andReturn("work book").anyTimes(); + EasyMock.expect(fileNode1.getEnvPath()).andReturn("").anyTimes(); + EasyMock.expect(fileNode2.getEnvPath()).andReturn("").anyTimes(); + EasyMock.replay(fileNode1,fileNode2); + FileNode[] fileNodes = { fileNode1, fileNode2 }; + Reflect.on(instance).set("fileNodes",fileNodes); + + AlphaFineConfigManager configManager = EasyMock.createMock(AlphaFineConfigManager.class); + EasyMock.expect(configManager.isContainTemplate()).andReturn(true).anyTimes(); + EasyMock.replay(configManager); + + DesignerEnvManager manager = EasyMock.createMock(DesignerEnvManager.class); + EasyMock.expect(manager.getAlphaFineConfigManager()).andReturn(configManager).anyTimes(); + EasyMock.replay(manager); + PowerMock.mockStatic(DesignerEnvManager.class); + DesignerEnvManager.getEnvManager(); + PowerMock.expectLastCall().andReturn(manager).anyTimes(); + PowerMock.replay(DesignerEnvManager.class); + + List list = new ArrayList<>(); + PowerMock.mockStatic(AlphaFineHelper.class); + AlphaFineHelper.getFilterResult(); + PowerMock.expectLastCall().andReturn(list).anyTimes(); + AlphaFineHelper.findFolderName(""); + PowerMock.expectLastCall().andReturn("").anyTimes(); + AlphaFineHelper.checkCancel(); + PowerMock.expectLastCall().andVoid().anyTimes(); + PowerMock.replay(AlphaFineHelper.class); + + SearchResult alphaCellModels = new SearchResult(); + Reflect.on(instance).set("filterModelList",alphaCellModels); + Reflect.on(instance).call("doSearch",searchText); + assertEquals(alphaCellModels.size(),2); + } +} \ No newline at end of file From 3559ecc77756b6f63e388b6d6d3f539426013bd2 Mon Sep 17 00:00:00 2001 From: Yyming Date: Tue, 15 Sep 2020 14:59:25 +0800 Subject: [PATCH 033/100] =?UTF-8?q?REPORT-39757=20=E5=B0=91=E4=B8=AA?= =?UTF-8?q?=E7=A9=BA=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alphafine/search/manager/impl/FileSearchManager.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java index c867390702..1af1ce48fd 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java @@ -109,7 +109,7 @@ public class FileSearchManager implements AlphaFineSearchProvider { if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isContainTemplate()) { for (FileNode node : fileNodes) { String name = node.getName().toLowerCase(); - name = name.replaceAll(StringUtils.BLANK,StringUtils.EMPTY); + name = name.replaceAll(StringUtils.BLANK, StringUtils.EMPTY); if (name.contains(searchText)) { FileModel model = new FileModel(node.getName(), node.getEnvPath()); if (!AlphaFineHelper.getFilterResult().contains(model)) { @@ -123,6 +123,7 @@ public class FileSearchManager implements AlphaFineSearchProvider { /** * 搜索模板内容 + * * @param searchText */ private void doFileContentSearch(String searchText) { From 6033271af219eab9019ecd4063a3f9677ea23176 Mon Sep 17 00:00:00 2001 From: "Yuan.Wang" <1536296691@qq.com> Date: Tue, 15 Sep 2020 15:35:13 +0800 Subject: [PATCH 034/100] =?UTF-8?q?REPORT-39894=20=E4=B8=8D=E5=B0=86?= =?UTF-8?q?=E8=87=AA=E9=80=82=E5=BA=94=E5=B8=83=E5=B1=80=E5=92=8C=E7=BB=9D?= =?UTF-8?q?=E5=AF=B9=E5=B8=83=E5=B1=80=E7=9A=84=E5=AD=90=E7=B1=BB=E5=8A=A0?= =?UTF-8?q?=E5=85=A5=E9=A1=B6=E5=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/designer/creator/XCreator.java | 7 +++++++ .../fr/design/designer/creator/XWAbsoluteBodyLayout.java | 4 ++++ .../java/com/fr/design/designer/creator/XWFitLayout.java | 5 +++++ .../com/fr/design/designer/creator/XWParameterLayout.java | 6 ++++-- .../design/designer/creator/cardlayout/XWTabFitLayout.java | 4 ++++ .../main/java/com/fr/design/mainframe/TopXCreators.java | 3 +++ 6 files changed, 27 insertions(+), 2 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XCreator.java b/designer-form/src/main/java/com/fr/design/designer/creator/XCreator.java index 5eb284c7ba..ec83a1f9a5 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XCreator.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XCreator.java @@ -805,4 +805,11 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo return false; } + /** + * 是否支持置顶显示 + */ + public boolean isTopable() { + return true; + } + } diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XWAbsoluteBodyLayout.java b/designer-form/src/main/java/com/fr/design/designer/creator/XWAbsoluteBodyLayout.java index 9a7d6dc975..2c88e62525 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XWAbsoluteBodyLayout.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XWAbsoluteBodyLayout.java @@ -131,4 +131,8 @@ public class XWAbsoluteBodyLayout extends XWAbsoluteLayout { return false; } + @Override + public boolean isTopable() { + return false; + } } diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XWFitLayout.java b/designer-form/src/main/java/com/fr/design/designer/creator/XWFitLayout.java index 06aca3c1b3..3e425b4cd9 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XWFitLayout.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XWFitLayout.java @@ -1222,6 +1222,11 @@ public class XWFitLayout extends XLayoutContainer { return false; } + @Override + public boolean isTopable() { + return false; + } + public boolean switch2FitBodyLayout(XCreator creator) { try { XWFitLayout xfl = (XWFitLayout) creator.getBackupParent(); diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XWParameterLayout.java b/designer-form/src/main/java/com/fr/design/designer/creator/XWParameterLayout.java index 3fc35a265c..1d37024d98 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XWParameterLayout.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XWParameterLayout.java @@ -251,6 +251,8 @@ public class XWParameterLayout extends XWAbsoluteLayout { return false; } - - + @Override + public boolean isTopable() { + return false; + } } diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java b/designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java index 8d5d232fa6..a706674c7b 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java @@ -639,4 +639,8 @@ public class XWTabFitLayout extends XWFitLayout { checkVisible(); } + @Override + public boolean isTopable() { + return true; + } } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/TopXCreators.java b/designer-form/src/main/java/com/fr/design/mainframe/TopXCreators.java index 4c5ba6527e..89b261bb9a 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/TopXCreators.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/TopXCreators.java @@ -58,6 +58,9 @@ public class TopXCreators extends JComponent { SelectionModel selectionModel = designer.getSelectionModel(); XCreator[] xCreators = selectionModel.getSelection().getSelectedCreators(); for (XCreator creator : xCreators) { + if (!creator.isTopable()) { + continue; + } XWCardMainBorderLayout topXMainBorderLayout = XCreatorUtils.getTopXMainBorderLayout(creator); add(new TopXCreator(designer, creator)); if (topXMainBorderLayout != null) { From 643c946415e4c347b7afcec00df864abc84e5b71 Mon Sep 17 00:00:00 2001 From: hades Date: Tue, 15 Sep 2020 18:49:51 +0800 Subject: [PATCH 035/100] =?UTF-8?q?REPORT-38872=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8https=E8=AF=81=E4=B9=A6=E5=AF=86=E7=A0=81=E6=98=8E?= =?UTF-8?q?=E6=96=87=E5=AD=98=E5=82=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../env/RemoteDesignerWorkspaceInfo.java | 38 ++++++++++- .../src/main/java/com/fr/env/EnvListPane.java | 24 ++++++- .../env/RemoteDesignerWorkspaceInfoTest.java | 67 +++++++++++++++++++ 3 files changed, 125 insertions(+), 4 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/env/RemoteDesignerWorkspaceInfo.java b/designer-base/src/main/java/com/fr/design/env/RemoteDesignerWorkspaceInfo.java index 2f30f70b97..37a671eeb8 100644 --- a/designer-base/src/main/java/com/fr/design/env/RemoteDesignerWorkspaceInfo.java +++ b/designer-base/src/main/java/com/fr/design/env/RemoteDesignerWorkspaceInfo.java @@ -40,6 +40,12 @@ public class RemoteDesignerWorkspaceInfo implements DesignerWorkspaceInfo { private WorkspaceConnectionInfo connection; + /** + * 标记下新创建的远程工作目录 兼容存留的远程目录客户升级后再回退 读取为密文 + * 仅保证当前新增是加密的 + */ + private boolean newCreated; + public static RemoteDesignerWorkspaceInfo create(WorkspaceConnectionInfo connection) { RemoteDesignerWorkspaceInfo info = new RemoteDesignerWorkspaceInfo(); info.connection = connection; @@ -79,12 +85,21 @@ public class RemoteDesignerWorkspaceInfo implements DesignerWorkspaceInfo { return remindTime; } + public boolean isNewCreated() { + return newCreated; + } + + public void setNewCreated(boolean newCreated) { + this.newCreated = newCreated; + } + @Override public void readXML(XMLableReader reader) { if (reader.isAttr()) { this.name = reader.getAttrAsString("name", StringUtils.EMPTY); this.remindTime = reader.getAttrAsString("remindTime", StringUtils.EMPTY); + this.newCreated = reader.getAttrAsBoolean("newCreated", false); } if (reader.isChildNode()) { String tagName = reader.getTagName(); @@ -92,32 +107,49 @@ public class RemoteDesignerWorkspaceInfo implements DesignerWorkspaceInfo { String url = reader.getAttrAsString("url", StringUtils.EMPTY); String username = reader.getAttrAsString("username", StringUtils.EMPTY); //密码解密 - String password = SecurityToolbox.defaultDecrypt(reader.getAttrAsString("password", StringUtils.EMPTY).replaceAll(" ", "\r\n")); + String password = SecurityToolbox.defaultDecrypt(reader.getAttrAsString("password", StringUtils.EMPTY).replaceAll(StringUtils.BLANK, "\r\n")); String certPath = reader.getAttrAsString("certPath", StringUtils.EMPTY); - String certSecretKey = reader.getAttrAsString("certSecretKey", StringUtils.EMPTY); + String certSecretKey = readCertSecretKey(reader); boolean rememberPwd = reader.getAttrAsBoolean("rememberPwd", true); this.connection = new WorkspaceConnectionInfo(url, username, password, certPath, certSecretKey, rememberPwd); } } } + private String readCertSecretKey(XMLableReader reader) { + if (isNewCreated()) { + return SecurityToolbox.defaultDecrypt(reader.getAttrAsString("certSecretKey", StringUtils.EMPTY).replaceAll(StringUtils.BLANK, "\r\n")); + } else { + return reader.getAttrAsString("certSecretKey", StringUtils.EMPTY); + } + } + @Override public void writeXML(XMLPrintWriter writer) { writer.attr("name", name); writer.attr("remindTime", remindTime); + writer.attr("newCreated", isNewCreated()); if (this.connection != null) { writer.startTAG("Connection"); writer.attr("url", connection.getUrl()); writer.attr("username", connection.getUserName()); writer.attr("password", SecurityToolbox.defaultEncrypt(connection.getPassword())); writer.attr("certPath", connection.getCertPath()); - writer.attr("certSecretKey", connection.getCertSecretKey()); + writeCertSecretKey(writer); writer.attr("rememberPwd", connection.isRememberPwd()); writer.end(); } } + private void writeCertSecretKey(XMLPrintWriter writer) { + if (isNewCreated()) { + writer.attr("certSecretKey", SecurityToolbox.defaultEncrypt(connection.getCertSecretKey())); + } else { + writer.attr("certSecretKey", connection.getCertSecretKey()); + } + } + @Override @SuppressWarnings("squid:S2975") public Object clone() throws CloneNotSupportedException { diff --git a/designer-base/src/main/java/com/fr/env/EnvListPane.java b/designer-base/src/main/java/com/fr/env/EnvListPane.java index 911a7b22f8..2d875cb458 100644 --- a/designer-base/src/main/java/com/fr/env/EnvListPane.java +++ b/designer-base/src/main/java/com/fr/env/EnvListPane.java @@ -3,6 +3,7 @@ package com.fr.env; import com.fr.design.DesignerEnvManager; import com.fr.design.dialog.FineJOptionPane; import com.fr.design.env.DesignerWorkspaceInfo; +import com.fr.design.env.DesignerWorkspaceType; import com.fr.design.env.LocalDesignerWorkspaceInfo; import com.fr.design.env.RemoteDesignerWorkspaceInfo; import com.fr.design.gui.controlpane.JListControlPane; @@ -17,8 +18,10 @@ import com.fr.stable.core.PropertyChangeAdapter; import javax.swing.*; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Set; /** * @author yaohwu @@ -98,11 +101,30 @@ public class EnvListPane extends JListControlPane { DesignerEnvManager mgr = DesignerEnvManager.getEnvManager(); //这里代码时序换一下,因为update中需要借助mgr来获取提醒时间,已确认mgr对res无依赖 Nameable[] res = this.update(); + Set set = findNewWorkSpaceInfo(res); mgr.clearAllEnv(); for (Nameable re : res) { NameObject nameObject = (NameObject) re; - mgr.putEnv(nameObject.getName(), (DesignerWorkspaceInfo) nameObject.getObject()); + DesignerWorkspaceInfo info = (DesignerWorkspaceInfo) nameObject.getObject(); + if (set.contains(re) && info.getType() == DesignerWorkspaceType.Remote) { + RemoteDesignerWorkspaceInfo newInfo = (RemoteDesignerWorkspaceInfo) info; + newInfo.setNewCreated(true); + mgr.putEnv(nameObject.getName(), newInfo); + } else { + mgr.putEnv(nameObject.getName(), info); + } } return this.getSelectedName(); } + + private Set findNewWorkSpaceInfo(Nameable[] res) { + Set set = new HashSet<>(); + for (Nameable val : res) { + NameObject nameObject = (NameObject) val; + if (DesignerEnvManager.getEnvManager().getWorkspaceInfo(nameObject.getName()) == null) { + set.add(val); + } + } + return set; + } } diff --git a/designer-base/src/test/java/com/fr/design/env/RemoteDesignerWorkspaceInfoTest.java b/designer-base/src/test/java/com/fr/design/env/RemoteDesignerWorkspaceInfoTest.java index 54dbae3b02..d6e89cd93f 100644 --- a/designer-base/src/test/java/com/fr/design/env/RemoteDesignerWorkspaceInfoTest.java +++ b/designer-base/src/test/java/com/fr/design/env/RemoteDesignerWorkspaceInfoTest.java @@ -1,9 +1,16 @@ package com.fr.design.env; +import com.fr.invoke.Reflect; +import com.fr.stable.xml.XMLPrintWriter; +import com.fr.stable.xml.XMLReaderHelper; +import com.fr.stable.xml.XMLableReader; import com.fr.workspace.connect.WorkspaceConnectionInfo; import junit.framework.TestCase; import org.junit.Assert; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; + /** * @author hades * @version 10.0 @@ -22,4 +29,64 @@ public class RemoteDesignerWorkspaceInfoTest extends TestCase { Assert.assertFalse(workspaceInfo3.checkValid()); } + public void testReadXml() { + String xml0 = ""; + String xml1 = ""; + byte[] bytes0 = xml0.getBytes(); + byte[] bytes1 = xml1.getBytes(); + RemoteDesignerWorkspaceInfo info = new RemoteDesignerWorkspaceInfo(); + ByteArrayInputStream in0 = new ByteArrayInputStream(bytes0); + ByteArrayInputStream in1 = new ByteArrayInputStream(bytes1); + + try { + XMLableReader reader0 = XMLReaderHelper.createXMLableReader(in0, XMLPrintWriter.XML_ENCODER); + Reflect.on(reader0).set("state", 1); + info.setNewCreated(true); + info.readXML(reader0); + Assert.assertEquals("xxxxxxx", info.getConnection().getCertSecretKey()); + + XMLableReader reader1 = XMLReaderHelper.createXMLableReader(in1, XMLPrintWriter.XML_ENCODER); + Reflect.on(reader1).set("state", 1); + info.setNewCreated(false); + info.readXML(reader1); + Assert.assertEquals("xxxxxxx", info.getConnection().getCertSecretKey()); + } catch (Exception ignore) { + + } + } + + public void testWriteXml() { + ByteArrayOutputStream out0 = new ByteArrayOutputStream(); + XMLPrintWriter writer0 = XMLPrintWriter.create(out0); + RemoteDesignerWorkspaceInfo info0 = RemoteDesignerWorkspaceInfo.create(new WorkspaceConnectionInfo("127.0.0.1", "1", "1", "/xxx", "xxxxx", true)); + info0.setNewCreated(true); + info0.writeXML(writer0); + writer0.close(); + String result0 = new String(out0.toByteArray()); + Assert.assertTrue(result0.contains("certSecretKey")); + Assert.assertFalse(result0.contains("certSecretKey=\"xxxxx\"")); + + ByteArrayOutputStream out1 = new ByteArrayOutputStream(); + XMLPrintWriter writer1 = XMLPrintWriter.create(out1); + RemoteDesignerWorkspaceInfo info1 = RemoteDesignerWorkspaceInfo.create(new WorkspaceConnectionInfo("127.0.0.1", "1", "1", "/xxx", "xxxxx", true)); + info1.writeXML(writer1); + writer1.close(); + String result1 = new String(out1.toByteArray()); + Assert.assertTrue(result1.contains("certSecretKey")); + Assert.assertTrue(result1.contains("certSecretKey=\"xxxxx\"")); + + } + } From 9b25fb0625ff48a20f042c7881331cdc217f47ff Mon Sep 17 00:00:00 2001 From: Yyming Date: Wed, 16 Sep 2020 11:16:26 +0800 Subject: [PATCH 036/100] =?UTF-8?q?REPORT-39757=20=E5=A4=84=E7=90=86?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E8=AF=8D=E9=AB=98=E4=BA=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cell/render/ContentCellRender.java | 24 +++-- .../alphafine/component/AlphaFineDialog.java | 88 ++++++++----------- .../alphafine/preview/PluginPreviewPane.java | 2 +- .../alphafine/preview/RobotPreviewPane.java | 4 +- .../manager/impl/FileSearchManager.java | 6 +- .../manager/impl/SegmentationManager.java | 5 +- .../cell/render/ContentCellRenderTest.java | 23 +++++ 7 files changed, 82 insertions(+), 70 deletions(-) create mode 100644 designer-realize/src/test/java/com/fr/design/mainframe/alphafine/cell/render/ContentCellRenderTest.java diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/render/ContentCellRender.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/render/ContentCellRender.java index 07f5b4d4ed..da44fa510f 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/render/ContentCellRender.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/render/ContentCellRender.java @@ -106,11 +106,10 @@ public class ContentCellRender implements ListCellRenderer { if (strings == null) { return modelName; } - for (int i = 0; i < strings.length; i++) { - String primaryStr = getReplacedString(modelName, strings[i]); - modelName = modelName.replaceAll("(?i)" + strings[i], "|" + strings[i] + "|"); + for (String string : strings) { + String primaryStr = getReplacedString(modelName, string); if (StringUtils.isNotEmpty(primaryStr)) { - modelName = modelName.replaceAll(strings[i], primaryStr); + modelName = modelName.replaceAll("(?i)" + primaryStr, "|" + primaryStr + "|"); } } modelName = "