From 68a4c2402ac2e51e5f1906f1ca01598e1fc45706 Mon Sep 17 00:00:00 2001 From: "Leo.Qin" Date: Fri, 8 Mar 2024 15:07:36 +0800 Subject: [PATCH 01/49] =?UTF-8?q?REPORT-115048=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E9=87=8C=E6=8E=A7=E4=BB=B6=E8=83=8C=E6=99=AF=E6=A0=8F?= =?UTF-8?q?=E5=AE=BD=E5=BA=A6=E6=98=BE=E7=A4=BA=E5=BC=82=E5=B8=B8=20?= =?UTF-8?q?=E3=80=90=E9=97=AE=E9=A2=98=E5=8E=9F=E5=9B=A0=E3=80=91=E4=B9=8B?= =?UTF-8?q?=E5=89=8D=E7=9A=84=E5=B8=83=E5=B1=80=E5=AE=9E=E7=8E=B0=E5=90=8E?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E6=9C=89=E7=82=B9=E9=97=AE=E9=A2=98=20?= =?UTF-8?q?=E3=80=90=E6=94=B9=E5=8A=A8=E6=80=9D=E8=B7=AF=E3=80=91=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E6=96=B0=E5=B8=83=E5=B1=80=E9=87=8D=E5=86=99UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 1 + .../widget/DesktopWidgetStyleEditPane.java | 15 +++++-- .../edit/widget/WidgetStyleEditPane.java | 13 +++++- .../widgettheme/BaseStyleSettingPane.java | 40 ++++++++++++------- 4 files changed, 50 insertions(+), 19 deletions(-) diff --git a/build.gradle b/build.gradle index 052b2e40cc..f824ef2e37 100644 --- a/build.gradle +++ b/build.gradle @@ -87,6 +87,7 @@ allprojects { implementation 'com.fr.report:engine-chart:' + frDevVersion implementation 'com.fr.report:engine-i18n:' + frDevVersion implementation 'com.fr.design:design-i18n:' + frDevVersion + implementation 'com.fine.swing.ui:layout:1.0-SNAPSHOT' 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' diff --git a/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/DesktopWidgetStyleEditPane.java b/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/DesktopWidgetStyleEditPane.java index 8bae70e837..69cedccd49 100644 --- a/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/DesktopWidgetStyleEditPane.java +++ b/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/DesktopWidgetStyleEditPane.java @@ -1,9 +1,12 @@ package com.fr.widgettheme.theme.edit.widget; +import com.fine.swing.ui.layout.Column; import com.fr.base.background.ColorBackground; import com.fr.base.theme.TemplateTheme; import com.fr.design.gui.icombobox.LineComboBox; import com.fr.design.gui.icombobox.UIComboBox; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.i18n.Toolkit; import com.fr.design.style.color.NewColorSelectBox; import com.fr.design.utils.DesignUtils; import com.fr.locale.InterProviderFactory; @@ -13,8 +16,6 @@ import com.fr.widgettheme.theme.widget.style.BorderStyle; import com.fr.widgettheme.theme.widget.style.ButtonBackgroundStyle; import com.fr.widgettheme.theme.widget.style.ThemeTextStyle; import com.fr.widgettheme.theme.widget.style.ThemedWidgetStyle; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.i18n.Toolkit; import com.fr.widgettheme.theme.widget.theme.WidgetThemeDisplayConstants; import com.fr.widgettheme.util.WidgetStyleComponentCombiner; import com.fr.widgettheme.util.WidgetThemeDesignerUtils; @@ -22,6 +23,9 @@ import com.fr.widgettheme.util.WidgetThemeDesignerUtils; import java.awt.Color; import java.awt.Component; +import static com.fine.swing.ui.layout.Layouts.cell; +import static com.fine.swing.ui.layout.Layouts.column; + /** * 桌面端主题面板 @@ -51,8 +55,7 @@ public class DesktopWidgetStyleEditPane extends WidgetS initSelectBackgroundColorBox(); initFontNameSelectBox(); return new Component[][]{ - new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Color")), colorSelectBox}, - new Component[]{WidgetThemeDesignerUtils.createTopAlignmentLabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Widget_Background")), WidgetStyleComponentCombiner.combineWidgetBackgroundComponent(widgetBgColorSelectBox, widgetBgAlphaDragPane, colorSelectBox.getPreferredSize().width)}, + new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Color")), colorSelectBox}, new Component[]{WidgetThemeDesignerUtils.createTopAlignmentLabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Widget_Background")), initBackGroundComponent()}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Border_Line")), lineComboBox}, new Component[]{null, lineComboColorSelectBox}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Border_Radius")), borderRadiusSpinner}, @@ -63,6 +66,10 @@ public class DesktopWidgetStyleEditPane extends WidgetS }; } + private Column initBackGroundComponent() { + return column(10, cell(widgetBgColorSelectBox), cell(widgetBgAlphaDragPane)).getComponent(); + } + private void initSelectBackgroundColorBox() { selectBackgroundColorBox = new NewColorSelectBox(140, true); selectBackgroundColorBox.setSelectObject(WidgetThemeDisplayConstants.DEFAULT_THEME_COLOR); diff --git a/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/WidgetStyleEditPane.java b/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/WidgetStyleEditPane.java index 21a64ad229..39389469a6 100644 --- a/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/WidgetStyleEditPane.java +++ b/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/WidgetStyleEditPane.java @@ -1,5 +1,6 @@ package com.fr.widgettheme.theme.edit.widget; +import com.fine.swing.ui.layout.Column; import com.fr.base.theme.TemplateTheme; import com.fr.design.beans.BasicBeanPane; import com.fr.design.designer.IntervalConstants; @@ -29,6 +30,9 @@ import javax.swing.JPanel; import java.awt.BorderLayout; import java.awt.Component; +import static com.fine.swing.ui.layout.Layouts.cell; +import static com.fine.swing.ui.layout.Layouts.column; + /** * 组件样式编辑基础类 @@ -104,7 +108,7 @@ public class WidgetStyleEditPane extends BasicBeanPane< public Component[][] generateComponent() { return new Component[][]{ new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Color")), colorSelectBox}, - new Component[]{WidgetThemeDesignerUtils.createTopAlignmentLabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Widget_Background")), WidgetStyleComponentCombiner.combineWidgetBackgroundComponent(widgetBgColorSelectBox, widgetBgAlphaDragPane, colorSelectBox.getPreferredSize().width)}, + new Component[]{WidgetThemeDesignerUtils.createTopAlignmentLabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Widget_Background")), initBackGroundComponent()}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Border_Line")), lineComboBox}, new Component[]{null, lineComboColorSelectBox}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Border_Radius")), borderRadiusSpinner}, @@ -113,6 +117,13 @@ public class WidgetStyleEditPane extends BasicBeanPane< }; } + private Column initBackGroundComponent() { + return column(10, + cell(widgetBgColorSelectBox), + cell(widgetBgAlphaDragPane) + ).getComponent(); + } + private void initCommonStyleEditor() { colorSelectBox = new NewColorSelectBox(WidgetThemeDisplayConstants.THEME_WIDGET_COMPONENT_WIDTH, true); colorSelectBox.setSelectObject(WidgetThemeDisplayConstants.DEFAULT_THEME_COLOR); diff --git a/designer-form/src/main/java/com/fr/design/widgettheme/BaseStyleSettingPane.java b/designer-form/src/main/java/com/fr/design/widgettheme/BaseStyleSettingPane.java index ef93914823..7460ee65c8 100644 --- a/designer-form/src/main/java/com/fr/design/widgettheme/BaseStyleSettingPane.java +++ b/designer-form/src/main/java/com/fr/design/widgettheme/BaseStyleSettingPane.java @@ -1,25 +1,18 @@ package com.fr.design.widgettheme; +import com.fine.swing.ui.layout.Column; import com.fr.base.background.ColorBackground; import com.fr.base.theme.TemplateTheme; -import com.fr.design.gui.frpane.FontSizeComboPane; -import com.fr.design.gui.frpane.UIPercentDragPane; -import com.fr.design.gui.ibutton.UIColorButton; -import com.fr.design.gui.ibutton.UIToggleButton; -import com.fr.design.gui.icombobox.UIComboBox; -import com.fr.design.utils.DesignUtils; -import com.fr.general.IOUtils; -import com.fr.util.ColorUtils; -import com.fr.widgettheme.theme.widget.style.BorderStyle; -import com.fr.widgettheme.theme.widget.style.ButtonBackgroundStyle; -import com.fr.widgettheme.theme.widget.style.ThemeTextStyle; -import com.fr.widgettheme.theme.widget.style.ThemedWidgetStyle; -import com.fr.widgettheme.theme.bean.ButtonBackground; import com.fr.design.beans.BasicBeanPane; import com.fr.design.designer.IntervalConstants; import com.fr.design.file.HistoryTemplateListCache; +import com.fr.design.gui.frpane.FontSizeComboPane; +import com.fr.design.gui.frpane.UIPercentDragPane; import com.fr.design.gui.ibutton.UIButtonGroup; +import com.fr.design.gui.ibutton.UIColorButton; +import com.fr.design.gui.ibutton.UIToggleButton; import com.fr.design.gui.icombobox.LineComboBox; +import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.style.FRFontPane; import com.fr.design.i18n.Toolkit; @@ -28,10 +21,18 @@ import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.JTemplate; import com.fr.design.style.color.NewColorSelectBox; +import com.fr.design.utils.DesignUtils; import com.fr.design.widget.ui.designer.component.UIBoundSpinner; import com.fr.form.ui.Widget; import com.fr.general.FRFont; +import com.fr.general.IOUtils; +import com.fr.util.ColorUtils; +import com.fr.widgettheme.theme.bean.ButtonBackground; import com.fr.widgettheme.theme.panel.ButtonStyleDefinedPane; +import com.fr.widgettheme.theme.widget.style.BorderStyle; +import com.fr.widgettheme.theme.widget.style.ButtonBackgroundStyle; +import com.fr.widgettheme.theme.widget.style.ThemeTextStyle; +import com.fr.widgettheme.theme.widget.style.ThemedWidgetStyle; import com.fr.widgettheme.theme.widget.theme.WidgetThemeDisplayConstants; import com.fr.widgettheme.util.WidgetStyleComponentCombiner; import com.fr.widgettheme.util.WidgetThemeDesignerUtils; @@ -45,6 +46,9 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import static com.fine.swing.ui.layout.Layouts.cell; +import static com.fine.swing.ui.layout.Layouts.column; + /** * 样式设置pane抽象类 * @@ -152,10 +156,18 @@ public abstract class BaseStyleSettingPane extends BasicBeanPa paneMap.put(StyleSetting.FONT, frFontPane); paneMap.put(StyleSetting.BTN_BACKGROUND, buttonStyleDefinedPane); paneMap.put(StyleSetting.SELECT_COLOR, selectBgColorBox); - paneMap.put(StyleSetting.WIDGET_BACKGROUND, WidgetStyleComponentCombiner.combineWidgetBackgroundComponent(widgetBgColorSelectBox, widgetBgAlphaDragPane, WidgetThemeDisplayConstants.THEME_PC_WIDGET_BACKGROUND_WIDTH)); + paneMap.put(StyleSetting.WIDGET_BACKGROUND, initBackGroundComponent()); paneMap.put(StyleSetting.ICON_COLOR, iconColorSelectBox); } + private Column initBackGroundComponent() { + return column( + 10, + cell(widgetBgColorSelectBox), + cell(widgetBgAlphaDragPane) + ).getComponent(); + } + protected JPanel createHeadPane() { UILabel headLabel = new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Style_Setting")); String[] titles = new String[]{Toolkit.i18nText("Fine-Design_Widget_Follow_Theme"), Toolkit.i18nText("Fine-Design_Widget_Theme_Custom")}; From b1e17a1e83a6f4cd3f70af80ffa3f096de50cd32 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Wed, 20 Mar 2024 17:07:46 +0800 Subject: [PATCH 02/49] =?UTF-8?q?REPORT-115816=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E6=B6=88=E6=81=AF=E6=8E=A8=E9=80=81=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/DesignerEnvManager.java | 1 + 1 file changed, 1 insertion(+) 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 c95f1e5cab..10e515f9c7 100644 --- a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java +++ b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java @@ -1906,6 +1906,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter, AsyncXmlReada .init("jdkHome", (e) -> this.jdkHome = e.getElementValue()) .init("lastBBSTime", DesignerEnvManager.this::readLastBBSTime) .init("lastBBSNewsTime", DesignerEnvManager.this::readLastBBSNewsTime) + .init("uuid", DesignerEnvManager.this::readUUID) .init("ActivationKey", DesignerEnvManager.this::readActiveKey) .init("status", DesignerEnvManager.this::readActiveStatus) .init(CAS_PARAS, DesignerEnvManager.this::readHttpsParas) From 729f17b3b3023d1dd0e84dabe9504575b5853aa2 Mon Sep 17 00:00:00 2001 From: obo Date: Mon, 25 Mar 2024 16:44:05 +0800 Subject: [PATCH 03/49] =?UTF-8?q?REPORT-116843=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E5=9B=BD=E9=99=85=E5=8C=96=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/login/message/DesignerMessageHelper.java | 1 + 1 file changed, 1 insertion(+) diff --git a/designer-base/src/main/java/com/fr/design/login/message/DesignerMessageHelper.java b/designer-base/src/main/java/com/fr/design/login/message/DesignerMessageHelper.java index f3768629b4..b929335962 100644 --- a/designer-base/src/main/java/com/fr/design/login/message/DesignerMessageHelper.java +++ b/designer-base/src/main/java/com/fr/design/login/message/DesignerMessageHelper.java @@ -77,6 +77,7 @@ public class DesignerMessageHelper { String url = CloudCenter.getInstance().acquireUrlByKind("designer.message.push", "https://market.fanruan.com/api/v1/message/designer"); Map params = new HashMap<>(); params.put("designerId", DesignerEnvManager.getEnvManager().getUUID()); + params.put("lang", DesignerEnvManager.getEnvManager().getLanguage()); String result = HttpToolbox.post(url, params); JSONObject response = JSONFactory.createJSON(JSON.OBJECT, result); String status = response.optString(STATUS); From ea09be62bc2916ad34fc1dc4cd86f021d53373b4 Mon Sep 17 00:00:00 2001 From: obo Date: Mon, 25 Mar 2024 16:48:11 +0800 Subject: [PATCH 04/49] =?UTF-8?q?=E7=94=A8toString?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/login/message/DesignerMessageHelper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/login/message/DesignerMessageHelper.java b/designer-base/src/main/java/com/fr/design/login/message/DesignerMessageHelper.java index b929335962..58960d170c 100644 --- a/designer-base/src/main/java/com/fr/design/login/message/DesignerMessageHelper.java +++ b/designer-base/src/main/java/com/fr/design/login/message/DesignerMessageHelper.java @@ -77,7 +77,7 @@ public class DesignerMessageHelper { String url = CloudCenter.getInstance().acquireUrlByKind("designer.message.push", "https://market.fanruan.com/api/v1/message/designer"); Map params = new HashMap<>(); params.put("designerId", DesignerEnvManager.getEnvManager().getUUID()); - params.put("lang", DesignerEnvManager.getEnvManager().getLanguage()); + params.put("lang", DesignerEnvManager.getEnvManager().getLanguage().toString()); String result = HttpToolbox.post(url, params); JSONObject response = JSONFactory.createJSON(JSON.OBJECT, result); String status = response.optString(STATUS); From af88e1248921983c81c443f41843baf067294a59 Mon Sep 17 00:00:00 2001 From: "Leo.Qin" Date: Tue, 26 Mar 2024 11:48:01 +0800 Subject: [PATCH 05/49] =?UTF-8?q?REPORT-116550=20=E6=8E=A7=E4=BB=B6?= =?UTF-8?q?=E5=A2=9E=E5=BC=BA=E6=98=BE=E7=A4=BA=EF=BC=8C=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E5=9C=86=E8=A7=92=E5=B1=9E=E6=80=A7=E5=90=8E=E6=97=A0=E6=95=88?= =?UTF-8?q?,=E5=9C=86=E8=A7=92=E8=AE=BE=E7=BD=AE=E6=A1=86=E6=89=8B?= =?UTF-8?q?=E5=8A=A8=E8=BE=93=E5=85=A5=E6=95=B0=E5=AD=97=E5=90=8E=EF=BC=8C?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E6=8C=89=E5=9B=9E=E8=BD=A6=E6=89=8D=E8=83=BD?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=20=E3=80=90=E9=97=AE=E9=A2=98=E5=8E=9F?= =?UTF-8?q?=E5=9B=A0=E3=80=91=E4=BA=A4=E4=BA=92=E9=97=AE=E9=A2=98=E3=80=82?= =?UTF-8?q?=E4=B9=8B=E5=89=8D=E4=BD=BF=E7=94=A8=E7=9A=84UIBoundSpinner?= =?UTF-8?q?=EF=BC=8C=E5=88=87=E6=8D=A2=E9=9D=A2=E6=9D=BF=E5=A4=B1=E7=84=A6?= =?UTF-8?q?=E6=97=B6=E4=B8=8D=E4=BC=9A=E8=A7=A6=E5=8F=91=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=20=E3=80=90=E6=94=B9=E5=8A=A8=E6=80=9D=E8=B7=AF=E3=80=91?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E7=A1=AE=E8=AE=A4=E4=BF=AE=E6=94=B9=E4=BA=A4?= =?UTF-8?q?=E4=BA=92=E3=80=82=E6=94=B9=E4=B8=BAUISpinner=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=EF=BC=8C=E5=A4=B1=E7=84=A6=E6=97=B6=E8=A7=A6=E5=8F=91=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/widgettheme/BaseStyleSettingPane.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/widgettheme/BaseStyleSettingPane.java b/designer-form/src/main/java/com/fr/design/widgettheme/BaseStyleSettingPane.java index 7460ee65c8..a06a872bf1 100644 --- a/designer-form/src/main/java/com/fr/design/widgettheme/BaseStyleSettingPane.java +++ b/designer-form/src/main/java/com/fr/design/widgettheme/BaseStyleSettingPane.java @@ -14,6 +14,7 @@ import com.fr.design.gui.ibutton.UIToggleButton; import com.fr.design.gui.icombobox.LineComboBox; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.ispinner.UISpinner; import com.fr.design.gui.style.FRFontPane; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; @@ -22,7 +23,6 @@ import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.JTemplate; import com.fr.design.style.color.NewColorSelectBox; import com.fr.design.utils.DesignUtils; -import com.fr.design.widget.ui.designer.component.UIBoundSpinner; import com.fr.form.ui.Widget; import com.fr.general.FRFont; import com.fr.general.IOUtils; @@ -72,7 +72,7 @@ public abstract class BaseStyleSettingPane extends BasicBeanPa */ protected NewColorSelectBox borderColorSelectBox; // 圆角边框 - protected UIBoundSpinner borderRadiusSpinner; + protected UISpinner borderRadiusSpinner; // 字体详细设置 protected FRFontPane frFontPane; // 按钮背景设置 @@ -358,7 +358,7 @@ public abstract class BaseStyleSettingPane extends BasicBeanPa private void initBorderPane() { lineComboBox = new LineComboBox(WidgetThemeDisplayConstants.BORDER_LINE_STYLE_ARRAY); borderColorSelectBox = new NewColorSelectBox(WidgetThemeDisplayConstants.THEME_WIDGET_COMPONENT_WIDTH, true); - borderRadiusSpinner = new UIBoundSpinner(0, Integer.MAX_VALUE, 1); + borderRadiusSpinner = new UISpinner(0, Integer.MAX_VALUE, 1); lineComboBox.addItemListener(e -> borderColorSelectBox.setVisible(!Integer.valueOf(0).equals(e.getItem()))); } } From 5772def147d835732e5493bb2e1b6186b1d773f3 Mon Sep 17 00:00:00 2001 From: loy Date: Tue, 26 Mar 2024 15:46:31 +0800 Subject: [PATCH 06/49] =?UTF-8?q?KERNEL-17437=20=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=BA=90=E4=BB=A3=E7=A0=81=E7=A7=BB=E5=8A=A8=E5=88=B0=E7=8B=AC?= =?UTF-8?q?=E7=AB=8B=E4=BB=93=E5=BA=93?= 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 f824ef2e37..885826a0de 100644 --- a/build.gradle +++ b/build.gradle @@ -79,7 +79,8 @@ allprojects { implementation 'com.fr.third:fine-third:' + frVersion implementation 'com.fr.core:fine-core:' + frDevVersion implementation 'com.fr.activator:fine-activator:' + frVersion - implementation 'com.fr.datasource:fine-datasource:' + frVersion + implementation 'com.fr.datasource:fine-datasource-api:4.1-SNAPSHOT' + implementation 'com.fr.datasource:fine-datasource-core:4.1-SNAPSHOT' implementation 'com.fr.decision:fine-decision:' + frVersion implementation 'com.fr.schedule:fine-schedule:' + frVersion implementation 'com.fr.report:engine-report:' + frDevVersion From 964a83d165310693ff6d6c08880b231807f79a8a Mon Sep 17 00:00:00 2001 From: shine Date: Fri, 29 Mar 2024 17:05:50 +0800 Subject: [PATCH 07/49] =?UTF-8?q?fix:=20=E6=8A=A5=E8=A1=A8=E5=9D=97?= =?UTF-8?q?=E9=80=82=E9=85=8Dfvs=E6=B7=B1=E6=B5=85=E8=89=B2=E4=B8=BB?= =?UTF-8?q?=E9=A2=98=20#REPORT-116912?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../utils/gui/AdjustWorkBookDefaultStyleUtils.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/utils/gui/AdjustWorkBookDefaultStyleUtils.java b/designer-base/src/main/java/com/fr/design/utils/gui/AdjustWorkBookDefaultStyleUtils.java index c3c087b4db..4bc1794561 100644 --- a/designer-base/src/main/java/com/fr/design/utils/gui/AdjustWorkBookDefaultStyleUtils.java +++ b/designer-base/src/main/java/com/fr/design/utils/gui/AdjustWorkBookDefaultStyleUtils.java @@ -18,13 +18,23 @@ public class AdjustWorkBookDefaultStyleUtils { private static final Color TEMPLATE_BACKGROUND = new Color(16, 11, 43); private static final Color CELL_ELEMENT_BORDER = new Color(110, 110, 110); private static final Color CELL_ELEMENT_FONT_FOREGROUND = Color.WHITE; + private static final Color CELL_ELEMENT_FONT_FOREGROUND_4_LIGHT_THEME = Color.BLACK; private static Color currentStoryBack = null; + private static boolean isDarkTheme = true; public static void setCurrentStoryBack(Color color) { currentStoryBack = color; } + public static void setIsDarkTheme(boolean isDarkTheme) { + AdjustWorkBookDefaultStyleUtils.isDarkTheme = isDarkTheme; + } + + private static Color getCellForegroundColor() { + return isDarkTheme ? CELL_ELEMENT_FONT_FOREGROUND : CELL_ELEMENT_FONT_FOREGROUND_4_LIGHT_THEME; + } + private static Color getCurrentStoryBack() { return currentStoryBack == null ? TEMPLATE_BACKGROUND : currentStoryBack; } @@ -39,7 +49,7 @@ public class AdjustWorkBookDefaultStyleUtils { public static Style adjustCellElement(Style style) { if (DesignModeContext.isDuchampMode()) { - style = style.deriveFRFont(style.getFRFont().applyForeground(CELL_ELEMENT_FONT_FOREGROUND)); + style = style.deriveFRFont(style.getFRFont().applyForeground(getCellForegroundColor())); style = style.deriveBorder(0, CELL_ELEMENT_BORDER, 0, CELL_ELEMENT_BORDER, 0, CELL_ELEMENT_BORDER, @@ -49,7 +59,7 @@ public class AdjustWorkBookDefaultStyleUtils { } public static Color adjustCellElementFontForeground(Color color) { - return DesignModeContext.isDuchampMode() ? CELL_ELEMENT_FONT_FOREGROUND : color; + return DesignModeContext.isDuchampMode() ? getCellForegroundColor() : color; } public static void adjustFloatElement(FloatElement floatElement) { From 9baa4f112ec009ab3a12f0bf656367c3e1d5c825 Mon Sep 17 00:00:00 2001 From: "Leo.Qin" Date: Tue, 2 Apr 2024 20:01:47 +0800 Subject: [PATCH 08/49] =?UTF-8?q?REPORT-116327=20=E6=9D=A1=E7=A0=81?= =?UTF-8?q?=E5=A2=9E=E5=BC=BA=E6=8F=92=E4=BB=B6=EF=BC=8C=E6=96=B0=E5=BB=BA?= =?UTF-8?q?=E6=9D=A1=E7=A0=81=EF=BC=8C=E6=9D=A1=E7=A0=81=E7=9A=84=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E9=85=8D=E7=BD=AE=E4=BC=9A=E8=B7=9F=E9=9A=8F=E4=B8=8A?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E8=AE=BE=E7=BD=AE=E7=9A=84=E6=9D=A1=E7=A0=81?= =?UTF-8?q?=E5=8F=98=E5=8C=96=20=E3=80=90=E9=97=AE=E9=A2=98=E5=8E=9F?= =?UTF-8?q?=E5=9B=A0=E3=80=91=E5=8D=95=E5=85=83=E6=A0=BC=E4=B8=BA=E7=A9=BA?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E6=9C=AA=E5=88=B7=E6=96=B0=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF=EF=BC=8C=E5=AF=BC=E8=87=B4=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF=E4=B8=AD=E9=85=8D=E7=BD=AE=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E8=A2=AB=E9=87=8D=E7=BD=AE=20=E3=80=90=E6=94=B9=E5=8A=A8?= =?UTF-8?q?=E6=80=9D=E8=B7=AF=E3=80=91=E9=87=8D=E7=BD=AE=E6=89=80=E6=9C=89?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/present/PresentPane.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/present/PresentPane.java b/designer-realize/src/main/java/com/fr/design/present/PresentPane.java index 8e8a669c9f..95d45fa45d 100644 --- a/designer-realize/src/main/java/com/fr/design/present/PresentPane.java +++ b/designer-realize/src/main/java/com/fr/design/present/PresentPane.java @@ -52,10 +52,9 @@ public class PresentPane extends UIComboBoxPane { @Override public void populateBean(Present ob) { if(ob == null) { - dictPresentPane.reset(); - formulaPresentPane.reset(); - barCodePane.reset(); - currencyLinePane.reset(); + for (FurtherBasicBeanPane pane : cards) { + pane.reset(); + } } super.populateBean(ob); } From 9c5b553a686ffc53a820e2a5e70a8c9a0ad1709b Mon Sep 17 00:00:00 2001 From: "Leo.Qin" Date: Wed, 3 Apr 2024 17:19:47 +0800 Subject: [PATCH 09/49] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E4=B8=8BUI?= =?UTF-8?q?=EF=BC=8C=E6=B7=BB=E5=8A=A0=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../theme/edit/widget/DesktopWidgetStyleEditPane.java | 9 +++++++-- .../theme/edit/widget/WidgetStyleEditPane.java | 2 ++ .../com/fr/design/widgettheme/BaseStyleSettingPane.java | 2 ++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/DesktopWidgetStyleEditPane.java b/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/DesktopWidgetStyleEditPane.java index 69cedccd49..4af7b9b6d1 100644 --- a/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/DesktopWidgetStyleEditPane.java +++ b/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/DesktopWidgetStyleEditPane.java @@ -9,6 +9,7 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.i18n.Toolkit; import com.fr.design.style.color.NewColorSelectBox; import com.fr.design.utils.DesignUtils; +import com.fr.design.widget.FRWidgetFactory; import com.fr.locale.InterProviderFactory; import com.fr.stable.StringUtils; import com.fr.util.ColorUtils; @@ -55,7 +56,8 @@ public class DesktopWidgetStyleEditPane extends WidgetS initSelectBackgroundColorBox(); initFontNameSelectBox(); return new Component[][]{ - new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Color")), colorSelectBox}, new Component[]{WidgetThemeDesignerUtils.createTopAlignmentLabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Widget_Background")), initBackGroundComponent()}, + new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Color")), colorSelectBox}, + new Component[]{WidgetThemeDesignerUtils.createTopAlignmentLabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Widget_Background")), initBackGroundComponent()}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Border_Line")), lineComboBox}, new Component[]{null, lineComboColorSelectBox}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Widget_Theme_Border_Radius")), borderRadiusSpinner}, @@ -67,7 +69,10 @@ public class DesktopWidgetStyleEditPane extends WidgetS } private Column initBackGroundComponent() { - return column(10, cell(widgetBgColorSelectBox), cell(widgetBgAlphaDragPane)).getComponent(); + return column(10, + cell(widgetBgColorSelectBox), + cell(FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Form_Widget-Style_Alpha"))), + cell(widgetBgAlphaDragPane)).getComponent(); } private void initSelectBackgroundColorBox() { diff --git a/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/WidgetStyleEditPane.java b/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/WidgetStyleEditPane.java index 39389469a6..bf6ad6c4fd 100644 --- a/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/WidgetStyleEditPane.java +++ b/designer-base/src/main/java/com/fr/widgettheme/theme/edit/widget/WidgetStyleEditPane.java @@ -18,6 +18,7 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.style.color.NewColorSelectBox; +import com.fr.design.widget.FRWidgetFactory; import com.fr.general.IOUtils; import com.fr.stable.StringUtils; import com.fr.widgettheme.theme.widget.theme.WidgetThemeDisplayConstants; @@ -120,6 +121,7 @@ public class WidgetStyleEditPane extends BasicBeanPane< private Column initBackGroundComponent() { return column(10, cell(widgetBgColorSelectBox), + cell(FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Form_Widget-Style_Alpha"))), cell(widgetBgAlphaDragPane) ).getComponent(); } diff --git a/designer-form/src/main/java/com/fr/design/widgettheme/BaseStyleSettingPane.java b/designer-form/src/main/java/com/fr/design/widgettheme/BaseStyleSettingPane.java index a06a872bf1..14183ed2e6 100644 --- a/designer-form/src/main/java/com/fr/design/widgettheme/BaseStyleSettingPane.java +++ b/designer-form/src/main/java/com/fr/design/widgettheme/BaseStyleSettingPane.java @@ -23,6 +23,7 @@ import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.JTemplate; import com.fr.design.style.color.NewColorSelectBox; import com.fr.design.utils.DesignUtils; +import com.fr.design.widget.FRWidgetFactory; import com.fr.form.ui.Widget; import com.fr.general.FRFont; import com.fr.general.IOUtils; @@ -164,6 +165,7 @@ public abstract class BaseStyleSettingPane extends BasicBeanPa return column( 10, cell(widgetBgColorSelectBox), + cell(FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Form_Widget-Style_Alpha"))), cell(widgetBgAlphaDragPane) ).getComponent(); } From 0843a998fc6f5b3b720838b7255e3f56833cc2b1 Mon Sep 17 00:00:00 2001 From: "Leo.Qin" Date: Wed, 3 Apr 2024 17:21:45 +0800 Subject: [PATCH 10/49] =?UTF-8?q?REPORT-116410=20=E6=96=B0=E5=A4=9A?= =?UTF-8?q?=E9=80=89=E4=B8=8B=E6=8B=89=E6=A0=91=E9=85=8D=E7=BD=AE=E9=A1=B9?= =?UTF-8?q?=E7=BC=BA=E5=A4=B1=20=E3=80=90=E9=97=AE=E9=A2=98=E5=8E=9F?= =?UTF-8?q?=E5=9B=A0=E3=80=91=E6=96=B0=E5=A4=9A=E9=80=89=E4=B8=8B=E6=8B=89?= =?UTF-8?q?=E6=A0=91=E4=B9=8B=E5=89=8D=E5=BD=93=E4=BD=9C=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E5=99=A8=E4=BA=86=EF=BC=8C=E5=B0=91=E4=BA=86=E4=BA=9B=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=20=E3=80=90=E6=94=B9=E5=8A=A8=E6=80=9D=E8=B7=AF?= =?UTF-8?q?=E3=80=91=E4=BD=BF=E7=94=A8=E4=B8=8B=E6=8B=89=E6=A1=86=E7=9B=B8?= =?UTF-8?q?=E5=90=8C=E7=9A=84=E9=85=8D=E7=BD=AE=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../processor/WidgetThemeCreatorPaneAdder.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/widgettheme/processor/WidgetThemeCreatorPaneAdder.java b/designer-form/src/main/java/com/fr/design/widgettheme/processor/WidgetThemeCreatorPaneAdder.java index 1e36b42e0e..b2e3b70a86 100644 --- a/designer-form/src/main/java/com/fr/design/widgettheme/processor/WidgetThemeCreatorPaneAdder.java +++ b/designer-form/src/main/java/com/fr/design/widgettheme/processor/WidgetThemeCreatorPaneAdder.java @@ -1,8 +1,11 @@ package com.fr.design.widgettheme.processor; -import com.fr.design.widgettheme.common.SelectEditorSettingPane; -import com.fr.widgettheme.util.WidgetThemeDesignerUtils; import com.fr.design.beans.BasicBeanPane; +import com.fr.design.widgettheme.common.ButtonSettingPane; +import com.fr.design.widgettheme.common.EditorSettingPane; +import com.fr.design.widgettheme.common.NormalButtonSettingPane; +import com.fr.design.widgettheme.common.SelectEditorSettingPane; +import com.fr.design.widgettheme.common.TreeEditorSettingPane; import com.fr.form.parameter.FormSubmitButton; import com.fr.form.ui.Button; import com.fr.form.ui.CheckBox; @@ -21,10 +24,7 @@ import com.fr.form.ui.TreeEditor; import com.fr.report.web.button.form.TreeNodeToggleButton; import com.fr.report.web.button.write.AppendRowButton; import com.fr.report.web.button.write.DeleteRowButton; -import com.fr.design.widgettheme.common.ButtonSettingPane; -import com.fr.design.widgettheme.common.EditorSettingPane; -import com.fr.design.widgettheme.common.NormalButtonSettingPane; -import com.fr.design.widgettheme.common.TreeEditorSettingPane; +import com.fr.widgettheme.util.WidgetThemeDesignerUtils; import com.fr.widgettheme.utils.WidgetThemeServerUtils; import java.util.Arrays; @@ -97,7 +97,7 @@ public class WidgetThemeCreatorPaneAdder { } private static void acceptEditor(Class creator, List> extraPaneList) { - boolean accept = WidgetThemeServerUtils.isNewComboBoxTreeEditor(creator) || EDITOR_SET.contains(creator); + boolean accept = EDITOR_SET.contains(creator); if (accept) { insertShortCut(extraPaneList, new EditorSettingPane<>()); } @@ -126,7 +126,7 @@ public class WidgetThemeCreatorPaneAdder { } private static void acceptSelect(Class creator, List> extraPaneList) { - boolean accept = SELECT_SET.contains(creator); + boolean accept = WidgetThemeServerUtils.isNewComboBoxTreeEditor(creator) || SELECT_SET.contains(creator); if (accept) { insertShortCut(extraPaneList, new SelectEditorSettingPane<>()); } From 2f846bdcabc2230d93740d49029ea1b0204975e5 Mon Sep 17 00:00:00 2001 From: Zhanying <2446962908@qq.com> Date: Thu, 11 Apr 2024 17:58:07 +0800 Subject: [PATCH 11/49] =?UTF-8?q?REPORT-115482=20fix:=20=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E4=B8=AD=E6=8A=A5=E8=A1=A8=E5=9D=97=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=A0=BC=E6=8F=92=E5=85=A5=E5=9B=BE=E7=89=87=EF=BC=8C?= =?UTF-8?q?=E9=A2=84=E8=A7=88=E6=8A=A5=E9=94=99=EF=BC=8C=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E5=8D=A1=E6=AD=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../style/background/image/ImagePreviewPane.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/style/background/image/ImagePreviewPane.java b/designer-base/src/main/java/com/fr/design/style/background/image/ImagePreviewPane.java index bc4f3f41cc..f24fed4ba0 100644 --- a/designer-base/src/main/java/com/fr/design/style/background/image/ImagePreviewPane.java +++ b/designer-base/src/main/java/com/fr/design/style/background/image/ImagePreviewPane.java @@ -9,6 +9,7 @@ import com.fr.base.Style; import com.fr.design.gui.iscrollbar.UIScrollBar; import com.fr.general.ImageWithSuffix; +import com.fr.log.FineLoggerFactory; import com.fr.stable.CoreGraphHelper; import javax.swing.JComponent; @@ -92,9 +93,14 @@ public class ImagePreviewPane extends JComponent implements Scrollable, ImagePre isLoading = false; CoreGraphHelper.waitForImage(image); - imageWidth = image.getWidth(null); - imageHeight = image.getHeight(null); - + if (image.getFineImage() != null && image.getImage() != null) { + try { + imageWidth = image.getWidth(null); + imageHeight = image.getHeight(null); + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + } this.setToolTipText("Image Size: " + imageWidth + "x" + imageHeight + "px"); } fireChangeListener(); From 8662a36b5c80ff7ad10c4d819d6ca1455b235504 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Wed, 17 Apr 2024 13:49:42 +0800 Subject: [PATCH 12/49] =?UTF-8?q?=E6=97=A0jira=E4=BB=BB=E5=8A=A1=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8D=95=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/test/java/com/fr/design/EnvChangeEntranceTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/test/java/com/fr/design/EnvChangeEntranceTest.java b/designer-base/src/test/java/com/fr/design/EnvChangeEntranceTest.java index cab7037cd2..dd7617d95c 100644 --- a/designer-base/src/test/java/com/fr/design/EnvChangeEntranceTest.java +++ b/designer-base/src/test/java/com/fr/design/EnvChangeEntranceTest.java @@ -49,7 +49,7 @@ public class EnvChangeEntranceTest { EasyMock.expect(selectedEnv.getRemindTime()).andReturn(null); FunctionalHttpRequest request = EasyMock.mock(FunctionalHttpRequest.class); - EasyMock.expect(request.getServiceList()).andReturn(null); + EasyMock.expect(request.getServiceList(connectionInfo)).andReturn(null); PowerMock.expectNew(FunctionalHttpRequest.class, connectionInfo).andReturn(request).anyTimes(); EasyMock.expect(request.getServerBranch()).andReturn(remoteBranch); From a5e76c7efd8449d7c56a934c1bbe16d37aef7a06 Mon Sep 17 00:00:00 2001 From: obo Date: Thu, 18 Apr 2024 14:49:18 +0800 Subject: [PATCH 13/49] =?UTF-8?q?INO-19848=20fix:=E8=8B=B1=E6=96=87?= =?UTF-8?q?=E7=9A=84=E7=BF=BB=E8=AD=AF=E6=9C=83=E4=BB=A4=E5=AE=A2=E6=88=B6?= =?UTF-8?q?=E8=AA=A4=E6=9C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/widget/ui/designer/ComboBoxDefinePane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/ComboBoxDefinePane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/ComboBoxDefinePane.java index 900072b7c0..583346868b 100644 --- a/designer-form/src/main/java/com/fr/design/widget/ui/designer/ComboBoxDefinePane.java +++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/ComboBoxDefinePane.java @@ -27,7 +27,7 @@ public class ComboBoxDefinePane extends DictEditorDefinePane { public Component[] createWaterMarkPane() { waterMarkField = new UITextField(); - return new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_WaterMark")), waterMarkField}; + return new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_PlaceHolder")), waterMarkField}; } protected void populateSubDictionaryEditorBean(ComboBox ob){ From 5853dfb155501fbbdffea0c02658297777386595 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Levy=2EXie-=E8=A7=A3=E5=AE=89=E6=A3=AE?= Date: Tue, 23 Apr 2024 19:43:51 +0800 Subject: [PATCH 14/49] =?UTF-8?q?REPORT-118629=20FRM=E5=B9=B6=E8=A1=8C?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E5=81=B6=E5=8F=91=E5=9F=8B=E7=82=B9=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/record/analyzer/advice/MonitorAdvice.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/record/analyzer/advice/MonitorAdvice.java b/designer-base/src/main/java/com/fr/design/record/analyzer/advice/MonitorAdvice.java index a4ddfcd4e8..e2c94a8f10 100644 --- a/designer-base/src/main/java/com/fr/design/record/analyzer/advice/MonitorAdvice.java +++ b/designer-base/src/main/java/com/fr/design/record/analyzer/advice/MonitorAdvice.java @@ -88,8 +88,9 @@ public class MonitorAdvice implements DesignerAnalyzerAdvice { MessageRecorderFactory.getInstance().syncSubmit(message); } } - } catch (Exception ignore) { + } catch (Exception ex) { //埋点信息入库失败应该不能影响业务流程 + FineLoggerFactory.getLogger().debug("[Metric] failed to log message.", ex); } finally { sessionBinder.detachSession(); } @@ -113,7 +114,11 @@ public class MonitorAdvice implements DesignerAnalyzerAdvice { } public static void recordSQLDetail(String uuid) { - DBMeterFactory.getMeter().submit(uuid); + try { + DBMeterFactory.getMeter().submit(uuid); + } catch (Exception e) { + FineLoggerFactory.getLogger().debug("[Metric] failed to log sql detail.", e); + } } public static void recordSQL(Compute once, MeasureObject measureObject) { From 3a206f1dd3d9724888fecf7b94c4714853f89726 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Mon, 6 May 2024 17:23:15 +0800 Subject: [PATCH 15/49] =?UTF-8?q?REPORT-120129=20=E3=80=90=E5=AE=95?= =?UTF-8?q?=E6=9C=BA=E3=80=91=E6=AD=A3=E5=BC=8F=E7=8E=AF=E5=A2=83=E5=B7=A5?= =?UTF-8?q?=E7=A8=8B=E5=AE=95=E6=9C=BA=E5=88=86=E6=9E=90=E5=8E=9F=E5=9B=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/editlock/EditLockChangeChecker.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/editlock/EditLockChangeChecker.java b/designer-base/src/main/java/com/fr/design/editlock/EditLockChangeChecker.java index d45c4c1813..cb4d5550f7 100644 --- a/designer-base/src/main/java/com/fr/design/editlock/EditLockChangeChecker.java +++ b/designer-base/src/main/java/com/fr/design/editlock/EditLockChangeChecker.java @@ -32,7 +32,7 @@ public abstract class EditLockChangeChecker { */ public void start() { this.scheduler = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory("EditLockChangeChecker")); - this.scheduler.scheduleAtFixedRate(new Runnable() { + this.scheduler.scheduleWithFixedDelay(new Runnable() { @Override public void run() { // 判断是否为远程设计环境 From 434180a8f5e3ff7967dffac1782cbbb15556a13b Mon Sep 17 00:00:00 2001 From: roger Date: Mon, 6 May 2024 18:15:31 +0800 Subject: [PATCH 16/49] =?UTF-8?q?REPORT-118163=20=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=88=B0=E4=BA=86=E6=95=B0=E6=8D=AE=E9=9B=86sql=E8=AF=AD?= =?UTF-8?q?=E5=8F=A5=E4=B8=AD=E6=B3=A8=E9=87=8A=E7=9A=84=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/datapane/preview/sql/PreviewPerformedSqlPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java index c4996d539e..97d043abde 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java @@ -251,7 +251,7 @@ public class PreviewPerformedSqlPane extends JDialog implements ActionListener { private static Parameter[] processParameters(DBTableData tableData, Calculator calculator) { ParameterProvider[] parameters = tableData.getParameters(); if (parameters == null || parameters.length == 0) { - tableData.setParameters(ParameterHelper.analyze4Parameters(tableData.getQuery(), false)); + tableData.setParameters(ParameterHelper.analyze4Parameters(tableData.getQueryWithoutSqlNote(), false)); return new Parameter[0]; } return Parameter.providers2Parameter(Calculator.processParameters(calculator, parameters)); From e6cd8b6876cc70499cd336407b4ebaa40b30fda5 Mon Sep 17 00:00:00 2001 From: roger Date: Wed, 8 May 2024 11:06:57 +0800 Subject: [PATCH 17/49] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/datapane/preview/sql/PreviewPerformedSqlPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java index 97d043abde..fdf9249763 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java @@ -251,7 +251,7 @@ public class PreviewPerformedSqlPane extends JDialog implements ActionListener { private static Parameter[] processParameters(DBTableData tableData, Calculator calculator) { ParameterProvider[] parameters = tableData.getParameters(); if (parameters == null || parameters.length == 0) { - tableData.setParameters(ParameterHelper.analyze4Parameters(tableData.getQueryWithoutSqlNote(), false)); + tableData.setParameters(ParameterHelper.analyze4Parameters(tableData.getQueryWithoutAnnotation(), false)); return new Parameter[0]; } return Parameter.providers2Parameter(Calculator.processParameters(calculator, parameters)); From 123de4010e6508a03b4eb647ef3b7ddc72d5ef55 Mon Sep 17 00:00:00 2001 From: roger Date: Wed, 8 May 2024 11:29:19 +0800 Subject: [PATCH 18/49] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/datapane/preview/sql/PreviewPerformedSqlPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java index fdf9249763..c827a17ebe 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/preview/sql/PreviewPerformedSqlPane.java @@ -251,7 +251,7 @@ public class PreviewPerformedSqlPane extends JDialog implements ActionListener { private static Parameter[] processParameters(DBTableData tableData, Calculator calculator) { ParameterProvider[] parameters = tableData.getParameters(); if (parameters == null || parameters.length == 0) { - tableData.setParameters(ParameterHelper.analyze4Parameters(tableData.getQueryWithoutAnnotation(), false)); + tableData.setParameters(ParameterHelper.analyze4Parameters(tableData.getQueryWithoutComments(), false)); return new Parameter[0]; } return Parameter.providers2Parameter(Calculator.processParameters(calculator, parameters)); From a23fdf10dbcadd410e4ef6c8f071171490d4f3b4 Mon Sep 17 00:00:00 2001 From: obo Date: Tue, 14 May 2024 20:06:15 +0800 Subject: [PATCH 19/49] =?UTF-8?q?REPORT-119405=20fix:=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E6=95=B0=E6=8D=AE=E8=84=B1=E6=95=8F=E5=9B=BD=E9=99=85?= =?UTF-8?q?=E5=8C=96=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../view/rule/DesensitizationRuleChoosePane.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleChoosePane.java b/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleChoosePane.java index d37ed152d2..0cd81e32fa 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleChoosePane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleChoosePane.java @@ -16,8 +16,11 @@ import com.fr.design.i18n.DesignSizeI18nManager; import com.fr.design.i18n.Toolkit; import com.fr.stable.StringUtils; import com.fr.stable.collections.CollectionUtils; +import sun.swing.table.DefaultTableCellHeaderRenderer; import javax.swing.AbstractCellEditor; +import javax.swing.BorderFactory; +import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTable; import javax.swing.SwingUtilities; @@ -132,6 +135,16 @@ public class DesensitizationRuleChoosePane extends JPanel { this.setDefaultRenderer(DesensitizationRuleStatusPane.class, new DesensitizationRuleStatusPane()); this.createTable().getColumnModel().getColumn(0).setMaxWidth(20); this.createTable().getColumnModel().getColumn(3).setMaxWidth(60); + this.createTable().getColumnModel().getColumn(3).setHeaderRenderer(new DefaultTableCellHeaderRenderer() { + @Override + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { + JLabel headerLabel = new JLabel(value != null ? value.toString() : ""); + headerLabel.setToolTipText((String) value); + headerLabel.setHorizontalAlignment(JLabel.CENTER); + headerLabel.setBorder(BorderFactory.createMatteBorder(0, 0, 3, 0, new Color(216, 216, 216, 175))); + return headerLabel; + } + }); } @Override From 7456d860fb8450619aea6453a20598c6a4e46174 Mon Sep 17 00:00:00 2001 From: obo Date: Wed, 15 May 2024 10:46:01 +0800 Subject: [PATCH 20/49] =?UTF-8?q?REPORT-119405=20=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E6=89=93=E5=8C=85=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../view/rule/DesensitizationRuleChoosePane.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleChoosePane.java b/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleChoosePane.java index 0cd81e32fa..54b139a3dd 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleChoosePane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleChoosePane.java @@ -16,14 +16,15 @@ import com.fr.design.i18n.DesignSizeI18nManager; import com.fr.design.i18n.Toolkit; import com.fr.stable.StringUtils; import com.fr.stable.collections.CollectionUtils; -import sun.swing.table.DefaultTableCellHeaderRenderer; import javax.swing.AbstractCellEditor; import javax.swing.BorderFactory; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTable; +import javax.swing.SwingConstants; import javax.swing.SwingUtilities; +import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; import java.awt.CardLayout; @@ -135,12 +136,12 @@ public class DesensitizationRuleChoosePane extends JPanel { this.setDefaultRenderer(DesensitizationRuleStatusPane.class, new DesensitizationRuleStatusPane()); this.createTable().getColumnModel().getColumn(0).setMaxWidth(20); this.createTable().getColumnModel().getColumn(3).setMaxWidth(60); - this.createTable().getColumnModel().getColumn(3).setHeaderRenderer(new DefaultTableCellHeaderRenderer() { + this.createTable().getColumnModel().getColumn(3).setHeaderRenderer(new DefaultTableCellRenderer() { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { JLabel headerLabel = new JLabel(value != null ? value.toString() : ""); headerLabel.setToolTipText((String) value); - headerLabel.setHorizontalAlignment(JLabel.CENTER); + headerLabel.setHorizontalAlignment(SwingConstants.CENTER); headerLabel.setBorder(BorderFactory.createMatteBorder(0, 0, 3, 0, new Color(216, 216, 216, 175))); return headerLabel; } From 7be4c3a9cfd1538bac695dfc82c9cf2a975110b3 Mon Sep 17 00:00:00 2001 From: obo Date: Wed, 15 May 2024 18:34:04 +0800 Subject: [PATCH 21/49] =?UTF-8?q?REPORT-119567=20fix:=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E5=9C=B0=E5=9B=BE=E5=9B=BE=E8=A1=A8=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E4=B8=8E=E5=85=B6=E4=BB=96=E4=B8=8D=E4=B8=80?= =?UTF-8?q?=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/chart/gui/type/AbstractChartTypePane.java | 2 +- .../com/fr/van/chart/map/designer/type/MapStatusPane.java | 4 ++-- .../chart/map/designer/type/VanChartMapSourceChoosePane.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java index cde6e8fd6e..d662289006 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/type/AbstractChartTypePane.java @@ -100,7 +100,7 @@ public abstract class AbstractChartTypePane extends Fur } } - double[] columnSize = {p, vs, f}; + double[] columnSize = {f}; double[] rowSize = {p, p, p, p, p, p, p}; if (styleList != null && !styleList.isEmpty()) { diff --git a/designer-chart/src/main/java/com/fr/van/chart/map/designer/type/MapStatusPane.java b/designer-chart/src/main/java/com/fr/van/chart/map/designer/type/MapStatusPane.java index 668a9b7745..d97122037a 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/map/designer/type/MapStatusPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/map/designer/type/MapStatusPane.java @@ -81,8 +81,8 @@ public class MapStatusPane extends JPanel { double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH; double s = TableLayout4VanChartHelper.SECOND_EDIT_AREA_WIDTH; double[] rowSize = {p, p, p}; - double[] columnSize = {d, e}; - double[] column = {d, s}; + double[] columnSize = {p, e}; + double[] column = {p, s}; Component[][] comps = new Component[][]{ new Component[]{null, null}, diff --git a/designer-chart/src/main/java/com/fr/van/chart/map/designer/type/VanChartMapSourceChoosePane.java b/designer-chart/src/main/java/com/fr/van/chart/map/designer/type/VanChartMapSourceChoosePane.java index 5be437619c..f8b03105d0 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/map/designer/type/VanChartMapSourceChoosePane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/map/designer/type/VanChartMapSourceChoosePane.java @@ -36,7 +36,7 @@ public class VanChartMapSourceChoosePane extends JPanel implements UIObserver { this.setBorder(BorderFactory.createEmptyBorder(10, 5, 0, 0)); double p = TableLayout.PREFERRED; - double[] columnSize = {230}; + double[] columnSize = {TableLayout.FILL}; double[] rowSize = {p, p, p, p, p, p, p, p}; JPanel panel = new JPanel(new BorderLayout()); From 523581498381f710848226c2727a8be40d6b595a Mon Sep 17 00:00:00 2001 From: obo Date: Thu, 16 May 2024 14:41:58 +0800 Subject: [PATCH 22/49] =?UTF-8?q?REPORT-119601=20fix:=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E6=96=B0=E6=A8=A1=E6=9D=BF=E6=8C=89=E9=92=AE=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E4=B8=8D=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/com/fr/design/i18n/dimension_ko_KR.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties b/designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties index 3fd1ffcad1..0570bba1d9 100644 --- a/designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties +++ b/designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties @@ -14,7 +14,7 @@ com.fr.design.report.fit.firstColumn=130*20 com.fr.design.report.fit.column=100*20 com.fr.design.lock.LockInfoDialog=500*180 com.fr.design.mainframe.ForbiddenPane.refreshButton=80*24 -com.fr.start.common.DesignerOpenEmptyPanel.createButton=70*24 +com.fr.start.common.DesignerOpenEmptyPanel.createButton=90*24 com.fr.design.cell.expand.sort.pane=267*165 com.fr.design.sort.rule.item=125*20 com.fr.design.ds.column.sort.pane=250*180 From 127b792fd524c4e0fcf29bcc58bd1ec5fa6f5b73 Mon Sep 17 00:00:00 2001 From: Harrison Date: Thu, 16 May 2024 16:06:42 +0800 Subject: [PATCH 23/49] =?UTF-8?q?REPORT-120151=20feat:=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=20forkId=20=E5=92=8C=E7=9B=B8=E5=85=B3=E5=9F=8B?= =?UTF-8?q?=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/mainframe/JTemplate.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java b/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java index 3cd8fdb78c..9697113e27 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java @@ -6,6 +6,7 @@ import com.fr.base.extension.FileExtension; import com.fr.base.info.TemplateSaveInfoContext; import com.fr.base.io.BaseBook; import com.fr.base.iofile.attr.DesignBanCopyAttrMark; +import com.fr.base.iofile.attr.ForkIdAttrMark; import com.fr.base.iofile.attr.TemplateIdAttrMark; import com.fr.base.iofile.attr.TemplateThemeAttrMark; import com.fr.base.svg.IconUtils; @@ -343,6 +344,18 @@ public abstract class JTemplate> generateTemplateId(); } + /** + * 如果没有 forkId, 则计算 forkId + * 要求在 templateId, 创建后执行。 + */ + protected void computeForkIdIfAbsent() { + + ForkIdAttrMark forkIdAttrMark = this.template.getAttrMark(ForkIdAttrMark.XML_TAG); + if (forkIdAttrMark == null || StringUtils.isEmpty(forkIdAttrMark.getForkId())) { + this.template.addAttrMark(new ForkIdAttrMark(this.template.getTemplateID())); + } + } + /** * 收集图表信息 */ @@ -971,6 +984,7 @@ public abstract class JTemplate> } // 在保存之前,初始化 templateID generateNewTemplateIdForSaveAs(); + computeForkIdIfAbsent(); this.editingFILE = editingFILE; TemplateSaveInfoContext.getInstance().startCollect(template); @@ -1855,6 +1869,8 @@ public abstract class JTemplate> } // 在保存之前,初始化 templateID generateNewTemplateIdForSaveAs(); + computeForkIdIfAbsent(); + this.editingFILE = editingFILE; boolean result = this.saveToNewRealFile(oldName); if (result) { From e494a2905fe5e14861f0bac1b459cf040d9539e9 Mon Sep 17 00:00:00 2001 From: lidongy <1879087903@qq.com> Date: Thu, 16 May 2024 16:24:59 +0800 Subject: [PATCH 24/49] =?UTF-8?q?REPORT-116316=E3=80=90MT=E3=80=91?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=BF=9E=E6=8E=A5=E4=B8=A2=E5=A4=B1=E3=80=90?= =?UTF-8?q?=E6=A0=B7=E6=9D=BF=E5=AE=A2=E6=88=B7=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/data/datapane/ChoosePane.java | 1 - 1 file changed, 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/ChoosePane.java b/designer-base/src/main/java/com/fr/design/data/datapane/ChoosePane.java index 99a294fdde..ce76a77751 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/ChoosePane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/ChoosePane.java @@ -355,7 +355,6 @@ public class ChoosePane extends BasicBeanPane implements Refresha */ @Override public void refresh() { - DBUtils.refreshDatabase(); String schema = StringUtils.isEmpty(schemaBox.getSelectedItem()) ? null : schemaBox.getSelectedItem(); DataCoreUtils.refreshTables(getConnection(), TableProcedure.TABLE, schema); FineJOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Refresh_Successfully") + "!", com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Refresh_Database"), From e46ceeeac39b26f40520cd4d8503fb799371b9f6 Mon Sep 17 00:00:00 2001 From: obo Date: Tue, 21 May 2024 15:43:15 +0800 Subject: [PATCH 25/49] =?UTF-8?q?REPORT-114938=20fix:=E5=85=B6=E4=BB=96?= =?UTF-8?q?=E8=AF=AD=E8=A8=80=E4=B8=8B=EF=BC=8Cfrm=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E7=A7=BB=E5=8A=A8=E7=AB=AF=E8=AE=BE=E7=BD=AE=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E4=B8=8D=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/mobile/ui/MobileStyleDefinePane.java | 3 ++- .../com/fr/design/mainframe/mobile/utils/DesignerUtils.java | 3 ++- .../main/resources/com/fr/design/i18n/dimension_en.properties | 2 ++ .../resources/com/fr/design/i18n/dimension_ja_JP.properties | 2 ++ .../resources/com/fr/design/i18n/dimension_ko_KR.properties | 2 ++ .../main/resources/com/fr/design/i18n/dimension_zh.properties | 2 ++ .../resources/com/fr/design/i18n/dimension_zh_TW.properties | 2 ++ 7 files changed, 14 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/MobileStyleDefinePane.java b/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/MobileStyleDefinePane.java index 8008c5ce8e..e1af0670a8 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/MobileStyleDefinePane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/mobile/ui/MobileStyleDefinePane.java @@ -8,6 +8,7 @@ import com.fr.design.gui.icombobox.LineComboBox; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UISpinner; +import com.fr.design.i18n.DesignSizeI18nManager; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayoutHelper; @@ -210,7 +211,7 @@ public class MobileStyleDefinePane extends BasicBeanPane { private UILabel createConfigLabel(String title) { UILabel label = new UILabel(title + ":", UILabel.RIGHT); - label.setPreferredSize(new Dimension(75, 20)); + label.setPreferredSize(DesignSizeI18nManager.getInstance().i18nDimension("com.fr.design.mainframe.mobile.ui.MobileStyleDefinePane.configLabel")); return label; } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/mobile/utils/DesignerUtils.java b/designer-base/src/main/java/com/fr/design/mainframe/mobile/utils/DesignerUtils.java index a2e8d0656f..fae27d5e93 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/mobile/utils/DesignerUtils.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/mobile/utils/DesignerUtils.java @@ -4,6 +4,7 @@ import com.fr.design.constants.LayoutConstants; import com.fr.design.designer.IntervalConstants; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ilable.UILabel; +import com.fr.design.i18n.DesignSizeI18nManager; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.widget.UITitleSplitLine; import com.fr.design.style.color.NewColorSelectBox; @@ -44,7 +45,7 @@ public class DesignerUtils { public static UILabel createConfigLabel(String title) { UILabel label = new UILabel(title, UILabel.RIGHT); - label.setPreferredSize(new Dimension(100, 20)); + label.setPreferredSize(DesignSizeI18nManager.getInstance().i18nDimension("com.fr.design.mainframe.mobile.utils.DesignerUtils.configLabel")); return label; } diff --git a/designer-base/src/main/resources/com/fr/design/i18n/dimension_en.properties b/designer-base/src/main/resources/com/fr/design/i18n/dimension_en.properties index bf7aba4f40..1405f81c6a 100644 --- a/designer-base/src/main/resources/com/fr/design/i18n/dimension_en.properties +++ b/designer-base/src/main/resources/com/fr/design/i18n/dimension_en.properties @@ -27,3 +27,5 @@ com.fr.design.file.MultiTemplateTabPane.popUpMenu=350*65 com.fr.design.data.datapane.preview.desensitization.view.rule.DesensitizationRuleChoosePane.ruleEditPane=800*600 com.fr.design.formula.FormulaPane=900*600 com.fr.design.formula.FormulaPaneWhenReserveFormula=1200*600 +com.fr.design.mainframe.mobile.ui.MobileStyleDefinePane.configLabel=130*20 +com.fr.design.mainframe.mobile.utils.DesignerUtils.configLabel=140*20 diff --git a/designer-base/src/main/resources/com/fr/design/i18n/dimension_ja_JP.properties b/designer-base/src/main/resources/com/fr/design/i18n/dimension_ja_JP.properties index d070015063..6af9a798c0 100644 --- a/designer-base/src/main/resources/com/fr/design/i18n/dimension_ja_JP.properties +++ b/designer-base/src/main/resources/com/fr/design/i18n/dimension_ja_JP.properties @@ -26,3 +26,5 @@ com.fr.design.file.MultiTemplateTabPane.popUpMenu=240*65 com.fr.design.data.datapane.preview.desensitization.view.rule.DesensitizationRuleChoosePane.ruleEditPane=800*600 com.fr.design.formula.FormulaPane=900*600 com.fr.design.formula.FormulaPaneWhenReserveFormula=900*600 +com.fr.design.mainframe.mobile.ui.MobileStyleDefinePane.configLabel=100*20 +com.fr.design.mainframe.mobile.utils.DesignerUtils.configLabel=130*20 diff --git a/designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties b/designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties index 0570bba1d9..98ac411090 100644 --- a/designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties +++ b/designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties @@ -26,3 +26,5 @@ com.fr.design.file.MultiTemplateTabPane.popUpMenu=240*65 com.fr.design.data.datapane.preview.desensitization.view.rule.DesensitizationRuleChoosePane.ruleEditPane=800*600 com.fr.design.formula.FormulaPane=900*600 com.fr.design.formula.FormulaPaneWhenReserveFormula=900*600 +com.fr.design.mainframe.mobile.ui.MobileStyleDefinePane.configLabel=75*20 +com.fr.design.mainframe.mobile.utils.DesignerUtils.configLabel=100*20 diff --git a/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh.properties b/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh.properties index 2a10d13c7f..9c9e1bd92a 100644 --- a/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh.properties +++ b/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh.properties @@ -26,3 +26,5 @@ com.fr.design.report.WatermarkSettingPane=720*600 com.fr.design.file.MultiTemplateTabPane.popUpMenu=170*65 com.fr.design.formula.FormulaPane=900*600 com.fr.design.formula.FormulaPaneWhenReserveFormula=900*600 +com.fr.design.mainframe.mobile.ui.MobileStyleDefinePane.configLabel=75*20 +com.fr.design.mainframe.mobile.utils.DesignerUtils.configLabel=100*20 diff --git a/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh_TW.properties b/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh_TW.properties index faa620cfc8..03972b51c0 100644 --- a/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh_TW.properties +++ b/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh_TW.properties @@ -25,3 +25,5 @@ com.fr.design.report.WatermarkSettingPane=720*600 com.fr.design.file.MultiTemplateTabPane.popUpMenu=170*65 com.fr.design.formula.FormulaPane=900*600 com.fr.design.formula.FormulaPaneWhenReserveFormula=900*600 +com.fr.design.mainframe.mobile.ui.MobileStyleDefinePane.configLabel=75*20 +com.fr.design.mainframe.mobile.utils.DesignerUtils.configLabel=100*20 From fe51c30b1dc1001ad1002b7c68569e8308b7ec73 Mon Sep 17 00:00:00 2001 From: "Leo.Qin" Date: Wed, 22 May 2024 09:54:04 +0800 Subject: [PATCH 26/49] =?UTF-8?q?REPORT-116546=20=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E6=8E=A7=E4=BB=B6=E4=B9=8B=E5=90=8E=EF=BC=8C?= =?UTF-8?q?cpt=E6=A8=A1=E6=9D=BF=E5=88=87=E6=8D=A2=E5=88=B0frm=E5=8D=A1?= =?UTF-8?q?=E4=BD=8F=20=E3=80=90=E9=97=AE=E9=A2=98=E5=8E=9F=E5=9B=A0?= =?UTF-8?q?=E3=80=91=E5=9B=BE=E7=89=87=E6=8E=A7=E4=BB=B6=E7=9A=84listener?= =?UTF-8?q?=E6=B2=A1=E6=9C=89eventName=EF=BC=8C=E4=BC=9A=E4=BA=A7=E7=94=9F?= =?UTF-8?q?NPE=EF=BC=8C=E5=AF=BC=E8=87=B4UI=E5=8D=A1=E9=A1=BF=20=E3=80=90?= =?UTF-8?q?=E6=94=B9=E5=8A=A8=E6=80=9D=E8=B7=AF=E3=80=91=E5=88=A4=E6=96=AD?= =?UTF-8?q?eventName=E6=98=AF=E5=90=A6=E4=B8=BA=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/gui/controlpane/UIListGroupControlPane.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/designer-base/src/main/java/com/fr/design/gui/controlpane/UIListGroupControlPane.java b/designer-base/src/main/java/com/fr/design/gui/controlpane/UIListGroupControlPane.java index 47581fb626..3b7aa02606 100644 --- a/designer-base/src/main/java/com/fr/design/gui/controlpane/UIListGroupControlPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/controlpane/UIListGroupControlPane.java @@ -118,6 +118,9 @@ public abstract class UIListGroupControlPane extends UIControlPane implements Li for (int i = 0, size = widget.getListenerSize(); i < size; i++) { Listener listener = widget.getListener(i); if (!listener.isDefault()) { + if (StringUtils.isEmpty(listener.getEventName())) { + continue; + } String eventName = switchLang(listener.getEventName()) + (nameObjectList.size() + 1); NameObject nameObject = new NameObject(eventName, listener); nameObjectList.add(nameObject); From 991752cf327a2e117b7f6fbba61caf4a784e6aa4 Mon Sep 17 00:00:00 2001 From: obo Date: Wed, 22 May 2024 14:08:08 +0800 Subject: [PATCH 27/49] =?UTF-8?q?REPORT-119406=20fix:=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E6=95=B0=E6=8D=AE=E8=84=B1=E6=95=8F=E5=9B=BD=E9=99=85?= =?UTF-8?q?=E5=8C=96=E6=98=BE=E7=A4=BA=E4=B8=8D=E5=85=A8=EF=BC=8C=E5=BD=B1?= =?UTF-8?q?=E5=93=8D=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rule/DesensitizationRuleEditPane.java | 35 ++++++++++++------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleEditPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleEditPane.java index 5a0515a59e..76b032ee3d 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleEditPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleEditPane.java @@ -1,5 +1,7 @@ package com.fr.design.data.datapane.preview.desensitization.view.rule; +import com.fine.swing.ui.layout.Column; +import com.fine.swing.ui.layout.Layouts; import com.fr.data.desensitize.rule.base.DesensitizationCondition; import com.fr.data.desensitize.rule.base.DesensitizationRule; import com.fr.data.desensitize.rule.base.DesensitizationRuleSource; @@ -28,6 +30,10 @@ import java.awt.event.FocusListener; import java.util.Arrays; import java.util.Set; +import static com.fine.swing.ui.layout.Layouts.cell; +import static com.fine.swing.ui.layout.Layouts.column; +import static com.fine.swing.ui.layout.Layouts.row; + /** * 脱敏规则编辑页 * @@ -157,26 +163,29 @@ public class DesensitizationRuleEditPane extends BasicBeanPane column = column( + 4, + row( + cell(new UILabel(Toolkit.i18nText("Fine-Design_Report_Desensitization_Part_One") + StringUtils.BLANK)), + cell(retainFrontTextField), + cell(new UILabel(StringUtils.BLANK + Toolkit.i18nText("Fine-Design_Report_Desensitization_Part_Two") + StringUtils.BLANK)), + cell(retainBackTextField), + cell(new UILabel(StringUtils.BLANK + Toolkit.i18nText("Fine-Design_Report_Desensitization_Part_Four") + StringUtils.BLANK)) + ), + row( + cell(new UILabel(Toolkit.i18nText("Fine-Design_Report_Desensitization_Part_Three") + StringUtils.BLANK)), + cell(firstSymbolTextField) + ) + ); // 整体替换 JPanel characterAllReplacePane = FRGUIPaneFactory.createLeftFlowZeroGapBorderPane(); UILabel allReplaceLabel = new UILabel(Toolkit.i18nText("Fine-Design_Report_Desensitization_All_Character_Replace_By") + StringUtils.BLANK); @@ -186,7 +195,7 @@ public class DesensitizationRuleEditPane extends BasicBeanPane Date: Wed, 22 May 2024 16:10:07 +0800 Subject: [PATCH 28/49] =?UTF-8?q?REPORT-115178=20fix:=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E4=B8=BB=E9=A2=98=E7=AE=A1=E7=90=86=E6=98=BE=E7=A4=BA=E8=A2=AB?= =?UTF-8?q?=E6=88=AA=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/utils/DesignUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/utils/DesignUtils.java b/designer-base/src/main/java/com/fr/design/utils/DesignUtils.java index fb8e419fbe..e8c528ade2 100644 --- a/designer-base/src/main/java/com/fr/design/utils/DesignUtils.java +++ b/designer-base/src/main/java/com/fr/design/utils/DesignUtils.java @@ -345,7 +345,7 @@ public class DesignUtils { @Override protected FRFont compute() { FRFont guiFRFont; - Locale defaultLocale = Locale.getDefault(); + Locale defaultLocale = GeneralContext.getLocale(); // JDK9 之后宋体在计算label中字母的空间上出现问题,暂时先用雅黑兼容,以后再统一字体 if (StableUtils.getMajorJavaVersion() >= 9 && OperatingSystem.isWindows()) { guiFRFont = getNamedFont("Microsoft YaHei"); From 375c7f8746f6d5805127c3016dbd6a51b60056bc Mon Sep 17 00:00:00 2001 From: lidongy <1879087903@qq.com> Date: Fri, 7 Jun 2024 15:04:13 +0800 Subject: [PATCH 29/49] =?UTF-8?q?REPORT-122312=20=E3=80=90=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E5=99=A8=E3=80=91win=E7=B3=BB=E7=BB=9F=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E5=99=A8=EF=BC=8C=E6=8A=A5=E8=A1=A8=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=95=B0=E5=AD=97=E6=8E=A7=E4=BB=B6=E3=80=81=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=8E=A7=E4=BB=B6=E6=97=B6=E4=BC=9A=E5=87=BA=E7=8E=B0=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E9=9F=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/widget/component/NumberEditorValidatePane.java | 2 -- .../main/java/com/fr/design/widget/ui/MultiFileEditorPane.java | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/widget/component/NumberEditorValidatePane.java b/designer-base/src/main/java/com/fr/design/widget/component/NumberEditorValidatePane.java index 7fd88dd957..867d66cdfd 100644 --- a/designer-base/src/main/java/com/fr/design/widget/component/NumberEditorValidatePane.java +++ b/designer-base/src/main/java/com/fr/design/widget/component/NumberEditorValidatePane.java @@ -255,7 +255,6 @@ public class NumberEditorValidatePane extends JPanel { allowNegativeCheckBox.setSelected(e.isAllowNegative()); if (AssistUtils.equals(e.getMaxValue(),Double.MAX_VALUE)) { setMaxValueCheckBox.setSelected(false); - maxValueSpinner.setValue(Double.MAX_VALUE); maxValueSpinner.setEnabled(false); } else { setMaxValueCheckBox.setSelected(true); @@ -265,7 +264,6 @@ public class NumberEditorValidatePane extends JPanel { if (AssistUtils.equals(e.getMinValue(),-Double.MAX_VALUE)) { setMinValueCheckBox.setSelected(false); - minValueSpinner.setValue(-Double.MAX_VALUE); minValueSpinner.setEnabled(false); } else { diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/MultiFileEditorPane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/MultiFileEditorPane.java index 8b945f6f82..fe86b7a770 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/MultiFileEditorPane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/MultiFileEditorPane.java @@ -41,7 +41,7 @@ public class MultiFileEditorPane extends FieldEditorDefinePane singleFileCheckBox.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); acceptType = new DictionaryComboBox(DictionaryConstants.acceptTypes, DictionaryConstants.fileTypeDisplays); // acceptType.setPreferredSize(new Dimension(100, 20)); - fileSizeField = new UISpinner(0, Integer.MAX_VALUE, 1, -1); + fileSizeField = new UISpinner(0, Integer.MAX_VALUE, 1); fileSizeField.setPreferredSize(new Dimension(140, 20)); JPanel fileSizePane = new JPanel(new BorderLayout()); From 25abc68ee2c54c378dd6c2cc2cc6c95217c4fd77 Mon Sep 17 00:00:00 2001 From: roger Date: Tue, 18 Jun 2024 10:23:56 +0800 Subject: [PATCH 30/49] =?UTF-8?q?REPORT-123731=20=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=9B=86=E5=90=AB=E6=9C=89=E6=B3=A8=E9=87=8A=E5=92=8C=E6=9C=AA?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=E7=9A=84=E5=8F=82=E6=95=B0=EF=BC=8C=E4=BD=86?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=E5=8F=82=E6=95=B0=E4=BE=9D=E7=84=B6=E7=94=9F?= =?UTF-8?q?=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/data/tabledata/tabledatapane/DBTableDataPane.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 4a0d1f665e..ae430b26e3 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 @@ -296,8 +296,8 @@ public class DBTableDataPane extends AbstractTableDataPane implemen private void refreshParameters() { String[] paramTexts = new String[2]; - paramTexts[0] = SqlUtils.tryPureSqlText(this.sqlTextPane.getText()); - paramTexts[1] = SqlUtils.tryPureSqlText(this.pageQuery); + paramTexts[0] = SqlUtils.clearSqlComments(this.sqlTextPane.getText()); + paramTexts[1] = SqlUtils.clearSqlComments(this.pageQuery); List existParameterList = this.editorPane.update(); Parameter[] ps = (existParameterList == null) ? new Parameter[0] : existParameterList.toArray(new Parameter[0]); From a8015a37cf166cf92ec35aad03a087cc68ba9903 Mon Sep 17 00:00:00 2001 From: "Leo.Qin" Date: Thu, 20 Jun 2024 14:36:00 +0800 Subject: [PATCH 31/49] =?UTF-8?q?REPORT-123532=20=E6=8E=A7=E4=BB=B6?= =?UTF-8?q?=E5=AD=97=E4=BD=93=E6=A0=B7=E5=BC=8F=E8=AE=BE=E7=BD=AE=E4=B8=8D?= =?UTF-8?q?=E7=94=9F=E6=95=88=20=E3=80=90=E9=97=AE=E9=A2=98=E5=8E=9F?= =?UTF-8?q?=E5=9B=A0=E3=80=91=E8=AE=BE=E8=AE=A1=E5=99=A8=E7=AB=AF=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=AD=97=E4=BD=93=E6=A0=B7=E5=BC=8F=E5=90=8E=EF=BC=8C?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E4=BF=AE=E6=94=B9=E5=AF=B9=E8=B1=A1=E4=B8=AD?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E5=80=BC=20=E3=80=90=E6=94=B9=E5=8A=A8?= =?UTF-8?q?=E6=80=9D=E8=B7=AF=E3=80=91=E4=BF=AE=E6=94=B9=E5=AF=B9=E8=B1=A1?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/widgettheme/ParaEditorSettingPane.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/designer-form/src/main/java/com/fr/design/widgettheme/ParaEditorSettingPane.java b/designer-form/src/main/java/com/fr/design/widgettheme/ParaEditorSettingPane.java index 5a67090bc2..314e1f5930 100644 --- a/designer-form/src/main/java/com/fr/design/widgettheme/ParaEditorSettingPane.java +++ b/designer-form/src/main/java/com/fr/design/widgettheme/ParaEditorSettingPane.java @@ -41,6 +41,7 @@ public class ParaEditorSettingPane extends EditorSettingPane extends EditorSettingPane Date: Fri, 12 Jul 2024 16:21:20 +0800 Subject: [PATCH 32/49] =?UTF-8?q?REPORT-117002=20feat:=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8UI=E6=80=A7=E8=83=BD=E7=9B=91=E6=8E=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/carton/CartonConstants.java | 61 ++++++ .../carton/CartonThreadExecutorPool.java | 10 +- .../com/fr/design/carton/CartonUtils.java | 147 ++++++++++++++ .../EventDispatchThreadHangMonitor.java | 186 ++++-------------- .../design/carton/FeedbackToolboxDialog.java | 4 +- .../design/carton/SwitchForSwingChecker.java | 37 ++-- .../carton/latency/DesignerLatencyMetric.java | 155 +++++++++++++++ .../design/carton/latency/LatencyLevel.java | 67 +++++++ .../fr/design/mainframe/DesignerFrame.java | 2 + .../main/java/com/fr/start/MainDesigner.java | 2 + 10 files changed, 506 insertions(+), 165 deletions(-) create mode 100644 designer-base/src/main/java/com/fr/design/carton/CartonConstants.java create mode 100644 designer-base/src/main/java/com/fr/design/carton/CartonUtils.java create mode 100644 designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java create mode 100644 designer-base/src/main/java/com/fr/design/carton/latency/LatencyLevel.java diff --git a/designer-base/src/main/java/com/fr/design/carton/CartonConstants.java b/designer-base/src/main/java/com/fr/design/carton/CartonConstants.java new file mode 100644 index 0000000000..c51f1193c5 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/carton/CartonConstants.java @@ -0,0 +1,61 @@ +package com.fr.design.carton; + +import com.fr.stable.ProductConstantsBase; +import com.fr.stable.StableUtils; + +import java.text.SimpleDateFormat; + +/** + * 卡顿常量类管理 + * + * @author Levy.Xie + * @since 11.0 + * Created on 2024/07/04 + */ +public class CartonConstants { + + public static final String TIME = "time"; + public static final String APPID = "appId"; + public static final String USERID = "userId"; + public static final String LOCAL = "local"; + public static final String REMOTE = "remote"; + public static final String OPERANDS_NUM = "operands"; + public static final String DESIGN_METHOD = "designMethod"; + public static final String DESIGNER_VERSION = "designerVersion"; + public static final String DESIGNER_ID = "designerId"; + + public static final String EASY_CHECKER_FILE_NAME = "easy_check_log.csv"; + public static final String TIMER_CHECKER_FILE_NAME = "timer_check_log.csv"; + + /** + * 开启间隔检测后两次检测的相隔时间ms + */ + public static final long CHECK_INTERVAL_MS = 100; + + /** + * 最大的事件允许执行时间,超过该时间则打印堆栈等相关信息 + */ + public static final long UNREASONABLE_DISPATCH_DURATION_MS = 1500; + + /** + * UI检测采样频率 + */ + public static final int LATENCY_SAMPLING_FREQUENCY = 100; + + /** + * 输出日志所在地址 + */ + public static final String JOURNAL_FILE_PATH = StableUtils.pathJoin(ProductConstantsBase.getEnvHome(), "journal_log"); + + /** + * 日期事件格式 + */ + public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + /** + * Designer4Debug类名 + */ + public static final String DEBUG_MAIN_CLASS_NAME = "com.fr.start.Designer4Debug"; + + +} diff --git a/designer-base/src/main/java/com/fr/design/carton/CartonThreadExecutorPool.java b/designer-base/src/main/java/com/fr/design/carton/CartonThreadExecutorPool.java index 39525110b3..d366791b25 100644 --- a/designer-base/src/main/java/com/fr/design/carton/CartonThreadExecutorPool.java +++ b/designer-base/src/main/java/com/fr/design/carton/CartonThreadExecutorPool.java @@ -57,18 +57,18 @@ public class CartonThreadExecutorPool extends ThreadPoolExecutor { private void examineHang() { StackTraceElement[] currentStack = eventThread.getStackTrace(); - if (lastReportedStack!=null && EventDispatchThreadHangMonitor.stacksEqual(currentStack, lastReportedStack)) { + if (lastReportedStack!=null && CartonUtils.stacksEqual(currentStack, lastReportedStack)) { return; } lastReportedStack = currentStack; - String stackTrace = EventDispatchThreadHangMonitor.stackTraceToString(currentStack); + String stackTrace = CartonUtils.stackTraceToString(currentStack); JSONObject jsonObject = new JSONObject(); jsonObject.put(Toolkit.i18nText("Fine-Design_Basic_Carton_Output_Time"), simpleDateFormatThreadSafe.format(System.currentTimeMillis())); jsonObject.put(Toolkit.i18nText("Fine-Design_Basic_Carton_Event_Number"), "swingWorker_" + hangNumber); jsonObject.put(Toolkit.i18nText("Fine-Design_Basic_Carton_Duration_Task_Execute"), timeSoFar() + "ms"); jsonObject.put(Toolkit.i18nText("Fine-Design_Basic_Carton_Stack_Info"), stackTrace); - EventDispatchThreadHangMonitor.outPutJournalLog(jsonObject.toString(), SwitchForSwingChecker.TIMER_CHECK_FLAG); - EventDispatchThreadHangMonitor.checkForDeadlock(); + CartonUtils.outPutJournalLog(jsonObject.toString(), SwitchForSwingChecker.TIMER_CHECK_FLAG); + CartonUtils.checkForDeadlock(); } } @@ -129,7 +129,7 @@ public class CartonThreadExecutorPool extends ThreadPoolExecutor { jsonObject.put(Toolkit.i18nText("Fine-Design_Basic_Carton_Event_Number"), "swingWorker_" + concurrentHashMap.get(currentThreadId).hangNumber); jsonObject.put(Toolkit.i18nText("Fine-Design_Basic_Carton_Task_Start_Time"), simpleDateFormatThreadSafe.format(concurrentHashMap.get(currentThreadId).startTime)); jsonObject.put(Toolkit.i18nText("Fine-Design_Basic_Carton_Task_Total_Time"), runTime + "ms"); - EventDispatchThreadHangMonitor.outPutJournalLog(jsonObject.toString(), SwitchForSwingChecker.EASY_CHECK_FLAG); + CartonUtils.outPutJournalLog(jsonObject.toString(), SwitchForSwingChecker.EASY_CHECK_FLAG); } concurrentHashMap.remove(currentThreadId); diff --git a/designer-base/src/main/java/com/fr/design/carton/CartonUtils.java b/designer-base/src/main/java/com/fr/design/carton/CartonUtils.java new file mode 100644 index 0000000000..b67fe8c504 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/carton/CartonUtils.java @@ -0,0 +1,147 @@ +package com.fr.design.carton; + +import com.fr.log.FineLoggerFactory; +import com.fr.stable.ArrayUtils; +import com.fr.stable.StableUtils; +import com.fr.stable.StringUtils; +import org.jetbrains.annotations.NotNull; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.lang.management.ManagementFactory; +import java.lang.management.ThreadInfo; +import java.lang.management.ThreadMXBean; +import java.text.SimpleDateFormat; + +import static com.fr.design.carton.CartonConstants.EASY_CHECKER_FILE_NAME; +import static com.fr.design.carton.CartonConstants.JOURNAL_FILE_PATH; +import static com.fr.design.carton.CartonConstants.TIMER_CHECKER_FILE_NAME; + +/** + * 设计器卡顿业务工具类 + * + * @author Levy.Xie + * @since 11.0 + * Created on 2024/07/10 + */ +public class CartonUtils { + + /** + * 堆栈元素输出为文本 + * + * @param stackTrace 堆栈元素 + * @return 文本 + */ + public static String stackTraceToString(StackTraceElement[] stackTrace) { + StringBuilder result = new StringBuilder(); + for (StackTraceElement stackTraceElement : stackTrace) { + String indentation = " "; + result.append("~").append(indentation).append(stackTraceElement); + } + return result.toString(); + } + + /** + * 命令行显示堆栈信息 + * + * @param stackTrace 堆栈元素 + * @return 文本 + */ + public static String stackTraceToStringForConsole(StackTraceElement[] stackTrace) { + StringBuilder result = new StringBuilder(); + for (StackTraceElement stackTraceElement : stackTrace) { + String indentation = " "; + result.append("\r\n").append(indentation).append(stackTraceElement); + } + return result.toString(); + } + + /** + * 堆栈是否一致 + * + * @param a 堆栈A + * @param b 堆栈B + * @return 是否一致 + */ + public static boolean stacksEqual(@NotNull StackTraceElement[] a, @NotNull StackTraceElement[] b) { + if (!ArrayUtils.isSameLength(a, b)) { + return false; + } + for (int i = 0; i < a.length; ++i) { + if (!a[i].equals(b[i])) { + return false; + } + } + return true; + } + + /** + * 检查死锁 + */ + public static void checkForDeadlock() { + ThreadMXBean threadBean = ManagementFactory.getThreadMXBean(); + long[] threadIds = threadBean.findDeadlockedThreads(); + if (threadIds == null) { + return; + } + FineLoggerFactory.getLogger().warn("deadlock detected involving the following threads:"); + ThreadInfo[] threadInfos = threadBean.getThreadInfo(threadIds, Integer.MAX_VALUE); + for (ThreadInfo info : threadInfos) { + FineLoggerFactory.getLogger().warn("Thread # {} {} ( {} ) waiting on {} held by {} {}", info.getThreadId(), info.getThreadName(), + info.getThreadState(), info.getLockName(), info.getLockOwnerName(), CartonUtils.stackTraceToStringForConsole(info.getStackTrace())); + } + } + + /** + * 输出卡顿日志 + * + * @param message 文本信息 + * @param flag 类型,true时为简单检查、false时为定时检查 + */ + public static void outPutJournalLog(String message, int flag) { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + String date = simpleDateFormat.format(System.currentTimeMillis()); + String filename = flag == SwitchForSwingChecker.EASY_CHECK_FLAG ? EASY_CHECKER_FILE_NAME : TIMER_CHECKER_FILE_NAME; + String[] split = date.split("-"); + int month = StringUtils.isEmpty(split[1]) ? -1 : Integer.parseInt(split[1]); + String dirPath = StableUtils.pathJoin(JOURNAL_FILE_PATH, split[0], "month-" + month, date); + File dirFile = new File(dirPath); + File file = new File(StableUtils.pathJoin(dirPath, filename)); + try { + if (!file.exists()) { + if (!dirFile.exists()) { + dirFile.mkdirs(); + } + file.createNewFile(); + } + BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file, true)); + String outputMessage = message.replaceAll("~", "\r\n") + "," + "\r\n"; + bufferedWriter.write(outputMessage); + bufferedWriter.close(); + } catch (IOException e) { + FineLoggerFactory.getLogger().error("output fail", e); + } + } + + /** + * 用于判断是不是特定的堆栈 + */ + public static boolean stackTraceElementIs(StackTraceElement e, String className, String methodName, boolean isNative) { + return e.getClassName().equals(className) && e.getMethodName().equals(methodName) && e.isNativeMethod() == isNative; + } + + /** + * 用于判断某个堆栈是否在等待另一个事件 + * 取当前堆栈前三层判断是是不是匹配等待堆栈的格式 + */ + public static boolean isWaitingForNextEvent(StackTraceElement[] currentStack) { + + return currentStack != null && currentStack.length >= 3 && + stackTraceElementIs(currentStack[0], "java.lang.Object", "wait", true) + && stackTraceElementIs(currentStack[1], "java.lang.Object", "wait", false) + && stackTraceElementIs(currentStack[2], "java.awt.EventQueue", "getNextEvent", false); + } + +} diff --git a/designer-base/src/main/java/com/fr/design/carton/EventDispatchThreadHangMonitor.java b/designer-base/src/main/java/com/fr/design/carton/EventDispatchThreadHangMonitor.java index a7bf03b407..988e7dd81d 100644 --- a/designer-base/src/main/java/com/fr/design/carton/EventDispatchThreadHangMonitor.java +++ b/designer-base/src/main/java/com/fr/design/carton/EventDispatchThreadHangMonitor.java @@ -1,34 +1,26 @@ package com.fr.design.carton; import com.fr.concurrent.FineExecutors; +import com.fr.design.carton.latency.DesignerLatencyMetric; import com.fr.design.ui.util.UIUtil; import com.fr.json.JSONObject; -import com.fr.log.FineLoggerFactory; -import com.fr.stable.ArrayUtils; -import com.fr.stable.ProductConstantsBase; -import com.fr.stable.StableUtils; -import com.fr.stable.StringUtils; -import org.jetbrains.annotations.NotNull; import javax.swing.SwingUtilities; import java.awt.EventQueue; import java.awt.Toolkit; import java.awt.AWTEvent; import java.awt.event.WindowEvent; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.lang.management.ManagementFactory; -import java.lang.management.ThreadInfo; -import java.lang.management.ThreadMXBean; -import java.text.SimpleDateFormat; import java.util.LinkedList; import java.util.Timer; import java.util.TimerTask; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; +import static com.fr.design.carton.CartonConstants.CHECK_INTERVAL_MS; +import static com.fr.design.carton.CartonConstants.DATE_FORMAT; +import static com.fr.design.carton.CartonConstants.LATENCY_SAMPLING_FREQUENCY; +import static com.fr.design.carton.CartonConstants.UNREASONABLE_DISPATCH_DURATION_MS; + /** * 参考自git swinghelper * 用于卡顿检测 @@ -38,31 +30,16 @@ import java.util.concurrent.TimeUnit; */ public final class EventDispatchThreadHangMonitor extends EventQueue { - /** - * 日期事件格式 - */ - private static final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + public static final EventDispatchThreadHangMonitor INSTANCE = new EventDispatchThreadHangMonitor(); /** * 一个timer */ private Timer timer; - /** - * 开启间隔检测后两次检测的相隔时间ms - */ - private static final long CHECK_INTERVAL_MS = 100; - /** - * 最大的事件允许执行时间,超过该时间则打印堆栈等相关信息 - */ - private static final long UNREASONABLE_DISPATCH_DURATION_MS = 1500; /** * 事件唯一编码,用于方便日志的查看 */ - private static long hangCount = 0; - /** - * 输出日志所在地址 - */ - private static final String JOURNAL_FILE_PATH = StableUtils.pathJoin(ProductConstantsBase.getEnvHome(), "journal_log"); + private static long hangCount = 0; /** * 类似于一个开关,当该值为默认的false启动时,定时任务在窗口开启前都不会对执行的事件进行检查 */ @@ -103,43 +80,6 @@ public final class EventDispatchThreadHangMonitor extends EventQueue { return hangCount++; } - /** - * @param a can not be null - * @param b can not be null - * @return - */ - public static boolean stacksEqual(@NotNull StackTraceElement[] a, @NotNull StackTraceElement[] b) { - - if (!ArrayUtils.isSameLength(a, b)) { - return false; - } - for (int i = 0; i < a.length; ++i) { - if (!a[i].equals(b[i])) { - return false; - } - } - return true; - } - - /** - * 用于判断是不是特定的堆栈 - */ - public static boolean stackTraceElementIs(StackTraceElement e, String className, String methodName, boolean isNative) { - return e.getClassName().equals(className) && e.getMethodName().equals(methodName) && e.isNativeMethod() == isNative; - } - - /** - * 用于判断某个堆栈是否在等待另一个事件 - * 取当前堆栈前三层判断是是不是匹配等待堆栈的格式 - */ - public static boolean isWaitingForNextEvent(StackTraceElement[] currentStack) { - - return currentStack != null && currentStack.length >= 3 && - stackTraceElementIs(currentStack[0], "java.lang.Object", "wait", true) - && stackTraceElementIs(currentStack[1], "java.lang.Object", "wait", false) - && stackTraceElementIs(currentStack[2], "java.awt.EventQueue", "getNextEvent", false); - } - /** * event事件的包装类 */ @@ -153,11 +93,13 @@ public final class EventDispatchThreadHangMonitor extends EventQueue { //事件开始的时间 private final long startDispatchTimeMillis = System.currentTimeMillis(); //事件编号 - private long hangNumber; + private final long hangNumber; + //构造函数,给当前对象赋一个递增的唯一编号 - public DispatchInfo() { + public DispatchInfo() { hangNumber = getHangCount(); } + //定时调度任务检测的入口,如果执行时间大于设定的值就进入examineHang()方法 public void checkForHang() { if (timeSoFar() > UNREASONABLE_DISPATCH_DURATION_MS) { @@ -168,36 +110,38 @@ public final class EventDispatchThreadHangMonitor extends EventQueue { private void examineHang() { //获取执行线程的当前堆栈 StackTraceElement[] currentStack = eventDispatchThread.getStackTrace(); - if (isWaitingForNextEvent(currentStack)) { + if (CartonUtils.isWaitingForNextEvent(currentStack)) { return; } //某个事件执行时间很长,定时处理时可能会连续打很多个堆栈,对同一个事件的相同堆栈只打一次 - if (lastReportedStack !=null && stacksEqual(lastReportedStack, currentStack)) { + if (lastReportedStack != null && CartonUtils.stacksEqual(lastReportedStack, currentStack)) { return; } - String stackTrace = stackTraceToString(currentStack); + String stackTrace = CartonUtils.stackTraceToString(currentStack); lastReportedStack = currentStack; JSONObject jsonObject = new JSONObject(); - jsonObject.put(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Carton_Output_Time"), simpleDateFormat.format(System.currentTimeMillis())); + jsonObject.put(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Carton_Output_Time"), DATE_FORMAT.format(System.currentTimeMillis())); jsonObject.put(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Carton_Event_Number"), "eventQueue_" + hangNumber); jsonObject.put(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Carton_Duration_Task_Execute"), timeSoFar() + "ms"); jsonObject.put(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Carton_Stack_Info"), stackTrace); - outPutJournalLog(jsonObject.toString(), SwitchForSwingChecker.TIMER_CHECK_FLAG); - checkForDeadlock(); + CartonUtils.outPutJournalLog(jsonObject.toString(), SwitchForSwingChecker.TIMER_CHECK_FLAG); + CartonUtils.checkForDeadlock(); } + //记录连续运行了多长时间 - private long timeSoFar() { + public long timeSoFar() { return (System.currentTimeMillis() - lastDispatchTimeMillis); } + //记录一个事件从被分发到结束的总运行时间 - private long totalTime() { + public long totalTime() { return (System.currentTimeMillis() - startDispatchTimeMillis); } //事件处理完后的时间判断 public void dispose() { if (timeSoFar() > UNREASONABLE_DISPATCH_DURATION_MS) { exportCartonLog(true); - } else if (lastReportedStack != null){ + } else if (lastReportedStack != null) { exportCartonLog(false); } } @@ -208,40 +152,15 @@ public final class EventDispatchThreadHangMonitor extends EventQueue { */ private void exportCartonLog(boolean flag) { JSONObject jsonObject = new JSONObject(); - jsonObject.put(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Carton_Output_Time"), simpleDateFormat.format(System.currentTimeMillis())); + jsonObject.put(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Carton_Output_Time"), DATE_FORMAT.format(System.currentTimeMillis())); jsonObject.put(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Carton_Event_Number"), "eventQueue_" + hangNumber); - jsonObject.put(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Carton_Task_Start_Time"), simpleDateFormat.format(startDispatchTimeMillis)); + jsonObject.put(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Carton_Task_Start_Time"), DATE_FORMAT.format(startDispatchTimeMillis)); if (flag) { jsonObject.put(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Carton_Task_Total_Time"), timeSoFar() + "ms"); } else { jsonObject.put(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Carton_Task_Total_Time"), totalTime() + "ms"); } - outPutJournalLog(jsonObject.toString(), SwitchForSwingChecker.EASY_CHECK_FLAG); - } - } - - public static void outPutJournalLog(String message, int flag) { - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); - String date = simpleDateFormat.format(System.currentTimeMillis()); - String filename = flag == SwitchForSwingChecker.EASY_CHECK_FLAG ? SwitchForSwingChecker.EASY_CHECKER_FILE_NAME: SwitchForSwingChecker.TIMER_CHECKER_FILE_NAME; - String[] split = date.split("-"); - int month = StringUtils.isEmpty(split[1]) ? -1 : Integer.parseInt(split[1]); - String dirPath = StableUtils.pathJoin(JOURNAL_FILE_PATH, split[0], "month-" + month, date); - File dirFile = new File(dirPath); - File file = new File( StableUtils.pathJoin(dirPath, filename)); - try { - if (!file.exists()) { - if (!dirFile.exists()) { - dirFile.mkdirs(); - } - file.createNewFile(); - } - BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file, true)); - String outputMessage = new StringBuilder(message.replaceAll("~", "\r\n")).append(",").append("\r\n").toString(); - bufferedWriter.write(outputMessage); - bufferedWriter.close(); - } catch (IOException e) { - FineLoggerFactory.getLogger().error("output fail", e); + CartonUtils.outPutJournalLog(jsonObject.toString(), SwitchForSwingChecker.EASY_CHECK_FLAG); } } @@ -325,8 +244,7 @@ public final class EventDispatchThreadHangMonitor extends EventQueue { */ @Override protected void dispatchEvent(AWTEvent event) { - //如果两个开关都没开,那就不走重写方法了 - if (!isEasyWitch() && !isTimerWitch()) { + if (!useCustomEventQueue()) { super.dispatchEvent(event); } else { try { @@ -342,6 +260,18 @@ public final class EventDispatchThreadHangMonitor extends EventQueue { } } + private boolean useCustomEventQueue() { + // 开启性能监控或开启卡顿工具箱,则走自定义的EventQueue + return SwitchForSwingChecker.isLatencyMonitoring() || + isEasyWitch() || isTimerWitch(); + } + + private boolean needSampling() { + // UI性能采样逻辑:开启采样并且符合采样频次 + return SwitchForSwingChecker.isLatencyMonitoring() + && (hangCount % LATENCY_SAMPLING_FREQUENCY == 0); + } + /** * Starts tracking a dispatch. */ @@ -357,6 +287,9 @@ public final class EventDispatchThreadHangMonitor extends EventQueue { private synchronized void postDispatchEvent() { synchronized (dispatches) { DispatchInfo justFinishedDispatch = dispatches.removeLast(); + if (needSampling()) { + DesignerLatencyMetric.getInstance().record(justFinishedDispatch.timeSoFar()); + } if (isEasyWitch()) { justFinishedDispatch.dispose(); } @@ -370,39 +303,4 @@ public final class EventDispatchThreadHangMonitor extends EventQueue { } } - /** - * 检查死锁 - */ - public static void checkForDeadlock() { - ThreadMXBean threadBean = ManagementFactory.getThreadMXBean(); - long[] threadIds = threadBean.findDeadlockedThreads(); - if (threadIds == null) { - return; - } - FineLoggerFactory.getLogger().warn("deadlock detected involving the following threads:"); - ThreadInfo[] threadInfos = threadBean.getThreadInfo(threadIds, Integer.MAX_VALUE); - for (ThreadInfo info : threadInfos) { - FineLoggerFactory.getLogger().warn("Thread # {} {} ( {} ) waiting on {} held by {} {}", info.getThreadId(), info.getThreadName(), - info.getThreadState(), info.getLockName(), info.getLockOwnerName(), stackTraceToStringForConsole(info.getStackTrace())); - } - } - - public static String stackTraceToString(StackTraceElement[] stackTrace) { - StringBuilder result = new StringBuilder(); - for (StackTraceElement stackTraceElement : stackTrace) { - String indentation = " "; - result.append("~").append(indentation).append(stackTraceElement); - } - return result.toString(); - } - - public static String stackTraceToStringForConsole(StackTraceElement[] stackTrace) { - StringBuilder result = new StringBuilder(); - for (StackTraceElement stackTraceElement : stackTrace) { - String indentation = " "; - result.append("\r\n").append(indentation).append(stackTraceElement); - } - return result.toString(); - } - } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/carton/FeedbackToolboxDialog.java b/designer-base/src/main/java/com/fr/design/carton/FeedbackToolboxDialog.java index 83d6e24ac8..328e47e8aa 100644 --- a/designer-base/src/main/java/com/fr/design/carton/FeedbackToolboxDialog.java +++ b/designer-base/src/main/java/com/fr/design/carton/FeedbackToolboxDialog.java @@ -49,6 +49,8 @@ import java.text.ParseException; import java.util.List; import java.util.Objects; +import static com.fr.design.carton.CartonConstants.JOURNAL_FILE_PATH; + public class FeedbackToolboxDialog extends JDialog { private UIDatePicker uiDatePicker; @@ -147,7 +149,7 @@ public class FeedbackToolboxDialog extends JDialog { //selectDate 2002-03-09例子 String[] split = selectDate.split("-"); int month = Integer.parseInt(split[1]); - String sourceFilePath = StableUtils.pathJoin(SwitchForSwingChecker.JOURNAL_FILE_PATH, split[0], "month-" + month, selectDate); + String sourceFilePath = StableUtils.pathJoin(JOURNAL_FILE_PATH, split[0], "month-" + month, selectDate); File sourceFile = new File(sourceFilePath); if (sourceFile.exists()) { exportCartonLog(sourceFile, path, sourceFilePath); diff --git a/designer-base/src/main/java/com/fr/design/carton/SwitchForSwingChecker.java b/designer-base/src/main/java/com/fr/design/carton/SwitchForSwingChecker.java index 683179293e..758017465d 100644 --- a/designer-base/src/main/java/com/fr/design/carton/SwitchForSwingChecker.java +++ b/designer-base/src/main/java/com/fr/design/carton/SwitchForSwingChecker.java @@ -7,7 +7,6 @@ import com.fr.json.JSON; import com.fr.json.JSONArray; import com.fr.json.JSONObject; import com.fr.log.FineLoggerFactory; -import com.fr.stable.ProductConstantsBase; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.xml.XMLPrintWriter; @@ -29,11 +28,13 @@ import java.util.Map; import java.util.Date; import java.util.Calendar; +import static com.fr.design.carton.CartonConstants.DEBUG_MAIN_CLASS_NAME; +import static com.fr.design.carton.CartonConstants.EASY_CHECKER_FILE_NAME; +import static com.fr.design.carton.CartonConstants.JOURNAL_FILE_PATH; +import static com.fr.design.carton.CartonConstants.TIMER_CHECKER_FILE_NAME; + public class SwitchForSwingChecker implements XMLReadable, XMLWriter { - /** - * Designer4Debug类名 - */ - private static final String DEBUG_MAIN_CLASS_NAME = "com.fr.start.Designer4Debug"; + /** * XML标签 */ @@ -46,18 +47,16 @@ public class SwitchForSwingChecker implements XMLReadable, XMLWriter { * 简单记录事件执行时间的开关 */ private static boolean easyChecker = false; + /** + * UI性能监控埋点的开关 + */ + private static boolean latencyMonitor = true; /** * 一个标识位用于区分耗时任务时长检测(简单检测)和timer检测 */ public static final int TIMER_CHECK_FLAG = 0; public static final int EASY_CHECK_FLAG = 1; - /** - * 日志存储地址 - */ - public static final String JOURNAL_FILE_PATH = StableUtils.pathJoin(ProductConstantsBase.getEnvHome(), "journal_log"); - public static final String EASY_CHECKER_FILE_NAME = "easy_check_log.csv"; - public static final String TIMER_CHECKER_FILE_NAME = "timer_check_log.csv"; public static boolean isCheckerTimerSwitch() { return checkerTimerSwitch; } @@ -66,6 +65,13 @@ public class SwitchForSwingChecker implements XMLReadable, XMLWriter { return easyChecker; } + /** + * 是否开启UI性能检测 + */ + public static boolean isLatencyMonitoring() { + return latencyMonitor; + } + public static volatile SwitchForSwingChecker switchForSwingChecker = new SwitchForSwingChecker(); public static SwitchForSwingChecker getInstance() { @@ -137,7 +143,7 @@ public class SwitchForSwingChecker implements XMLReadable, XMLWriter { } /** - *处理文件 + * 处理文件 * 一共四种情况, * 两个文件都不存在 * 文件一存在,文件二不存在 @@ -224,7 +230,7 @@ public class SwitchForSwingChecker implements XMLReadable, XMLWriter { /** * /埋点方法上传卡顿信息入口 - date为 2022-09-08的格式 + * date为 2022-09-08的格式 */ public static List uploadJournalLog(Date dateTime) { List res = new ArrayList<>(); @@ -245,9 +251,8 @@ public class SwitchForSwingChecker implements XMLReadable, XMLWriter { /** * 初始化监控任务,主要是替换EventQueue以及SwingWorker执行任务的线程池 - * */ - public static void initThreadMonitoring () { + public static void initThreadMonitoring() { String mainClass = System.getProperty("sun.java.command"); //判断一下,如果是以Designer4Debug启动,就不注册代码,不然会覆盖掉SwingExplorer,导致其无法使用 if (!StringUtils.equals(mainClass, DEBUG_MAIN_CLASS_NAME)) { @@ -293,6 +298,7 @@ public class SwitchForSwingChecker implements XMLReadable, XMLWriter { if (reader.isAttr()) { checkerTimerSwitch = reader.getAttrAsBoolean("checkerTimerSwitch", false); easyChecker = reader.getAttrAsBoolean("easyChecker", false); + latencyMonitor = reader.getAttrAsBoolean("latencyMonitor", true); } try { initSwitchChecker(); @@ -306,6 +312,7 @@ public class SwitchForSwingChecker implements XMLReadable, XMLWriter { writer.startTAG(XML_TAG); writer.attr("checkerTimerSwitch", checkerTimerSwitch); writer.attr("easyChecker", easyChecker); + writer.attr("latencyMonitor", latencyMonitor); writer.end(); } diff --git a/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java b/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java new file mode 100644 index 0000000000..d98e26c198 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java @@ -0,0 +1,155 @@ +package com.fr.design.carton.latency; + +import com.fanruan.third.v2.org.ehcache.impl.internal.concurrent.ConcurrentHashMap; +import com.fr.concurrent.FineExecutors; +import com.fr.concurrent.NamedThreadFactory; +import com.fr.config.MarketConfig; +import com.fr.design.DesignerEnvManager; +import com.fr.design.carton.SwitchForSwingChecker; +import com.fr.design.mainframe.SiteCenterToken; +import com.fr.event.Event; +import com.fr.event.EventDispatcher; +import com.fr.event.Listener; +import com.fr.general.http.HttpToolbox; +import com.fr.json.JSONObject; +import com.fr.stable.ProductConstants; +import com.fr.workspace.WorkContext; +import com.fr.workspace.Workspace; +import com.fr.workspace.WorkspaceEvent; + +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; + +import static com.fr.design.carton.CartonConstants.APPID; +import static com.fr.design.carton.CartonConstants.DESIGNER_ID; +import static com.fr.design.carton.CartonConstants.DESIGNER_VERSION; +import static com.fr.design.carton.CartonConstants.DESIGN_METHOD; +import static com.fr.design.carton.CartonConstants.LOCAL; +import static com.fr.design.carton.CartonConstants.OPERANDS_NUM; +import static com.fr.design.carton.CartonConstants.REMOTE; +import static com.fr.design.carton.CartonConstants.TIME; +import static com.fr.design.carton.CartonConstants.USERID; + +/** + * 设计器延迟时间记录Metric + * + * @author Levy.Xie + * @since 11.0 + * Created on 2024/07/01 + */ +public class DesignerLatencyMetric { + + private ExecutorService executorService; + private ScheduledExecutorService scheduler; + private static final Map LATENCY_CONTAINER = new ConcurrentHashMap<>(); + + private static final String LATENCY_INFO_URL = "https://cloud.fanruan.com/api/monitor/record_of_deisgner_latency/single"; + + private final static class InstanceHolder { + static final DesignerLatencyMetric INSTANCE = new DesignerLatencyMetric(); + } + + /** + * 获取单例 + */ + public static DesignerLatencyMetric getInstance() { + return DesignerLatencyMetric.InstanceHolder.INSTANCE; + } + + private DesignerLatencyMetric() { + } + + /** + * 启动 + */ + public void start() { + if (SwitchForSwingChecker.isLatencyMonitoring()) { + // 初始化容器 + initializeContainer(); + // 启动异步性能记录线程池 + executorService = FineExecutors.newCachedThreadPool( + new NamedThreadFactory(DesignerLatencyMetric.class)); + // 启动定时埋点 + this.scheduler = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory("LatencyMetricWorker")); + this.scheduler.scheduleWithFixedDelay(this::collectAndSubmit, 60, 60, TimeUnit.SECONDS); + // 注册设计器工作目录切换事件监听 + EventDispatcher.listen(WorkspaceEvent.AfterSwitch, new Listener() { + @Override + public void on(Event event, Workspace param) { + collectAndSubmit(); + } + }); + } + } + + /** + * 关闭 + */ + public void stop() { + if (SwitchForSwingChecker.isLatencyMonitoring()) { + this.executorService.shutdown(); + this.scheduler.shutdown(); + collectAndSubmit(); + } + } + + private void initializeContainer() { + for (LatencyLevel level : LatencyLevel.values()) { + LATENCY_CONTAINER.put(level, new AtomicInteger()); + } + } + + private void resetContainer() { + LATENCY_CONTAINER.values().forEach(count -> count.set(0)); + } + + /** + * 记录性能信息 + */ + public void record(long cost) { + executorService.submit(() -> { + try { + LatencyLevel level = LatencyLevel.measure(cost); + LATENCY_CONTAINER.computeIfAbsent(level, k -> new AtomicInteger()).incrementAndGet(); + } catch (Throwable ignore) { + // 记录失败不影响业务 + } + }); + } + + /** + * 汇总并提交性能监控埋点 + */ + public void collectAndSubmit() { + Map para = new HashMap<>(); + para.put("token", SiteCenterToken.generateToken()); + para.put("content", collect()); + try { + HttpToolbox.post(LATENCY_INFO_URL, para); + } catch (Throwable ignore) { + // doNothing + } + resetContainer(); + } + + private JSONObject collect() { + JSONObject info = new JSONObject(); + info.put(TIME, System.currentTimeMillis()); + info.put(APPID, MarketConfig.getInstance().getCloudOperationMaintenanceId()); + info.put(USERID, MarketConfig.getInstance().getBbsUid()); + info.put(DESIGNER_ID, DesignerEnvManager.getEnvManager().getUUID()); + info.put(DESIGNER_VERSION, ProductConstants.DESIGNER_VERSION); + info.put(DESIGN_METHOD, WorkContext.getCurrent().isLocal() ? LOCAL : REMOTE); + info.put(OPERANDS_NUM, LATENCY_CONTAINER.values().stream().mapToInt(AtomicInteger::get).sum()); + for (Map.Entry entry : LATENCY_CONTAINER.entrySet()) { + info.put(entry.getKey().getMark(), entry.getValue().get()); + } + return info; + } + +} diff --git a/designer-base/src/main/java/com/fr/design/carton/latency/LatencyLevel.java b/designer-base/src/main/java/com/fr/design/carton/latency/LatencyLevel.java new file mode 100644 index 0000000000..0d40b37d89 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/carton/latency/LatencyLevel.java @@ -0,0 +1,67 @@ +package com.fr.design.carton.latency; + +/** + * 卡顿等级 + * + * @author Levy.Xie + * @since 11.0 + * Created on 2024/07/01 + */ +public enum LatencyLevel { + + // 非常流畅 + FLASH(0, 50, "waitNum1"), + // 流畅 + SMOOTH(50, 100, "waitNum2"), + // 轻微卡顿 + SLIGHT(100, 200, "waitNum3"), + // 中等卡顿 + MILD(200, 500, "waitNum4"), + // 明显卡顿 + NOTICEABLE(500, 1000, "waitNum5"), + // 严重卡顿 + SERVE(1000, 2000, "waitNum6"), + // 非常严重卡顿 + EXTREME(2000, 3000, "waitNum7"), + // 极度卡顿 + CRITICAL(3000, Long.MAX_VALUE, "waitNum8"), + // 未知场景 + UNDEFINE(-1, -1, "unknown"); + + final long start; + final long end; + final String mark; + + LatencyLevel(long start, long end, String mark) { + this.start = start; + this.end = end; + this.mark = mark; + } + + public long getStart() { + return start; + } + + public long getEnd() { + return end; + } + + public String getMark() { + return mark; + } + + /** + * 评估当前卡顿等级 + * + * @param cost UI-EventQueue响应耗时 + * @return 卡顿等级 + */ + public static LatencyLevel measure(long cost) { + for (LatencyLevel level : LatencyLevel.values()) { + if (cost >= level.getStart() && cost < level.getEnd()) { + return level; + } + } + return UNDEFINE; + } +} 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 afa1a3bcb2..e20debacb7 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 @@ -11,6 +11,7 @@ import com.fr.design.ExtraDesignClassManager; import com.fr.design.actions.core.ActionFactory; import com.fr.design.base.mode.DesignModeContext; import com.fr.design.base.mode.DesignerMode; +import com.fr.design.carton.latency.DesignerLatencyMetric; import com.fr.design.constants.UIConstants; import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.datapane.TableDataTreePane; @@ -1161,6 +1162,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta }); DesignerEnvManager.getEnvManager().saveXMLFile(); + DesignerLatencyMetric.getInstance().stop(); } /** diff --git a/designer-realize/src/main/java/com/fr/start/MainDesigner.java b/designer-realize/src/main/java/com/fr/start/MainDesigner.java index ee25802846..dab50eb3ce 100644 --- a/designer-realize/src/main/java/com/fr/start/MainDesigner.java +++ b/designer-realize/src/main/java/com/fr/start/MainDesigner.java @@ -11,6 +11,7 @@ import com.fr.design.actions.server.ServerConfigManagerAction; import com.fr.design.actions.server.TemplateThemeManagerAction; import com.fr.design.actions.server.WidgetManagerAction; import com.fr.design.base.mode.DesignModeContext; +import com.fr.design.carton.latency.DesignerLatencyMetric; import com.fr.design.carton.SwitchForSwingChecker; import com.fr.design.constants.DesignerLaunchStatus; import com.fr.design.constants.UIConstants; @@ -162,6 +163,7 @@ public class MainDesigner extends BaseDesigner { FineLoggerFactory.getLogger().info("Designer started.Time used {} ms", DesignerStartupContext.getRecorder().getTime(TimeUnit.MILLISECONDS)); SwitchForSwingChecker.initThreadMonitoring(); + DesignerLatencyMetric.getInstance().start(); } /** From 727a94e47554c9897720a01a62e129c89aac73fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Levy=2EXie-=E8=A7=A3=E5=AE=89=E6=A3=AE?= Date: Mon, 15 Jul 2024 17:26:24 +0800 Subject: [PATCH 33/49] =?UTF-8?q?REPORT-117002=20feat:=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8UI=E6=80=A7=E8=83=BD=E7=9B=91=E6=8E=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/carton/CartonUtils.java | 8 ++++---- .../fr/design/carton/latency/DesignerLatencyMetric.java | 8 ++++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/carton/CartonUtils.java b/designer-base/src/main/java/com/fr/design/carton/CartonUtils.java index b67fe8c504..df8361662b 100644 --- a/designer-base/src/main/java/com/fr/design/carton/CartonUtils.java +++ b/designer-base/src/main/java/com/fr/design/carton/CartonUtils.java @@ -116,10 +116,10 @@ public class CartonUtils { } file.createNewFile(); } - BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file, true)); - String outputMessage = message.replaceAll("~", "\r\n") + "," + "\r\n"; - bufferedWriter.write(outputMessage); - bufferedWriter.close(); + try (BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file, true))) { + String outputMessage = message.replaceAll("~", "\r\n") + "," + "\r\n"; + bufferedWriter.write(outputMessage); + } } catch (IOException e) { FineLoggerFactory.getLogger().error("output fail", e); } diff --git a/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java b/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java index d98e26c198..766ff17dba 100644 --- a/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java +++ b/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java @@ -92,8 +92,12 @@ public class DesignerLatencyMetric { */ public void stop() { if (SwitchForSwingChecker.isLatencyMonitoring()) { - this.executorService.shutdown(); - this.scheduler.shutdown(); + if (this.executorService != null) { + this.executorService.shutdown(); + } + if (this.scheduler != null) { + this.scheduler.shutdown(); + } collectAndSubmit(); } } From 847477adfe5064b6cd1776e70f5ac21f98c7a3a2 Mon Sep 17 00:00:00 2001 From: Zhanying <2446962908@qq.com> Date: Tue, 16 Jul 2024 09:51:01 +0800 Subject: [PATCH 34/49] =?UTF-8?q?REPORT-70155=20fix:=20fvs=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E4=B8=BB=E9=A2=98=E6=A0=B7=E5=BC=8F=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=8D=95=E5=85=83=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/FormElementCasePaneDelegate.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/form/FormElementCasePaneDelegate.java b/designer-realize/src/main/java/com/fr/design/mainframe/form/FormElementCasePaneDelegate.java index 525b3c0ca4..9a30b3266d 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/form/FormElementCasePaneDelegate.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/form/FormElementCasePaneDelegate.java @@ -6,20 +6,21 @@ import com.fr.design.actions.core.ActionFactory; import com.fr.design.actions.form.FormECBackgroundAction; import com.fr.design.actions.form.FormECColumnsAction; import com.fr.design.actions.form.FormECFrozenAction; -import com.fr.design.designer.creator.XElementCase; +import com.fr.design.base.mode.DesignModeContext; import com.fr.design.event.TargetModifiedEvent; import com.fr.design.event.TargetModifiedListener; import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.fit.NewUIModeCellElementPainter; -import com.fr.design.fit.common.FormDesignerUtil; import com.fr.design.gui.frpane.HyperlinkGroupPane; import com.fr.design.mainframe.*; import com.fr.design.mainframe.cell.QuickEditorRegion; +import com.fr.design.mainframe.theme.utils.DefaultThemedTemplateCellElementCase; import com.fr.design.menu.KeySetUtils; import com.fr.design.menu.MenuDef; import com.fr.design.menu.ShortCut; import com.fr.design.menu.ToolBarDef; import com.fr.design.present.ConditionAttributesGroupPane; +import com.fr.design.utils.gui.AdjustWorkBookDefaultStyleUtils; import com.fr.form.fit.common.LightTool; import com.fr.form.main.Form; import com.fr.grid.Grid; @@ -27,6 +28,7 @@ import com.fr.grid.GridColumn; import com.fr.grid.GridCorner; import com.fr.grid.GridRow; import com.fr.page.ReportSettingsProvider; +import com.fr.report.cell.DefaultTemplateCellElement; import com.fr.report.elementcase.TemplateElementCase; import com.fr.report.worksheet.FormElementCase; import com.fr.design.selection.SelectionEvent; @@ -34,7 +36,6 @@ import com.fr.design.selection.SelectionListener; import javax.swing.JComponent; import javax.swing.JPanel; -import java.awt.Insets; import java.awt.Rectangle; /** @@ -69,6 +70,16 @@ public class FormElementCasePaneDelegate extends ElementCasePane { + DefaultTemplateCellElement defaultTemplateCellElement = DefaultThemedTemplateCellElementCase.createInstance(); + // fvs调整单元格默认样式 + AdjustWorkBookDefaultStyleUtils.adjustCellElement(defaultTemplateCellElement); + return defaultTemplateCellElement; + }); + } } private Rectangle getBoundsLineRect(TemplateElementCase elementCase) { From ad86fcdb91469123a734187bb38c99ade470e529 Mon Sep 17 00:00:00 2001 From: Zhanying <2446962908@qq.com> Date: Tue, 16 Jul 2024 09:58:50 +0800 Subject: [PATCH 35/49] =?UTF-8?q?REPORT-77878=20fix:=20fvs=E6=8F=92?= =?UTF-8?q?=E4=BB=B6-=E8=A1=A8=E6=A0=BC=E9=BB=98=E8=AE=A4=E5=AD=97?= =?UTF-8?q?=E4=BD=93=E9=A2=9C=E8=89=B2=E6=98=AF=E7=99=BD=E8=89=B2=EF=BC=8C?= =?UTF-8?q?=E4=BD=86=E6=98=AF=E5=8F=B3=E9=94=AE=E6=B8=85=E9=99=A4=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=A0=BC=E6=A0=BC=E5=BC=8F=EF=BC=8C=E5=AD=97=E4=BD=93?= =?UTF-8?q?=E4=BC=9A=E5=8F=98=E4=B8=BA=E9=BB=91=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/grid/selection/CellSelection.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/designer-realize/src/main/java/com/fr/grid/selection/CellSelection.java b/designer-realize/src/main/java/com/fr/grid/selection/CellSelection.java index 4d5fe8a62b..ca95a933df 100644 --- a/designer-realize/src/main/java/com/fr/grid/selection/CellSelection.java +++ b/designer-realize/src/main/java/com/fr/grid/selection/CellSelection.java @@ -32,6 +32,7 @@ import com.fr.design.mainframe.JTemplate; import com.fr.design.mainframe.theme.utils.DefaultThemedTemplateCellElementCase; import com.fr.design.report.RowColumnPane; import com.fr.design.selection.QuickEditor; +import com.fr.design.utils.gui.AdjustWorkBookDefaultStyleUtils; import com.fr.grid.GridUtils; import com.fr.report.cell.CellElement; import com.fr.report.cell.DefaultTemplateCellElement; @@ -562,6 +563,8 @@ public class CellSelection extends Selection { for (int i = 0; i < removeElementList.size(); i++) { CellElement element = removeElementList.get(i); element.setStyle(null); + // fvs调整单元格默认样式 + AdjustWorkBookDefaultStyleUtils.adjustCellElement(element); } break; From c03449b739859c1ab4770d15d12f10037ffd24d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Levy=2EXie-=E8=A7=A3=E5=AE=89=E6=A3=AE?= Date: Tue, 16 Jul 2024 10:52:33 +0800 Subject: [PATCH 36/49] =?UTF-8?q?=E6=97=A0jira=20=E6=89=93=E5=8C=85?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/carton/latency/DesignerLatencyMetric.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java b/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java index 766ff17dba..7898b2ad42 100644 --- a/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java +++ b/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java @@ -1,7 +1,5 @@ package com.fr.design.carton.latency; -import com.fanruan.third.v2.org.ehcache.impl.internal.concurrent.ConcurrentHashMap; -import com.fr.concurrent.FineExecutors; import com.fr.concurrent.NamedThreadFactory; import com.fr.config.MarketConfig; import com.fr.design.DesignerEnvManager; @@ -19,6 +17,7 @@ import com.fr.workspace.WorkspaceEvent; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; @@ -72,8 +71,7 @@ public class DesignerLatencyMetric { // 初始化容器 initializeContainer(); // 启动异步性能记录线程池 - executorService = FineExecutors.newCachedThreadPool( - new NamedThreadFactory(DesignerLatencyMetric.class)); + executorService = Executors.newFixedThreadPool(8); // 启动定时埋点 this.scheduler = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory("LatencyMetricWorker")); this.scheduler.scheduleWithFixedDelay(this::collectAndSubmit, 60, 60, TimeUnit.SECONDS); From b05fd1300ce677243f373dcc7963396c78ff1c98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Levy=2EXie-=E8=A7=A3=E5=AE=89=E6=A3=AE?= Date: Tue, 16 Jul 2024 19:06:43 +0800 Subject: [PATCH 37/49] =?UTF-8?q?REPORT-117002=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E6=80=A7=E8=83=BD=E5=9F=8B=E7=82=B9=E7=9B=91=E6=8E=A7?= =?UTF-8?q?=20=E8=B0=83=E6=95=B4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../carton/latency/DesignerLatencyMetric.java | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java b/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java index 7898b2ad42..fa517096ee 100644 --- a/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java +++ b/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java @@ -8,9 +8,12 @@ import com.fr.design.mainframe.SiteCenterToken; import com.fr.event.Event; import com.fr.event.EventDispatcher; import com.fr.event.Listener; +import com.fr.general.CloudCenter; import com.fr.general.http.HttpToolbox; import com.fr.json.JSONObject; +import com.fr.log.FineLoggerFactory; import com.fr.stable.ProductConstants; +import com.fr.stable.StringUtils; import com.fr.workspace.WorkContext; import com.fr.workspace.Workspace; import com.fr.workspace.WorkspaceEvent; @@ -43,11 +46,13 @@ import static com.fr.design.carton.CartonConstants.USERID; */ public class DesignerLatencyMetric { + private String latencyUrl; private ExecutorService executorService; private ScheduledExecutorService scheduler; private static final Map LATENCY_CONTAINER = new ConcurrentHashMap<>(); - private static final String LATENCY_INFO_URL = "https://cloud.fanruan.com/api/monitor/record_of_deisgner_latency/single"; + private static final String DEFAULT_MONITOR_URL = "https://cloud.fanruan.com/api/monitor/"; + private static final String LATENCY_TABLE_SUFFIX = "record_of_designer_latency/single"; private final static class InstanceHolder { static final DesignerLatencyMetric INSTANCE = new DesignerLatencyMetric(); @@ -74,7 +79,7 @@ public class DesignerLatencyMetric { executorService = Executors.newFixedThreadPool(8); // 启动定时埋点 this.scheduler = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory("LatencyMetricWorker")); - this.scheduler.scheduleWithFixedDelay(this::collectAndSubmit, 60, 60, TimeUnit.SECONDS); + this.scheduler.scheduleWithFixedDelay(this::collectAndSubmit, 60, 60, TimeUnit.MINUTES); // 注册设计器工作目录切换事件监听 EventDispatcher.listen(WorkspaceEvent.AfterSwitch, new Listener() { @Override @@ -100,6 +105,16 @@ public class DesignerLatencyMetric { } } + private String getLatencyUrl() { + if (StringUtils.isEmpty(latencyUrl)) { + String monitorEntry = CloudCenter.getInstance().acquireUrlByKind("cloud.monitor.api.entrypoint", DEFAULT_MONITOR_URL); + if (StringUtils.isNotEmpty(monitorEntry)) { + latencyUrl = monitorEntry + LATENCY_TABLE_SUFFIX; + } + } + return latencyUrl; + } + private void initializeContainer() { for (LatencyLevel level : LatencyLevel.values()) { LATENCY_CONTAINER.put(level, new AtomicInteger()); @@ -132,9 +147,9 @@ public class DesignerLatencyMetric { para.put("token", SiteCenterToken.generateToken()); para.put("content", collect()); try { - HttpToolbox.post(LATENCY_INFO_URL, para); - } catch (Throwable ignore) { - // doNothing + HttpToolbox.post(getLatencyUrl(), para); + } catch (Throwable t) { + FineLoggerFactory.getLogger().debug(t,"[Latency] failed to submit latency log to cloud."); } resetContainer(); } From 5e915785e160bddccc48cbc3b4f283f805ffb047 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Levy=2EXie-=E8=A7=A3=E5=AE=89=E6=A3=AE?= Date: Tue, 16 Jul 2024 19:12:48 +0800 Subject: [PATCH 38/49] =?UTF-8?q?REPORT-117002=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E6=80=A7=E8=83=BD=E5=9F=8B=E7=82=B9=E7=9B=91=E6=8E=A7?= =?UTF-8?q?=20=E8=B0=83=E6=95=B4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/carton/latency/DesignerLatencyMetric.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java b/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java index fa517096ee..68aa42b4c9 100644 --- a/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java +++ b/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java @@ -107,10 +107,9 @@ public class DesignerLatencyMetric { private String getLatencyUrl() { if (StringUtils.isEmpty(latencyUrl)) { - String monitorEntry = CloudCenter.getInstance().acquireUrlByKind("cloud.monitor.api.entrypoint", DEFAULT_MONITOR_URL); - if (StringUtils.isNotEmpty(monitorEntry)) { - latencyUrl = monitorEntry + LATENCY_TABLE_SUFFIX; - } + String monitorEntry = CloudCenter.getInstance().acquireUrlByKind("cloud.monitor.api.entrypoint"); + latencyUrl = (StringUtils.isNotEmpty(monitorEntry) ? monitorEntry : DEFAULT_MONITOR_URL) + + LATENCY_TABLE_SUFFIX; } return latencyUrl; } From edc7184564e6ed125862266152013045a52f156c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Levy=2EXie-=E8=A7=A3=E5=AE=89=E6=A3=AE?= Date: Wed, 17 Jul 2024 09:51:21 +0800 Subject: [PATCH 39/49] =?UTF-8?q?REPORT-127241=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E6=80=A7=E8=83=BD=E5=9F=8B=E7=82=B9=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/carton/latency/DesignerLatencyMetric.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java b/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java index 68aa42b4c9..4dc38634c0 100644 --- a/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java +++ b/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java @@ -87,6 +87,7 @@ public class DesignerLatencyMetric { collectAndSubmit(); } }); + FineLoggerFactory.getLogger().info("[Latency] designer latency metric started."); } } @@ -102,6 +103,7 @@ public class DesignerLatencyMetric { this.scheduler.shutdown(); } collectAndSubmit(); + FineLoggerFactory.getLogger().info("[Latency] designer latency metric stopped."); } } @@ -147,6 +149,7 @@ public class DesignerLatencyMetric { para.put("content", collect()); try { HttpToolbox.post(getLatencyUrl(), para); + FineLoggerFactory.getLogger().debug("[Latency] submit latency log to cloud."); } catch (Throwable t) { FineLoggerFactory.getLogger().debug(t,"[Latency] failed to submit latency log to cloud."); } @@ -163,7 +166,9 @@ public class DesignerLatencyMetric { info.put(DESIGN_METHOD, WorkContext.getCurrent().isLocal() ? LOCAL : REMOTE); info.put(OPERANDS_NUM, LATENCY_CONTAINER.values().stream().mapToInt(AtomicInteger::get).sum()); for (Map.Entry entry : LATENCY_CONTAINER.entrySet()) { - info.put(entry.getKey().getMark(), entry.getValue().get()); + if (!LatencyLevel.UNDEFINE.equals(entry.getKey())) { + info.put(entry.getKey().getMark(), entry.getValue().get()); + } } return info; } From 5980231c6de2cb0498c56fadbf088202425ed242 Mon Sep 17 00:00:00 2001 From: "Richard.Fang" Date: Wed, 17 Jul 2024 12:08:50 +0800 Subject: [PATCH 40/49] =?UTF-8?q?REPORT-125241=20fix:=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E4=BB=8E=E5=86=85=E5=B1=82=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=E7=A7=BB=E5=8A=A8=E5=88=B0=E6=9C=80=E5=A4=96=E5=B1=82=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=E6=97=B6=E6=98=BE=E7=A4=BA=E5=BC=82=E5=B8=B8=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/file/DefaultTemplateTreeDefineProcessor.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/file/DefaultTemplateTreeDefineProcessor.java b/designer-base/src/main/java/com/fr/design/file/DefaultTemplateTreeDefineProcessor.java index 1d2048fa28..9bee877aee 100644 --- a/designer-base/src/main/java/com/fr/design/file/DefaultTemplateTreeDefineProcessor.java +++ b/designer-base/src/main/java/com/fr/design/file/DefaultTemplateTreeDefineProcessor.java @@ -421,7 +421,9 @@ public class DefaultTemplateTreeDefineProcessor extends AbstractTemplateTreeDefi dialog.setVisible(true); DesignerFrameFileDealerPane.getInstance().getSelectedOperation().refresh(); - LocateAction.gotoEditingTemplateLeaf(targetFile); + SwingUtilities.invokeLater(() -> { + LocateAction.gotoEditingTemplateLeaf(targetFile); + }); } } From 8cbef9ef05e790eb558e4eef1c61408b500b3c8d Mon Sep 17 00:00:00 2001 From: "Richard.Fang" Date: Fri, 19 Jul 2024 16:03:53 +0800 Subject: [PATCH 41/49] =?UTF-8?q?REPORT-125224=20fix:=E8=A1=A5=E5=85=85?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E5=99=A8=E5=90=AF=E5=8A=A8=E8=AE=A1=E6=97=B6?= =?UTF-8?q?=E5=99=A8=E5=85=B3=E9=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer-realize/src/main/java/com/fr/start/MainDesigner.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/start/MainDesigner.java b/designer-realize/src/main/java/com/fr/start/MainDesigner.java index dab50eb3ce..632548607b 100644 --- a/designer-realize/src/main/java/com/fr/start/MainDesigner.java +++ b/designer-realize/src/main/java/com/fr/start/MainDesigner.java @@ -161,7 +161,7 @@ public class MainDesigner extends BaseDesigner { ServerTray.init(); } FineLoggerFactory.getLogger().info("Designer started.Time used {} ms", DesignerStartupContext.getRecorder().getTime(TimeUnit.MILLISECONDS)); - + DesignerStartupContext.getRecorder().stop(); SwitchForSwingChecker.initThreadMonitoring(); DesignerLatencyMetric.getInstance().start(); } From 4cff4a2dd7b5e72ad6b4851fb5f4952be7079e75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Levy=2EXie-=E8=A7=A3=E5=AE=89=E6=A3=AE?= Date: Mon, 22 Jul 2024 10:52:08 +0800 Subject: [PATCH 42/49] =?UTF-8?q?REPORT-111995=20=E3=80=90NewUI=E3=80=91?= =?UTF-8?q?=E6=96=87=E4=BB=B6-=E9=80=89=E9=A1=B9=E5=92=8C=E5=B8=AE?= =?UTF-8?q?=E5=8A=A9=E9=9D=A2=E6=9D=BF=E7=BF=BB=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/carton/latency/DesignerLatencyMetric.java | 10 ++++------ .../com/fr/design/carton/latency/LatencyLevel.java | 6 ++---- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java b/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java index 4dc38634c0..75fa28ef1e 100644 --- a/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java +++ b/designer-base/src/main/java/com/fr/design/carton/latency/DesignerLatencyMetric.java @@ -9,10 +9,10 @@ import com.fr.event.Event; import com.fr.event.EventDispatcher; import com.fr.event.Listener; import com.fr.general.CloudCenter; +import com.fr.general.GeneralUtils; import com.fr.general.http.HttpToolbox; import com.fr.json.JSONObject; import com.fr.log.FineLoggerFactory; -import com.fr.stable.ProductConstants; import com.fr.stable.StringUtils; import com.fr.workspace.WorkContext; import com.fr.workspace.Workspace; @@ -81,7 +81,7 @@ public class DesignerLatencyMetric { this.scheduler = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory("LatencyMetricWorker")); this.scheduler.scheduleWithFixedDelay(this::collectAndSubmit, 60, 60, TimeUnit.MINUTES); // 注册设计器工作目录切换事件监听 - EventDispatcher.listen(WorkspaceEvent.AfterSwitch, new Listener() { + EventDispatcher.listen(WorkspaceEvent.BeforeSwitch, new Listener() { @Override public void on(Event event, Workspace param) { collectAndSubmit(); @@ -162,13 +162,11 @@ public class DesignerLatencyMetric { info.put(APPID, MarketConfig.getInstance().getCloudOperationMaintenanceId()); info.put(USERID, MarketConfig.getInstance().getBbsUid()); info.put(DESIGNER_ID, DesignerEnvManager.getEnvManager().getUUID()); - info.put(DESIGNER_VERSION, ProductConstants.DESIGNER_VERSION); + info.put(DESIGNER_VERSION, GeneralUtils.getVersion()); info.put(DESIGN_METHOD, WorkContext.getCurrent().isLocal() ? LOCAL : REMOTE); info.put(OPERANDS_NUM, LATENCY_CONTAINER.values().stream().mapToInt(AtomicInteger::get).sum()); for (Map.Entry entry : LATENCY_CONTAINER.entrySet()) { - if (!LatencyLevel.UNDEFINE.equals(entry.getKey())) { - info.put(entry.getKey().getMark(), entry.getValue().get()); - } + info.put(entry.getKey().getMark(), entry.getValue().get()); } return info; } diff --git a/designer-base/src/main/java/com/fr/design/carton/latency/LatencyLevel.java b/designer-base/src/main/java/com/fr/design/carton/latency/LatencyLevel.java index 0d40b37d89..f190bb883d 100644 --- a/designer-base/src/main/java/com/fr/design/carton/latency/LatencyLevel.java +++ b/designer-base/src/main/java/com/fr/design/carton/latency/LatencyLevel.java @@ -24,9 +24,7 @@ public enum LatencyLevel { // 非常严重卡顿 EXTREME(2000, 3000, "waitNum7"), // 极度卡顿 - CRITICAL(3000, Long.MAX_VALUE, "waitNum8"), - // 未知场景 - UNDEFINE(-1, -1, "unknown"); + CRITICAL(3000, Long.MAX_VALUE, "waitNum8"); final long start; final long end; @@ -62,6 +60,6 @@ public enum LatencyLevel { return level; } } - return UNDEFINE; + return CRITICAL; } } From 6986bd0bd6269468fe9b39767e89549adf53c0ba Mon Sep 17 00:00:00 2001 From: obo Date: Mon, 29 Jul 2024 14:46:57 +0800 Subject: [PATCH 43/49] =?UTF-8?q?REPORT-128068=20fix:=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E6=8C=89=E9=92=AE=E6=98=BE=E7=A4=BA=E4=B8=8D=E5=85=A8?= =?UTF-8?q?=E4=B8=94=E6=97=A0tooltips?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/update/ui/dialog/UpdateMainDialog.java | 4 ++-- .../main/resources/com/fr/design/i18n/dimension_en.properties | 1 + .../resources/com/fr/design/i18n/dimension_ja_JP.properties | 1 + .../resources/com/fr/design/i18n/dimension_ko_KR.properties | 1 + .../main/resources/com/fr/design/i18n/dimension_zh.properties | 1 + .../resources/com/fr/design/i18n/dimension_zh_TW.properties | 1 + 6 files changed, 7 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/update/ui/dialog/UpdateMainDialog.java b/designer-base/src/main/java/com/fr/design/update/ui/dialog/UpdateMainDialog.java index 033e2cb07f..21736d77a5 100644 --- a/designer-base/src/main/java/com/fr/design/update/ui/dialog/UpdateMainDialog.java +++ b/designer-base/src/main/java/com/fr/design/update/ui/dialog/UpdateMainDialog.java @@ -12,6 +12,7 @@ import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.ActionLabel; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; +import com.fr.design.i18n.DesignSizeI18nManager; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; @@ -69,7 +70,6 @@ public class UpdateMainDialog extends UIDialog { public static final Dimension DEFAULT = new Dimension(660, 620); private static final Dimension PROGRESSBAR = new Dimension(120, 15); - private static final Dimension UPDATE_BUTTON = new Dimension(80, 24); private static final int UPDATE_PANE_ROW_SIZE = 30; private static final int UPDATE_CONTENT_PANE_ROW_SIZE = 10; private static final int UPDATE_CONTENT_PANE_COLUMN_SIZE = 10; @@ -295,7 +295,7 @@ public class UpdateMainDialog extends UIDialog { loadingLabel = new LoadingLabel(); loadingLabel.setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Updater_Checking_Jar_Update")); updateButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Updater_Update")); - updateButton.setPreferredSize(UPDATE_BUTTON); + updateButton.setPreferredSize(DesignSizeI18nManager.getInstance().i18nDimension("com.fr.design.update.ui.dialog.UpdateMainDialog.updateButton")); updateButton.setEnabled(false); double[] rowSize = {TableLayout.PREFERRED}; diff --git a/designer-base/src/main/resources/com/fr/design/i18n/dimension_en.properties b/designer-base/src/main/resources/com/fr/design/i18n/dimension_en.properties index 1405f81c6a..9a00559eae 100644 --- a/designer-base/src/main/resources/com/fr/design/i18n/dimension_en.properties +++ b/designer-base/src/main/resources/com/fr/design/i18n/dimension_en.properties @@ -29,3 +29,4 @@ com.fr.design.formula.FormulaPane=900*600 com.fr.design.formula.FormulaPaneWhenReserveFormula=1200*600 com.fr.design.mainframe.mobile.ui.MobileStyleDefinePane.configLabel=130*20 com.fr.design.mainframe.mobile.utils.DesignerUtils.configLabel=140*20 +com.fr.design.update.ui.dialog.UpdateMainDialog.updateButton=100*24 diff --git a/designer-base/src/main/resources/com/fr/design/i18n/dimension_ja_JP.properties b/designer-base/src/main/resources/com/fr/design/i18n/dimension_ja_JP.properties index 6af9a798c0..d052ead680 100644 --- a/designer-base/src/main/resources/com/fr/design/i18n/dimension_ja_JP.properties +++ b/designer-base/src/main/resources/com/fr/design/i18n/dimension_ja_JP.properties @@ -28,3 +28,4 @@ com.fr.design.formula.FormulaPane=900*600 com.fr.design.formula.FormulaPaneWhenReserveFormula=900*600 com.fr.design.mainframe.mobile.ui.MobileStyleDefinePane.configLabel=100*20 com.fr.design.mainframe.mobile.utils.DesignerUtils.configLabel=130*20 +com.fr.design.update.ui.dialog.UpdateMainDialog.updateButton=160*24 diff --git a/designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties b/designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties index 98ac411090..525bfe56ad 100644 --- a/designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties +++ b/designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties @@ -28,3 +28,4 @@ com.fr.design.formula.FormulaPane=900*600 com.fr.design.formula.FormulaPaneWhenReserveFormula=900*600 com.fr.design.mainframe.mobile.ui.MobileStyleDefinePane.configLabel=75*20 com.fr.design.mainframe.mobile.utils.DesignerUtils.configLabel=100*20 +com.fr.design.update.ui.dialog.UpdateMainDialog.updateButton=80*24 diff --git a/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh.properties b/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh.properties index 9c9e1bd92a..5b448dd469 100644 --- a/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh.properties +++ b/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh.properties @@ -28,3 +28,4 @@ com.fr.design.formula.FormulaPane=900*600 com.fr.design.formula.FormulaPaneWhenReserveFormula=900*600 com.fr.design.mainframe.mobile.ui.MobileStyleDefinePane.configLabel=75*20 com.fr.design.mainframe.mobile.utils.DesignerUtils.configLabel=100*20 +com.fr.design.update.ui.dialog.UpdateMainDialog.updateButton=80*24 diff --git a/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh_TW.properties b/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh_TW.properties index 03972b51c0..e1bcdba473 100644 --- a/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh_TW.properties +++ b/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh_TW.properties @@ -27,3 +27,4 @@ com.fr.design.formula.FormulaPane=900*600 com.fr.design.formula.FormulaPaneWhenReserveFormula=900*600 com.fr.design.mainframe.mobile.ui.MobileStyleDefinePane.configLabel=75*20 com.fr.design.mainframe.mobile.utils.DesignerUtils.configLabel=100*20 +com.fr.design.update.ui.dialog.UpdateMainDialog.updateButton=80*24 From 1b38062b180c55c53f1bca14e5f185061e2455a7 Mon Sep 17 00:00:00 2001 From: obo Date: Mon, 29 Jul 2024 18:05:52 +0800 Subject: [PATCH 44/49] =?UTF-8?q?REPORT-125641=20fix:=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98-=E8=8B=B1?= =?UTF-8?q?=E8=AF=AD=E6=98=BE=E7=A4=BA=E4=B8=8D=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/write/submit/DBManipulationPane.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/write/submit/DBManipulationPane.java b/designer-base/src/main/java/com/fr/design/write/submit/DBManipulationPane.java index 46b11d2a89..2526d6fdbf 100644 --- a/designer-base/src/main/java/com/fr/design/write/submit/DBManipulationPane.java +++ b/designer-base/src/main/java/com/fr/design/write/submit/DBManipulationPane.java @@ -28,6 +28,7 @@ import com.fr.design.gui.icombobox.UIComboBoxRenderer; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilist.CheckBoxList; import com.fr.design.gui.itree.refreshabletree.ExpandMutableTreeNode; +import com.fr.design.i18n.Toolkit; import com.fr.design.javascript.JavaScriptActionPane; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; @@ -291,8 +292,9 @@ public class DBManipulationPane extends BasicBeanPane { cr.setForeground(UIConstants.NORMAL_BACKGROUND); JScrollPane jp = new JScrollPane(conditionsTree); addComponent(conditionPane, jp); - - UIButton addSubmitConditionButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Set_Submit_Condition")); + String submitCondition = Toolkit.i18nText("Fine-Design_Basic_Set_Submit_Condition"); + UIButton addSubmitConditionButton = new UIButton(submitCondition); + addSubmitConditionButton.setToolTipText(submitCondition); addSubmitConditionButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { From ea83248a0be547420a529be36d1fafcbc2614ec1 Mon Sep 17 00:00:00 2001 From: "Leo.Qin" Date: Wed, 31 Jul 2024 14:09:33 +0800 Subject: [PATCH 45/49] =?UTF-8?q?REPORT-128652=20=E5=BC=80=E5=90=AF?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E8=AE=A4=E8=AF=81=E5=90=8E=EF=BC=8C=E6=96=B0?= =?UTF-8?q?=E5=BB=BAfvs=E6=A8=A1=E6=9D=BF=E6=8A=A5=E9=94=99=E3=80=82=20?= =?UTF-8?q?=E3=80=90=E9=97=AE=E9=A2=98=E5=8E=9F=E5=9B=A0=E3=80=91=E4=B8=BB?= =?UTF-8?q?jar=E4=BF=AE=E6=94=B9=E4=BA=86sessionID=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E7=9A=84=E6=A0=A1=E9=AA=8C=EF=BC=8C=E5=AF=BC=E8=87=B4fvs?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E7=9A=84=E9=83=A8=E5=88=86=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E9=80=9A=E8=BF=87=E6=A0=A1=E9=AA=8C=E3=80=82?= =?UTF-8?q?=20=E3=80=90=E6=94=B9=E5=8A=A8=E6=80=9D=E8=B7=AF=E3=80=91?= =?UTF-8?q?=E6=9B=B4=E6=96=B0jar=E5=BC=BA=E5=88=B6FVS=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E5=8D=87=E7=BA=A7=EF=BC=8C=E9=80=9A=E8=BF=87=E6=8F=90=E9=AB=98?= =?UTF-8?q?fvs=E7=8B=AC=E5=8D=A0=E6=8E=A5=E5=8F=A3api=20level=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/fun/DefaultValueAdjustProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/fun/DefaultValueAdjustProvider.java b/designer-base/src/main/java/com/fr/design/fun/DefaultValueAdjustProvider.java index f534163b04..578d4c422f 100644 --- a/designer-base/src/main/java/com/fr/design/fun/DefaultValueAdjustProvider.java +++ b/designer-base/src/main/java/com/fr/design/fun/DefaultValueAdjustProvider.java @@ -14,7 +14,7 @@ import java.awt.Font; */ public interface DefaultValueAdjustProvider extends Selectable { String MARK_STRING = "DefaultValueAdjustProvider"; - int CURRENT_LEVEL = 2; + int CURRENT_LEVEL = 3; /** * 调整单元格对象默认值 From d0d6d6c634b8fc3aa9f2df564d7125b796d4ae07 Mon Sep 17 00:00:00 2001 From: "Leo.Qin" Date: Fri, 2 Aug 2024 16:55:05 +0800 Subject: [PATCH 46/49] =?UTF-8?q?Revert=20"REPORT-128652=20=E5=BC=80?= =?UTF-8?q?=E5=90=AF=E6=A8=A1=E6=9D=BF=E8=AE=A4=E8=AF=81=E5=90=8E=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E5=BB=BAfvs=E6=A8=A1=E6=9D=BF=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E3=80=82"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit ea83248a0be547420a529be36d1fafcbc2614ec1. --- .../main/java/com/fr/design/fun/DefaultValueAdjustProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/fun/DefaultValueAdjustProvider.java b/designer-base/src/main/java/com/fr/design/fun/DefaultValueAdjustProvider.java index 578d4c422f..f534163b04 100644 --- a/designer-base/src/main/java/com/fr/design/fun/DefaultValueAdjustProvider.java +++ b/designer-base/src/main/java/com/fr/design/fun/DefaultValueAdjustProvider.java @@ -14,7 +14,7 @@ import java.awt.Font; */ public interface DefaultValueAdjustProvider extends Selectable { String MARK_STRING = "DefaultValueAdjustProvider"; - int CURRENT_LEVEL = 3; + int CURRENT_LEVEL = 2; /** * 调整单元格对象默认值 From e8687b666c7599001fb60ade7e3c87e267c7c1a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Levy=2EXie-=E8=A7=A3=E5=AE=89=E6=A3=AE?= Date: Tue, 6 Aug 2024 12:55:20 +0800 Subject: [PATCH 47/49] =?UTF-8?q?REPORT-113994=20=E3=80=90NewUI=E3=80=91?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF=E7=BF=BB=E6=96=B0=E9=97=AE=E9=A2=98=E6=94=B6?= =?UTF-8?q?=E5=B0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/widget/ui/MultiFileEditorPane.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/MultiFileEditorPane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/MultiFileEditorPane.java index 2837939f21..2aea9d17d9 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/MultiFileEditorPane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/MultiFileEditorPane.java @@ -39,8 +39,7 @@ public class MultiFileEditorPane extends FieldEditorDefinePane singleFileCheckBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Single_File_Upload")); UIComponentUtils.setLineWrap(singleFileCheckBox); acceptType = new DictionaryComboBox(DictionaryConstants.acceptTypes, DictionaryConstants.fileTypeDisplays); - fileSizeField = new UISpinner(0, Integer.MAX_VALUE, 1, -1); - fileSizeField.setPreferredSize(new Dimension(140, 20)); + fileSizeField = new UISpinner(0, Integer.MAX_VALUE, 1); JPanel fileSizePane = new JPanel(new BorderLayout()); UILabel fileTypeLabel = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Utils_File_Type")); From 05c1b3e29ec3047a455c68ffc0507d0cb78b5ede Mon Sep 17 00:00:00 2001 From: lemon Date: Tue, 6 Aug 2024 13:30:35 +0800 Subject: [PATCH 48/49] =?UTF-8?q?REPORT-127437=20fix:=E9=9A=90=E8=97=8F=20?= =?UTF-8?q?jtable=20=E6=BB=9A=E5=8A=A8=E6=9D=A1=EF=BC=8C=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E4=B8=80=E4=BA=9B=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alphafine/component/CustomSortPane.java | 4 --- .../itableeditorpane/UITableEditorPane.java | 33 ++++++++++++------- .../main/java/com/fr/env/RemoteEnvPane.java | 4 +-- .../fr/design/report/ReportColumnsPane.java | 2 +- 4 files changed, 25 insertions(+), 18 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java index fe8f2cf836..418cee96dd 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java @@ -78,10 +78,6 @@ public class CustomSortPane extends JPanel { bottom = new UIButton(new LazyIcon("to_bottom")); up = new UIButton(new LazyIcon("move_up")); down = new UIButton(new LazyIcon("move_down")); - top.setDisabledIcon(new LazyIcon("to_top").disabled()); - bottom.setDisabledIcon(new LazyIcon("to_bottom").disabled()); - up.setDisabledIcon(new LazyIcon("move_up").disabled()); - down.setDisabledIcon(new LazyIcon("move_down").disabled()); top.addActionListener(e -> { SwingUtilities.invokeLater(() -> { sortItemPane.setComponentZOrder(selectedLabel, 0); diff --git a/designer-base/src/main/java/com/fr/design/gui/itableeditorpane/UITableEditorPane.java b/designer-base/src/main/java/com/fr/design/gui/itableeditorpane/UITableEditorPane.java index 704cbcc303..0293386aa1 100644 --- a/designer-base/src/main/java/com/fr/design/gui/itableeditorpane/UITableEditorPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/itableeditorpane/UITableEditorPane.java @@ -28,6 +28,8 @@ import java.awt.Component; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.Insets; +import java.awt.event.AdjustmentEvent; +import java.awt.event.AdjustmentListener; import java.util.List; import static com.fine.swing.ui.layout.Layouts.cell; @@ -50,6 +52,8 @@ public class UITableEditorPane extends BasicPane { protected UITableModelAdapter tableModel; private String leftLabelName; private JPanel buttonPane; + protected JScrollPane scrollPane; + protected JPanel verticalScrollBar; public UITableEditorPane(UITableModelAdapter model) { this.tableModel = model; @@ -99,18 +103,25 @@ public class UITableEditorPane extends BasicPane { * @param scrollPane * @return */ - protected Component buildScrollTablePane(JScrollPane scrollPane) { - return row( - cell(scrollPane).weight(1), - column( - cell(new UILabel()).with(it -> { - it.setBorder(BorderFactory.createMatteBorder(1, 0, 0, 1, UIManager.getColor("defaultBorderColor"))); - it.setPreferredSize(FineUIScale.scale(new Dimension(scrollPane.getVerticalScrollBar().getWidth(), (int) editTable.getTableHeader().getPreferredSize().getHeight()))); - }), - cell(scrollPane.getVerticalScrollBar()).weight(1).with(it -> { - it.setBorder(BorderFactory.createMatteBorder(1, 0, 1, 1, UIManager.getColor("defaultBorderColor"))); - })) + protected JPanel buildScrollTablePane(JScrollPane scrollPane) { + verticalScrollBar = column( + cell(new UILabel()).with(it -> { + it.setBorder(BorderFactory.createMatteBorder(1, 0, 0, 1, UIManager.getColor("defaultBorderColor"))); + it.setPreferredSize(new Dimension(scrollPane.getVerticalScrollBar().getWidth(), (int) editTable.getTableHeader().getPreferredSize().getHeight())); + }), + cell(scrollPane.getVerticalScrollBar()).weight(1).with(it -> { + it.setBorder(BorderFactory.createMatteBorder(1, 0, 1, 1, UIManager.getColor("defaultBorderColor"))); + }) ).getComponent(); + scrollPane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() { + @Override + public void adjustmentValueChanged(AdjustmentEvent e) { + verticalScrollBar.setVisible(editTable.getHeight() > scrollPane.getViewport().getHeight()); + verticalScrollBar.repaint(); + } + }); + + return row(cell(scrollPane).weight(1), cell(verticalScrollBar)).getComponent(); } public UITableModelAdapter getTableModel() { diff --git a/designer-base/src/main/java/com/fr/env/RemoteEnvPane.java b/designer-base/src/main/java/com/fr/env/RemoteEnvPane.java index 67d3e19690..865c5d71d7 100644 --- a/designer-base/src/main/java/com/fr/env/RemoteEnvPane.java +++ b/designer-base/src/main/java/com/fr/env/RemoteEnvPane.java @@ -79,7 +79,7 @@ public class RemoteEnvPane extends BasicBeanPane { private UIButton okButton = new UIButton(Toolkit.i18nText("Fine-Design_Report_OK")); private UIButton cancelButton = new UIButton(Toolkit.i18nText("Fine-Design_Basic_Cancel")); private UILabel uiLabel = new UILabel(); - private final int FIRST_COL_WIDTH = 72; + private final int FIRST_COL_WIDTH = 80; private final int SECOND_COL_WIDTH = 68; @@ -490,7 +490,7 @@ public class RemoteEnvPane extends BasicBeanPane { UILabel passwordLabel = new UILabel(Toolkit.i18nText("Fine-Design_Basic_Remote_Env_Account_Password")); passwordLabel.setHorizontalAlignment(SwingConstants.LEFT); - UILabel accountLabel = new UILabel(Toolkit.i18nText("Fine-Design_Basic_Remotex_Env_Platform_Account")); + UILabel accountLabel = new UILabel(Toolkit.i18nText("Fine-Design_Basic_Remote_Env_Platform_Account")); accountLabel.setHorizontalAlignment(SwingConstants.LEFT); //输入密码的时候检测下大写锁定 diff --git a/designer-realize/src/main/java/com/fr/design/report/ReportColumnsPane.java b/designer-realize/src/main/java/com/fr/design/report/ReportColumnsPane.java index db7aa5db20..9723d494af 100644 --- a/designer-realize/src/main/java/com/fr/design/report/ReportColumnsPane.java +++ b/designer-realize/src/main/java/com/fr/design/report/ReportColumnsPane.java @@ -121,7 +121,7 @@ public class ReportColumnsPane extends BasicPane{ uiLabel.setHorizontalAlignment(SwingConstants.CENTER); int uiLabelWidth = GraphHelper.getWidth(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_ReportColumns_Columns"), uiLableFont); - uiLabel.setPreferredSize(FineUIScale.scale(new Dimension(uiLabelWidth, 20))); + uiLabel.setPreferredSize(new Dimension(uiLabelWidth, FineUIScale.scale(20))); north.add(uiLabel,BorderLayout.WEST); JPanel buttonGroupPane = new JPanel(new FlowLayout(FlowLayout.CENTER, 23,11)); buttonGroupPane.add(onOffButtonGroup); From b5c4e807b65d01928844a7aee8d0abd29aa68f4e Mon Sep 17 00:00:00 2001 From: lemon Date: Tue, 6 Aug 2024 16:36:01 +0800 Subject: [PATCH 49/49] =?UTF-8?q?REPORT-127437=20fix:=E6=89=93=E5=8C=85?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/write/submit/DBManipulationPane.java | 3 +-- .../java/com/fr/design/cell/smartaction/SmartJTablePane.java | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/write/submit/DBManipulationPane.java b/designer-base/src/main/java/com/fr/design/write/submit/DBManipulationPane.java index 57e24e1fe2..b9aad8551e 100644 --- a/designer-base/src/main/java/com/fr/design/write/submit/DBManipulationPane.java +++ b/designer-base/src/main/java/com/fr/design/write/submit/DBManipulationPane.java @@ -55,7 +55,6 @@ import com.fr.write.config.DeleteConfig; import com.fr.write.config.InsertConfig; import com.fr.write.config.IntelliDMLConfig; import com.fr.write.config.UpdateConfig; -import sun.swing.table.DefaultTableCellHeaderRenderer; import javax.swing.AbstractCellEditor; import javax.swing.BorderFactory; @@ -174,7 +173,7 @@ public class DBManipulationPane extends BasicBeanPane { keyColumnValuesTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); keyColumnValuesTable.setPreferredScrollableViewportSize(FineUIScale.scale(new Dimension(280, 150))); keyColumnValuesTable.setShowHorizontalLines(true); - DefaultTableCellHeaderRenderer headerRenderer = new DefaultTableCellHeaderRenderer(); + DefaultTableCellRenderer headerRenderer = new DefaultTableCellRenderer(); headerRenderer.setHorizontalAlignment(SwingConstants.LEFT); keyColumnValuesTable.getTableHeader().setDefaultRenderer(headerRenderer); diff --git a/designer-realize/src/main/java/com/fr/design/cell/smartaction/SmartJTablePane.java b/designer-realize/src/main/java/com/fr/design/cell/smartaction/SmartJTablePane.java index 4d9ef68670..c55f9a6974 100644 --- a/designer-realize/src/main/java/com/fr/design/cell/smartaction/SmartJTablePane.java +++ b/designer-realize/src/main/java/com/fr/design/cell/smartaction/SmartJTablePane.java @@ -11,6 +11,7 @@ import javax.swing.SwingConstants; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.table.AbstractTableModel; +import javax.swing.table.DefaultTableCellRenderer; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.dialog.BasicDialog; @@ -19,7 +20,6 @@ import com.fr.design.dialog.DialogActionListener; import com.fr.design.mainframe.ElementCasePane; import com.fr.design.selection.SelectionListener; -import sun.swing.table.DefaultTableCellHeaderRenderer; /* * SmartJTablePane用于在Grid上面选单元格时编辑JTable @@ -73,7 +73,7 @@ public abstract class SmartJTablePane extends BasicPane { } } }); - DefaultTableCellHeaderRenderer headerRenderer = new DefaultTableCellHeaderRenderer(); + DefaultTableCellRenderer headerRenderer = new DefaultTableCellRenderer(); headerRenderer.setHorizontalAlignment(SwingConstants.LEFT); table.getTableHeader().setDefaultRenderer(headerRenderer);