From 31b455b677c7c41304554bf03f5b1706fbdef664 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=2EYing-=E5=BA=94=E5=BF=97=E6=B5=A9?= Date: Wed, 19 Apr 2023 13:58:31 +0800 Subject: [PATCH 01/42] =?UTF-8?q?REPORT-93422=20=E6=8E=A7=E4=BB=B6?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E5=BC=80=E6=94=BE=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?-=E5=8E=BB=E6=8E=89=E5=8D=95=E5=85=83=E6=A0=BC=E7=9A=84?= =?UTF-8?q?=E2=80=9C=E5=AD=97=E4=BD=93=E5=A4=A7=E5=B0=8F=E2=80=9D=E5=B1=9E?= =?UTF-8?q?=E6=80=A7--=E5=87=8F=E5=B0=91=E5=86=97=E4=BD=99=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AbstractWidgetAdvancedPaneProvider.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/designer-form/src/main/java/com/fr/design/fun/impl/AbstractWidgetAdvancedPaneProvider.java b/designer-form/src/main/java/com/fr/design/fun/impl/AbstractWidgetAdvancedPaneProvider.java index 6b60eb56a..45316a9f6 100644 --- a/designer-form/src/main/java/com/fr/design/fun/impl/AbstractWidgetAdvancedPaneProvider.java +++ b/designer-form/src/main/java/com/fr/design/fun/impl/AbstractWidgetAdvancedPaneProvider.java @@ -1,5 +1,6 @@ package com.fr.design.fun.impl; + import com.fr.design.fun.WidgetAdvancedPaneProvider; import com.fr.stable.fun.impl.AbstractProvider; import com.fr.stable.fun.mark.API; @@ -23,4 +24,24 @@ public abstract class AbstractWidgetAdvancedPaneProvider extends AbstractProv return getClass().getName(); } + protected WidgetType widgetType = WidgetType.PARA; + + /** + * 按钮类型:单元格 or 参数面板 + * + * @author John.Ying + * @version 11.0 + * Created by John.Ying on 2023/4/18 + */ + protected enum WidgetType { + /** + * 参数面板 + */ + PARA, + /** + * 单元格 + */ + CELL; + } + } From 02a13b696d0935477db7412320dd91c90ee48eac Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Thu, 20 Apr 2023 13:49:50 +0800 Subject: [PATCH 02/42] =?UTF-8?q?REPORT-94324=20=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=EF=BC=8C=E6=8A=A5=E8=A1=A8=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E4=B8=8B=E5=8F=8C=E5=87=BB=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=A4=B9=E6=97=B6=E6=B2=A1=E6=9C=89=E9=AB=98=E4=BA=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/file/FILEChooserPane.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/designer-base/src/main/java/com/fr/file/FILEChooserPane.java b/designer-base/src/main/java/com/fr/file/FILEChooserPane.java index 0561319db..b114ef2b4 100644 --- a/designer-base/src/main/java/com/fr/file/FILEChooserPane.java +++ b/designer-base/src/main/java/com/fr/file/FILEChooserPane.java @@ -1466,10 +1466,17 @@ public class FILEChooserPane extends BasicPane { for (int i = 0; i < this.buttonList.size(); i++) { this.buttonList.get(i).setForeground(null); if (((SetDirectoryAction) this.buttonList.get(i).getAction()).getDir() != null - && this.buttonList.get(i).getAction() instanceof SetDirectoryAction - && (ComparatorUtils.equals(((SetDirectoryAction) this.buttonList.get(i).getAction()).getDir().getPath(), dir.getPath()))) { - - this.buttonList.get(i).setForeground(Color.BLUE); + && this.buttonList.get(i).getAction() instanceof SetDirectoryAction) { + String actionPath = ((SetDirectoryAction) this.buttonList.get(i).getAction()).getDir().getPath(); + String dirPath = dir.getPath(); + //如果是报表环境,button的Action最后会跟上"/",这个是特意处理的,但是对应代码没有说明原因,不做修改 + //FILE的getPath不会带"/",这边针对这种情况加个处理,不建议直接改FILE + if (actionPath.endsWith("/") && !dirPath.endsWith("/")) { + dirPath = dirPath + "/"; + } + if (ComparatorUtils.equals(actionPath, dirPath)) { + this.buttonList.get(i).setForeground(Color.BLUE); + } } } } From c296181cb7620260a8c2d1136baf2bd80cfc2f8d Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Thu, 20 Apr 2023 14:32:04 +0800 Subject: [PATCH 03/42] =?UTF-8?q?REPORT-93215=20=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E5=90=8D=E7=A7=B0=E5=8C=85=E5=90=AB=E4=BA=8E?= =?UTF-8?q?=E4=B8=8A=E4=B8=80=E6=AC=A1=E9=80=89=E7=9A=84=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=EF=BC=8C=E4=BF=9D=E5=AD=98=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E7=9A=84=E8=B7=AF=E5=BE=84=E4=B8=8D=E4=BC=9A=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/file/FILEChooserPane.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/file/FILEChooserPane.java b/designer-base/src/main/java/com/fr/file/FILEChooserPane.java index b114ef2b4..aeccebcc7 100644 --- a/designer-base/src/main/java/com/fr/file/FILEChooserPane.java +++ b/designer-base/src/main/java/com/fr/file/FILEChooserPane.java @@ -1486,7 +1486,7 @@ public class FILEChooserPane extends BasicPane { } public void populate(FILE dir) { - if (popDir != null && dir != null && popDir.toString().indexOf(dir.toString()) == 0) { + if (checkOnlyHighLight(dir)) { highLightButton(dir); return; } @@ -1537,6 +1537,24 @@ public class FILEChooserPane extends BasicPane { highLightButton(dir); } + /** + * 检查是不是只需要设置高亮即可 + * + * @param dir FILE + * @return 如果还要进行别的设置就返回false,如果只需要更新下高亮(通过点击上面的路径才会只需要更新高亮),返回true + */ + private boolean checkOnlyHighLight(FILE dir) { + if (popDir == null || dir == null) { + return false; + } + String popDirStr = popDir.toString(); + String dirStr = dir.toString(); + //前缀匹配是不够的,还要看下前缀匹配的下一位是不是'/' + //否则"test"和"test副本"明明不属于同个路径逻辑,也只更新高亮,应该是"test"和"test/副本"这样才可以通过 + //如果通过了indexOf的检查,因为不会存在相同的路径,popDirStr只会比dirStr大,看一下前缀匹配的下一位是不是'/',如果不是就得更新路径文本,不能只设置高亮 + return popDirStr.indexOf(dirStr) == 0 && popDirStr.length() > dirStr.length() && popDirStr.charAt(dirStr.length()) == '/'; + } + // doLayout @Override public void doLayout() { From bc98c499b881297854c1a59391b465b1520d6390 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=2EYing-=E5=BA=94=E5=BF=97=E6=B5=A9?= Date: Thu, 20 Apr 2023 16:16:02 +0800 Subject: [PATCH 04/42] =?UTF-8?q?REPORT-94359=20=E6=96=B0=E5=BB=BAfvs?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF-=E8=BD=AE=E6=92=AD=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=E9=BD=BF=E8=BD=AE=E5=9B=BE=E6=95=B0=E6=8D=AE=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=9C=AA=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/mainframe/ChartPropertyPane.java | 29 +++++++------------ 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/ChartPropertyPane.java b/designer-chart/src/main/java/com/fr/design/mainframe/ChartPropertyPane.java index 8e6b80c53..297245960 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/ChartPropertyPane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/ChartPropertyPane.java @@ -97,25 +97,16 @@ public class ChartPropertyPane extends BaseChartPropertyPane { * @param ePane 面板 */ public void populateChartPropertyPane(ChartCollection collection, TargetComponent ePane) { - new SwingWorker() { - @Override - protected Void doInBackground() throws Exception { - GEOJSONHelper.getInstance(); - return null; - } - @Override - protected void done() { - String chartID = collection.getSelectedChartProvider(ChartProvider.class).getID(); - updateChartEditPane(collection.getSelectedChartProvider(ChartProvider.class).getID()); - setSupportCellData(true); - container.setEPane(ePane); - if (ChartTypeManager.getInstance().chartExit(chartID)) { - chartEditPane.populate(collection); - } else { - GUICoreUtils.setEnabled(chartEditPane, false); - } - } - }.execute(); + String chartID = collection.getSelectedChartProvider(ChartProvider.class).getID(); + updateChartEditPane(collection.getSelectedChartProvider(ChartProvider.class).getID()); + setSupportCellData(true); + this.container.setEPane(ePane); + + if (ChartTypeManager.getInstance().chartExit(chartID)) { + chartEditPane.populate(collection); + } else { + GUICoreUtils.setEnabled(chartEditPane, false); + } } /** From 67da995c385a57f50a2419e42c30b47fcd3dcb25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=2EYing-=E5=BA=94=E5=BF=97=E6=B5=A9?= Date: Thu, 20 Apr 2023 16:18:37 +0800 Subject: [PATCH 05/42] =?UTF-8?q?REPORT-94359=20=E6=96=B0=E5=BB=BAfvs?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF-=E8=BD=AE=E6=92=AD=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=E9=BD=BF=E8=BD=AE=E5=9B=BE=E6=95=B0=E6=8D=AE=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=9C=AA=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AbstractWidgetAdvancedPaneProvider.java | 22 ------------------- 1 file changed, 22 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/fun/impl/AbstractWidgetAdvancedPaneProvider.java b/designer-form/src/main/java/com/fr/design/fun/impl/AbstractWidgetAdvancedPaneProvider.java index 45316a9f6..eb0c1aa47 100644 --- a/designer-form/src/main/java/com/fr/design/fun/impl/AbstractWidgetAdvancedPaneProvider.java +++ b/designer-form/src/main/java/com/fr/design/fun/impl/AbstractWidgetAdvancedPaneProvider.java @@ -1,6 +1,4 @@ package com.fr.design.fun.impl; - - import com.fr.design.fun.WidgetAdvancedPaneProvider; import com.fr.stable.fun.impl.AbstractProvider; import com.fr.stable.fun.mark.API; @@ -24,24 +22,4 @@ public abstract class AbstractWidgetAdvancedPaneProvider extends AbstractProv return getClass().getName(); } - protected WidgetType widgetType = WidgetType.PARA; - - /** - * 按钮类型:单元格 or 参数面板 - * - * @author John.Ying - * @version 11.0 - * Created by John.Ying on 2023/4/18 - */ - protected enum WidgetType { - /** - * 参数面板 - */ - PARA, - /** - * 单元格 - */ - CELL; - } - } From 56d0d4f9969d5e4a5328e64cca445b03f188248e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=2EYing-=E5=BA=94=E5=BF=97=E6=B5=A9?= Date: Thu, 20 Apr 2023 16:19:30 +0800 Subject: [PATCH 06/42] REPORT-94359 conflict --- .../fr/design/fun/impl/AbstractWidgetAdvancedPaneProvider.java | 1 + 1 file changed, 1 insertion(+) diff --git a/designer-form/src/main/java/com/fr/design/fun/impl/AbstractWidgetAdvancedPaneProvider.java b/designer-form/src/main/java/com/fr/design/fun/impl/AbstractWidgetAdvancedPaneProvider.java index eb0c1aa47..6b60eb56a 100644 --- a/designer-form/src/main/java/com/fr/design/fun/impl/AbstractWidgetAdvancedPaneProvider.java +++ b/designer-form/src/main/java/com/fr/design/fun/impl/AbstractWidgetAdvancedPaneProvider.java @@ -1,4 +1,5 @@ package com.fr.design.fun.impl; + import com.fr.design.fun.WidgetAdvancedPaneProvider; import com.fr.stable.fun.impl.AbstractProvider; import com.fr.stable.fun.mark.API; From dda0ca8794cd1e51b589728576dbfdfafd582de8 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Fri, 21 Apr 2023 10:12:41 +0800 Subject: [PATCH 07/42] =?UTF-8?q?REPORT-93215=20=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E5=90=8D=E7=A7=B0=E5=8C=85=E5=90=AB=E4=BA=8E?= =?UTF-8?q?=E4=B8=8A=E4=B8=80=E6=AC=A1=E9=80=89=E7=9A=84=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=EF=BC=8C=E4=BF=9D=E5=AD=98=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E7=9A=84=E8=B7=AF=E5=BE=84=E4=B8=8D=E4=BC=9A=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/file/FILEChooserPane.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/designer-base/src/main/java/com/fr/file/FILEChooserPane.java b/designer-base/src/main/java/com/fr/file/FILEChooserPane.java index aeccebcc7..66b9d12d3 100644 --- a/designer-base/src/main/java/com/fr/file/FILEChooserPane.java +++ b/designer-base/src/main/java/com/fr/file/FILEChooserPane.java @@ -129,6 +129,10 @@ public class FILEChooserPane extends BasicPane { public static final int JOPTIONPANE_CANCEL_OPTION = 3; + public static final String SEPARATOR_STRING = "/"; + + public static final char SEPARATOR_CHAR = '/'; + /** * alex:之所以在Pattern那里加个+,是因为有些路径会有两个甚至多个分隔符放在一起 @@ -1471,8 +1475,8 @@ public class FILEChooserPane extends BasicPane { String dirPath = dir.getPath(); //如果是报表环境,button的Action最后会跟上"/",这个是特意处理的,但是对应代码没有说明原因,不做修改 //FILE的getPath不会带"/",这边针对这种情况加个处理,不建议直接改FILE - if (actionPath.endsWith("/") && !dirPath.endsWith("/")) { - dirPath = dirPath + "/"; + if (actionPath.endsWith(SEPARATOR_STRING) && !dirPath.endsWith(SEPARATOR_STRING)) { + dirPath = dirPath + SEPARATOR_STRING; } if (ComparatorUtils.equals(actionPath, dirPath)) { this.buttonList.get(i).setForeground(Color.BLUE); @@ -1552,7 +1556,7 @@ public class FILEChooserPane extends BasicPane { //前缀匹配是不够的,还要看下前缀匹配的下一位是不是'/' //否则"test"和"test副本"明明不属于同个路径逻辑,也只更新高亮,应该是"test"和"test/副本"这样才可以通过 //如果通过了indexOf的检查,因为不会存在相同的路径,popDirStr只会比dirStr大,看一下前缀匹配的下一位是不是'/',如果不是就得更新路径文本,不能只设置高亮 - return popDirStr.indexOf(dirStr) == 0 && popDirStr.length() > dirStr.length() && popDirStr.charAt(dirStr.length()) == '/'; + return popDirStr.indexOf(dirStr) == 0 && popDirStr.length() > dirStr.length() && popDirStr.charAt(dirStr.length()) == SEPARATOR_CHAR; } // doLayout From 01a39012f70e14684ef0bbb17b8afe9d0349ae99 Mon Sep 17 00:00:00 2001 From: obo Date: Fri, 21 Apr 2023 11:12:23 +0800 Subject: [PATCH 08/42] =?UTF-8?q?REPORT-94458=20JS=E9=AB=98=E7=BA=A7?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E9=9D=A2=E6=9D=BF=E5=B8=AE=E5=8A=A9=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E8=8E=B7=E5=8F=96=E4=B8=8D=E5=88=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/javascript/JSContentWithDescriptionPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/javascript/JSContentWithDescriptionPane.java b/designer-base/src/main/java/com/fr/design/javascript/JSContentWithDescriptionPane.java index 3b8d04ffb..74b159620 100644 --- a/designer-base/src/main/java/com/fr/design/javascript/JSContentWithDescriptionPane.java +++ b/designer-base/src/main/java/com/fr/design/javascript/JSContentWithDescriptionPane.java @@ -391,7 +391,7 @@ public class JSContentWithDescriptionPane extends JSContentPane implements KeyLi } private void updateHelpDocuments(Object value, List helpDocuments) { - String url = LocaleLinkProvider.getInstance().getLink(PROPS_LINK_KEY, PROPS_LINK_KEY_DEFAULT); + String url = LocaleLinkProvider.getInstance().getLink(PROPS_LINK_KEY, PROPS_LINK_KEY_DEFAULT) + value.toString(); try { String result = HttpToolbox.get(url); JSONObject jsonObject = new JSONObject(result); From 9ce5a14621f7aa3d83e6ccf790a8538f59cf0439 Mon Sep 17 00:00:00 2001 From: "Leo.Qin" Date: Fri, 21 Apr 2023 14:15:15 +0800 Subject: [PATCH 09/42] =?UTF-8?q?REPORT-94114=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E9=9D=A2=E6=9D=BF=E5=9B=BE=E8=A1=A8=E8=B6=85=E9=93=BE?= =?UTF-8?q?=E9=80=89=E9=A1=B9=E7=BC=BA=E5=A4=B1=20=E3=80=90=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E5=8E=9F=E5=9B=A0=E3=80=91=E6=B2=A1=E6=9C=89=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E5=BD=93=E5=89=8D=E6=98=AF=E5=86=B3=E7=AD=96=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8=E5=9B=BE=E8=A1=A8=E8=BF=98=E6=98=AF=E6=99=AE=E9=80=9A?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=9B=BE=E8=A1=A8=EF=BC=8C=E4=B8=A4=E8=80=85?= =?UTF-8?q?=E7=9A=84=E8=B6=85=E9=93=BE=E9=80=89=E9=A1=B9=E4=B8=8D=E5=90=8C?= =?UTF-8?q?=20=E3=80=90=E6=94=B9=E5=8A=A8=E6=80=9D=E8=B7=AF=E3=80=91?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=88=A4=E6=96=AD=E5=BD=93=E5=89=8D=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/VanChartHyperLinkPane.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java b/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartHyperLinkPane.java index 75ec5d3ce..34375790f 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 @@ -309,12 +309,19 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane { if (!JTemplate.isValid(template)) { return false; } - Class[] classes = new Class[]{ChartHyperRelateCellLink.class, ChartHyperRelateFloatLink.class}; - for (Class aClass : classes) { - if (template.getEditingReportIndex() == BaseJForm.FORM_TAB) { - // 编辑的是决策报表中的图表,那么没有ChartHyperRelateFloatLink 和 ChartHyperRelateCellLink 选项,有FormHyperlink 选项 - if (ComparatorUtils.equals(aClass, clazz)) { - return false; + + if (template.isJWorkBook()) { + // 如果是普通报表单元格,那么没有 FormHyperlink 选项 + FormHyperlinkProvider formHyperlink = StableFactory.getMarkedInstanceObjectFromClass(FormHyperlinkProvider.XML_TAG, FormHyperlinkProvider.class); + return !ComparatorUtils.equals(clazz, formHyperlink.getClass()); + } else { + // 编辑的是决策报表中的图表,那么没有ChartHyperRelateFloatLink 和 ChartHyperRelateCellLink 选项 + Class[] classes = new Class[]{ChartHyperRelateCellLink.class, ChartHyperRelateFloatLink.class}; + for (Class aClass : classes) { + if (template.getEditingReportIndex() == BaseJForm.FORM_TAB) { + if (ComparatorUtils.equals(aClass, clazz)) { + return false; + } } } } From 059e7cfb2c482515240d2c6a6157d1e0684c726e Mon Sep 17 00:00:00 2001 From: "Leo.Qin" Date: Fri, 21 Apr 2023 16:30:19 +0800 Subject: [PATCH 10/42] =?UTF-8?q?REPORT-94114=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E9=9D=A2=E6=9D=BF=E5=9B=BE=E8=A1=A8=E8=B6=85=E9=93=BE?= =?UTF-8?q?=E9=80=89=E9=A1=B9=E7=BC=BA=E5=A4=B1=20=E4=BF=AE=E6=94=B9=20frm?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=9D=97=E4=B8=AD=E7=9A=84=E5=9B=BE=E8=A1=A8?= =?UTF-8?q?=E8=B6=85=E9=93=BE=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../van/chart/custom/component/VanChartHyperLinkPane.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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 34375790f..bdd3608c9 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 @@ -315,10 +315,15 @@ public class VanChartHyperLinkPane extends VanChartUIListControlPane { FormHyperlinkProvider formHyperlink = StableFactory.getMarkedInstanceObjectFromClass(FormHyperlinkProvider.XML_TAG, FormHyperlinkProvider.class); return !ComparatorUtils.equals(clazz, formHyperlink.getClass()); } else { - // 编辑的是决策报表中的图表,那么没有ChartHyperRelateFloatLink 和 ChartHyperRelateCellLink 选项 + // 如果是决策报表 + if (template.getEditingReportIndex() == BaseJForm.ELEMENTCASE_TAB) { + // 编辑的是决策报表中的报表块,那么没有 ChartHyperRelateFloatLink选项 + return !ComparatorUtils.equals(clazz, ChartHyperRelateFloatLink.class); + } Class[] classes = new Class[]{ChartHyperRelateCellLink.class, ChartHyperRelateFloatLink.class}; for (Class aClass : classes) { if (template.getEditingReportIndex() == BaseJForm.FORM_TAB) { + // 编辑的是决策报表中的图表,那么没有 ChartHyperRelateFloatLink 和 ChartHyperRelateCellLink 选项 if (ComparatorUtils.equals(aClass, clazz)) { return false; } From cab83ef74b6bc2cb1255fdafb5a84215789dd00f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=2EYing-=E5=BA=94=E5=BF=97=E6=B5=A9?= Date: Sat, 22 Apr 2023 22:08:09 +0800 Subject: [PATCH 11/42] =?UTF-8?q?REPORT-92628=20=E6=8E=A7=E4=BB=B6?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E4=B8=BB=E9=A2=98=E5=88=87=E6=8D=A2-?= =?UTF-8?q?=E9=83=A8=E5=88=86=E6=8E=A7=E4=BB=B6=E6=9C=AA=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E4=B8=BB=E9=A2=98=E6=A0=B7=E5=BC=8F=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/widget/btn/ButtonConstants.java | 16 ++ .../design/widget/btn/ButtonDetailPane.java | 62 ------- .../design/widget/btn/ButtonDetailPane.java | 151 ++++++++++++++++++ .../btn/ButtonWithHotkeysDetailPane.java | 11 +- .../ui/btn/FormSubmitButtonDetailPane.java | 15 +- .../ui/btn/AppendRowButtonDefinePane.java | 20 ++- .../ui/btn/DefaultButtonDetailPane.java | 17 ++ .../ui/btn/DeleteRowButtonDefinePane.java | 17 +- .../widget/ui/btn/FreeButtonDetailPane.java | 19 ++- 9 files changed, 259 insertions(+), 69 deletions(-) delete mode 100644 designer-base/src/main/java/com/fr/design/widget/btn/ButtonDetailPane.java create mode 100644 designer-form/src/main/java/com/fr/design/widget/btn/ButtonDetailPane.java rename {designer-base => designer-form}/src/main/java/com/fr/design/widget/btn/ButtonWithHotkeysDetailPane.java (90%) diff --git a/designer-base/src/main/java/com/fr/design/widget/btn/ButtonConstants.java b/designer-base/src/main/java/com/fr/design/widget/btn/ButtonConstants.java index 9be9a8fba..85b2cbc08 100644 --- a/designer-base/src/main/java/com/fr/design/widget/btn/ButtonConstants.java +++ b/designer-base/src/main/java/com/fr/design/widget/btn/ButtonConstants.java @@ -44,4 +44,20 @@ public class ButtonConstants { StableFactory.getMarkedClass(BridgeMark.SUBMIT_BUTTON, Widget.class), StableFactory.getMarkedClass(BridgeMark.TREE_NODE_TOGGLE_BUTTON, Widget.class) }; + + public static final String[] TYPES4BUTTON4STRONGEST_CONTROL = { + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Common"), + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Utils_Insert_Row"), + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Utils_Delete_Row"), + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Button_Type_Parameter_Submit"), + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Widget_TreeNode") + }; + + public static final Class[] CLASSES4BUTTON4STRONGEST_CONTROL = { + Button.class, + StableFactory.getMarkedClass(BridgeMark.APPEND_ROW_BUTTON, Widget.class), + StableFactory.getMarkedClass(BridgeMark.DELETE_ROW_BUTTON, Widget.class), + StableFactory.getMarkedClass(BridgeMark.SUBMIT_BUTTON, Widget.class), + StableFactory.getMarkedClass(BridgeMark.TREE_NODE_TOGGLE_BUTTON, Widget.class) + }; } diff --git a/designer-base/src/main/java/com/fr/design/widget/btn/ButtonDetailPane.java b/designer-base/src/main/java/com/fr/design/widget/btn/ButtonDetailPane.java deleted file mode 100644 index 63d678577..000000000 --- a/designer-base/src/main/java/com/fr/design/widget/btn/ButtonDetailPane.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.fr.design.widget.btn; - -import com.fr.design.gui.icombobox.DictionaryComboBox; -import com.fr.design.dialog.BasicPane; -import com.fr.design.widget.btn.ButtonConstants; -import com.fr.form.ui.Button; - - -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.util.ArrayList; -import java.util.List; - -/** - * Created by IntelliJ IDEA. - * Author : Richer - * Version: 6.5.6 - * Date : 11-11-15 - * Time : 下午6:21 - */ -public abstract class ButtonDetailPane extends BasicPane { - private List ls = new ArrayList(); - - @Override - public String title4PopupWindow() { - return com.fr.design.i18n.Toolkit.i18nText("Button"); - } - - public void populate(T button) { - - } - - public abstract T createButton(); - - public abstract T update(); - - protected void typeChange(Object obj) { - for (int i = 0, len = ls.size(); i < len; i++) { - ls.get(i).stateChanged(new ChangeEvent(obj)); - } - } - - public void addTypeChangeListener(ChangeListener l) { - ls.add(l); - } - - public abstract Class classType(); - - protected DictionaryComboBox createButtonTypeComboBox() { - final DictionaryComboBox dictionaryComboBox = new DictionaryComboBox(ButtonConstants.CLASSES4BUTTON, ButtonConstants.TYPES4BUTTON, false); - dictionaryComboBox.setSelectedItem(classType()); - dictionaryComboBox.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - typeChange(dictionaryComboBox.getSelectedItem()); - } - }); - return dictionaryComboBox; - } -} \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/widget/btn/ButtonDetailPane.java b/designer-form/src/main/java/com/fr/design/widget/btn/ButtonDetailPane.java new file mode 100644 index 000000000..81e28bf29 --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/widget/btn/ButtonDetailPane.java @@ -0,0 +1,151 @@ +package com.fr.design.widget.btn; + +import com.fr.design.ExtraDesignClassManager; +import com.fr.design.beans.BasicBeanPane; +import com.fr.design.fun.WidgetAdvancedPaneProvider; +import com.fr.design.gui.icombobox.DictionaryComboBox; +import com.fr.design.dialog.BasicPane; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.layout.TableLayout; +import com.fr.form.ui.Button; +import com.fr.general.GeneralContext; +import com.fr.plugin.observer.PluginEvent; +import com.fr.plugin.observer.PluginEventListener; + + +import javax.swing.JPanel; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +/** + * Created by IntelliJ IDEA. + * Author : Richer + * Version: 6.5.6 + * Date : 11-11-15 + * Time : 下午6:21 + */ +public abstract class ButtonDetailPane extends BasicPane { + private List ls = new ArrayList(); + protected final List> extraPaneList = new ArrayList<>(); + protected JPanel extraPane; + protected boolean containsExtraPane; + protected static double F = TableLayout.FILL; + protected static double P = TableLayout.PREFERRED; + @Override + public String title4PopupWindow() { + return com.fr.design.i18n.Toolkit.i18nText("Button"); + } + + public void populate(T button) { + + } + + public abstract T createButton(); + + public abstract T update(); + + protected void typeChange(Object obj) { + for (int i = 0, len = ls.size(); i < len; i++) { + ls.get(i).stateChanged(new ChangeEvent(obj)); + } + } + + public void addTypeChangeListener(ChangeListener l) { + ls.add(l); + } + + public abstract Class classType(); + + protected DictionaryComboBox createButtonTypeComboBox() { +// final DictionaryComboBox dictionaryComboBox = new DictionaryComboBox(ButtonConstants.CLASSES4BUTTON, ButtonConstants.TYPES4BUTTON, false); +// dictionaryComboBox.setSelectedItem(classType()); +// dictionaryComboBox.addActionListener(new ActionListener() { +// @Override +// public void actionPerformed(ActionEvent e) { +// typeChange(dictionaryComboBox.getSelectedItem()); +// } +// }); +// return dictionaryComboBox; + return createButtonTypeComboBox(false); + } + + private DictionaryComboBox initDictionaryComboBox(DictionaryComboBox dictionaryComboBox) { + dictionaryComboBox.setSelectedItem(classType()); + dictionaryComboBox.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + typeChange(dictionaryComboBox.getSelectedItem()); + } + }); + return dictionaryComboBox; +// return createButtonTypeComboBox(); + } + + protected DictionaryComboBox createButtonTypeComboBox(Boolean containsExtraPane) { + final DictionaryComboBox dictionaryComboBox; + if (!containsExtraPane) { + dictionaryComboBox = new DictionaryComboBox(ButtonConstants.CLASSES4BUTTON, ButtonConstants.TYPES4BUTTON, false); + } else { + dictionaryComboBox = new DictionaryComboBox(ButtonConstants.CLASSES4BUTTON4STRONGEST_CONTROL, ButtonConstants.TYPES4BUTTON4STRONGEST_CONTROL, false); + } + return initDictionaryComboBox(dictionaryComboBox); + } + + + + protected void initExtraPane() { + initPluginListener(); + refreshExtraAdvancedPane(); + } + + protected void refreshExtraAdvancedPane() { + // do nothing + } + + protected void refreshExtraAdvancedPane(Class cls) { + extraPaneList.clear(); + boolean containsExtraPane = false; + Set> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); + for (WidgetAdvancedPaneProvider provider : providers) { + if (!provider.accept(cls)) { + continue; + } + insertShortCut(provider.getInsertPosition(extraPaneList.size()), provider.createExtraAdvancedPane()); + containsExtraPane = true; + } + if (containsExtraPane) { + extraPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); + for (BasicBeanPane pane : extraPaneList) { + extraPane.add(pane); + } + } + this.containsExtraPane = containsExtraPane; + + } + + protected void initPluginListener() { + GeneralContext.listenPluginRunningChanged(new PluginEventListener() { + @Override + public void on(PluginEvent event) { + refreshExtraAdvancedPane(); + } + }, pluginContext -> pluginContext.getRuntime().contain(WidgetAdvancedPaneProvider.XML_TAG)); + } + + /** + * 插入配置项面板 + * + * @param index 插入的位置 + * @param pane 配置项面板 + */ + protected void insertShortCut(int index, BasicBeanPane pane) { + int size = extraPaneList.size(); + index = Math.min(index, size); + extraPaneList.add(index, pane); + } +} \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/widget/btn/ButtonWithHotkeysDetailPane.java b/designer-form/src/main/java/com/fr/design/widget/btn/ButtonWithHotkeysDetailPane.java similarity index 90% rename from designer-base/src/main/java/com/fr/design/widget/btn/ButtonWithHotkeysDetailPane.java rename to designer-form/src/main/java/com/fr/design/widget/btn/ButtonWithHotkeysDetailPane.java index b75aeaa81..904126e9d 100644 --- a/designer-base/src/main/java/com/fr/design/widget/btn/ButtonWithHotkeysDetailPane.java +++ b/designer-form/src/main/java/com/fr/design/widget/btn/ButtonWithHotkeysDetailPane.java @@ -4,6 +4,7 @@ import java.awt.*; import javax.swing.*; +import com.fr.design.beans.BasicBeanPane; import com.fr.design.designer.IntervalConstants; import com.fr.design.foldablepane.UIExpandablePane; import com.fr.design.gui.ilable.UILabel; @@ -42,8 +43,9 @@ public abstract class ButtonWithHotkeysDetailPane extends Butt JPanel labelPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); iconPane = new AccessibleIconEditor(); labelPane.add(iconPane); + Component comp = createCenterPane(); Component[][] n_components = { - {new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Button_Type")), createButtonTypeComboBox()}, + {new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Button_Type")), createButtonTypeComboBox(containsExtraPane)}, {new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Button_Name")), buttonNameTextField = new UITextField()}, {new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Button_Icon")), iconPane}, {new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Button_Hot_keys")), hotkeysTextField = new UITextField()}, @@ -52,7 +54,6 @@ public abstract class ButtonWithHotkeysDetailPane extends Butt JPanel panel = TableLayoutHelper.createGapTableLayoutPane(n_components, rowSize, columnSize, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); advancePane.add(panel, BorderLayout.NORTH); - Component comp = createCenterPane(); if(comp != null ) { advancePane.add(comp,BorderLayout.CENTER); } @@ -71,6 +72,9 @@ public abstract class ButtonWithHotkeysDetailPane extends Butt iconPane.setValue(button.getIconName()); buttonNameTextField.setText(button.getText()); hotkeysTextField.setText(button.getHotkeys()); + for (BasicBeanPane pane : extraPaneList) { + pane.populateBean(button); + } } @Override @@ -79,6 +83,9 @@ public abstract class ButtonWithHotkeysDetailPane extends Butt button.setIconName((String)iconPane.getValue()); button.setText(buttonNameTextField.getText()); button.setHotkeys(hotkeysTextField.getText()); + for (BasicBeanPane pane : extraPaneList) { + pane.updateBean(button); + } return button; } } \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/btn/FormSubmitButtonDetailPane.java b/designer-form/src/main/java/com/fr/design/widget/ui/btn/FormSubmitButtonDetailPane.java index acc2e76c4..83d24e8e8 100644 --- a/designer-form/src/main/java/com/fr/design/widget/ui/btn/FormSubmitButtonDetailPane.java +++ b/designer-form/src/main/java/com/fr/design/widget/ui/btn/FormSubmitButtonDetailPane.java @@ -1,5 +1,6 @@ package com.fr.design.widget.ui.btn; +import com.fr.design.layout.TableLayoutHelper; import com.fr.form.parameter.FormSubmitButton; import com.fr.design.widget.btn.ButtonWithHotkeysDetailPane; @@ -16,7 +17,14 @@ public class FormSubmitButtonDetailPane extends ButtonWithHotkeysDetailPane
extends Button @Override protected Component createCenterPane() { - return defineColumnRowPane = new DefineAppendColumnRowPane(); + initExtraPane(); + defineColumnRowPane = new DefineAppendColumnRowPane(); + Component[][] components = new Component[][]{ + new Component[]{defineColumnRowPane, null}, + new Component[]{extraPane, null} + }; + double[] rowSize = {P, P}; + double[] columnSize = {P, F}; + int[][] rowCount = {{1, 1},{1, 1}}; + return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 10, 7); } @Override @@ -55,4 +68,9 @@ public class AppendRowButtonDefinePane extends Button public Class classType() { return AppendRowButton.class; } + + @Override + protected void refreshExtraAdvancedPane() { + super.refreshExtraAdvancedPane(AppendRowButton.class); + } } diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/btn/DefaultButtonDetailPane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/btn/DefaultButtonDetailPane.java index e7f621ccb..326bcbbfc 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/btn/DefaultButtonDetailPane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/btn/DefaultButtonDetailPane.java @@ -1,5 +1,6 @@ package com.fr.design.widget.ui.btn; +import com.fr.design.layout.TableLayoutHelper; import com.fr.form.ui.Button; import com.fr.form.ui.FreeButton; import com.fr.design.widget.btn.ButtonWithHotkeysDetailPane; @@ -14,6 +15,16 @@ public class DefaultButtonDetailPane extends ButtonWithHotkeysDetailPane