From f31f140aadfb6bf4901e6c551f73501ec7b669d3 Mon Sep 17 00:00:00 2001 From: Starryi Date: Thu, 1 Dec 2022 15:47:57 +0800 Subject: [PATCH 01/30] =?UTF-8?q?REPORT-85708=20FR10=E5=86=B3=E7=AD=96?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8-=E8=AE=BE=E8=AE=A1=E7=94=BB=E5=B8=83?= =?UTF-8?q?=E5=86=85=E7=9A=84=E6=8A=A5=E8=A1=A8=E5=9D=97=E7=9A=84=E5=86=85?= =?UTF-8?q?=E5=AE=B9=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 问题产生的原因有两点: 1. 生成的截图内容不全,只包含了表格可见部分内容 2. 使用报表块的尺寸对原始截图裁切时,裁切的尺寸不对 10.0/11.0都有此问题 【改动思路】 1. 对表格进行截图时,要使得表格可以绘制所有有内容的单元格 2. 当报表块创建或尺寸改变时,在handleSizeChange方法中通知修改裁切尺寸 --- .../design/designer/creator/XElementCase.java | 1 - .../form/FormElementCaseDesigner.java | 67 +++++++++++++------ 2 files changed, 48 insertions(+), 20 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XElementCase.java b/designer-form/src/main/java/com/fr/design/designer/creator/XElementCase.java index 6b452bd08d..d1198d6094 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XElementCase.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XElementCase.java @@ -51,7 +51,6 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme public XElementCase(ElementCaseEditor widget, Dimension initSize) { super(widget, initSize); - widget.getElementCaseImage().adjustImageSize(initSize.width, initSize.height, false); } protected void initXCreatorProperties() { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/form/FormElementCaseDesigner.java b/designer-realize/src/main/java/com/fr/design/mainframe/form/FormElementCaseDesigner.java index 71d34ff445..02668947f9 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/form/FormElementCaseDesigner.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/form/FormElementCaseDesigner.java @@ -3,6 +3,8 @@ */ package com.fr.design.mainframe.form; +import com.fr.base.DynamicUnitList; +import com.fr.base.GraphHelper; import com.fr.base.TRL; import com.fr.base.vcs.DesignerMode; import com.fr.design.DesignState; @@ -33,11 +35,14 @@ import com.fr.form.FormElementCaseProvider; import com.fr.form.fit.common.LightTool; import com.fr.form.main.Form; import com.fr.grid.Grid; +import com.fr.grid.GridUtils; import com.fr.grid.selection.CellSelection; import com.fr.grid.selection.FloatSelection; import com.fr.grid.selection.Selection; import com.fr.log.FineLoggerFactory; +import com.fr.report.ReportHelper; import com.fr.report.cell.CellElement; +import com.fr.report.elementcase.ElementCase; import com.fr.report.elementcase.TemplateElementCase; import com.fr.report.worksheet.FormElementCase; import com.fr.report.worksheet.WorkSheet; @@ -132,16 +137,23 @@ public class FormElementCaseDesigner } /** - * 获取当前ElementCase的缩略图 + * 获取当前ElementCase的缩略图, 缩略图中包含所有有内容的单元格 * * @param size 缩略图的大小 */ @Override public BufferedImage getElementCaseImage(Dimension size) { + Grid grid = this.elementCasePane != null ? this.elementCasePane.getGrid() : null; + if (grid == null) { + return new BufferedImage(0, 0, BufferedImage.TYPE_INT_RGB); + } + + resetGrid(grid); + BufferedImage image = null; try { - int width = size.width; - int height = size.height; + int width = Math.max(grid.getWidth(), size.width); + int height = Math.max(grid.getHeight(), size.width); // 使用TYPE_INT_RGB和new Color(255, 255, 255, 1)设置有透明背景buffer image, // 使得创建出来的透明像素是(255, 255, 255, 1),而不是(0, 0, 0, 0) @@ -157,20 +169,16 @@ public class FormElementCaseDesigner // 使得创建出来的透明像素是(255, 255, 255, 1),而不是(0, 0, 0, 0) // 这样不支持透明通道缩略图的旧设计器打开新设计器创建的模版时,就不会创建出拥有黑色背景的缩略图 g2d.setColor(new Color(255, 255, 255, 1)); - g2d.fillRect(0, 0, (int) size.getWidth(), (int) size.getHeight()); - - Grid grid = this.elementCasePane != null ? this.elementCasePane.getGrid() : null; - if (grid != null) { - resetGrid(grid); - boolean oldTranslucent = grid.isTranslucent(); - boolean oldShowExtraGridLine = grid.isShowExtraGridLine(); - // 截缩图图时grid需支持半透明,不能用默认白色填充画布,否则会遮挡组件样式背景 - grid.setTranslucent(true); - grid.setShowExtraGridLine(false); - grid.paint(g2d); - grid.setTranslucent(oldTranslucent); - grid.setShowExtraGridLine(oldShowExtraGridLine); - } + g2d.fillRect(0, 0, width, height); + + boolean oldTranslucent = grid.isTranslucent(); + boolean oldShowExtraGridLine = grid.isShowExtraGridLine(); + // 截缩图图时grid需支持半透明,不能用默认白色填充画布,否则会遮挡组件样式背景 + grid.setTranslucent(true); + grid.setShowExtraGridLine(false); + grid.paint(g2d); + grid.setTranslucent(oldTranslucent); + grid.setShowExtraGridLine(oldShowExtraGridLine); } catch (Exception e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); @@ -180,12 +188,33 @@ public class FormElementCaseDesigner } private void resetGrid(Grid grid) { - grid.setResolution(Constants.DEFAULT_WEBWRITE_AND_SCREEN_RESOLUTION); - grid.updateUI(); grid.setAdsorbHeight(0); grid.setAdsorbWidth(0); + grid.setVerticalValue(0); grid.setHorizontalValue(0); + + FormElementCasePaneDelegate reportPane = getEditingElementCasePane(); + ColumnRow lastColumnRow = GridUtils.getAdjustLastColumnRowOfReportPane(reportPane); + + int lastColumn = lastColumnRow.getColumn(); + int lastRow = lastColumnRow.getRow(); + + grid.setVerticalExtent(lastRow); + grid.setHorizontalExtent(lastColumn); + + ElementCase report = reportPane.getEditingElementCase(); + DynamicUnitList rowHeightList = ReportHelper.getRowHeightList(report); + DynamicUnitList columnWidthList = ReportHelper.getColumnWidthList(report); + + int resolution = grid.getResolution(); + int width = columnWidthList.getRangeValueFromZero(lastColumn).toPixI(resolution); + int height = rowHeightList.getRangeValueFromZero(lastRow).toPixI(resolution); + + int gridLineWidth = GraphHelper.getLineStyleSize(Constants.LINE_THIN); + grid.setSize(width + gridLineWidth, height + gridLineWidth); + + grid.updateUI(); } /** From dc66634a7eda5c1269c1ee87fedf481aa036d4ec Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Thu, 1 Dec 2022 17:22:13 +0800 Subject: [PATCH 02/30] =?UTF-8?q?REPORT-82895=20=E3=80=9011.0.11=E5=BB=B6?= =?UTF-8?q?=E6=9C=9F=E3=80=91=E5=8D=95=E5=85=83=E6=A0=BC=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E5=86=BB=E7=BB=93=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/freeze/FreezeAndRepeatPane.java | 13 ++ .../design/report/freeze/FreezePagePane.java | 16 ++ .../freeze/RepeatAndFreezeSettingPane.java | 209 +++++++++++++----- 3 files changed, 184 insertions(+), 54 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/report/freeze/FreezeAndRepeatPane.java b/designer-realize/src/main/java/com/fr/design/report/freeze/FreezeAndRepeatPane.java index a23de219be..c0af78bf06 100644 --- a/designer-realize/src/main/java/com/fr/design/report/freeze/FreezeAndRepeatPane.java +++ b/designer-realize/src/main/java/com/fr/design/report/freeze/FreezeAndRepeatPane.java @@ -3,6 +3,8 @@ package com.fr.design.report.freeze; import java.awt.Dimension; import javax.swing.JComponent; import com.fr.design.gui.ilable.UILabel; + +import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import com.fr.design.beans.BasicBeanPane; import com.fr.design.gui.ispinner.UISpinner; @@ -27,6 +29,14 @@ public abstract class FreezeAndRepeatPane extends BasicBeanPane { Dimension size = new Dimension(43, 21); if (start instanceof UISpinner) { start.setPreferredSize(size); + ((UISpinner) start).addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + if (end instanceof UISpinner) { + ((UISpinner) end).setValue(Math.max(((UISpinner) start).getValue(), ((UISpinner) end).getValue())); + } + } + }); } if (end instanceof UISpinner) { end.setPreferredSize(size); @@ -63,6 +73,9 @@ public abstract class FreezeAndRepeatPane extends BasicBeanPane { * 给UISpinner添加Listener */ public void addListener(ChangeListener l) { + if (start instanceof UISpinner) { + ((UISpinner) start).addChangeListener(l); + } if (end instanceof UISpinner) { ((UISpinner) end).addChangeListener(l); } diff --git a/designer-realize/src/main/java/com/fr/design/report/freeze/FreezePagePane.java b/designer-realize/src/main/java/com/fr/design/report/freeze/FreezePagePane.java index edfacb396e..fdaa8c12aa 100644 --- a/designer-realize/src/main/java/com/fr/design/report/freeze/FreezePagePane.java +++ b/designer-realize/src/main/java/com/fr/design/report/freeze/FreezePagePane.java @@ -9,6 +9,7 @@ import com.fr.stable.StableUtils; public class FreezePagePane extends FreezeAndRepeatPane { private boolean isNumber; + private boolean isFoot; public FreezePagePane(boolean isNumber) { this.isNumber = isNumber; @@ -17,6 +18,14 @@ public class FreezePagePane extends FreezeAndRepeatPane { super.initComponent(); } + public FreezePagePane(boolean isNumber, boolean isFoot) { + this.isFoot = isFoot; + this.isNumber = isNumber; + start = new UILabel(isNumber ? com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Frozen_N.O.")+" 1" : com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Frozen_N.O.")+" A", SwingConstants.CENTER); + end = new UILabel(isNumber ? " 1"+com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Row") : " A"+com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Column"), SwingConstants.CENTER); + super.initComponent(); + } + @Override protected String title4PopupWindow() { return "FreezePage"; @@ -29,6 +38,13 @@ public class FreezePagePane extends FreezeAndRepeatPane { } else { ((UILabel) end).setText(StableUtils.convertIntToABC(ob.getTo() + 1)+com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Column")); } + if (isFoot) { + if (isNumber) { + ((UILabel) start).setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Frozen_N.O.")+String.valueOf(ob.getFrom() + 1)); + } else { + ((UILabel) start).setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Frozen_N.O.")+StableUtils.convertIntToABC(ob.getFrom() + 1)); + } + } } @Override diff --git a/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java b/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java index 17cf8566a9..5bece96b2a 100644 --- a/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java +++ b/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java @@ -1,11 +1,14 @@ package com.fr.design.report.freeze; import com.fr.base.FRContext; +import com.fr.design.constants.UIConstants; import com.fr.design.dialog.BasicPane; import com.fr.design.extra.WebViewDlgHelper; +import com.fr.design.gui.frpane.UITabbedPane; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ilable.ActionLabel; import com.fr.design.gui.ilable.UILabel; +import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.page.ReportPageAttrProvider; @@ -29,6 +32,9 @@ public class RepeatAndFreezeSettingPane extends BasicPane { //边框高度 private static final int LABEL_HEIGHT = 45; + //tab + private UITabbedPane tabbedPane; + // 重复标题行 private RepeatRowPane repeatTitleRowPane; // 重复标题列 @@ -41,6 +47,10 @@ public class RepeatAndFreezeSettingPane extends BasicPane { private FreezePagePane freezePageRowPane; // 分页冻结列 private FreezePagePane freezePageColPane; + //分页冻结结尾行 + private FreezePagePane freezeFootRowPane; + //分页冻结结尾列 + private FreezePagePane freezeFootColPane; // 填报冻结行 private FreezeWriteRowPane freezeWriteRowPane; // 填报冻结列 @@ -53,12 +63,21 @@ public class RepeatAndFreezeSettingPane extends BasicPane { private UICheckBox useRepeatFinisCCheckBox; // 分页冻结 - private UICheckBox usePageFrozenCCheckBox; - private UICheckBox usePageFrozenRCheckBox; + private UICheckBox usePageHeadFrozenCCheckBox; + private UICheckBox usePageHeadFrozenRCheckBox; + private UICheckBox usePageFootFrozenCCheckBox; + private UICheckBox usePageFootFrozenRCheckBox; // 填报冻结 private UICheckBox useWriteFrozenCCheckBox; private UICheckBox useWriteFrozenRCheckBox; + private static final int REPEAT_AND_FROZEN_WIDTH = 600, REPEAT_AND_FROZEN_HEIGHT = 100; + + //标题区域 + private static final String REPEAT_AND_FROZEN_HEAD = Toolkit.i18nText("Fine-Design_Report_Repeat_Head"); + //结尾区域 + private static final String REPEAT_AND_FROZEN_FOOT = Toolkit.i18nText("Fine-Design_Report_Repeat_Foot"); + /** * 重复标题行 */ @@ -137,30 +156,41 @@ public class RepeatAndFreezeSettingPane extends BasicPane { * 分页冻结Pane */ private JPanel initPageFrozenPane() { - JPanel pagePanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); // 分页冻结 - UILabel pageLabel = new UILabel(getPageFrozenTitle()); - JPanel pageLabelPanel = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); - pageLabelPanel.add(pageLabel); - pagePanel.add(pageLabelPanel, BorderLayout.NORTH); JPanel pagecon = FRGUIPaneFactory.createNColumnGridInnerContainer_S_Pane(1); pagecon.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 0)); - pagePanel.add(pagecon, BorderLayout.CENTER); - UILabel warningx = new UILabel("(" + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Engine_Please_Set_Repeat_First") + ")"); - warningx.setForeground(Color.red); - pageLabelPanel.add(warningx); JPanel pageRowGridPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); - pageRowGridPane.add(this.usePageFrozenRCheckBox = new UICheckBox()); - pagecon.add(pageRowGridPane); + pageRowGridPane.add(this.usePageHeadFrozenRCheckBox = new UICheckBox()); // 显示行冻结信息的panel freezePageRowPane = new FreezePagePane(true); pageRowGridPane.add(freezePageRowPane); + pagecon.add(pageRowGridPane); addPageFrozenCol(pagecon); + addBorder(pagecon, REPEAT_AND_FROZEN_HEAD); + return pagecon; + } - return pagePanel; + private JPanel initPageFrozenFootPane() { + JPanel pageContentPanel = FRGUIPaneFactory.createNColumnGridInnerContainer_S_Pane(1); + pageContentPanel.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 0)); + // 行冻结 + JPanel pageRowPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); + pageRowPane.add(this.usePageFootFrozenRCheckBox = new UICheckBox()); + // 列冻结 + JPanel pageColPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); + pageColPane.add(this.usePageFootFrozenCCheckBox = new UICheckBox()); + pageContentPanel.add(pageRowPane); + freezeFootRowPane = new FreezePagePane(true, true); + pageRowPane.add(freezeFootRowPane); + pageContentPanel.add(pageColPane); + freezeFootColPane = new FreezePagePane(false, true); + pageColPane.add(freezeFootColPane); + addBorder(pageContentPanel, REPEAT_AND_FROZEN_FOOT); + return pageContentPanel; } + /** * 分页冻结列 */ @@ -168,7 +198,7 @@ public class RepeatAndFreezeSettingPane extends BasicPane { // 显示列冻结信息的panel freezePageColPane = new FreezePagePane(false); JPanel pageColGridPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); - pageColGridPane.add(this.usePageFrozenCCheckBox = new UICheckBox()); + pageColGridPane.add(this.usePageHeadFrozenCCheckBox = new UICheckBox()); pagecon.add(pageColGridPane); pageColGridPane.add(freezePageColPane); } @@ -209,13 +239,17 @@ public class RepeatAndFreezeSettingPane extends BasicPane { JPanel cenrepeatPanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); outrepeatPanel.add(cenrepeatPanel); JPanel outfreezePanel = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Engine_Frozen")); - this.add(outrepeatPanel, BorderLayout.NORTH); - this.add(outfreezePanel, BorderLayout.CENTER); - JPanel repeatPanel = FRGUIPaneFactory.createNColumnGridInnerContainer_S_Pane(1); - repeatPanel.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 0)); - JPanel freezePanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); - - outfreezePanel.add(freezePanel); + JPanel pagePanel = new JPanel(FRGUIPaneFactory.createBorderLayout()); + JPanel repeatHeadPanel = FRGUIPaneFactory.createNColumnGridInnerContainer_S_Pane(1); + JPanel repeatFootPanel = FRGUIPaneFactory.createNColumnGridInnerContainer_S_Pane(1); + + //添加上方的边界线 + addBorder(repeatHeadPanel, REPEAT_AND_FROZEN_HEAD); + addBorder(repeatFootPanel, REPEAT_AND_FROZEN_FOOT); + + pagePanel.add(outrepeatPanel, BorderLayout.NORTH); + pagePanel.add(outfreezePanel, BorderLayout.CENTER); + // 重复打印部分 // 重复打印标题的起始行 JPanel labelPanel = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); @@ -223,17 +257,26 @@ public class RepeatAndFreezeSettingPane extends BasicPane { UILabel warning = new UILabel("(" + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Engine_FreezeWarning") + ")"); warning.setForeground(Color.red); labelPanel.add(warning); - cenrepeatPanel.add(labelPanel, BorderLayout.NORTH); - cenrepeatPanel.add(repeatPanel, BorderLayout.CENTER); - - repeatPanel.add(initRowStartPane()); - addColStart(repeatPanel); - repeatPanel.add(initFootRowStarPane()); - addFootColStart(repeatPanel); - - freezePanel.add(initPageFrozenPane(), BorderLayout.NORTH); - addWriteFrozen(freezePanel); - + cenrepeatPanel.add(repeatHeadPanel, BorderLayout.NORTH); + cenrepeatPanel.add(repeatFootPanel, BorderLayout.CENTER); + + repeatHeadPanel.add(initRowStartPane()); + addColStart(repeatHeadPanel); + repeatFootPanel.add(initFootRowStarPane()); + addFootColStart(repeatFootPanel); + + + outfreezePanel.add(initPageFrozenPane(), BorderLayout.NORTH); + outfreezePanel.add(initPageFrozenFootPane(),BorderLayout.CENTER); + JPanel writePanel = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Engine_Frozen")); + addWriteFrozen(writePanel); + + tabbedPane = new UITabbedPane(); + //去除对应的焦点虚线边框 + tabbedPane.setFocusable(false); + tabbedPane.addTab(Toolkit.i18nText("Fine-Design_Basic_M_Page_Preview"), pagePanel); + tabbedPane.addTab(Toolkit.i18nText("Fine-Design_Basic_M_Write_Preview"), writePanel); + this.add(tabbedPane); initPageRwoListener(); initPageColListener(); initWriteListener(); @@ -253,8 +296,11 @@ public class RepeatAndFreezeSettingPane extends BasicPane { private void initPageRwoListener() { repeatTitleRowPane.addListener(freezePageRowListener); - // 分页重复冻结行 - usePageFrozenRCheckBox.addChangeListener(usePageFrozenRListener); + repeatFinisRowPane.addListener(freezePageFootRowListener); + // 分页重复冻结标题行 + usePageHeadFrozenRCheckBox.addChangeListener(usePageFrozenRListener); + //分页重复冻结结尾行 + usePageFootFrozenRCheckBox.addChangeListener(freezePageFootRowListener); //重复标题行 useRepeatTitleRCheckBox.addChangeListener(useRepeatTitleRListener); //重复结尾行 @@ -263,8 +309,11 @@ public class RepeatAndFreezeSettingPane extends BasicPane { protected void initPageColListener() { repeatTitleColPane.addListener(freezePageColListener); - // 分页重复冻结列 - usePageFrozenCCheckBox.addChangeListener(usePageFrozenCListener); + repeatFinisColPane.addListener(freezePageFootColListener); + // 分页重复冻结标题列 + usePageHeadFrozenCCheckBox.addChangeListener(usePageFrozenCListener); + //分页重复冻结结尾列 + usePageFootFrozenCCheckBox.addChangeListener(freezePageFootColListener); //重复标题列 useRepeatTitleCCheckBox.addChangeListener(useRepeatTitleCListener); //重复结尾列 @@ -287,7 +336,14 @@ public class RepeatAndFreezeSettingPane extends BasicPane { @Override public void stateChanged(ChangeEvent e) { - repeatFinisColPane.setEnabled(useRepeatFinisCCheckBox.isSelected()); + boolean flag = useRepeatFinisCCheckBox.isSelected(); + repeatFinisColPane.setEnabled(flag); + if (!flag) { + usePageFootFrozenCCheckBox.setSelected(false); + usePageFootFrozenCCheckBox.setEnabled(false); + } else { + usePageFootFrozenCCheckBox.setEnabled(true); + } } }; @@ -296,8 +352,14 @@ public class RepeatAndFreezeSettingPane extends BasicPane { @Override public void stateChanged(ChangeEvent e) { - repeatFinisRowPane.setEnabled(useRepeatFinisRCheckBox.isSelected()); - + boolean flag = useRepeatFinisRCheckBox.isSelected(); + repeatFinisRowPane.setEnabled(flag); + if (!flag) { + usePageFootFrozenRCheckBox.setSelected(false); + usePageFootFrozenRCheckBox.setEnabled(false); + } else { + usePageFootFrozenRCheckBox.setEnabled(true); + } } }; @@ -308,10 +370,10 @@ public class RepeatAndFreezeSettingPane extends BasicPane { boolean flag = useRepeatTitleCCheckBox.isSelected(); repeatTitleColPane.setEnabled(flag); if (!flag) { - usePageFrozenCCheckBox.setSelected(false); - usePageFrozenCCheckBox.setEnabled(false); + usePageHeadFrozenCCheckBox.setSelected(false); + usePageHeadFrozenCCheckBox.setEnabled(false); } else { - usePageFrozenCCheckBox.setEnabled(true); + usePageHeadFrozenCCheckBox.setEnabled(true); } } }; @@ -323,10 +385,10 @@ public class RepeatAndFreezeSettingPane extends BasicPane { boolean flag = useRepeatTitleRCheckBox.isSelected(); repeatTitleRowPane.setEnabled(flag); if (!flag) { - usePageFrozenRCheckBox.setSelected(false); - usePageFrozenRCheckBox.setEnabled(false); + usePageHeadFrozenRCheckBox.setSelected(false); + usePageHeadFrozenRCheckBox.setEnabled(false); } else { - usePageFrozenRCheckBox.setEnabled(true); + usePageHeadFrozenRCheckBox.setEnabled(true); } } }; @@ -352,14 +414,14 @@ public class RepeatAndFreezeSettingPane extends BasicPane { ChangeListener usePageFrozenCListener = new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { - freezePageColPane.setEnabled(usePageFrozenCCheckBox.isSelected()); + freezePageColPane.setEnabled(usePageHeadFrozenCCheckBox.isSelected()); } }; ChangeListener usePageFrozenRListener = new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { - freezePageRowPane.setEnabled(usePageFrozenRCheckBox.isSelected()); + freezePageRowPane.setEnabled(usePageHeadFrozenRCheckBox.isSelected()); } }; @@ -383,6 +445,28 @@ public class RepeatAndFreezeSettingPane extends BasicPane { } }; + // 分页重复冻结列数据联动(结尾行) + ChangeListener freezePageFootRowListener = new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + FT ft = repeatFinisRowPane.updateBean(); + int to = ft.getTo(); + int maxFrom = Math.max(ft.getFrom(), -1); + freezeFootRowPane.populateBean(new FT(maxFrom, Math.max(maxFrom, to))); + } + }; + + // 分页重复冻结列数据联动(结尾列) + ChangeListener freezePageFootColListener = new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + FT ft = repeatFinisColPane.updateBean(); + int to = ft.getTo(); + int maxFrom = Math.max(ft.getFrom(), -1); + freezeFootColPane.populateBean(new FT(maxFrom, Math.max(maxFrom, to))); + } + }; + /** * 窗口标题 * @@ -407,7 +491,8 @@ public class RepeatAndFreezeSettingPane extends BasicPane { if (isDefalut(ft)) { this.repeatTitleRowPane.populateBean(defaultFT); this.repeatTitleRowPane.setEnabled(false); - usePageFrozenRCheckBox.setEnabled(false); + usePageHeadFrozenRCheckBox.setEnabled(false); + usePageFootFrozenRCheckBox.setEnabled(false); } else { this.repeatTitleRowPane.populateBean(ft); useRepeatTitleRCheckBox.setSelected(true); @@ -423,7 +508,8 @@ public class RepeatAndFreezeSettingPane extends BasicPane { useRepeatFinisRCheckBox.setSelected(true); } - this.usePageFrozenRCheckBox.setSelected(attribute.isUsePageFrozenRow()); + this.usePageHeadFrozenRCheckBox.setSelected(attribute.isUsePageFrozenRow()); + this.usePageFootFrozenRCheckBox.setSelected(attribute.isUsePageFrozenRow()); this.freezePageRowPane.setEnabled(attribute.isUsePageFrozenRow()); } @@ -432,7 +518,8 @@ public class RepeatAndFreezeSettingPane extends BasicPane { if (isDefalut(ft)) { this.repeatTitleColPane.populateBean(defaultFT); this.repeatTitleColPane.setEnabled(false); - usePageFrozenCCheckBox.setEnabled(false); + usePageHeadFrozenCCheckBox.setEnabled(false); + usePageFootFrozenCCheckBox.setEnabled(false); } else { this.repeatTitleColPane.populateBean(ft); useRepeatTitleCCheckBox.setSelected(true); @@ -448,7 +535,8 @@ public class RepeatAndFreezeSettingPane extends BasicPane { useRepeatFinisCCheckBox.setSelected(true); } - this.usePageFrozenCCheckBox.setSelected(attribute.isUsePageFrozenColumn()); + this.usePageHeadFrozenCCheckBox.setSelected(attribute.isUsePageFrozenColumn()); + this.usePageFootFrozenCCheckBox.setSelected(attribute.isUsePageFrozenColumn()); this.freezePageColPane.setEnabled(attribute.isUsePageFrozenColumn()); } @@ -494,6 +582,17 @@ public class RepeatAndFreezeSettingPane extends BasicPane { return attribute; } + /** + * 给内部的重复与冻结选项添加指定的边框 + * + * @param jPanel 重复或冻结对应的界面 + * @param title 边框的文字 + */ + public static void addBorder(JPanel jPanel, String title) { + jPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createMatteBorder(1,0,0,0, UIConstants.TITLED_BORDER_COLOR), title)); + jPanel.setPreferredSize(new Dimension(REPEAT_AND_FROZEN_WIDTH,REPEAT_AND_FROZEN_HEIGHT)); + } + protected void updateRowPane(ReportPageAttrProvider attribute) { // 重复标题行 int titleFrom = valid(useRepeatTitleRCheckBox, this.repeatTitleRowPane.updateBean().getFrom()); @@ -506,7 +605,8 @@ public class RepeatAndFreezeSettingPane extends BasicPane { attribute.setRepeatFooterRowFrom(finishFrom); attribute.setRepeatFooterRowTo(finishTo); - attribute.setUsePageFrozenRow(this.usePageFrozenRCheckBox.isSelected()); + attribute.setUsePageFrozenRow(this.usePageHeadFrozenRCheckBox.isSelected() || this.usePageFootFrozenRCheckBox.isSelected()); + attribute.setUsePageFootFrozen(this.usePageFootFrozenRCheckBox.isSelected() || this.usePageFootFrozenCCheckBox.isSelected()); } private int valid(UICheckBox checkBox, int num) { @@ -524,7 +624,8 @@ public class RepeatAndFreezeSettingPane extends BasicPane { attribute.setRepeatFooterColumnFrom(finishFrom); attribute.setRepeatFooterColumnTo(finishTo); - attribute.setUsePageFrozenColumn(this.usePageFrozenCCheckBox.isSelected()); + attribute.setUsePageFrozenColumn(this.usePageHeadFrozenCCheckBox.isSelected() || this.usePageFootFrozenCCheckBox.isSelected()); + attribute.setUsePageFootFrozen(this.usePageFootFrozenRCheckBox.isSelected() || this.usePageFootFrozenCCheckBox.isSelected()); } /** From 60052676215c907d2ad3b313a7610f65843d8b16 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Thu, 1 Dec 2022 17:33:45 +0800 Subject: [PATCH 03/30] =?UTF-8?q?REPORT-82895=20=E3=80=9011.0.11=E5=BB=B6?= =?UTF-8?q?=E6=9C=9F=E3=80=91=E5=8D=95=E5=85=83=E6=A0=BC=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E5=86=BB=E7=BB=93=E4=BC=98=E5=8C=96=20=E6=9B=B4=E6=94=B9?= =?UTF-8?q?=E5=8F=98=E9=87=8F=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/report/freeze/FreezePagePane.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/report/freeze/FreezePagePane.java b/designer-realize/src/main/java/com/fr/design/report/freeze/FreezePagePane.java index fdaa8c12aa..03c279ec07 100644 --- a/designer-realize/src/main/java/com/fr/design/report/freeze/FreezePagePane.java +++ b/designer-realize/src/main/java/com/fr/design/report/freeze/FreezePagePane.java @@ -9,7 +9,7 @@ import com.fr.stable.StableUtils; public class FreezePagePane extends FreezeAndRepeatPane { private boolean isNumber; - private boolean isFoot; + private boolean foot; public FreezePagePane(boolean isNumber) { this.isNumber = isNumber; @@ -18,8 +18,8 @@ public class FreezePagePane extends FreezeAndRepeatPane { super.initComponent(); } - public FreezePagePane(boolean isNumber, boolean isFoot) { - this.isFoot = isFoot; + public FreezePagePane(boolean isNumber, boolean foot) { + this.foot = foot; this.isNumber = isNumber; start = new UILabel(isNumber ? com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Frozen_N.O.")+" 1" : com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Frozen_N.O.")+" A", SwingConstants.CENTER); end = new UILabel(isNumber ? " 1"+com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Row") : " A"+com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Column"), SwingConstants.CENTER); @@ -38,7 +38,7 @@ public class FreezePagePane extends FreezeAndRepeatPane { } else { ((UILabel) end).setText(StableUtils.convertIntToABC(ob.getTo() + 1)+com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Column")); } - if (isFoot) { + if (foot) { if (isNumber) { ((UILabel) start).setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Frozen_N.O.")+String.valueOf(ob.getFrom() + 1)); } else { From 72f18c340dcc10203be9a2fd010094e3dee6e762 Mon Sep 17 00:00:00 2001 From: Carlson Date: Fri, 2 Dec 2022 16:41:06 +0800 Subject: [PATCH 04/30] =?UTF-8?q?REPORT-85754=20fix:=E6=89=A9=E5=B1=95?= =?UTF-8?q?=E5=9B=BE=E8=A1=A8=E5=9C=BA=E6=99=AF=E8=AE=BE=E7=BD=AE-js-?= =?UTF-8?q?=E9=AB=98=E7=BA=A7=E7=BC=96=E8=BE=91=E7=95=8C=E9=9D=A2=E4=B8=8D?= =?UTF-8?q?=E5=BA=94=E8=AF=A5=E7=BD=AE=E5=BA=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/javascript/JSContentPane.java | 9 +++++++++ .../com/fr/design/javascript/JavaScriptImplPane.java | 6 +++++- .../chart/custom/component/VanChartHyperLinkPane.java | 6 +++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/javascript/JSContentPane.java b/designer-base/src/main/java/com/fr/design/javascript/JSContentPane.java index c9344f5ca8..a31ebe8450 100644 --- a/designer-base/src/main/java/com/fr/design/javascript/JSContentPane.java +++ b/designer-base/src/main/java/com/fr/design/javascript/JSContentPane.java @@ -31,6 +31,7 @@ import java.awt.BorderLayout; import java.awt.Cursor; import java.awt.Dimension; import java.awt.FontMetrics; +import java.awt.Window; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import java.awt.event.MouseAdapter; @@ -54,6 +55,7 @@ public class JSContentPane extends BasicPane { private JSImplUpdateAction jsImplUpdateAction; private JSImplPopulateAction jsImplPopulateAction; private boolean modal; + private Window parentWindow; BasicDialog advancedEditorDialog ; public JSContentPane(){} @@ -122,6 +124,9 @@ public class JSContentPane extends BasicPane { super.doCancel(); } },new Dimension(900,800)); + if (parentWindow != null) { + parentWindow.setVisible(false); + } advancedEditorDialog.setModal(modal); advancedEditorDialog.setResizable(true); advancedEditorDialog.pack(); @@ -133,6 +138,10 @@ public class JSContentPane extends BasicPane { labelPane.add(advancedEditorLabel,BorderLayout.EAST); } + public void setParentWindow(Window parentWindow) { + this.parentWindow = parentWindow; + } + protected UIScrollPane createContentTextAreaPanel(){ contentTextArea = new RSyntaxTextArea(); contentTextArea.setCloseCurlyBraces(true); diff --git a/designer-base/src/main/java/com/fr/design/javascript/JavaScriptImplPane.java b/designer-base/src/main/java/com/fr/design/javascript/JavaScriptImplPane.java index 6a83ad3d24..fa7e30dc44 100644 --- a/designer-base/src/main/java/com/fr/design/javascript/JavaScriptImplPane.java +++ b/designer-base/src/main/java/com/fr/design/javascript/JavaScriptImplPane.java @@ -29,6 +29,7 @@ import javax.swing.JPanel; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; +import java.awt.Window; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -49,6 +50,7 @@ public class JavaScriptImplPane extends AbstractHyperLinkPane { public JavaScriptImplPane(HashMap hyperLinkEditorMap, boolean needRenamePane) { super(hyperLinkEditorMap, needRenamePane); this.defaultArgs = new String[0]; + this.modal = true; initComponents(); } @@ -149,7 +151,9 @@ public class JavaScriptImplPane extends AbstractHyperLinkPane { return importedJsPane; } - + public void setParentWindow4ContentPane(Window parentWindow) { + jsPane.setParentWindow(parentWindow); + } /** * 参数改变 diff --git a/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java b/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java index 6e5b346a18..1a23ca8162 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java @@ -77,7 +77,11 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane { Constructor constructor = null; try { constructor = creator.getUpdatePane().getConstructor(HashMap.class, boolean.class); - return constructor.newInstance(getHyperLinkEditorMap(), false); + BasicBeanPane pane = constructor.newInstance(getHyperLinkEditorMap(), false); + if (pane instanceof JavaScriptImplPane) { + ((JavaScriptImplPane) pane).setParentWindow4ContentPane(getPopupEditDialog()); + } + return pane; } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); From 2148c6a8300406a1bef370bdd7ef4b05fa2b16e4 Mon Sep 17 00:00:00 2001 From: "John.Ying" Date: Tue, 6 Dec 2022 17:24:17 +0800 Subject: [PATCH 05/30] =?UTF-8?q?KERNEL-13706=20=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E6=97=B6=EF=BC=8C=E4=B8=8D=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E5=AF=B9=E6=AF=8F=E4=B8=80=E4=B8=AA=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=9B=86=E9=83=BD=E5=8E=BB=E8=AF=B7=E6=B1=82=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/DesignModelAdapter.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/DesignModelAdapter.java b/designer-base/src/main/java/com/fr/design/DesignModelAdapter.java index 013c703fb2..bd4130a853 100644 --- a/designer-base/src/main/java/com/fr/design/DesignModelAdapter.java +++ b/designer-base/src/main/java/com/fr/design/DesignModelAdapter.java @@ -276,22 +276,28 @@ public abstract class DesignModelAdapter map, Filter filter) { Iterator it = this.getBook().getTableDataNameIterator(); + List names = new ArrayList<>(); try { - // 清空下缓存 - tableDataParametersMap.clear(); + List tableDatas = new ArrayList<>(); while (it.hasNext()) { String name = it.next(); TableData tableData = this.getBook().getTableData(name); - ParameterProvider[] parameterProviders = DataOperator.getInstance().getTableDataParameters(tableData); + tableDatas.add(tableData); + names.add(name); + } + ParameterProvider[][] totalParameterProviders = DataOperator.getInstance().getTotalTableDataParameters(tableDatas); + tableDataParametersMap.clear(); + for (int i = 0; i < totalParameterProviders.length; i++) { + ParameterProvider[] parameterProviders = totalParameterProviders[i]; if (filter != null) { ParameterApplyHelper.addPara2Map(map, parameterProviders, filter, null, ParameterSource.DEFAULT_SOURCE); } else { ParameterApplyHelper.addPara2Map(map, parameterProviders, null, ParameterSource.TEMPLATE_SOURCE); } - tableDataParametersMap.put(name, parameterProviders); + tableDataParametersMap.put(names.get(i), parameterProviders); } } catch (Exception e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); + FineLoggerFactory.getLogger().error(e, e.getMessage()); } } From fcd0863d2909e9caefdb664a3383a2f92b380424 Mon Sep 17 00:00:00 2001 From: Carlson Date: Wed, 7 Dec 2022 15:44:42 +0800 Subject: [PATCH 06/30] =?UTF-8?q?REPORT-85754=20fix:=E5=8F=82=E8=80=83cpt?= =?UTF-8?q?=E5=9B=BE=E8=A1=A8=E7=9A=84=E7=B1=BB=E4=BC=BC=E5=86=99=E6=B3=95?= =?UTF-8?q?=EF=BC=8C=E5=BC=95=E5=85=A5=E7=84=A6=E7=82=B9=E4=B8=A2=E5=A4=B1?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/gui/controlpane/UIControlPane.java | 98 ++++++++++--------- .../fr/design/javascript/JSContentPane.java | 18 +--- .../design/javascript/JavaScriptImplPane.java | 17 +--- .../component/VanChartHyperLinkPane.java | 18 +++- .../fr/design/condition/HyperlinkPane.java | 11 ++- 5 files changed, 82 insertions(+), 80 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/controlpane/UIControlPane.java b/designer-base/src/main/java/com/fr/design/gui/controlpane/UIControlPane.java index f9a3ed0db3..12f904922d 100644 --- a/designer-base/src/main/java/com/fr/design/gui/controlpane/UIControlPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/controlpane/UIControlPane.java @@ -31,7 +31,6 @@ import java.awt.Color; import java.awt.Cursor; import java.awt.Dimension; import java.awt.FlowLayout; -import java.awt.Font; import java.awt.Frame; import java.awt.Graphics; import java.awt.Graphics2D; @@ -241,51 +240,12 @@ public abstract class UIControlPane extends JControlPane { } private void hideDialog() { - // 检查是否有子弹窗,如果有,则不隐藏 - for (Window window : getOwnedWindows()) { - if (window.isVisible()) { - return; - } - } - // 如果有可见模态对话框,则不隐藏 - for (Window window : DesignerContext.getDesignerFrame().getOwnedWindows()) { - if (window instanceof JDialog && window.isVisible() && ((JDialog) window).isModal()) { - return; - } - } - - try { - //没有指定owner的弹出框用的是SwingUtilities.getSharedOwnerFrame() - Frame sharedOwnerFrame = Reflect.on(SwingUtilities.class).call("getSharedOwnerFrame").get(); - for (Window window : sharedOwnerFrame.getOwnedWindows()) { - if (window instanceof JDialog && window.isVisible() && ((JDialog) window).isModal()) { - // 如果有可见模态对话框,则不隐藏 - return; - } - } - } catch (Exception ignore) { - //do nothing - } - - // 要隐藏 先检查有没有非法输入 - // 非法输入检查放在最后,因为可能出现面板弹出新弹框而失去焦点的情况,比如 输入公式时,弹出公式编辑对话框 - try { - checkValid(); - } catch (Exception exp) { - // 存在非法输入 拒绝隐藏 - this.setAlwaysOnTop(true); - FineJOptionPane.showMessageDialog(this, exp.getMessage()); - this.requestFocus(); - return; - } - if (JavaFxNativeFileChooser.isShowDialogState()) { - JavaFxNativeFileChooser.setShowDialogState(false); - return; + if (needToHidePopupEditDialog()) { + saveSettings(); + setVisible(false); + PopupDialogSaveAction saveAction = OSSupportCenter.getAction(PopupDialogSaveAction.class); + saveAction.unregister(); } - saveSettings(); - setVisible(false); - PopupDialogSaveAction saveAction = OSSupportCenter.getAction(PopupDialogSaveAction.class); - saveAction.unregister(); } private void initListener() { @@ -302,6 +262,54 @@ public abstract class UIControlPane extends JControlPane { } } + /** + * 是否需要隐藏popupEditDialog + */ + protected boolean needToHidePopupEditDialog() { + // 检查是否有子弹窗,如果有,则不隐藏 + for (Window window : popupEditDialog.getOwnedWindows()) { + if (window.isVisible()) { + return false; + } + } + // 如果有可见模态对话框,则不隐藏 + for (Window window : DesignerContext.getDesignerFrame().getOwnedWindows()) { + if (window instanceof JDialog && window.isVisible() && ((JDialog) window).isModal()) { + return false; + } + } + + try { + //没有指定owner的弹出框用的是SwingUtilities.getSharedOwnerFrame() + Frame sharedOwnerFrame = Reflect.on(SwingUtilities.class).call("getSharedOwnerFrame").get(); + for (Window window : sharedOwnerFrame.getOwnedWindows()) { + if (window instanceof JDialog && window.isVisible() && ((JDialog) window).isModal()) { + // 如果有可见模态对话框,则不隐藏 + return false; + } + } + } catch (Exception ignore) { + //do nothing + } + + // 要隐藏 先检查有没有非法输入 + // 非法输入检查放在最后,因为可能出现面板弹出新弹框而失去焦点的情况,比如 输入公式时,弹出公式编辑对话框 + try { + checkValid(); + } catch (Exception exp) { + // 存在非法输入 拒绝隐藏 + popupEditDialog.setAlwaysOnTop(true); + FineJOptionPane.showMessageDialog(this, exp.getMessage()); + popupEditDialog.requestFocus(); + return false; + } + if (JavaFxNativeFileChooser.isShowDialogState()) { + JavaFxNativeFileChooser.setShowDialogState(false); + return false; + } + return true; + } + // 移动弹出编辑面板的工具条 private class PopupToolPane extends JPanel { private JDialog parentDialog; // 如果不在对话框中,值为null diff --git a/designer-base/src/main/java/com/fr/design/javascript/JSContentPane.java b/designer-base/src/main/java/com/fr/design/javascript/JSContentPane.java index a31ebe8450..31c45da762 100644 --- a/designer-base/src/main/java/com/fr/design/javascript/JSContentPane.java +++ b/designer-base/src/main/java/com/fr/design/javascript/JSContentPane.java @@ -24,23 +24,21 @@ import com.fr.design.javascript.jsapi.JSImplUpdateAction; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; import com.fr.general.IOUtils; - import com.fr.js.JavaScriptImpl; +import javax.swing.JPanel; +import javax.swing.KeyStroke; +import javax.swing.SwingConstants; +import javax.swing.SwingWorker; import java.awt.BorderLayout; import java.awt.Cursor; import java.awt.Dimension; import java.awt.FontMetrics; -import java.awt.Window; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; -import javax.swing.JPanel; -import javax.swing.KeyStroke; -import javax.swing.SwingConstants; -import javax.swing.SwingWorker; public class JSContentPane extends BasicPane { protected RSyntaxTextArea contentTextArea; @@ -55,7 +53,6 @@ public class JSContentPane extends BasicPane { private JSImplUpdateAction jsImplUpdateAction; private JSImplPopulateAction jsImplPopulateAction; private boolean modal; - private Window parentWindow; BasicDialog advancedEditorDialog ; public JSContentPane(){} @@ -124,9 +121,6 @@ public class JSContentPane extends BasicPane { super.doCancel(); } },new Dimension(900,800)); - if (parentWindow != null) { - parentWindow.setVisible(false); - } advancedEditorDialog.setModal(modal); advancedEditorDialog.setResizable(true); advancedEditorDialog.pack(); @@ -138,10 +132,6 @@ public class JSContentPane extends BasicPane { labelPane.add(advancedEditorLabel,BorderLayout.EAST); } - public void setParentWindow(Window parentWindow) { - this.parentWindow = parentWindow; - } - protected UIScrollPane createContentTextAreaPanel(){ contentTextArea = new RSyntaxTextArea(); contentTextArea.setCloseCurlyBraces(true); diff --git a/designer-base/src/main/java/com/fr/design/javascript/JavaScriptImplPane.java b/designer-base/src/main/java/com/fr/design/javascript/JavaScriptImplPane.java index fa7e30dc44..37bca2f6eb 100644 --- a/designer-base/src/main/java/com/fr/design/javascript/JavaScriptImplPane.java +++ b/designer-base/src/main/java/com/fr/design/javascript/JavaScriptImplPane.java @@ -14,22 +14,18 @@ import com.fr.design.javascript.jsapi.JSImplUpdateAction; import com.fr.design.mainframe.DesignerContext; import com.fr.design.scrollruler.ModLineBorder; import com.fr.design.utils.gui.GUICoreUtils; - import com.fr.js.JavaScriptImpl; import com.fr.stable.ParameterProvider; import com.fr.stable.StringUtils; - -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.GridBagConstraints; -import java.awt.GridLayout; import javax.swing.BorderFactory; import javax.swing.JPanel; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; - -import java.awt.Window; +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.GridBagConstraints; +import java.awt.GridLayout; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -50,7 +46,6 @@ public class JavaScriptImplPane extends AbstractHyperLinkPane { public JavaScriptImplPane(HashMap hyperLinkEditorMap, boolean needRenamePane) { super(hyperLinkEditorMap, needRenamePane); this.defaultArgs = new String[0]; - this.modal = true; initComponents(); } @@ -151,10 +146,6 @@ public class JavaScriptImplPane extends AbstractHyperLinkPane { return importedJsPane; } - public void setParentWindow4ContentPane(Window parentWindow) { - jsPane.setParentWindow(parentWindow); - } - /** * 参数改变 * diff --git a/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java b/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java index 1a23ca8162..7b74d1576a 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java @@ -39,6 +39,8 @@ import com.fr.stable.Nameable; import com.fr.stable.bridge.StableFactory; import com.fr.van.chart.designer.component.VanChartUIListControlPane; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; @@ -77,11 +79,7 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane { Constructor constructor = null; try { constructor = creator.getUpdatePane().getConstructor(HashMap.class, boolean.class); - BasicBeanPane pane = constructor.newInstance(getHyperLinkEditorMap(), false); - if (pane instanceof JavaScriptImplPane) { - ((JavaScriptImplPane) pane).setParentWindow4ContentPane(getPopupEditDialog()); - } - return pane; + return constructor.newInstance(getHyperLinkEditorMap(), false); } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); @@ -190,6 +188,16 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane { } this.populate(nameObjects.toArray(new NameObject[nameObjects.size()])); + if (popupEditDialog instanceof HyperDialog) { + popupEditDialog.addWindowFocusListener(new WindowAdapter() { + @Override + public void windowLostFocus(WindowEvent e) { + if (needToHidePopupEditDialog()) { + popupEditDialog.setVisible(false); + } + } + }); + } doLayout(); } diff --git a/designer-realize/src/main/java/com/fr/design/condition/HyperlinkPane.java b/designer-realize/src/main/java/com/fr/design/condition/HyperlinkPane.java index 643ad78906..41e2ada868 100644 --- a/designer-realize/src/main/java/com/fr/design/condition/HyperlinkPane.java +++ b/designer-realize/src/main/java/com/fr/design/condition/HyperlinkPane.java @@ -9,12 +9,16 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.HyperlinkGroupPaneActionImpl; - -import com.fr.js.*; +import com.fr.js.EmailJavaScript; +import com.fr.js.JavaScript; +import com.fr.js.JavaScriptImpl; +import com.fr.js.NameJavaScriptGroup; +import com.fr.js.ReportletHyperlink; +import com.fr.js.WebHyperlink; import com.fr.report.cell.cellattr.highlight.HighlightAction; import com.fr.report.cell.cellattr.highlight.HyperlinkHighlightAction; -import javax.swing.*; +import javax.swing.SwingUtilities; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -47,6 +51,7 @@ public class HyperlinkPane extends ConditionAttrSingleConditionPane Date: Thu, 8 Dec 2022 20:28:08 +0800 Subject: [PATCH 07/30] =?UTF-8?q?REPORT-82895=20=E3=80=9011.0.11=E5=BB=B6?= =?UTF-8?q?=E6=9C=9F=E3=80=91=E5=8D=95=E5=85=83=E6=A0=BC=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E5=86=BB=E7=BB=93=E4=BC=98=E5=8C=96=20=E5=90=8E=E7=AB=AF?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E9=87=8D=E8=AE=BE=EF=BC=8C=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E6=89=A9=E5=B1=95=E5=90=8E=E7=9A=84=E8=A1=8C=E5=88=97=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/report/freeze/RepeatAndFreezeSettingPane.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java b/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java index 5bece96b2a..11a3aba60c 100644 --- a/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java +++ b/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java @@ -607,6 +607,8 @@ public class RepeatAndFreezeSettingPane extends BasicPane { attribute.setUsePageFrozenRow(this.usePageHeadFrozenRCheckBox.isSelected() || this.usePageFootFrozenRCheckBox.isSelected()); attribute.setUsePageFootFrozen(this.usePageFootFrozenRCheckBox.isSelected() || this.usePageFootFrozenCCheckBox.isSelected()); + + attribute.setUsePageFootRowFrozen(this.usePageFootFrozenRCheckBox.isSelected()); } private int valid(UICheckBox checkBox, int num) { @@ -626,6 +628,8 @@ public class RepeatAndFreezeSettingPane extends BasicPane { attribute.setUsePageFrozenColumn(this.usePageHeadFrozenCCheckBox.isSelected() || this.usePageFootFrozenCCheckBox.isSelected()); attribute.setUsePageFootFrozen(this.usePageFootFrozenRCheckBox.isSelected() || this.usePageFootFrozenCCheckBox.isSelected()); + + attribute.setUsePageFootColFrozen(this.usePageFootFrozenCCheckBox.isSelected()); } /** From 1d234a2c6b0f3f8cfc8d9e8a0b41cf36a7af7ea2 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Mon, 12 Dec 2022 15:53:50 +0800 Subject: [PATCH 08/30] =?UTF-8?q?REPORT-82895=20=E3=80=9011.0.11=E5=BB=B6?= =?UTF-8?q?=E6=9C=9F=E3=80=91=E5=8D=95=E5=85=83=E6=A0=BC=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E5=86=BB=E7=BB=93=E4=BC=98=E5=8C=96=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E5=88=A4=E6=96=AD,=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/report/freeze/FreezePagePane.java | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/report/freeze/FreezePagePane.java b/designer-realize/src/main/java/com/fr/design/report/freeze/FreezePagePane.java index 03c279ec07..f40e384f04 100644 --- a/designer-realize/src/main/java/com/fr/design/report/freeze/FreezePagePane.java +++ b/designer-realize/src/main/java/com/fr/design/report/freeze/FreezePagePane.java @@ -4,6 +4,7 @@ import com.fr.design.gui.ilable.UILabel; import javax.swing.SwingConstants; +import com.fr.design.i18n.Toolkit; import com.fr.stable.FT; import com.fr.stable.StableUtils; @@ -21,8 +22,14 @@ public class FreezePagePane extends FreezeAndRepeatPane { public FreezePagePane(boolean isNumber, boolean foot) { this.foot = foot; this.isNumber = isNumber; - start = new UILabel(isNumber ? com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Frozen_N.O.")+" 1" : com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Frozen_N.O.")+" A", SwingConstants.CENTER); - end = new UILabel(isNumber ? " 1"+com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Row") : " A"+com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Column"), SwingConstants.CENTER); + if (foot) { + start = new UILabel(isNumber ? com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Frozen_N.O.")+" 1" : com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Frozen_N.O.")+" A", SwingConstants.CENTER); + end = new UILabel(); + } else { + start = new UILabel(isNumber ? com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Frozen_N.O.")+" 1" : com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Frozen_N.O.")+" A", SwingConstants.CENTER); + end = new UILabel(isNumber ? " 1"+com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Row") : " A"+com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Column"), SwingConstants.CENTER); + } + super.initComponent(); } @@ -33,17 +40,18 @@ public class FreezePagePane extends FreezeAndRepeatPane { @Override public void populateBean(FT ob) { - if (isNumber) { - ((UILabel) end).setText(String.valueOf(ob.getTo() + 1)+com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Row")); - } else { - ((UILabel) end).setText(StableUtils.convertIntToABC(ob.getTo() + 1)+com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Column")); - } if (foot) { if (isNumber) { ((UILabel) start).setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Frozen_N.O.")+String.valueOf(ob.getFrom() + 1)); } else { ((UILabel) start).setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Frozen_N.O.")+StableUtils.convertIntToABC(ob.getFrom() + 1)); } + } else { + if (isNumber) { + ((UILabel) end).setText(String.valueOf(ob.getTo() + 1)+com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Row")); + } else { + ((UILabel) end).setText(StableUtils.convertIntToABC(ob.getTo() + 1)+com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Column")); + } } } @@ -58,6 +66,11 @@ public class FreezePagePane extends FreezeAndRepeatPane { @Override public String getLabeshow() { - return isNumber ? com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Row_To") : com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Column_To"); + if (foot) { + return isNumber ? com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Last_Row") : com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Last_Col"); + } else { + return isNumber ? com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Row_To") : com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Column_To"); + } + } } From d7f7d1985c759821b99179074aca9c1d6082ddbe Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 13 Dec 2022 15:29:24 +0800 Subject: [PATCH 09/30] =?UTF-8?q?REPORT-85953=20=E3=80=90=E4=B8=8A?= =?UTF-8?q?=E6=B5=B7=E7=90=86=E5=85=89=E3=80=91=E6=A8=A1=E6=9D=BF=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E9=97=AE=E9=A2=98=20=E4=BF=9D=E5=AD=98=E7=9A=84?= =?UTF-8?q?=E6=97=B6=E5=80=99=E4=B8=8D=E5=85=81=E8=AE=B8=E8=A7=A6=E5=8F=91?= =?UTF-8?q?=E9=A2=84=E8=A7=88=E4=BA=8B=E4=BB=B6?= 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 02116dc41c..d90ceb0556 100644 --- a/designer-realize/src/main/java/com/fr/start/MainDesigner.java +++ b/designer-realize/src/main/java/com/fr/start/MainDesigner.java @@ -368,7 +368,7 @@ public class MainDesigner extends BaseDesigner { @Override protected void upButtonClickEvent() { JTemplate jt = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); - if (jt == null) { + if (jt == null || jt.isSaving()) { return; } WebPreviewUtils.preview(jt); From 8bac6c7db46074f099562157a3f56413dd0dfaf4 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 13 Dec 2022 21:11:11 +0800 Subject: [PATCH 10/30] =?UTF-8?q?REPORT-82895=20=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=A0=BC=E9=87=8D=E5=A4=8D=E5=86=BB=E7=BB=93=E4=BC=98=E5=8C=96?= =?UTF-8?q?=20=E5=86=B3=E7=AD=96=E6=8A=A5=E8=A1=A8=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E7=BB=93=E5=B0=BE=E5=86=BB=E7=BB=93=E5=AE=9E=E7=8E=B0=EF=BC=8C?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/gui/ispinner/UISpinner.java | 10 ++++++++++ .../report/freeze/FreezeAndRepeatPane.java | 18 +++++++++++++++--- .../freeze/RepeatAndFreezeSettingPane.java | 10 +++++----- 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/ispinner/UISpinner.java b/designer-base/src/main/java/com/fr/design/gui/ispinner/UISpinner.java index 18207011fe..a19db05060 100644 --- a/designer-base/src/main/java/com/fr/design/gui/ispinner/UISpinner.java +++ b/designer-base/src/main/java/com/fr/design/gui/ispinner/UISpinner.java @@ -321,6 +321,16 @@ public class UISpinner extends JPanel implements UIObserver, GlobalNameObserver textField.setMaxValue(maxValue); } + /** + * 设置最小值 + * + * @param minValue 最小值 + */ + public void setMinValue(double minValue) { + this.minValue = minValue; + textField.setMinValue(minValue); + } + private void componentInitListeners() { preButton.addActionListener(new ActionListener() { @Override diff --git a/designer-realize/src/main/java/com/fr/design/report/freeze/FreezeAndRepeatPane.java b/designer-realize/src/main/java/com/fr/design/report/freeze/FreezeAndRepeatPane.java index c0af78bf06..cf32a24b65 100644 --- a/designer-realize/src/main/java/com/fr/design/report/freeze/FreezeAndRepeatPane.java +++ b/designer-realize/src/main/java/com/fr/design/report/freeze/FreezeAndRepeatPane.java @@ -32,14 +32,18 @@ public abstract class FreezeAndRepeatPane extends BasicBeanPane { ((UISpinner) start).addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { - if (end instanceof UISpinner) { - ((UISpinner) end).setValue(Math.max(((UISpinner) start).getValue(), ((UISpinner) end).getValue())); - } + updateEndValue(); } }); } if (end instanceof UISpinner) { end.setPreferredSize(size); + ((UISpinner) end).addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + updateEndValue(); + } + }); } this.setLayout(FRGUIPaneFactory.createBoxFlowLayout()); this.add(start); @@ -81,4 +85,12 @@ public abstract class FreezeAndRepeatPane extends BasicBeanPane { } } + + private void updateEndValue() { + if (end instanceof UISpinner) { + ((UISpinner) end).setMinValue(((UISpinner) start).getValue()); + ((UISpinner) end).setValue(((UISpinner) end).getValue()); + + } + } } \ No newline at end of file diff --git a/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java b/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java index 11a3aba60c..be7606a22d 100644 --- a/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java +++ b/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java @@ -242,6 +242,7 @@ public class RepeatAndFreezeSettingPane extends BasicPane { JPanel pagePanel = new JPanel(FRGUIPaneFactory.createBorderLayout()); JPanel repeatHeadPanel = FRGUIPaneFactory.createNColumnGridInnerContainer_S_Pane(1); JPanel repeatFootPanel = FRGUIPaneFactory.createNColumnGridInnerContainer_S_Pane(1); + tabbedPane = new UITabbedPane(); //添加上方的边界线 addBorder(repeatHeadPanel, REPEAT_AND_FROZEN_HEAD); @@ -268,14 +269,12 @@ public class RepeatAndFreezeSettingPane extends BasicPane { outfreezePanel.add(initPageFrozenPane(), BorderLayout.NORTH); outfreezePanel.add(initPageFrozenFootPane(),BorderLayout.CENTER); + tabbedPane.addTab(Toolkit.i18nText("Fine-Design_Basic_M_Page_Preview"), pagePanel); JPanel writePanel = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Engine_Frozen")); addWriteFrozen(writePanel); - tabbedPane = new UITabbedPane(); //去除对应的焦点虚线边框 tabbedPane.setFocusable(false); - tabbedPane.addTab(Toolkit.i18nText("Fine-Design_Basic_M_Page_Preview"), pagePanel); - tabbedPane.addTab(Toolkit.i18nText("Fine-Design_Basic_M_Write_Preview"), writePanel); this.add(tabbedPane); initPageRwoListener(); initPageColListener(); @@ -322,6 +321,7 @@ public class RepeatAndFreezeSettingPane extends BasicPane { protected void addWriteFrozen(JPanel freezePanel) { freezePanel.add(initWriteFrozenPane(), BorderLayout.CENTER); + tabbedPane.addTab(Toolkit.i18nText("Fine-Design_Basic_M_Write_Preview"), freezePanel); } protected void addFootColStart(JPanel repeatPanel) { @@ -509,7 +509,7 @@ public class RepeatAndFreezeSettingPane extends BasicPane { } this.usePageHeadFrozenRCheckBox.setSelected(attribute.isUsePageFrozenRow()); - this.usePageFootFrozenRCheckBox.setSelected(attribute.isUsePageFrozenRow()); + this.usePageFootFrozenRCheckBox.setSelected(attribute.isUsePageFootRowFrozen()); this.freezePageRowPane.setEnabled(attribute.isUsePageFrozenRow()); } @@ -536,7 +536,7 @@ public class RepeatAndFreezeSettingPane extends BasicPane { } this.usePageHeadFrozenCCheckBox.setSelected(attribute.isUsePageFrozenColumn()); - this.usePageFootFrozenCCheckBox.setSelected(attribute.isUsePageFrozenColumn()); + this.usePageFootFrozenCCheckBox.setSelected(attribute.isUsePageFootColFrozen()); this.freezePageColPane.setEnabled(attribute.isUsePageFrozenColumn()); } From 303894c472f869d9083162ef95233bcd03a0a993 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Wed, 14 Dec 2022 10:37:57 +0800 Subject: [PATCH 11/30] =?UTF-8?q?REPORT-86364=20=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E8=AE=BE=E8=AE=A1=E5=99=A8=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/actions/help/AboutPane.java | 4 +-- .../platform/ServicePlatformAction.java | 29 +++++++++++++++++++ .../mainframe/toolbar/ToolBarMenuDock.java | 7 +++-- .../images/platform/platform_normal.svg | 3 ++ 4 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 designer-base/src/main/java/com/fr/design/mainframe/platform/ServicePlatformAction.java create mode 100644 designer-base/src/main/resources/com/fr/design/images/platform/platform_normal.svg diff --git a/designer-base/src/main/java/com/fr/design/actions/help/AboutPane.java b/designer-base/src/main/java/com/fr/design/actions/help/AboutPane.java index 6158540888..d24665f69b 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/AboutPane.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/AboutPane.java @@ -126,8 +126,8 @@ public class AboutPane extends JPanel { if (GeneralContext.getLocale().equals(Locale.TAIWAN)) { return; } - boxCenterAlignmentPane = new BoxCenterAligmentPane("QQ: " + CloudCenter.getInstance().acquireUrlByKind("help.qq")); - contentPane.add(boxCenterAlignmentPane); + JPanel servicePlatformPane = getURLActionPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Service_Platform")+ ":", CloudCenter.getInstance().acquireUrlByKind("service.platform")); + contentPane.add(servicePlatformPane); } // 是否显示鸣谢面板 diff --git a/designer-base/src/main/java/com/fr/design/mainframe/platform/ServicePlatformAction.java b/designer-base/src/main/java/com/fr/design/mainframe/platform/ServicePlatformAction.java new file mode 100644 index 0000000000..b9fb5fd0e1 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/mainframe/platform/ServicePlatformAction.java @@ -0,0 +1,29 @@ +package com.fr.design.mainframe.platform; + +import com.fr.design.actions.UpdateAction; +import com.fr.design.i18n.Toolkit; +import com.fr.general.CloudCenter; + +import java.awt.Desktop; +import java.awt.event.ActionEvent; +import java.net.URI; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-12-14 + */ +public class ServicePlatformAction extends UpdateAction { + public ServicePlatformAction() { + this.setName(Toolkit.i18nText("Fine-Design_Basic_Service_Platform")); + this.setSmallIcon("/com/fr/design/images/platform/platform"); + } + + @Override + public void actionPerformed(ActionEvent e) { + try { + Desktop.getDesktop().browse(new URI(CloudCenter.getInstance().acquireUrlByKind("service.platform"))); + } catch (Exception exp) { + } + } +} diff --git a/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java index 904c281560..ba734af660 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java @@ -56,6 +56,7 @@ import com.fr.design.gui.itoolbar.UIToolbar; import com.fr.design.locale.impl.SupportLocaleImpl; import com.fr.design.mainframe.JTemplate; import com.fr.design.mainframe.ToolBarNewTemplatePane; +import com.fr.design.mainframe.platform.ServicePlatformAction; import com.fr.design.menu.MenuDef; import com.fr.design.menu.SeparatorDef; import com.fr.design.menu.ShortCut; @@ -571,9 +572,11 @@ public abstract class ToolBarMenuDock { if (AlphaFineConfigManager.isALPHALicAvailable()) { shortCuts.add(new AlphaFineAction()); } - + shortCuts.add(new EnvDetectorAction()); - + //服务平台 + shortCuts.add(new ServicePlatformAction()); + shortCuts.add(SeparatorDef.DEFAULT); if (DesignerEnvManager.getEnvManager().isOpenDebug()) { OSSupportCenter.buildAction(objects -> shortCuts.add(new FineUIAction()), SupportOSImpl.FINEUI); diff --git a/designer-base/src/main/resources/com/fr/design/images/platform/platform_normal.svg b/designer-base/src/main/resources/com/fr/design/images/platform/platform_normal.svg new file mode 100644 index 0000000000..ab95e95f3c --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/images/platform/platform_normal.svg @@ -0,0 +1,3 @@ + + + From 19e6c4206cb07fa440d162c0bb4bece0d8d2e782 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Wed, 14 Dec 2022 10:44:34 +0800 Subject: [PATCH 12/30] =?UTF-8?q?REPORT-86364=20=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E8=AE=BE=E8=AE=A1=E5=99=A8=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/actions/help/AboutPane.java | 2 +- .../fr/design/mainframe/platform/ServicePlatformAction.java | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/help/AboutPane.java b/designer-base/src/main/java/com/fr/design/actions/help/AboutPane.java index d24665f69b..dbb7798f3b 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/AboutPane.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/AboutPane.java @@ -126,7 +126,7 @@ public class AboutPane extends JPanel { if (GeneralContext.getLocale().equals(Locale.TAIWAN)) { return; } - JPanel servicePlatformPane = getURLActionPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Service_Platform")+ ":", CloudCenter.getInstance().acquireUrlByKind("service.platform")); + JPanel servicePlatformPane = getURLActionPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Service_Platform"), CloudCenter.getInstance().acquireUrlByKind("service.platform")); contentPane.add(servicePlatformPane); } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/platform/ServicePlatformAction.java b/designer-base/src/main/java/com/fr/design/mainframe/platform/ServicePlatformAction.java index b9fb5fd0e1..214b355680 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/platform/ServicePlatformAction.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/platform/ServicePlatformAction.java @@ -9,13 +9,15 @@ import java.awt.event.ActionEvent; import java.net.URI; /** + * 帮助-服务平台 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-12-14 */ public class ServicePlatformAction extends UpdateAction { public ServicePlatformAction() { - this.setName(Toolkit.i18nText("Fine-Design_Basic_Service_Platform")); + this.setName(Toolkit.i18nText("Fine-Design_Basic_Service_Platform_Title")); this.setSmallIcon("/com/fr/design/images/platform/platform"); } From d34c6db4de185ca029a2e6d135ec9e22f3927ada Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Wed, 14 Dec 2022 10:51:30 +0800 Subject: [PATCH 13/30] =?UTF-8?q?REPORT-86364=20=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E8=AE=BE=E8=AE=A1=E5=99=A8=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/mainframe/platform/ServicePlatformAction.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/platform/ServicePlatformAction.java b/designer-base/src/main/java/com/fr/design/mainframe/platform/ServicePlatformAction.java index 214b355680..7912354501 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/platform/ServicePlatformAction.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/platform/ServicePlatformAction.java @@ -2,7 +2,9 @@ package com.fr.design.mainframe.platform; import com.fr.design.actions.UpdateAction; import com.fr.design.i18n.Toolkit; +import com.fr.design.utils.BrowseUtils; import com.fr.general.CloudCenter; +import com.fr.log.FineLoggerFactory; import java.awt.Desktop; import java.awt.event.ActionEvent; @@ -23,9 +25,6 @@ public class ServicePlatformAction extends UpdateAction { @Override public void actionPerformed(ActionEvent e) { - try { - Desktop.getDesktop().browse(new URI(CloudCenter.getInstance().acquireUrlByKind("service.platform"))); - } catch (Exception exp) { - } + BrowseUtils.browser(CloudCenter.getInstance().acquireUrlByKind("service.platform")); } } From 9f3c569080e01340d12b7c7c9d2f9e1ca6979689 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Thu, 15 Dec 2022 17:08:57 +0800 Subject: [PATCH 14/30] =?UTF-8?q?REPORT-86809=20=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=A0=BC=E9=87=8D=E5=A4=8D=E5=86=BB=E7=BB=93-=E6=96=B0?= =?UTF-8?q?=E5=89=8D=E7=AB=AF-=E4=BA=A4=E4=BA=92=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../freeze/FormECRepeatAndFreezeSettingPane.java | 2 +- .../freeze/RepeatAndFreezeSettingPane.java | 16 ++++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/report/freeze/FormECRepeatAndFreezeSettingPane.java b/designer-realize/src/main/java/com/fr/design/report/freeze/FormECRepeatAndFreezeSettingPane.java index 2e9a17c4dc..250e7b6042 100644 --- a/designer-realize/src/main/java/com/fr/design/report/freeze/FormECRepeatAndFreezeSettingPane.java +++ b/designer-realize/src/main/java/com/fr/design/report/freeze/FormECRepeatAndFreezeSettingPane.java @@ -28,7 +28,7 @@ public class FormECRepeatAndFreezeSettingPane extends RepeatAndFreezeSettingPane } - protected void addWriteFrozen(JPanel freezePanel) { + protected void addWriteFrozen(JPanel freezePanel, JPanel pagePanel) { } diff --git a/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java b/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java index be7606a22d..ede5d7671d 100644 --- a/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java +++ b/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java @@ -269,13 +269,13 @@ public class RepeatAndFreezeSettingPane extends BasicPane { outfreezePanel.add(initPageFrozenPane(), BorderLayout.NORTH); outfreezePanel.add(initPageFrozenFootPane(),BorderLayout.CENTER); - tabbedPane.addTab(Toolkit.i18nText("Fine-Design_Basic_M_Page_Preview"), pagePanel); + outfreezePanel.add(new UILabel(" "+ Toolkit.i18nText("Fine-Design_Report_Engine_Freeze_Tip") + ""),BorderLayout.SOUTH); JPanel writePanel = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Engine_Frozen")); - addWriteFrozen(writePanel); + addWriteFrozen(writePanel, pagePanel); - //去除对应的焦点虚线边框 - tabbedPane.setFocusable(false); - this.add(tabbedPane); + if (tabbedPane.getTabSize() == 0) { + this.add(pagePanel); + } initPageRwoListener(); initPageColListener(); initWriteListener(); @@ -319,9 +319,13 @@ public class RepeatAndFreezeSettingPane extends BasicPane { useRepeatFinisCCheckBox.addChangeListener(useRepeatFinisCListener); } - protected void addWriteFrozen(JPanel freezePanel) { + protected void addWriteFrozen(JPanel freezePanel, JPanel pagePanel) { freezePanel.add(initWriteFrozenPane(), BorderLayout.CENTER); + tabbedPane.addTab(Toolkit.i18nText("Fine-Design_Basic_M_Page_Preview"), pagePanel); tabbedPane.addTab(Toolkit.i18nText("Fine-Design_Basic_M_Write_Preview"), freezePanel); + //去除对应的焦点虚线边框 + tabbedPane.setFocusable(false); + this.add(tabbedPane); } protected void addFootColStart(JPanel repeatPanel) { From ee4d41fbe8ea50fe6e2e6ffaf97f7467eb4a7a80 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Fri, 16 Dec 2022 14:09:33 +0800 Subject: [PATCH 15/30] =?UTF-8?q?REPORT-85618=20=E3=80=90FR=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E5=99=A8-=E7=A7=BB=E5=8A=A8=E7=AB=AF=E3=80=91?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E9=A1=BA=E5=BA=8F-frm=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=EF=BC=8C=E7=BB=84=E4=BB=B6=E4=BF=AE=E6=94=B9=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E5=90=8E=EF=BC=8Cbody-=E7=A7=BB=E5=8A=A8=E7=AB=AF-=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E9=A1=BA=E5=BA=8F=E4=BC=9A=E6=8E=92=E5=88=B0=E6=9C=80?= =?UTF-8?q?=E5=90=8E=E4=B8=80=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/widget/ui/FormSingleWidgetCardPane.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/widget/ui/FormSingleWidgetCardPane.java b/designer-form/src/main/java/com/fr/design/mainframe/widget/ui/FormSingleWidgetCardPane.java index 81e3a53641..dc5a4cb81a 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/widget/ui/FormSingleWidgetCardPane.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/widget/ui/FormSingleWidgetCardPane.java @@ -31,6 +31,7 @@ import com.fr.design.widget.ui.designer.component.WidgetCardTagBoundPane; import com.fr.form.ui.ChartEditor; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WScaleLayout; +import com.fr.form.ui.container.WSortLayout; import com.fr.form.ui.container.WTitleLayout; import com.fr.form.ui.widget.CRBoundsWidget; import com.fr.general.ComparatorUtils; @@ -241,7 +242,12 @@ public class FormSingleWidgetCardPane extends FormWidgetCardPane { showNameInvalidDialog(Toolkit.i18nText("Fine-Design_Form_Chart_Widget_Rename_Failure")); return; } + String oldName = widget.getWidgetName(); widgetPropertyPane.update(widget); + Widget innerWidget = WSortLayout.getInnerWidget(widget); + if (!StringUtils.equals(oldName, innerWidget.getWidgetName())) { + innerWidget.setMobileOldWidgetName(oldName); + } // 上面一行更新了组件 这里必须重新调用getWidgetName xCreator.resetCreatorName(widget.getWidgetName()); xCreator.resetVisible(widget.isVisible()); From d75a4f345a3be06bbe583119914e8d5021b4d0a2 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Fri, 16 Dec 2022 14:40:39 +0800 Subject: [PATCH 16/30] =?UTF-8?q?REPORT-85618=20=E3=80=90FR=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E5=99=A8-=E7=A7=BB=E5=8A=A8=E7=AB=AF=E3=80=91?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E9=A1=BA=E5=BA=8F-frm=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=EF=BC=8C=E7=BB=84=E4=BB=B6=E4=BF=AE=E6=94=B9=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E5=90=8E=EF=BC=8Cbody-=E7=A7=BB=E5=8A=A8=E7=AB=AF-=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E9=A1=BA=E5=BA=8F=E4=BC=9A=E6=8E=92=E5=88=B0=E6=9C=80?= =?UTF-8?q?=E5=90=8E=E4=B8=80=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/mainframe/widget/ui/FormSingleWidgetCardPane.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/widget/ui/FormSingleWidgetCardPane.java b/designer-form/src/main/java/com/fr/design/mainframe/widget/ui/FormSingleWidgetCardPane.java index dc5a4cb81a..98c539f278 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/widget/ui/FormSingleWidgetCardPane.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/widget/ui/FormSingleWidgetCardPane.java @@ -28,6 +28,7 @@ import com.fr.design.widget.Operator; import com.fr.design.widget.ui.designer.component.WidgetAbsoluteBoundPane; import com.fr.design.widget.ui.designer.component.WidgetBoundPane; import com.fr.design.widget.ui.designer.component.WidgetCardTagBoundPane; +import com.fr.form.main.WidgetUtil; import com.fr.form.ui.ChartEditor; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WScaleLayout; @@ -244,7 +245,7 @@ public class FormSingleWidgetCardPane extends FormWidgetCardPane { } String oldName = widget.getWidgetName(); widgetPropertyPane.update(widget); - Widget innerWidget = WSortLayout.getInnerWidget(widget); + Widget innerWidget = WidgetUtil.getInnerWidget(widget); if (!StringUtils.equals(oldName, innerWidget.getWidgetName())) { innerWidget.setMobileOldWidgetName(oldName); } From 6f7c26a886e0e99c24587f63ba10c48ca2a9529a Mon Sep 17 00:00:00 2001 From: WeiYanglu <> Date: Fri, 16 Dec 2022 14:55:18 +0800 Subject: [PATCH 17/30] =?UTF-8?q?REPORT-87060=20Swing=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E5=9C=A8Swing=E7=BA=BF=E7=A8=8B=E9=81=BF?= =?UTF-8?q?=E5=85=8D=E7=BA=BF=E7=A8=8B=E5=8D=A1=E6=AD=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/data/DesignTableDataManager.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java b/designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java index 2ce2a7d828..91c2080479 100644 --- a/designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java +++ b/designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java @@ -41,6 +41,7 @@ import com.fr.stable.StringUtils; import com.fr.stable.xml.XMLPrintWriter; import javax.swing.JFrame; +import javax.swing.SwingUtilities; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.io.ByteArrayOutputStream; @@ -649,13 +650,15 @@ public abstract class DesignTableDataManager { } private static void showParaWindow(final Map parameterMap, ParameterProvider[] inParameters) { - final ParameterInputPane pPane = new ParameterInputPane(inParameters); - pPane.showSmallWindow(new JFrame(), new DialogActionAdapter() { - @Override - public void doOk() { - parameterMap.putAll(pPane.update()); - } - }).setVisible(true); + SwingUtilities.invokeLater(() -> { + final ParameterInputPane pPane = new ParameterInputPane(inParameters); + pPane.showSmallWindow(new JFrame(), new DialogActionAdapter() { + @Override + public void doOk() { + parameterMap.putAll(pPane.update()); + } + }).setVisible(true); + }); } public static void setThreadLocal(String value) { From a89021bdeb17860386a62fc25d16a48ea4b5eec6 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Fri, 16 Dec 2022 16:01:14 +0800 Subject: [PATCH 18/30] =?UTF-8?q?REPORT-87124=20=E5=9B=BD=E9=99=85?= =?UTF-8?q?=E5=8C=96=E8=AE=BE=E8=AE=A1=E5=99=A8=E9=9C=80=E8=A6=81=E5=AF=B9?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=B9=B3=E5=8F=B0=E5=81=9A=E4=B8=8B=E9=9A=90?= =?UTF-8?q?=E8=97=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/mainframe/toolbar/ToolBarMenuDock.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java index ba734af660..3c75eff39d 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java @@ -574,8 +574,11 @@ public abstract class ToolBarMenuDock { } shortCuts.add(new EnvDetectorAction()); - //服务平台 - shortCuts.add(new ServicePlatformAction()); + //服务平台(仅针对中国大陆) + if (GeneralContext.getLocale().equals(Locale.CHINA)) { + shortCuts.add(new ServicePlatformAction()); + } + shortCuts.add(SeparatorDef.DEFAULT); if (DesignerEnvManager.getEnvManager().isOpenDebug()) { From 42f9d5ee53dea2040500dff98449e32141cb0dbf Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Fri, 16 Dec 2022 16:40:44 +0800 Subject: [PATCH 19/30] =?UTF-8?q?REPORT-86482=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E8=8E=B7=E5=8F=96=E6=97=B6=E9=97=B4=E8=8C=83?= =?UTF-8?q?=E5=9B=B4=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/update/ui/dialog/UpdateMainDialog.java | 14 ++++++++++++-- 1 file changed, 12 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 0dd70e03cd..1fa37f60f8 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 @@ -488,7 +488,7 @@ public class UpdateMainDialog extends UIDialog { continue; } } - if (isValidLogInfo(updateInfo[UpdateInfoTable.UPDATE_TITLE_INDEX]) && curJarDate != null) { + if (isValid(updateInfo, GeneralUtils.objectToString(curJarDate))) { updateInfoList.add(new Object[]{UPDATELOG_FORMAT.format(updateTime), updateInfo[UpdateInfoTable.UPDATE_VERSION_INDEX], updateInfo[UpdateInfoTable.UPDATE_TITLE_INDEX], updateTime.after(curJarDate)}); } } @@ -499,6 +499,11 @@ public class UpdateMainDialog extends UIDialog { } } + + private boolean isValid(String[] updateInfo, String curJarDate) { + return isValidLogInfo(updateInfo[UpdateInfoTable.UPDATE_TITLE_INDEX]) && curJarDate != null && curJarDate.compareTo(updateInfo[UpdateInfoTable.UPDATE_DATE_INDEX]) <= 0; + } + private void updateCachedInfoFile(JSONArray jsonArray) throws Exception { String cacheDirPath = StableUtils.pathJoin(WorkContext.getCurrent().getPath(), "resources", "offlineres"); File cacheFileDir = new File(cacheDirPath); @@ -554,13 +559,18 @@ public class UpdateMainDialog extends UIDialog { continue; } } - if (isValidLogInfo(updateTitle)) { + Date curDate = UPDATE_INFO_TABLE_FORMAT.parse(currentNO, new ParsePosition(currentNO.indexOf("-") + 1)); + if (isValid4GenerateInfo(updateTitle, GeneralUtils.objectToString(curDate), updateTimeStr)) { updateInfoList.add(new Object[]{updateTimeStr, updateVersionStr, updateTitle, updateTime.after(curJarDate)}); } } return new ArrayList<>(updateInfoList); } + private boolean isValid4GenerateInfo(String updateTitle, String curDate, String updateTimeStr) { + return isValidLogInfo(updateTitle) && curDate.compareTo(updateTimeStr) <= 0; + } + private boolean containsKeyword(String str, String keyword) { return str.toUpperCase().contains(keyword.toUpperCase()); } From 911468c341895888d9df7e649352975587b24737 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Mon, 19 Dec 2022 17:47:32 +0800 Subject: [PATCH 20/30] =?UTF-8?q?REPORT-87102=20=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=A0=BC=E9=87=8D=E5=A4=8D=E5=86=BB=E7=BB=93-=E6=96=B0?= =?UTF-8?q?=E5=89=8D=E7=AB=AF-=E4=BA=A4=E4=BA=92-=E5=8E=86=E5=8F=B2?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E5=9C=A8=E6=9C=AA=E5=8B=BE=E9=80=89=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E7=BB=93=E5=B0=BE=E8=A1=8C=E7=9A=84=E6=83=85=E5=86=B5?= =?UTF-8?q?=E4=B8=8B=E5=86=BB=E7=BB=93=E7=BB=93=E5=B0=BE=E8=A1=8C=E6=98=AF?= =?UTF-8?q?=E5=8F=AF=E9=80=89=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java | 1 + 1 file changed, 1 insertion(+) diff --git a/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java b/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java index ede5d7671d..5e6376bddf 100644 --- a/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java +++ b/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java @@ -534,6 +534,7 @@ public class RepeatAndFreezeSettingPane extends BasicPane { this.repeatFinisColPane.populateBean(defaultFT); this.repeatFinisColPane.setEnabled(false); useRepeatFinisCCheckBox.setSelected(false); + usePageFootFrozenCCheckBox.setEnabled(false); } else { this.repeatFinisColPane.populateBean(ft); useRepeatFinisCCheckBox.setSelected(true); From f016fc362880566514c86589bdd4b689936f0cab Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 20 Dec 2022 17:00:20 +0800 Subject: [PATCH 21/30] =?UTF-8?q?REPORT-87102=20=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=A0=BC=E9=87=8D=E5=A4=8D=E5=86=BB=E7=BB=93-=E6=96=B0?= =?UTF-8?q?=E5=89=8D=E7=AB=AF-=E4=BA=A4=E4=BA=92-=E5=8E=86=E5=8F=B2?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E5=9C=A8=E6=9C=AA=E5=8B=BE=E9=80=89=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E7=BB=93=E5=B0=BE=E8=A1=8C=E7=9A=84=E6=83=85=E5=86=B5?= =?UTF-8?q?=E4=B8=8B=E5=86=BB=E7=BB=93=E7=BB=93=E5=B0=BE=E8=A1=8C=E6=98=AF?= =?UTF-8?q?=E5=8F=AF=E9=80=89=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/report/freeze/RepeatAndFreezeSettingPane.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java b/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java index 5e6376bddf..4ba6a10ebc 100644 --- a/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java +++ b/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java @@ -496,7 +496,6 @@ public class RepeatAndFreezeSettingPane extends BasicPane { this.repeatTitleRowPane.populateBean(defaultFT); this.repeatTitleRowPane.setEnabled(false); usePageHeadFrozenRCheckBox.setEnabled(false); - usePageFootFrozenRCheckBox.setEnabled(false); } else { this.repeatTitleRowPane.populateBean(ft); useRepeatTitleRCheckBox.setSelected(true); @@ -507,6 +506,7 @@ public class RepeatAndFreezeSettingPane extends BasicPane { this.repeatFinisRowPane.populateBean(defaultFT); this.repeatFinisRowPane.setEnabled(false); useRepeatFinisRCheckBox.setSelected(false); + usePageFootFrozenRCheckBox.setEnabled(false); } else { this.repeatFinisRowPane.populateBean(ft); useRepeatFinisRCheckBox.setSelected(true); @@ -523,7 +523,6 @@ public class RepeatAndFreezeSettingPane extends BasicPane { this.repeatTitleColPane.populateBean(defaultFT); this.repeatTitleColPane.setEnabled(false); usePageHeadFrozenCCheckBox.setEnabled(false); - usePageFootFrozenCCheckBox.setEnabled(false); } else { this.repeatTitleColPane.populateBean(ft); useRepeatTitleCCheckBox.setSelected(true); From f992e29eee870ae7dacbd3b46422e6387efea9fd Mon Sep 17 00:00:00 2001 From: WeiYanglu <> Date: Wed, 21 Dec 2022 11:31:02 +0800 Subject: [PATCH 22/30] =?UTF-8?q?REPORT-87323=20=E8=BF=98=E5=8E=9F?= =?UTF-8?q?=E6=94=B9=E5=8A=A8=EF=BC=8C=E5=AF=BC=E8=87=B4=E6=9C=AA=E8=BE=93?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E5=B0=B1=E5=87=BA=E7=8E=B0=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=9B=86=E9=A2=84=E8=A7=88=E7=BB=93=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/data/DesignTableDataManager.java | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java b/designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java index 91c2080479..2ce2a7d828 100644 --- a/designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java +++ b/designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java @@ -41,7 +41,6 @@ import com.fr.stable.StringUtils; import com.fr.stable.xml.XMLPrintWriter; import javax.swing.JFrame; -import javax.swing.SwingUtilities; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.io.ByteArrayOutputStream; @@ -650,15 +649,13 @@ public abstract class DesignTableDataManager { } private static void showParaWindow(final Map parameterMap, ParameterProvider[] inParameters) { - SwingUtilities.invokeLater(() -> { - final ParameterInputPane pPane = new ParameterInputPane(inParameters); - pPane.showSmallWindow(new JFrame(), new DialogActionAdapter() { - @Override - public void doOk() { - parameterMap.putAll(pPane.update()); - } - }).setVisible(true); - }); + final ParameterInputPane pPane = new ParameterInputPane(inParameters); + pPane.showSmallWindow(new JFrame(), new DialogActionAdapter() { + @Override + public void doOk() { + parameterMap.putAll(pPane.update()); + } + }).setVisible(true); } public static void setThreadLocal(String value) { From 187e9170416f32ac094f0f58a74675e0501fe3e8 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Fri, 23 Dec 2022 17:29:12 +0800 Subject: [PATCH 23/30] =?UTF-8?q?REPORT-82895=20=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=A0=BC=E9=87=8D=E5=A4=8D=E5=86=BB=E7=BB=93=E4=BC=98=E5=8C=96?= =?UTF-8?q?=20=E6=8A=BD=E5=8F=96=E5=88=A4=E6=96=AD=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../freeze/RepeatAndFreezeSettingPane.java | 48 ++++++++++++++++++- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java b/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java index 4ba6a10ebc..b9806ddb39 100644 --- a/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java +++ b/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java @@ -583,9 +583,53 @@ public class RepeatAndFreezeSettingPane extends BasicPane { updateRowPane(attribute); updateColPane(attribute); + //单独将重复、分页、填报处理一下,原先的判断逻辑比较混乱,抽出来方便判断 + updateUseAttr(attribute); + return attribute; } + private void updateUseAttr(ReportPageAttrProvider attribute) { + attribute.setUseRepeat(isUseRepeat()); + attribute.setUsePageFrozen(isUsePageFrozen()); + attribute.setUseWriteFrozen(isUseWriteFrozen()); + } + + /** + * 是否使用填报冻结 + * + * @return 使用则返回true + */ + private boolean isUseWriteFrozen() { + return this.useWriteFrozenCCheckBox.isSelected() + || this.useWriteFrozenRCheckBox.isSelected(); + } + + + /** + * 是否使用分页冻结 + * + * @return 使用则返回true + */ + private boolean isUsePageFrozen() { + return this.usePageHeadFrozenRCheckBox.isSelected() + || this.usePageHeadFrozenCCheckBox.isSelected() + || this.usePageFootFrozenRCheckBox.isSelected() + || this.usePageFootFrozenCCheckBox.isSelected(); + } + + /** + * 是否使用重复 + * + * @return 使用返回true + */ + private boolean isUseRepeat() { + return this.useRepeatTitleRCheckBox.isSelected() + || this.useRepeatFinisRCheckBox.isSelected() + || this.useRepeatTitleCCheckBox.isSelected() + || this.useRepeatFinisCCheckBox.isSelected(); + } + /** * 给内部的重复与冻结选项添加指定的边框 * @@ -609,7 +653,7 @@ public class RepeatAndFreezeSettingPane extends BasicPane { attribute.setRepeatFooterRowFrom(finishFrom); attribute.setRepeatFooterRowTo(finishTo); - attribute.setUsePageFrozenRow(this.usePageHeadFrozenRCheckBox.isSelected() || this.usePageFootFrozenRCheckBox.isSelected()); + attribute.setUsePageFrozenRow(this.usePageHeadFrozenRCheckBox.isSelected()); attribute.setUsePageFootFrozen(this.usePageFootFrozenRCheckBox.isSelected() || this.usePageFootFrozenCCheckBox.isSelected()); attribute.setUsePageFootRowFrozen(this.usePageFootFrozenRCheckBox.isSelected()); @@ -630,7 +674,7 @@ public class RepeatAndFreezeSettingPane extends BasicPane { attribute.setRepeatFooterColumnFrom(finishFrom); attribute.setRepeatFooterColumnTo(finishTo); - attribute.setUsePageFrozenColumn(this.usePageHeadFrozenCCheckBox.isSelected() || this.usePageFootFrozenCCheckBox.isSelected()); + attribute.setUsePageFrozenColumn(this.usePageHeadFrozenCCheckBox.isSelected()); attribute.setUsePageFootFrozen(this.usePageFootFrozenRCheckBox.isSelected() || this.usePageFootFrozenCCheckBox.isSelected()); attribute.setUsePageFootColFrozen(this.usePageFootFrozenCCheckBox.isSelected()); From 11cc506f1aaa860c8eada9a3cb52a424ccf1357c Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Mon, 26 Dec 2022 18:27:40 +0800 Subject: [PATCH 24/30] =?UTF-8?q?REPORT-87566=20=E3=80=90=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=A0=BC=E9=87=8D=E5=A4=8D=E5=86=BB=E7=BB=93=E3=80=91?= =?UTF-8?q?FRM-22.12.26=E7=9A=84release=E5=88=86=E6=94=AF=EF=BC=8CFRM?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=86=BB=E7=BB=93=E7=9A=84=E7=AA=97=E5=8F=A3?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E6=97=B6=E6=97=A0=E5=93=8D=E5=BA=94=E4=B8=94?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E6=9C=89=E7=A9=BA=E6=8C=87=E9=92=88=E6=8A=A5?= =?UTF-8?q?=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/report/freeze/FormECRepeatAndFreezeSettingPane.java | 2 +- .../com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/report/freeze/FormECRepeatAndFreezeSettingPane.java b/designer-realize/src/main/java/com/fr/design/report/freeze/FormECRepeatAndFreezeSettingPane.java index 250e7b6042..6e53599492 100644 --- a/designer-realize/src/main/java/com/fr/design/report/freeze/FormECRepeatAndFreezeSettingPane.java +++ b/designer-realize/src/main/java/com/fr/design/report/freeze/FormECRepeatAndFreezeSettingPane.java @@ -29,7 +29,7 @@ public class FormECRepeatAndFreezeSettingPane extends RepeatAndFreezeSettingPane } protected void addWriteFrozen(JPanel freezePanel, JPanel pagePanel) { - + super.initWriteFrozenPane(); } } \ No newline at end of file diff --git a/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java b/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java index b9806ddb39..0d5ca8de7f 100644 --- a/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java +++ b/designer-realize/src/main/java/com/fr/design/report/freeze/RepeatAndFreezeSettingPane.java @@ -206,7 +206,7 @@ public class RepeatAndFreezeSettingPane extends BasicPane { /** * 填报冻结Pane */ - private JPanel initWriteFrozenPane() { + protected JPanel initWriteFrozenPane() { JPanel writePanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); // 填报冻结 UILabel writeLabel = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Face_Write_Frozen") + ":"); From fde70048f5afc823badc0ac2e085bfc4f8806e25 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 3 Jan 2023 10:19:06 +0800 Subject: [PATCH 25/30] =?UTF-8?q?REPORT-82895=20=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=A0=BC=E9=87=8D=E5=A4=8D=E5=86=BB=E7=BB=93=E4=BC=98=E5=8C=96?= =?UTF-8?q?=20=E6=89=93=E5=BC=80=E6=8A=A5=E9=94=99=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/report/freeze/FreezeAndRepeatPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/report/freeze/FreezeAndRepeatPane.java b/designer-realize/src/main/java/com/fr/design/report/freeze/FreezeAndRepeatPane.java index cf32a24b65..a946b63b16 100644 --- a/designer-realize/src/main/java/com/fr/design/report/freeze/FreezeAndRepeatPane.java +++ b/designer-realize/src/main/java/com/fr/design/report/freeze/FreezeAndRepeatPane.java @@ -87,7 +87,7 @@ public abstract class FreezeAndRepeatPane extends BasicBeanPane { private void updateEndValue() { - if (end instanceof UISpinner) { + if (end instanceof UISpinner && start instanceof UISpinner) { ((UISpinner) end).setMinValue(((UISpinner) start).getValue()); ((UISpinner) end).setValue(((UISpinner) end).getValue()); From 20fbc3032c9b86236fe2e6c46d869415ba989a3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=2EYing-=E5=BA=94=E5=BF=97=E6=B5=A9?= Date: Tue, 3 Jan 2023 15:31:31 +0800 Subject: [PATCH 26/30] =?UTF-8?q?REPORT-87787=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E6=8A=A5=E9=94=99=EF=BC=8C=20File=20not=20ex?= =?UTF-8?q?ists:/com/fr/design/images/platform/platform?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/mainframe/platform/ServicePlatformAction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/platform/ServicePlatformAction.java b/designer-base/src/main/java/com/fr/design/mainframe/platform/ServicePlatformAction.java index 7912354501..c6dc9a9b66 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/platform/ServicePlatformAction.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/platform/ServicePlatformAction.java @@ -20,7 +20,7 @@ import java.net.URI; public class ServicePlatformAction extends UpdateAction { public ServicePlatformAction() { this.setName(Toolkit.i18nText("Fine-Design_Basic_Service_Platform_Title")); - this.setSmallIcon("/com/fr/design/images/platform/platform"); + this.setSmallIcon("/com/fr/design/images/platform/platform", false); } @Override From 8db25859bb486704d1669da8497ddd2377b8b4d1 Mon Sep 17 00:00:00 2001 From: roger Date: Wed, 4 Jan 2023 10:19:09 +0800 Subject: [PATCH 27/30] =?UTF-8?q?REPORT-87843=20=E5=A4=8D=E5=88=B6?= =?UTF-8?q?=E7=89=B9=E5=AE=9A=E6=96=87=E4=BB=B6=E5=A4=B9=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=EF=BC=8C=E2=80=9C=E7=9A=84=E5=89=AF=E6=9C=AC=E2=80=9D=E5=90=8E?= =?UTF-8?q?=E7=BC=80=E4=BD=8D=E7=BD=AE=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/file/FileOperationHelper.java | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/file/FileOperationHelper.java b/designer-base/src/main/java/com/fr/design/file/FileOperationHelper.java index 21eb34d902..a3abaf4606 100644 --- a/designer-base/src/main/java/com/fr/design/file/FileOperationHelper.java +++ b/designer-base/src/main/java/com/fr/design/file/FileOperationHelper.java @@ -127,7 +127,7 @@ public class FileOperationHelper { WARNING_MESSAGE); return StringUtils.EMPTY; } - String name = getNoRepeatedName4Paste(targetDir, sourceFile.getName()); + String name = getNoRepeatedName4Paste(targetDir, sourceFile); String targetFile = StableUtils.pathJoin(targetDir, name); if (sourceFile.isDirectory()) { copyDir(sourcePath, targetFile, withCopyVcs); @@ -177,19 +177,22 @@ public class FileOperationHelper { * 重名处理 * * @param targetDir - * @param oldName + * @param sourceFile * @return */ - private String getNoRepeatedName4Paste(String targetDir, String oldName) { + private String getNoRepeatedName4Paste(String targetDir, FileNode sourceFile) { + String oldName = sourceFile.getName(); while (isNameRepeaded(targetDir, oldName)) { - int index = oldName.lastIndexOf("."); - if (index > 0) { - String oName = oldName.substring(0, index); - oName = oName + Toolkit.i18nText("Fine-Design_Table_Data_Copy_Of_Table_Data"); - oldName = oName.concat(oldName.substring(index)); - } else { + if (sourceFile.isDirectory()) { //目录重名 oldName = oldName + Toolkit.i18nText("Fine-Design_Table_Data_Copy_Of_Table_Data"); + } else { + int index = oldName.lastIndexOf("."); + if (index > 0) { + String oName = oldName.substring(0, index); + oName = oName + Toolkit.i18nText("Fine-Design_Table_Data_Copy_Of_Table_Data"); + oldName = oName.concat(oldName.substring(index)); + } } } return oldName; From bffc93847ee3f5d78f624964fcb33a77d9ab7bfb Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Wed, 4 Jan 2023 11:52:25 +0800 Subject: [PATCH 28/30] =?UTF-8?q?REPORT-87013=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A811.0.11=E6=9B=B4=E6=96=B0=E6=97=A5=E5=BF=97=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E7=9A=84=E4=BF=A1=E6=81=AF=E6=98=AF=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/update/ui/dialog/UpdateMainDialog.java | 11 +++++++++-- 1 file changed, 9 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 1fa37f60f8..033e2cb07f 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 @@ -118,6 +118,8 @@ public class UpdateMainDialog extends UIDialog { private ArrayList updateInfoList; + private Set titleSet; + private boolean getUpdateInfoSuccess; private UpdateInfoCachePropertyManager cacheProperty; @@ -267,6 +269,7 @@ public class UpdateMainDialog extends UIDialog { String keyword = searchUpdateInfoKeyword.getText(); if (ComparatorUtils.equals(keyword, StringUtils.EMPTY) && getUpdateInfoSuccess) { updateInfoList.clear(); + titleSet.clear(); getUpdateInfo(keyword).execute(); } } @@ -281,6 +284,7 @@ public class UpdateMainDialog extends UIDialog { public void actionPerformed(ActionEvent e) { if (getUpdateInfoSuccess) { updateInfoList.clear(); + titleSet.clear(); getUpdateInfo(searchUpdateInfoKeyword.getText()).execute(); } } @@ -388,6 +392,7 @@ public class UpdateMainDialog extends UIDialog { private SwingWorker getUpdateInfo(final String keyword) { updateInfoList = new ArrayList<>(); + titleSet = new HashSet<>(); lastUpdateCacheTime = UpdateConstants.CHANGELOG_X_START; String cacheConfigPath = getUpdateCacheConfig(); cacheProperty = new UpdateInfoCachePropertyManager(StableUtils.pathJoin(WorkContext.getCurrent().getPath(), "resources", "offlineres", cacheConfigPath)); @@ -489,6 +494,7 @@ public class UpdateMainDialog extends UIDialog { } } if (isValid(updateInfo, GeneralUtils.objectToString(curJarDate))) { + titleSet.add(updateInfo[UpdateInfoTable.UPDATE_TITLE_INDEX]); updateInfoList.add(new Object[]{UPDATELOG_FORMAT.format(updateTime), updateInfo[UpdateInfoTable.UPDATE_VERSION_INDEX], updateInfo[UpdateInfoTable.UPDATE_TITLE_INDEX], updateTime.after(curJarDate)}); } } @@ -501,7 +507,7 @@ public class UpdateMainDialog extends UIDialog { private boolean isValid(String[] updateInfo, String curJarDate) { - return isValidLogInfo(updateInfo[UpdateInfoTable.UPDATE_TITLE_INDEX]) && curJarDate != null && curJarDate.compareTo(updateInfo[UpdateInfoTable.UPDATE_DATE_INDEX]) <= 0; + return isValidLogInfo(updateInfo[UpdateInfoTable.UPDATE_TITLE_INDEX]) && curJarDate != null && curJarDate.compareTo(updateInfo[UpdateInfoTable.UPDATE_DATE_INDEX]) <= 0 && !titleSet.contains(updateInfo[UpdateInfoTable.UPDATE_TITLE_INDEX]); } private void updateCachedInfoFile(JSONArray jsonArray) throws Exception { @@ -561,6 +567,7 @@ public class UpdateMainDialog extends UIDialog { } Date curDate = UPDATE_INFO_TABLE_FORMAT.parse(currentNO, new ParsePosition(currentNO.indexOf("-") + 1)); if (isValid4GenerateInfo(updateTitle, GeneralUtils.objectToString(curDate), updateTimeStr)) { + titleSet.add(updateTitle); updateInfoList.add(new Object[]{updateTimeStr, updateVersionStr, updateTitle, updateTime.after(curJarDate)}); } } @@ -568,7 +575,7 @@ public class UpdateMainDialog extends UIDialog { } private boolean isValid4GenerateInfo(String updateTitle, String curDate, String updateTimeStr) { - return isValidLogInfo(updateTitle) && curDate.compareTo(updateTimeStr) <= 0; + return isValidLogInfo(updateTitle) && curDate.compareTo(updateTimeStr) <= 0 && !titleSet.contains(updateTitle); } private boolean containsKeyword(String str, String keyword) { From 0a11d39fb414aa7ef3cb49bd0a892adc83bedd36 Mon Sep 17 00:00:00 2001 From: Yann Date: Wed, 4 Jan 2023 15:10:16 +0800 Subject: [PATCH 29/30] =?UTF-8?q?REPORT-87576=20=E5=8F=96=E8=89=B2?= =?UTF-8?q?=E6=9D=BF=E4=BD=BF=E7=94=A8=E5=90=8E=E4=BC=9A=E8=AE=A9fr?= =?UTF-8?q?=E5=8D=A1=E4=BD=8F=E3=80=82=E5=8F=AF=E7=A8=B3=E5=AE=9A=E5=A4=8D?= =?UTF-8?q?=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/gui/style/BorderPane.java | 41 +++++++++---------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/style/BorderPane.java b/designer-base/src/main/java/com/fr/design/gui/style/BorderPane.java index 6d62593935..d2a302ea01 100644 --- a/designer-base/src/main/java/com/fr/design/gui/style/BorderPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/style/BorderPane.java @@ -265,34 +265,31 @@ public class BorderPane extends AbstractBasicStylePane implements GlobalNameObse int lineStyle = currentLineCombo.getSelectedLineStyle(); Color lineColor = currentLineColorPane.getSelectObject(); CellBorderStyle cellBorderStyle = new CellBorderStyle(); - if (topToggleButton.isSelected()) { - cellBorderStyle.setTopColor(lineColor); + if (lineColor != null) { + if (topToggleButton.isSelected()) { + cellBorderStyle.setTopColor(lineColor); + } + if (bottomToggleButton.isSelected()) { + cellBorderStyle.setBottomColor(lineColor); + } + if (leftToggleButton.isSelected()) { + cellBorderStyle.setLeftColor(lineColor); + } + if (rightToggleButton.isSelected()) { + cellBorderStyle.setRightColor(lineColor); + } + if (verticalToggleButton.isSelected()) { + cellBorderStyle.setVerticalColor(lineColor); + } + if (horizontalToggleButton.isSelected()) { + cellBorderStyle.setHorizontalColor(lineColor); + } } cellBorderStyle.setTopStyle(topToggleButton.isSelected() ? lineStyle : Constants.LINE_NONE); - - if (bottomToggleButton.isSelected()) { - cellBorderStyle.setBottomColor(lineColor); - } cellBorderStyle.setBottomStyle(bottomToggleButton.isSelected() ? lineStyle : Constants.LINE_NONE); - - if (leftToggleButton.isSelected()) { - cellBorderStyle.setLeftColor(lineColor); - } cellBorderStyle.setLeftStyle(leftToggleButton.isSelected() ? lineStyle : Constants.LINE_NONE); - - if (rightToggleButton.isSelected()) { - cellBorderStyle.setRightColor(lineColor); - } cellBorderStyle.setRightStyle(rightToggleButton.isSelected() ? lineStyle : Constants.LINE_NONE); - - if (verticalToggleButton.isSelected()) { - cellBorderStyle.setVerticalColor(lineColor); - } cellBorderStyle.setVerticalStyle(verticalToggleButton.isSelected() ? lineStyle : Constants.LINE_NONE); - - if (horizontalToggleButton.isSelected()) { - cellBorderStyle.setHorizontalColor(lineColor); - } cellBorderStyle.setHorizontalStyle(horizontalToggleButton.isSelected() ? lineStyle : Constants.LINE_NONE); outerToggleButton.setSelected(leftToggleButton.isSelected() && bottomToggleButton.isSelected() && rightToggleButton.isSelected() && topToggleButton.isSelected()); From 5430ede56d55f3878eb0aa32940fdc852203951c Mon Sep 17 00:00:00 2001 From: Starryi Date: Tue, 3 Jan 2023 15:37:55 +0800 Subject: [PATCH 30/30] =?UTF-8?q?REPORT-86045=20FR11=E5=86=B3=E7=AD=96?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=81=87=E4=BF=9D=E5=AD=98-=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8=E5=9D=97=E5=86=85=E6=92=A4=E9=94=80=E5=90=8E=EF=BC=8C?= =?UTF-8?q?=E5=86=8D=E7=BC=96=E8=BE=91=E9=99=A4=E6=AD=A4=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E5=9D=97=E5=A4=96=E9=83=A8=E5=88=86=EF=BC=8C=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=20=E5=AE=9E=E9=99=85=E6=9C=AA=E4=BF=9D?= =?UTF-8?q?=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 在报表块编辑模式下重置Form对象,比如setTarget,需要做些额外 的工作,才能确保新的target完全可用,主要是要确保散落 在formDesign中各处的对象,如selectedCreators等,要有新的 target对象保持一致,否则再回到表单编辑界面时,就不能通过 这些creators,对target对象进行修改了。 【改动思路】 将表单编辑界面的一些修改操作也放到报表块编辑模式场景下执行, 确保该更新的都能更新到 --- .../java/com/fr/design/mainframe/JForm.java | 88 ++++++++++--------- 1 file changed, 47 insertions(+), 41 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/JForm.java b/designer-form/src/main/java/com/fr/design/mainframe/JForm.java index e3162e9ef6..4e9c45ce44 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/JForm.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/JForm.java @@ -6,8 +6,6 @@ import com.fr.base.Parameter; import com.fr.base.Releasable; import com.fr.base.extension.FileExtension; import com.fr.base.iofile.attr.ExtendSharableAttrMark; -import com.fr.base.theme.FineColorGather; -import com.fr.base.theme.FineColorManager; import com.fr.base.theme.FineColorSynchronizer; import com.fr.base.theme.FormTheme; import com.fr.base.theme.TemplateTheme; @@ -17,8 +15,8 @@ import com.fr.base.vcs.DesignerMode; import com.fr.design.DesignModelAdapter; import com.fr.design.DesignState; import com.fr.design.DesignerEnvManager; -import com.fr.design.actions.FormMobileAttrAction; import com.fr.design.actions.FormECParallelCalAction; +import com.fr.design.actions.FormMobileAttrAction; import com.fr.design.actions.TemplateParameterAction; import com.fr.design.actions.core.WorkBookSupportable; import com.fr.design.actions.file.export.EmbeddedFormExportExportAction; @@ -56,8 +54,8 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.form.FormECCompositeProvider; import com.fr.design.mainframe.form.FormECDesignerProvider; import com.fr.design.mainframe.reuse.ComponentReuseNotificationInfo; -import com.fr.design.mainframe.share.collect.ComponentCollector; import com.fr.design.mainframe.share.ComponentShareUtil; +import com.fr.design.mainframe.share.collect.ComponentCollector; import com.fr.design.mainframe.template.info.JFormProcessInfo; import com.fr.design.mainframe.template.info.TemplateProcessInfo; import com.fr.design.mainframe.theme.dialog.TemplateThemeUsingDialog; @@ -71,7 +69,6 @@ import com.fr.design.parameter.ParameterPropertyPane; import com.fr.design.preview.FormPreview; import com.fr.design.preview.MobilePreview; import com.fr.design.roleAuthority.RolesAlreadyEditedPane; -import com.fr.design.ui.util.UIUtil; import com.fr.design.utils.gui.LayoutUtils; import com.fr.file.FILE; import com.fr.file.FILEChooserPane; @@ -110,7 +107,14 @@ import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.SwingConstants; import javax.swing.tree.TreePath; -import java.awt.*; +import java.awt.BorderLayout; +import java.awt.CardLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Insets; +import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; @@ -1266,46 +1270,48 @@ public class JForm extends JTemplate implements BaseJForm