From 3d4720ca3e3e568c625117ae8f43fe1fc1daeb5a Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Sat, 27 Aug 2022 18:19:27 +0800 Subject: [PATCH 01/93] =?UTF-8?q?REPORT-79047=20=E3=80=90=E8=BF=90?= =?UTF-8?q?=E8=90=A5=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=E3=80=91?= =?UTF-8?q?alphafine=E9=BB=98=E8=AE=A4=E5=B1=95=E7=A4=BA=E5=BA=94=E8=AF=A5?= =?UTF-8?q?=E6=98=AF=E7=AC=AC=E4=B8=80=E4=B8=AATAB=EF=BC=8C=E7=8E=B0?= =?UTF-8?q?=E5=9C=A8=E6=98=AF=E6=A8=A1=E6=9D=BF=E5=95=86=E5=9F=8E=20?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E7=AC=AC=E4=B8=80=E4=B8=AAtab=E4=B8=BA?= =?UTF-8?q?=E9=80=89=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/alphafine/component/AlphaFineFrame.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineFrame.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineFrame.java index bfd40aea32..cd5bee3dea 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineFrame.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineFrame.java @@ -602,9 +602,8 @@ public class AlphaFineFrame extends JFrame { if (alphaFineConfigManager.isProductDynamics()) { selectedLabelList.add(new SelectedLabel(PRODUCT_NEWS, CellType.PRODUCT_NEWS)); } - // 默认选中模板商城 if (alphaFineConfigManager.hasTemplateShop()) { - selectedLabelList.add(new SelectedLabel(TEMPLATE_SHOP, CellType.TEMPLATE_SHOP, true)); + selectedLabelList.add(new SelectedLabel(TEMPLATE_SHOP, CellType.TEMPLATE_SHOP)); } if (alphaFineConfigManager.isContainDocument()) { selectedLabelList.add(new SelectedLabel(HELP, CellType.DOCUMENT)); @@ -620,8 +619,8 @@ public class AlphaFineFrame extends JFrame { } - // 如果不展示模板商城,则list中第一个被选中 - if (!alphaFineConfigManager.hasTemplateShop() && !selectedLabelList.isEmpty()) { + // 默认选中第一个tab + if (!selectedLabelList.isEmpty()) { selectedLabelList.get(0).setSelected(true); } From 5938b63bf5a6b4c610a6f0a6c7e6136c750c3525 Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Sun, 28 Aug 2022 19:15:06 +0800 Subject: [PATCH 02/93] =?UTF-8?q?REPORT-78860=E3=80=90=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=E3=80=91=E6=96=AD?= =?UTF-8?q?=E7=BD=91=E6=83=85=E5=86=B5=E4=B8=8B=E6=90=9C=E7=B4=A2=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E8=B5=84=E6=BA=90=E5=BA=94=E8=AF=A5=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E7=BD=91=E7=BB=9C=E8=BF=9E=E6=8E=A5=E5=A4=B1=E8=B4=A5=E7=BC=BA?= =?UTF-8?q?=E9=86=92=E5=9B=BE=20=E4=BF=AE=E6=94=B9=E7=BB=93=E6=9E=9C?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alphafine/search/TemplateResourceSearchWorkerManager.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/TemplateResourceSearchWorkerManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/TemplateResourceSearchWorkerManager.java index ac1ef39a78..613f0f57a8 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/TemplateResourceSearchWorkerManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/TemplateResourceSearchWorkerManager.java @@ -38,13 +38,12 @@ public class TemplateResourceSearchWorkerManager implements SearchManager { public void doSearch(SearchTextBean searchTextBean) { checkSearchWork(); searchOver = false; - networkError = false; this.searchWorker = new SwingWorker, Void>() { @Override protected List doInBackground() { List list; - if (!AlphaFineHelper.isNetworkOk() && cellType.isNeedNetWork()) { + if (!AlphaFineHelper.isNetworkOk()) { networkError = true; FineLoggerFactory.getLogger().warn("alphaFine network error"); } From 860c7c5071a34eb67ef3994bd54fc8b95cb03446 Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Sun, 28 Aug 2022 20:11:12 +0800 Subject: [PATCH 03/93] =?UTF-8?q?REPORT-78626=E3=80=90=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=E3=80=91=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E5=95=86=E5=9F=8E=E8=BF=9B=E5=85=A5=E4=BA=8C=E7=BA=A7?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E5=90=8E=EF=BC=8C=E5=85=B3=E9=97=ADalphafine?= =?UTF-8?q?=EF=BC=8C=E5=86=8D=E6=AC=A1=E6=89=93=E5=BC=80=E4=B8=8D=E5=BA=94?= =?UTF-8?q?=E8=AF=A5=E6=98=BE=E7=A4=BA=E4=B8=8A=E6=AC=A1=E7=82=B9=E5=BC=80?= =?UTF-8?q?=E7=9A=84=E9=A1=B5=E9=9D=A2=20=E4=BF=AE=E6=94=B9=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E9=A1=B5=E9=9D=A2=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/alphafine/component/AlphaFineFrame.java | 2 +- .../mainframe/alphafine/preview/TemplateShopPane.java | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineFrame.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineFrame.java index cd5bee3dea..141dc4d9e1 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineFrame.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineFrame.java @@ -584,7 +584,7 @@ public class AlphaFineFrame extends JFrame { switchType(CellType.PLUGIN); break; case TEMPLATE_SHOP: - TemplateShopPane.getInstance().showPagePane(); + TemplateShopPane.getInstance().showResult(); switchType(CellType.TEMPLATE_SHOP); break; } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/TemplateShopPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/TemplateShopPane.java index fb0181ddd3..00e7c4495c 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/TemplateShopPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/TemplateShopPane.java @@ -71,8 +71,12 @@ public class TemplateShopPane extends JPanel { } } - public void showPagePane() { - switchCard(PAGE_PANEL); + public void showResult() { + if (Strings.isEmpty(AlphaFineHelper.getAlphaFineDialog().getSearchText())) { + switchCard(DEFAULT_PAGE_PANEL); + } else { + switchCard(PAGE_PANEL); + } } // 打开二级页面,显示详细信息 From 2601845c3b3a4697de67c0937bc06df524d94bd1 Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Sat, 3 Sep 2022 16:14:59 +0800 Subject: [PATCH 04/93] =?UTF-8?q?KERNEL-12366=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E6=8F=92=E4=BB=B6=E5=9B=BE=E6=A0=87=E6=94=AF=E6=8C=81?= =?UTF-8?q?SVG=201=E3=80=81=E6=94=B9=E4=B8=8B=E6=8E=A7=E4=BB=B6=E5=9B=BE?= =?UTF-8?q?=E6=A0=87=E8=AF=BBicon=E6=97=B6=E7=94=A8=E7=9A=84=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/ExtraDesignClassManager.java | 4 ++-- .../java/com/fr/design/gui/core/WidgetOptionFactory.java | 2 +- .../java/com/fr/design/designer/creator/XCreatorUtils.java | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/ExtraDesignClassManager.java b/designer-base/src/main/java/com/fr/design/ExtraDesignClassManager.java index 4d1493e01b..11634c5906 100644 --- a/designer-base/src/main/java/com/fr/design/ExtraDesignClassManager.java +++ b/designer-base/src/main/java/com/fr/design/ExtraDesignClassManager.java @@ -114,7 +114,7 @@ public class ExtraDesignClassManager extends AbstractExtraClassManager implement for (ParameterWidgetOptionProvider provider : set) { WidgetOption option = WidgetOptionFactory.createByWidgetClass( provider.nameForWidget(), - IOUtils.readIcon(provider.iconPathForWidget()), + provider.iconPathForWidget(), provider.classForWidget() ); result.add(option); @@ -186,7 +186,7 @@ public class ExtraDesignClassManager extends AbstractExtraClassManager implement if (provider.isContainer() == isContainer) { WidgetOption option = WidgetOptionFactory.createByWidgetClass( provider.nameForWidget(), - BaseUtils.readIcon(provider.iconPathForWidget()), + provider.iconPathForWidget(), provider.classForWidget() ); result.add(option); diff --git a/designer-base/src/main/java/com/fr/design/gui/core/WidgetOptionFactory.java b/designer-base/src/main/java/com/fr/design/gui/core/WidgetOptionFactory.java index e9ba427880..8d290ac2a8 100644 --- a/designer-base/src/main/java/com/fr/design/gui/core/WidgetOptionFactory.java +++ b/designer-base/src/main/java/com/fr/design/gui/core/WidgetOptionFactory.java @@ -4,7 +4,7 @@ import com.fr.base.BaseUtils; import com.fr.base.svg.IconUtils; import com.fr.form.ui.Widget; -import javax.swing.*; +import javax.swing.Icon; public class WidgetOptionFactory { diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java b/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java index e52233e0ef..10a8fbfb1f 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java @@ -4,6 +4,7 @@ package com.fr.design.designer.creator; import com.fr.base.chart.BaseChartCollection; +import com.fr.base.svg.IconUtils; import com.fr.base.theme.FineColorSynchronizer; import com.fr.base.theme.FormTheme; import com.fr.base.theme.TemplateTheme; @@ -72,7 +73,6 @@ import com.fr.form.ui.container.cardlayout.WCardTitleLayout; import com.fr.form.ui.container.cardlayout.WTabFitLayout; import com.fr.general.ComparatorUtils; import com.fr.general.GeneralContext; -import com.fr.general.IOUtils; import com.fr.invoke.Reflect; import com.fr.log.FineLoggerFactory; import com.fr.plugin.context.PluginContext; @@ -85,13 +85,13 @@ import com.fr.report.fit.ReportFitAttr; import com.fr.report.fit.ReportFitConfig; import com.fr.stable.StringUtils; import com.fr.third.javax.annotation.Nonnull; -import java.util.Set; import org.jetbrains.annotations.Nullable; import javax.swing.Icon; import java.awt.Container; import java.awt.Dimension; import java.util.List; +import java.util.Set; /** * XCreator的相关处理 @@ -363,7 +363,7 @@ public class XCreatorUtils { if (StringUtils.isEmpty(iconPath)) { return null; } - return IOUtils.readIcon(iconPath); + return IconUtils.readIcon(iconPath); } public static boolean containComponent(Container ancestor, Container xCreator) { From 9ed353d15eae73778329633a9db1f377dd165802 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Wed, 14 Sep 2022 14:44:56 +0800 Subject: [PATCH 05/93] =?UTF-8?q?REPORT-75998=20=E5=9B=BD=E9=99=85?= =?UTF-8?q?=E5=8C=96=E3=80=81=E8=8F=9C=E5=8D=95=E6=8F=92=E5=85=A5=E3=80=81?= =?UTF-8?q?=E5=BF=AB=E6=8D=B7=E9=94=AE=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/toolbar/ToolBarMenuDock.java | 8 +++++++ .../fr/design/module/DesignModuleFactory.java | 7 ++++++ .../com/fr/design/actions/NewFormAction.java | 2 +- .../designer/beans/models/SelectionModel.java | 23 +++++++++++++++++++ .../main/java/com/fr/design/fit/NewJForm.java | 4 ++-- 5 files changed, 41 insertions(+), 3 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 6aabb9ff53..6a83a159b8 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 @@ -60,6 +60,7 @@ import com.fr.design.menu.MenuDef; import com.fr.design.menu.SeparatorDef; import com.fr.design.menu.ShortCut; import com.fr.design.menu.ToolBarDef; +import com.fr.design.module.DesignModuleFactory; import com.fr.design.os.impl.SupportOSImpl; import com.fr.design.remote.action.RemoteDesignAuthManagerAction; import com.fr.design.update.actions.SoftwareUpdateAction; @@ -579,6 +580,13 @@ public abstract class ToolBarMenuDock { } shortCuts.add(new AboutAction()); + try { + if (DesignModuleFactory.getITReplaceAction() != null) { + shortCuts.add((ShortCut) DesignModuleFactory.getITReplaceAction().newInstance()); + } + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } return shortCuts.toArray(new ShortCut[0]); } diff --git a/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java b/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java index 5ff882f642..ab751296d3 100644 --- a/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java +++ b/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java @@ -47,6 +47,7 @@ public class DesignModuleFactory { private Class autoChartDialogClass; private Class chartPropertyPaneClass; private Class newFormAction; + private Class ITReplaceAction; private Class formParaDesigner; private Class paraPropertyPane; private Class formHierarchyPaneCls; @@ -116,6 +117,12 @@ public class DesignModuleFactory { public static Class getNewFormAction() { return instance.newFormAction; } + public static void registerReplaceActionClass(Class r){ + instance.ITReplaceAction = r; + } + public static Class getITReplaceAction(){ + return instance.ITReplaceAction; + } public static void registerParaPropertyPaneClass(Class p) { instance.paraPropertyPane = p; diff --git a/designer-form/src/main/java/com/fr/design/actions/NewFormAction.java b/designer-form/src/main/java/com/fr/design/actions/NewFormAction.java index 5ce51b673c..aa50c13f69 100644 --- a/designer-form/src/main/java/com/fr/design/actions/NewFormAction.java +++ b/designer-form/src/main/java/com/fr/design/actions/NewFormAction.java @@ -43,7 +43,7 @@ public class NewFormAction extends UpdateAction { @Override public KeyStroke getKeyStroke() { - return KeyStroke.getKeyStroke(KeyEvent.VK_F, DEFAULT_MODIFIER); + return null; } }; } diff --git a/designer-form/src/main/java/com/fr/design/designer/beans/models/SelectionModel.java b/designer-form/src/main/java/com/fr/design/designer/beans/models/SelectionModel.java index 997af89c70..f75e08d723 100644 --- a/designer-form/src/main/java/com/fr/design/designer/beans/models/SelectionModel.java +++ b/designer-form/src/main/java/com/fr/design/designer/beans/models/SelectionModel.java @@ -131,6 +131,29 @@ public class SelectionModel { } } + /** + * 用于强制定位所需组件,不对布局组件的顶层布局进行编辑判定,即使上层未展开或者未处于编辑状态依然可以强制跳转到对应的子组件 + * @param comp 设计组件 + */ + public void selectACreator4ITLocation(XCreator comp) { + // 如果父层是scale和title两个专属容器,返回其父层,组件本身是不让被选中的 + if (comp != designer.getRootComponent() && comp != designer.getParaComponent()) { + dealParentContainer(comp); + } + if (selection.removeSelectedCreator(comp) || selection.addSelectedCreator(comp)) { + designer.getEditListenerTable().fireCreatorModified(comp, DesignerEvent.CREATOR_SELECTED); + designer.repaint(); + } + } + + private void dealParentContainer(XCreator comp) { + XCreator parentContainer = (XCreator) comp.getParent(); + if (parentContainer != null) { + comp = parentContainer.isDedicateContainer() || comp instanceof XCardSwitchButton ? parentContainer : comp; + } + + } + /** * 将所选组件剪切到剪切板上 */ diff --git a/designer-form/src/main/java/com/fr/design/fit/NewJForm.java b/designer-form/src/main/java/com/fr/design/fit/NewJForm.java index 314097bcf1..62c38ca22d 100644 --- a/designer-form/src/main/java/com/fr/design/fit/NewJForm.java +++ b/designer-form/src/main/java/com/fr/design/fit/NewJForm.java @@ -243,7 +243,7 @@ public class NewJForm extends JForm { return; } if (xCreator instanceof XElementCase) { - getFormDesign().getSelectionModel().selectACreator(xCreator); + getFormDesign().getSelectionModel().selectACreator4ITLocation(xCreator); xCreator.startEditing(); if (getElementCaseDesign() != null) { getElementCaseDesign().navigate(trl); @@ -251,7 +251,7 @@ public class NewJForm extends JForm { } else { tabChanged(FORM_TAB); getFormDesign().getSelectionModel().reset(); - getFormDesign().getSelectionModel().selectACreator(xCreator); + getFormDesign().getSelectionModel().selectACreator4ITLocation(xCreator); } }, XCreator.class); } From 0a34ba980ad853b23ad9d2f0cbbef72a053c6eda Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Wed, 14 Sep 2022 14:51:16 +0800 Subject: [PATCH 06/93] =?UTF-8?q?REPORT-75998=20=E4=B8=BB=E8=A6=81?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E3=80=81=E8=A1=A5=E5=85=85=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E6=8F=92=E5=85=A5=E3=80=81=E9=97=AA=E7=83=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../actions/replace/action/SearchAction.java | 23 ++++++++++ .../actions/replace/action/ShowValue.java | 30 +++++++++++++ .../action/content/formula/SearchFormula.java | 23 ++++++++++ .../formula/cell/SearchCellFormula.java | 34 ++++++++++++++ .../formula/data/SearchDataFormula.java | 22 +++++++++ .../floatelement/SearchFloatFormula.java | 33 ++++++++++++++ .../highlight/SearchHighlightFormula.java | 20 +++++++++ .../condition/SearchConditionFormula.java | 23 ++++++++++ .../highlight/javascript/SearchJSFormula.java | 33 ++++++++++++++ .../template/SearchTemplateFormula.java | 32 +++++++++++++ .../formula/widget/DictionaryAction.java | 23 ++++++++++ .../formula/widget/SearchWidgetFormula.java | 42 +++++++++++++++++ .../content/widget/SearchFrmWidget.java | 24 ++++++++++ .../replace/info/DealWithInfoValue.java | 45 +++++++++++++++++++ .../fr/design/actions/replace/info/Info.java | 39 ++++++++++++++++ .../mainframe/ReportComponentComposite.java | 5 ++- .../fr/start/module/DesignerActivator.java | 2 + 17 files changed, 451 insertions(+), 2 deletions(-) create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/SearchAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowValue.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormula.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormula.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormula.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/SearchFloatFormula.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormula.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchConditionFormula.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormula.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormula.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/DictionaryAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormula.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchFrmWidget.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/info/DealWithInfoValue.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/info/Info.java diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/SearchAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/SearchAction.java new file mode 100644 index 0000000000..3d44d92e69 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/SearchAction.java @@ -0,0 +1,23 @@ +package com.fr.design.actions.replace.action; + +import com.fr.design.actions.replace.info.Info; +import com.fr.design.mainframe.JTemplate; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-11 + */ +public interface SearchAction { + + /** + * 搜索模板,获取信息列表 + * + * @param jTemplate 指定搜索的模板 + * @return 对应的Info信息列表 + */ + ArrayList search4Infos(JTemplate jTemplate); + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowValue.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowValue.java new file mode 100644 index 0000000000..8ee365b2ea --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowValue.java @@ -0,0 +1,30 @@ +package com.fr.design.actions.replace.action; + +import com.fr.design.actions.replace.info.Info; +import com.fr.design.mainframe.JTemplate; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-22 + */ +public interface ShowValue { + + /** + * 获取搜索结果 + * @param jTemplate + * @return + */ + ArrayList showSearchValue(JTemplate jTemplate); + + /** + * 对搜索结果进行过滤 + * @param str + * @param arrayList + * @return + */ + ArrayList addMatchResult(String str,ArrayList arrayList); + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormula.java new file mode 100644 index 0000000000..49b5b81981 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormula.java @@ -0,0 +1,23 @@ +package com.fr.design.actions.replace.action.content.formula; + +import com.fr.design.actions.replace.action.SearchAction; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; + + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-18 + */ +public interface SearchFormula extends SearchAction { + /** + * 获取公式 + * + * @param formulaInfos 存储公式信息的列表 + * @param content ITContent的数据结构 + */ + void searchFormula(ArrayList formulaInfos, ITContent content); +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormula.java new file mode 100644 index 0000000000..80811f33f5 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormula.java @@ -0,0 +1,34 @@ +package com.fr.design.actions.replace.action.content.formula.cell; + +import com.fr.design.actions.replace.action.content.formula.SearchFormula; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.mainframe.JTemplate; + +import java.util.ArrayList; + +/** + * 查找单元格中可能存在的公式 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-19 + */ +public interface SearchCellFormula extends SearchFormula { + + /** + * 查找单元格可能存在的共有的公式 + * + * @param jTemplate 指定搜索模板 + * @param formulaInfos 要存储对应信息列表的数据结构 + */ + void searchFormulaFromCell(JTemplate jTemplate, ArrayList formulaInfos); + + /** + * 查找不同单元格内容类型各自可能存在的公式 + * + * @param formulaInfos + * @param content + */ + void searchFormulaFromCellType(ArrayList formulaInfos, ITContent content); +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormula.java new file mode 100644 index 0000000000..4d93f604b3 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormula.java @@ -0,0 +1,22 @@ +package com.fr.design.actions.replace.action.content.formula.data; + +import com.fr.design.actions.replace.action.content.formula.SearchFormula; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.mainframe.JTemplate; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-26 + */ +public interface SearchDataFormula extends SearchFormula { + /** + * 从数据集类型中去获取公式 + * @param jTemplate + * @param fomulaInfos + */ + void searchFormulaFromData(JTemplate jTemplate, ArrayList fomulaInfos); +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/SearchFloatFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/SearchFloatFormula.java new file mode 100644 index 0000000000..6e5db9feed --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/SearchFloatFormula.java @@ -0,0 +1,33 @@ +package com.fr.design.actions.replace.action.content.formula.floatelement; + +import com.fr.design.actions.replace.action.content.formula.SearchFormula; +import com.fr.design.actions.replace.info.FloatInfo; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.mainframe.JTemplate; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-12 + */ +public interface SearchFloatFormula extends SearchFormula { + + /** + * 查找悬浮元素可能存在的共有的公式 + * + * @param floatInfo FloatInfo信息 + * @param formulaInfos 要存储对应信息列表的数据结构 + */ + void searchFormulaFromFloat(ArrayList formulaInfos, FloatInfo floatInfo); + + /** + * 查找不同悬浮元素内容类型各自可能存在的公式 + * + * @param formulaInfos 要存储对应信息列表的数据结构 + * @param floatInfo FloatInfo信息 + */ + void searchFormulaFromFloatType(ArrayList formulaInfos, FloatInfo floatInfo); +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormula.java new file mode 100644 index 0000000000..7a787901c0 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormula.java @@ -0,0 +1,20 @@ +package com.fr.design.actions.replace.action.content.formula.highlight; + +import com.fr.design.actions.replace.action.content.formula.SearchFormula; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.report.cell.cellattr.highlight.HighlightAction; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-18 + */ +public interface SearchHighlightFormula extends SearchFormula { + + //处理条件属性中各种属性 + void dealWithHighlightAction(ITContent content, ArrayList formulaInfos, HighlightAction highlightAction); + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchConditionFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchConditionFormula.java new file mode 100644 index 0000000000..00f71b75f6 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchConditionFormula.java @@ -0,0 +1,23 @@ +package com.fr.design.actions.replace.action.content.formula.highlight.condition; + +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; + +import com.fr.general.data.Condition; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-17 + */ +public interface SearchConditionFormula { + /** + * 从条件相关对象中获取公式 + * @param formulaInfos + * @param content + * @param condition + */ + void searchFormulaFromCondition(ArrayList formulaInfos, ITContent content, Condition condition); +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormula.java new file mode 100644 index 0000000000..ccbf8d1b75 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormula.java @@ -0,0 +1,33 @@ +package com.fr.design.actions.replace.action.content.formula.highlight.javascript; + +import com.fr.design.actions.replace.action.content.formula.SearchFormula; +import com.fr.design.actions.replace.action.content.formula.highlight.SearchHighlightFormula; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.js.JavaScript; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-18 + */ +public interface SearchJSFormula extends SearchHighlightFormula { + + /** + * 对各种类型的JS分别处理,获取各自其他地方的公式 + * @param formulaInfos + * @param content + * @param javaScript + */ + void searchJSFormulaFromOther(ArrayList formulaInfos, ITContent content, JavaScript javaScript); + + /** + * 从超链中的参数获取公式 + * @param formulaInfos + * @param content + * @param javaScript + */ + void addFormulaInfosFromJSPara(ArrayList formulaInfos, ITContent content, JavaScript javaScript); +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormula.java new file mode 100644 index 0000000000..169bc5dc3b --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormula.java @@ -0,0 +1,32 @@ +package com.fr.design.actions.replace.action.content.formula.template; + +import com.fr.design.actions.replace.action.content.formula.SearchFormula; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.mainframe.JTemplate; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-12 + */ +public interface SearchTemplateFormula extends SearchFormula { + + /** + * 搜索全局水印中的公式 + * @param jTemplate + * @param formulaInfos + * @param content + */ + void searchTemplateWaterMarkFormula(JTemplate jTemplate, ArrayList formulaInfos, ITContent content); + + /** + * 搜索全局参数中的公式 + * @param jTemplate + * @param formulaInfos + * @param content + */ + void searchTemplateParaFormula(JTemplate jTemplate, ArrayList formulaInfos, ITContent content); +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/DictionaryAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/DictionaryAction.java new file mode 100644 index 0000000000..f5a7610b94 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/DictionaryAction.java @@ -0,0 +1,23 @@ +package com.fr.design.actions.replace.action.content.formula.widget; + +import com.fr.data.Dictionary; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-22 + */ +public interface DictionaryAction { + + /** + * 从数据字典中获取公式 + * @param content + * @param formulaInfos + * @param dictionary + */ + void searchFormulaFromDictionary(ITContent content, ArrayList formulaInfos, Dictionary dictionary); +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormula.java new file mode 100644 index 0000000000..1064dee360 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormula.java @@ -0,0 +1,42 @@ +package com.fr.design.actions.replace.action.content.formula.widget; + +import com.fr.design.actions.replace.action.content.formula.SearchFormula; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.WidgetInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.form.ui.Widget; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-19 + */ +public interface SearchWidgetFormula extends SearchFormula { + + /** + * 从WidgetInfos列表中搜索所有公式 + * + * @param widgetInfo 对应的Info信息列表 + * @param formulaInfos 要存储进去的公式信息列表 + */ + void searchFormulaFromWidgetInfos(WidgetInfo widgetInfo, ArrayList formulaInfos); + + /** + * 从控件的不同类型中获取公式 + * + * @param content 对应的ITContent数据结构 + * @param formulaInfos 要存储进去的公式信息列表 + */ + void searchFormulaFromWidget(ITContent content, ArrayList formulaInfos); + + /** + * 从控件值中获取公式 + * + * @param content 对应的ITContent数据结构 + * @param formulaInfos 要存储进去的公式信息列表 + */ + void searchFormulaFromWidgetValue(ITContent content, ArrayList formulaInfos); + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchFrmWidget.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchFrmWidget.java new file mode 100644 index 0000000000..95aa3c11c0 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchFrmWidget.java @@ -0,0 +1,24 @@ +package com.fr.design.actions.replace.action.content.widget; + +import com.fr.design.actions.replace.info.WidgetInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.form.ui.Widget; +import com.fr.form.ui.container.WLayout; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-29 + */ +public interface SearchFrmWidget { + + /** + * 将决策报表的控件加入数组中 + * @param content ITContent信息 + * @param widget 对应的控件 + * @return + */ + ArrayList addFrmWidget2Array(ITContent content, Widget widget); +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/DealWithInfoValue.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/DealWithInfoValue.java new file mode 100644 index 0000000000..ecde8d1852 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/DealWithInfoValue.java @@ -0,0 +1,45 @@ +package com.fr.design.actions.replace.info; + +import com.fr.design.actions.replace.info.base.ITContent; +import javafx.util.Pair; + +import java.util.ArrayList; +import java.util.HashMap; + +/** + * 处理信息 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-23 + */ +public interface DealWithInfoValue { + + /** + * 获取存储的值 + * + * @param o 用于替换的replaceObject + * @return 返回便于处理的HashMap(不同类型可能会存在多个需要存储的数据,eg:控件名 & 水印) + */ + HashMap getValue(Object... o); + + + /** + * 替换时调用的方法,设置值 + * + * @param info 用于获取值和设置值 + * @param findStr 要被替换的字符串 + * @param replaceStr 用于替换的字符串 + * @param operatorArray 存储内容类替换所要操作的所有位置(Pair<起始位置,结束位置>) + */ + void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray); + + + /** + * 获取用于展示给用户的值 + * + * @param info 信息 + * @return 返回用于展示的字符串 + */ + String getInfoShowStr(Info info); +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/Info.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/Info.java new file mode 100644 index 0000000000..9b318a2170 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/Info.java @@ -0,0 +1,39 @@ +package com.fr.design.actions.replace.info; + +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.stable.StringUtils; + + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-17 + */ +public interface Info extends DealWithInfoValue{ + + /** + * 获取ITContent + * @return + */ + ITContent getContent(); + + + /** + * 更新旧值 + * @param oldShowStr + * @param lastSearchStr + */ + default void updateOldStr(String oldShowStr, String lastSearchStr){ + this.getContent().setOldShowStr(oldShowStr); + this.getContent().setLastSearchStr(lastSearchStr); + } + + /** + * 校验正确性(是否被修改) + * @return + */ + default Boolean checkValid(){ + //todo 完善所有类型的校验 + return true; + }; +} diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/ReportComponentComposite.java b/designer-realize/src/main/java/com/fr/design/mainframe/ReportComponentComposite.java index d0f6a114d8..a14573c6e4 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/ReportComponentComposite.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/ReportComponentComposite.java @@ -2,6 +2,7 @@ package com.fr.design.mainframe; import com.fr.base.ScreenResolution; import com.fr.base.TRL; +import com.fr.design.actions.replace.ui.ITReplaceMainDialog; import com.fr.design.base.mode.DesignModeContext; import com.fr.design.designer.EditingState; import com.fr.design.event.RemoveListener; @@ -140,8 +141,8 @@ public class ReportComponentComposite extends JComponent implements RemoveListen Grid grid = centerCardPane.editingComponet.elementCasePane.getGrid(); this.centerCardPane.editingComponet.elementCasePane.getGrid().addMouseWheelListener(new ReportComponentCompositeMouseWheelHandler(this)); - - if (!grid.hasFocus() && grid.isRequestFocusEnabled()) { + //!ITReplaceMainDialog.isITReplaceFlag()用于解决查找替换面板闪烁问题 + if (!grid.hasFocus() && grid.isRequestFocusEnabled() && !ITReplaceMainDialog.isITReplaceFlag()) { grid.requestFocus(); } } diff --git a/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java b/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java index b69eda7993..92d1fc6a4a 100644 --- a/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java +++ b/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java @@ -31,6 +31,7 @@ import com.fr.design.actions.insert.flot.ChartFloatAction; import com.fr.design.actions.insert.flot.FormulaFloatAction; import com.fr.design.actions.insert.flot.ImageFloatAction; import com.fr.design.actions.insert.flot.TextBoxFloatAction; +import com.fr.design.actions.replace.ITReplaceAction; import com.fr.design.bridge.DesignToolbarProvider; import com.fr.design.constants.DesignerLaunchStatus; import com.fr.design.env.DesignerWorkspaceLoader; @@ -466,6 +467,7 @@ public class DesignerActivator extends Activator implements Prepare { StableFactory.registerMarkedObject(DesignToolbarProvider.STRING_MARKED, WidgetToolBarPane.getInstance()); DesignModuleFactory.registerNewFormActionClass(NewFormAction.class); + DesignModuleFactory.registerReplaceActionClass(ITReplaceAction.class); DesignModuleFactory.registerFormParaDesignerClass(FormParaDesigner.class); DesignModuleFactory.registerParaPropertyPaneClass(ParameterPropertyPane.class); DesignModuleFactory.registerFormHierarchyPaneClass(FormHierarchyTreePane.class); From e340676c63907335b137b2c6b27e2326356274aa Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Wed, 14 Sep 2022 14:54:48 +0800 Subject: [PATCH 07/93] =?UTF-8?q?REPORT-75998=20=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E7=B1=BB=E3=80=81UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../actions/replace/ITReplaceAction.java | 63 ++++ .../actions/replace/ui/ITComboBoxEditor.java | 113 ++++++ .../replace/ui/ITReplaceMainDialog.java | 246 ++++++++++++ .../replace/ui/ITReplaceNorthPanel.java | 352 ++++++++++++++++++ .../replace/ui/ITReplaceSouthPanel.java | 44 +++ .../replace/ui/ITReplaceWestPanel.java | 45 +++ .../actions/replace/ui/ITTableButton.java | 102 +++++ .../actions/replace/ui/ITTableEditor.java | 225 +++++++++++ .../actions/replace/ui/ITTableEditorPane.java | 265 +++++++++++++ .../actions/replace/utils/SearchJSUtils.java | 256 +++++++++++++ .../actions/replace/utils/ShowValueUtils.java | 91 +++++ 11 files changed, 1802 insertions(+) create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/ITReplaceAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITComboBoxEditor.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceSouthPanel.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceWestPanel.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditor.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ITReplaceAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ITReplaceAction.java new file mode 100644 index 0000000000..1a9f67bb8a --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ITReplaceAction.java @@ -0,0 +1,63 @@ +package com.fr.design.actions.replace; + +import com.fr.design.actions.UpdateAction; +import com.fr.design.dialog.UIDialog; +import com.fr.design.file.HistoryTemplateListCache; +import com.fr.design.i18n.Toolkit; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.menu.MenuKeySet; +import com.fr.design.actions.replace.ui.ITReplaceMainDialog; +import com.fr.design.utils.gui.GUICoreUtils; + +import javax.swing.*; +import java.awt.event.ActionEvent; +import java.awt.event.InputEvent; +import java.awt.event.KeyEvent; + +import static com.fr.design.gui.syntax.ui.rtextarea.RTADefaultInputMap.DEFAULT_MODIFIER; + +/** + * 将全局查找替换选项插入帮助菜单底部 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-10 + */ +public class ITReplaceAction extends UpdateAction { + public ITReplaceAction() { + this.setMenuKeySet(IT_REPLACE); + this.setName(getMenuKeySet().getMenuName()); + this.setMnemonic(getMenuKeySet().getMnemonic()); + this.setAccelerator(getMenuKeySet().getKeyStroke()); + } + + private static final MenuKeySet IT_REPLACE = new MenuKeySet() { + @Override + public char getMnemonic() { + return 'I'; + } + + @Override + public String getMenuName() { + return Toolkit.i18nText("Fine-Design_Replace_Title"); + } + + @Override + public KeyStroke getKeyStroke() { + return KeyStroke.getKeyStroke(KeyEvent.VK_F, DEFAULT_MODIFIER); + } + }; + + /** + * 点击选项后的行为 + * + * @param event + */ + public void actionPerformed(ActionEvent event) { + ITReplaceMainDialog mainFrame = ITReplaceMainDialog.getInstance(); + mainFrame.setVisible(true); + + } + +} + diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITComboBoxEditor.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITComboBoxEditor.java new file mode 100644 index 0000000000..93a6f28945 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITComboBoxEditor.java @@ -0,0 +1,113 @@ +package com.fr.design.actions.replace.ui; + +import com.fr.design.gui.itextfield.UITextField; +import com.fr.general.ComparatorUtils; +import com.fr.stable.Constants; +import com.fr.stable.StringUtils; + +import javax.swing.plaf.basic.BasicComboBoxEditor; +import java.awt.*; +import java.awt.event.ActionListener; +import java.lang.reflect.Method; + +/** + * 渲染带有默认值的ComboBox + * UIComboBox中设置默认值会整体上移,需要自己重新实现一个 + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-02 + */ +public class ITComboBoxEditor extends BasicComboBoxEditor { + protected UITextField textField; + private Object oldValue; + + /** + * 构造时重新设置一下TextField的上边距 + */ + public ITComboBoxEditor() { + textField = new UITextField(){ + @Override + public Insets getInsets() { + return new Insets(4, 4, 0, 4); + } + }; + textField.setRectDirection(Constants.RIGHT); + } + + @Override + public Component getEditorComponent() { + return textField; + } + + /** + * 设置选项 + * @param anObject 选项 + */ + @Override + public void setItem(Object anObject) { + if (anObject != null) { + + textField.setText(anObject.toString()); + oldValue = anObject; + } else { + textField.setText(StringUtils.EMPTY); + } + + } + + /** + * 获取选项 + * @return 选项 + * + */ + @Override + public Object getItem() { + Object newValue = textField.getText(); + if (oldValue != null && !(oldValue instanceof String)) { + // The original value is not a string. Should return the value in it's + // original type. + if(ComparatorUtils.equals(newValue,oldValue.toString())) { + return oldValue; + } else { + // Must take the value from the textField and get the value and cast it to the new type. + Class cls = oldValue.getClass(); + try { + Method method = cls.getMethod("valueOf", new Class[]{String.class}); + newValue = method.invoke(oldValue, new Object[]{textField.getText()}); + } catch (Exception ex) { + // Fail silently and return the newValue (a String object) + } + } + } + return newValue; + + } + + /** + * 选择所有 + */ + @Override + public void selectAll() { + textField.selectAll(); + textField.requestFocus(); + } + + /** + * 添加监听 + * @param l 监听 + */ + @Override + public void addActionListener(ActionListener l) { + textField.addActionListener(l); + } + + /** + * 移除监听 + * @param l 监听 + */ + @Override + public void removeActionListener(ActionListener l) { + textField.removeActionListener(l); + } + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java new file mode 100644 index 0000000000..d5fccede4f --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java @@ -0,0 +1,246 @@ +package com.fr.design.actions.replace.ui; + + +import com.fr.design.actions.replace.action.ShowSearchResultAction; + +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.Info; +import com.fr.design.actions.replace.info.JSInfo; +import com.fr.design.actions.replace.info.WidgetInfo; +import com.fr.design.actions.replace.utils.ShowValueUtils; +import com.fr.design.data.DesignTableDataManager; +import com.fr.design.data.datapane.TableDataPaneListPane; +import com.fr.design.dialog.FineJOptionPane; +import com.fr.design.dialog.UIDialog; +import com.fr.design.file.HistoryTemplateListCache; +import com.fr.design.gui.itextfield.UITextField; +import com.fr.design.i18n.Toolkit; +import com.fr.design.mainframe.DesignerContext; +import com.fr.design.mainframe.JTemplate; +import com.fr.file.TableDataConfig; +import com.fr.general.GeneralUtils; +import com.fr.main.impl.WorkBook; +import com.fr.stable.StringUtils; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.*; +import java.util.ArrayList; +import java.util.HashMap; + +/** + * 主面板 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-10 + */ +public class ITReplaceMainDialog extends UIDialog { + ArrayList searchResultList = new ArrayList<>(); + private static boolean ITReplaceFlag = false; + private static volatile ITReplaceMainDialog instance = null; + private static String templateID; + private static int selectCount; + private ITReplaceNorthPanel northPane; + private ITReplaceSouthPanel southPanel; + private ITReplaceWestPanel westPanel; + + private ITReplaceMainDialog() { + super(DesignerContext.getDesignerFrame()); + init(); + } + + /** + * 初始化 + */ + public void init() { + setTitle(Toolkit.i18nText("Fine-Design_Replace_Title")); + initFrame(); + fitScreen(); + ITReplaceFlag = true; + } + + /** + * DCL + * + * @return 面板 + */ + public static ITReplaceMainDialog getInstance() { + if (instance == null) { + synchronized (ITReplaceMainDialog.class) { + if (instance == null) { + instance = new ITReplaceMainDialog(); + } + } + } + instance.fitScreen(); + return instance; + } + + + /** + * 适配屏幕 + */ + public void fitScreen() { + JTemplate jTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); + int height = 385; + int width = jTemplate.getWidth(); + Point point = jTemplate.getLocationOnScreen(); + setModal(false); + setMaximumSize(new Dimension(jTemplate.getWidth(), jTemplate.getHeight())); + setMinimumSize(new Dimension(jTemplate.getWidth(), 240)); + setSize(width, height); + setLocation(new Point(point.x, point.y + jTemplate.getHeight() / 2 + jTemplate.getHeight() / 2 - 385)); + + northPane.fitScreen(0, 0, jTemplate.getWidth()); + } + + + /** + * 创建面板 + */ + public void initFrame() { + JTemplate jTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); + northPane = new ITReplaceNorthPanel(); + southPanel = new ITReplaceSouthPanel(); + westPanel = new ITReplaceWestPanel(); + + northPane.fitScreen(0, 0, jTemplate.getWidth()); + + JPanel center = new JPanel(new BorderLayout()); + + northPane.getFindInputCombobox().setEditable(true); + northPane.getReplaceInputCombobox().setEditable(false); + + + ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).setPlaceholder(Toolkit.i18nText("Fine-Design_Replace_Search_Input")); + ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).setPlaceholder(Toolkit.i18nText("Fine-Design_Replace_Input")); + ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + search(); + String searchStr = ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).getText(); + if (!StringUtils.isEmpty(searchStr)) { + ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).setEditable(true); + northPane.getReplaceInputCombobox().setEditable(true); + } else { + ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).setEditable(false); + northPane.getReplaceInputCombobox().setEditable(false); + } + } + }); + ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + replace(); + } + + + }); + center.add(northPane.getUpPanel(), BorderLayout.NORTH); + center.add(southPanel.getTableEditorPane(), BorderLayout.CENTER); + add(westPanel.getLeftJpanel(), BorderLayout.WEST); + //主体部分 + add(center, BorderLayout.CENTER); + center.setVisible(true); + } + + /** + * 替换 + */ + private void replace() { + if (isITReplaceValid() && checkTemplateChanged(searchResultList)) { + String searchStr = ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).getText(); + String replaceStr = ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).getText(); + + + for (Info info : searchResultList) { + if (info.getContent().isSelected()) { + info.setValue(info, searchStr, replaceStr, info.getContent().getOperatorArray()); + ShowValueUtils.updateHighlight(info, replaceStr); + } + } + southPanel.getTableEditorPane().update(); + northPane.refreshReplaceInputComboBoxItems(); + ITTableEditorPane.getEditTable().repaint(); + HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().fireTargetModified(true); + + + } else { + Object[] options = new Object[]{Toolkit.i18nText("Fine-Design_Replace_Search_Again"), Toolkit.i18nText("Fine-Engine_Basic_Cancel")}; + int optionSelected = FineJOptionPane.showOptionDialog( + ITReplaceMainDialog.this, + Toolkit.i18nText("Fine-Design_Replace_Message"), + Toolkit.i18nText("Fine-Design_Basic_Tool_Tips"), + JOptionPane.YES_NO_CANCEL_OPTION, + JOptionPane.ERROR_MESSAGE, + null, + options, // 如果传null, 则按钮为 optionType 类型所表示的按钮(也就是确认对话框) + options[0] + ); + //如果选择了重新查找,则再查找一遍 + if (optionSelected == 0) { + search(); + } + } + } + + private Boolean checkTemplateChanged(ArrayList searchResultList) { + for (Info info : searchResultList) { + if (!info.checkValid()) { + return false; + } + } + return true; + } + + + /** + * 可行性判定(模板是否可用、是否是同个模板) + * + * @return 检查无误则返回true + */ + public boolean isITReplaceValid() { + if (JTemplate.isValid(HistoryTemplateListCache.getInstance().getCurrentEditingTemplate())) { + return StringUtils.equals(HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getTarget().getTemplateID(), templateID); + } else return false; + + } + + public static void setITReplaceFlag(boolean ITReplaceFlag) { + ITReplaceMainDialog.ITReplaceFlag = ITReplaceFlag; + } + + public static boolean isITReplaceFlag() { + return ITReplaceFlag; + } + + /** + * 搜索 + */ + public void search() { + ITTableEditor itTableEditor = southPanel.getItTableEditor(); + if (JTemplate.isValid(HistoryTemplateListCache.getInstance().getCurrentEditingTemplate())) { + JTemplate jTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); + templateID = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getTarget().getTemplateID(); + itTableEditor.clear(); + ShowSearchResultAction searchAction = ShowSearchResultAction.match(GeneralUtils.objectToString(northPane.getFindCombobox().getSelectedItem())); + if (searchAction != null) { + searchResultList = searchAction.addMatchResult(((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).getText(), searchAction.showSearchValue(jTemplate)); + itTableEditor.add(searchResultList); + northPane.getResultLabel().setText("" + Toolkit.i18nText("Fine-Design_Replace_Search_Finish") + "" + searchResultList.size() + "" + Toolkit.i18nText("Fine-Design_Replace_Result")); + } + itTableEditor.fireTableDataChanged(); + northPane.refreshFindInputComboBoxItems(); + } else { + //todo + } + } + + /** + * 检测结果是否合法 + */ + @Override + public void checkValid() throws Exception { + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java new file mode 100644 index 0000000000..781b053f76 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java @@ -0,0 +1,352 @@ +package com.fr.design.actions.replace.ui; + +import com.fr.design.file.HistoryTemplateListCache; +import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.gui.ibutton.UIRadioButton; +import com.fr.design.gui.icheckbox.UICheckBox; +import com.fr.design.gui.icombobox.UIComboBox; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.itextfield.UITextField; +import com.fr.design.i18n.Toolkit; +import com.fr.stable.StringUtils; + + +import javax.swing.ComboBoxEditor; +import javax.swing.JCheckBox; +import javax.swing.JPanel; +import java.awt.Dimension; +import java.util.ArrayList; +import java.util.Collections; + +/** + * 上面板 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-01 + */ +public class ITReplaceNorthPanel { + private JPanel upPanel; + private UILabel findLabel; + private UILabel rangeLabel; + private UILabel resultLabel; + private UIComboBox findCombobox; + private UIComboBox rangeCombobox; + private JCheckBox matchRadioButton; + + private UIComboBox findInputCombobox; + private UIComboBox replaceInputCombobox; + + private UIButton replaceButton; + private UIButton searchButton; + + private static int FIND_LABEL_X, FIND_LABEL_Y, FIND_LABEL_WIDTH, FIND_LABEL_HEIGHT; + private static int FIND_COMBOBOX_X, FIND_COMBOBOX_Y, FIND_COMBOBOX_WIDTH, FIND_COMBOBOX_HEIGHT; + private static int RANGE_LABEL_X, RANGE_LABEL_Y, RANGE_LABEL_WIDTH, RANGE_LABEL_HEIGHT; + private static int RANGE_COMBOBOX_X, RANGE_COMBOBOX_Y, RANGE_COMBOBOX_WIDTH, RANGE_COMBOBOX_HEIGHT; + private static int MATCH_X, MATCH_Y, MATCH_WIDTH, MATCH_HEIGHT; + private static int RESULT_LABEL_X, RESULT_LABEL_Y, RESULT_LABEL_WIDTH, RESULT_LABEL_HEIGHT; + private static int FIND_INPUT_COMBOBOX_X, FIND_INPUT_COMBOBOX_Y, FIND_INPUT_COMBOBOX_WIDTH, FIND_INPUT_COMBOBOX_HEIGHT; + private static int REPLACE_INPUT_COMBOBOX_X, REPLACE_INPUT_COMBOBOX_Y, REPLACE_INPUT_COMBOBOX_WIDTH, REPLACE_INPUT_COMBOBOX_HEIGHT; + private static int REPLACE_BUTTON_X, REPLACE_BUTTON_Y, REPLACE_BUTTON_WIDTH, REPLACE_BUTTON_HEIGHT; + private static int SEARCH_BUTTON_X, SEARCH_BUTTON_Y, SEARCH_BUTTON_WIDTH, SEARCH_BUTTON_HEIGHT; + private static int BUTTON_GAP; + + public static ArrayList findItems = new ArrayList<>(); + public static ArrayList findInputItems = new ArrayList<>(); + public static ArrayList replaceInputItems = new ArrayList<>(); + + static { + findItems.add(Toolkit.i18nText("Fine-Design_Basic_Cell")); + findItems.add(Toolkit.i18nText("Fine-Design_Replace_JS")); + findItems.add("SQL"); + findItems.add(Toolkit.i18nText("Fine-Design_Basic_Float_Element")); + findItems.add(Toolkit.i18nText("Fine-Design_Replace_Component")); + findItems.add(Toolkit.i18nText("Fine-Design_Basic_Widget")); + findItems.add(Toolkit.i18nText("Fine-Design_Basic_Formula")); + } + + public ITReplaceNorthPanel() { + upPanel = new JPanel(null); + + findLabel = new UILabel(Toolkit.i18nText("Fine-Design_Replace_Search_Element")); + rangeLabel = new UILabel(Toolkit.i18nText("Fine-Design_Replace_Search_Range")); + resultLabel = new UILabel(); + + String[] rangeItems = new String[]{Toolkit.i18nText("Fine-Design_Basic_Export_JS_Template_Current")}; + String[] replaceInputItems = new String[]{""}; + findCombobox = new UIComboBox(findItems.toArray()); + rangeCombobox = new UIComboBox(rangeItems); + findInputCombobox = new UIComboBox(findInputItems.toArray()) { + @Override + public void setEditor(ComboBoxEditor comboBoxEditor) { + super.setEditor(new ITComboBoxEditor()); + } + }; + replaceInputCombobox = new UIComboBox(replaceInputItems) { + @Override + public void setEditor(ComboBoxEditor comboBoxEditor) { + super.setEditor(new ITComboBoxEditor()); + } + }; + matchRadioButton = new JCheckBox(Toolkit.i18nText("Fine-Design_Replace_WildCard")); + + replaceButton = new UIButton(Toolkit.i18nText("Fine-Design_Replace_Button")); + searchButton = new UIButton(Toolkit.i18nText("Fine-Design_Search_Button")); + + setLimitSize(HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getWidth()); + + upPanel.add(findLabel); + upPanel.add(rangeLabel); + upPanel.add(resultLabel); + upPanel.add(findCombobox); + upPanel.add(rangeCombobox); + upPanel.add(findInputCombobox); + upPanel.add(replaceInputCombobox); + upPanel.add(matchRadioButton); + upPanel.add(replaceButton); + upPanel.add(searchButton); + } + + /** + * 限制尺寸 + * + * @param width + */ + public void setLimitSize(int width) { + upPanel.setMaximumSize(new Dimension(width, 161)); + upPanel.setMinimumSize(new Dimension(width, 161)); + upPanel.setPreferredSize(new Dimension(width, 161)); + } + + + /** + * 适配屏幕 + * + * @param x + * @param y + * @param templateWidth + */ + public void fitScreen(int x, int y, int templateWidth) { + + setFindLabelBounds(x, y, templateWidth); + setRangeLabelBounds(x, y, templateWidth); + setResultLabelBounds(x, y, templateWidth); + + setFindComboboxBounds(x, y, templateWidth); + setRangeComboboxBounds(x, y, templateWidth); + setFindInputComboboxBounds(x, y, templateWidth); + setReplaceInputComboboxBounds(x, y, templateWidth); + + setUIRadioButtonBounds(x, y, templateWidth); + setReplaceButtonBounds(x, y, templateWidth); + setSearchButtonBounds(x, y, templateWidth); + + } + + + /** + * 刷新输入框 + */ + public void refreshFindInputComboBoxItems() { + String text = ((UITextField) (this.getFindInputCombobox().getEditor().getEditorComponent())).getText(); + if(!StringUtils.isEmpty(text)){ + if (findInputItems.contains(text)) { + Collections.swap(findInputItems, 0, findInputItems.indexOf(text)); + } else { + if (findInputItems.size() >= 5) { + findInputItems.remove(4); + findInputItems.add(0, text); + } else { + findInputItems.add(0, text); + } + } + this.getFindInputCombobox().refreshBoxItems(ITReplaceNorthPanel.findInputItems); + ((UITextField) (this.getFindInputCombobox().getEditor().getEditorComponent())).setText(text); + } + } + + /** + * 刷新替换框 + */ + public void refreshReplaceInputComboBoxItems(){ + String text = ((UITextField) (this.getReplaceInputCombobox().getEditor().getEditorComponent())).getText(); + if(!StringUtils.isEmpty(text)){ + if (replaceInputItems.contains(text)) { + Collections.swap(replaceInputItems, 0, replaceInputItems.indexOf(text)); + } else { + if (replaceInputItems.size() >= 5) { + replaceInputItems.remove(4); + replaceInputItems.add(0, text); + } else { + replaceInputItems.add(0, text); + } + } + this.getFindInputCombobox().refreshBoxItems(ITReplaceNorthPanel.replaceInputItems); + ((UITextField) (this.getReplaceInputCombobox().getEditor().getEditorComponent())).setText(text); + } + } + + + private void setSearchButtonBounds(int x, int y, int templateWidth) { + BUTTON_GAP = templateWidth / 90; + SEARCH_BUTTON_WIDTH = templateWidth / 30; + + SEARCH_BUTTON_HEIGHT = 25; + SEARCH_BUTTON_Y = RESULT_LABEL_Y; + SEARCH_BUTTON_X = REPLACE_INPUT_COMBOBOX_X + REPLACE_INPUT_COMBOBOX_WIDTH - REPLACE_BUTTON_WIDTH * 2 - BUTTON_GAP; + searchButton.setBounds(SEARCH_BUTTON_X, SEARCH_BUTTON_Y, SEARCH_BUTTON_WIDTH, SEARCH_BUTTON_HEIGHT); + } + + private void setReplaceButtonBounds(int x, int y, int templateWidth) { + BUTTON_GAP = templateWidth / 90; + REPLACE_BUTTON_WIDTH = templateWidth / 30; + REPLACE_BUTTON_HEIGHT = 25; + REPLACE_BUTTON_Y = RESULT_LABEL_Y; + REPLACE_BUTTON_X = REPLACE_INPUT_COMBOBOX_X + REPLACE_INPUT_COMBOBOX_WIDTH - REPLACE_BUTTON_WIDTH; + replaceButton.setBounds(REPLACE_BUTTON_X, REPLACE_BUTTON_Y, REPLACE_BUTTON_WIDTH, REPLACE_BUTTON_HEIGHT); + } + + private void setReplaceInputComboboxBounds(int x, int y, int templateWidth) { + REPLACE_INPUT_COMBOBOX_X = x + templateWidth / 2 + templateWidth / 30; + REPLACE_INPUT_COMBOBOX_Y = y + 55; + REPLACE_INPUT_COMBOBOX_WIDTH = templateWidth / 3 + templateWidth / 30 * 2; + REPLACE_INPUT_COMBOBOX_HEIGHT = 25; + replaceInputCombobox.setBounds(REPLACE_INPUT_COMBOBOX_X, REPLACE_INPUT_COMBOBOX_Y, REPLACE_INPUT_COMBOBOX_WIDTH, REPLACE_INPUT_COMBOBOX_HEIGHT); + } + + private void setFindInputComboboxBounds(int x, int y, int templateWidth) { + FIND_INPUT_COMBOBOX_X = x + templateWidth / 60; + FIND_INPUT_COMBOBOX_Y = y + 55; + FIND_INPUT_COMBOBOX_WIDTH = templateWidth / 3 + templateWidth / 30 * 2; + FIND_INPUT_COMBOBOX_HEIGHT = 25; + findInputCombobox.setBounds(FIND_INPUT_COMBOBOX_X, FIND_INPUT_COMBOBOX_Y, FIND_INPUT_COMBOBOX_WIDTH, FIND_INPUT_COMBOBOX_HEIGHT); + } + + private void setUIRadioButtonBounds(int x, int y, int templateWidth) { + MATCH_X = x + templateWidth / 60; + MATCH_Y = y + 90; + MATCH_WIDTH = templateWidth; + MATCH_HEIGHT = 25; + matchRadioButton.setBounds(MATCH_X, MATCH_Y, MATCH_WIDTH, MATCH_HEIGHT); + } + + + private void setRangeComboboxBounds(int x, int y, int templateWidth) { + RANGE_COMBOBOX_X = x + templateWidth / 2 + templateWidth / 15 + templateWidth / 60; + RANGE_COMBOBOX_Y = y + 20; + RANGE_COMBOBOX_WIDTH = templateWidth / 3 + templateWidth / 60; + RANGE_COMBOBOX_HEIGHT = 25; + rangeCombobox.setBounds(RANGE_COMBOBOX_X, RANGE_COMBOBOX_Y, RANGE_COMBOBOX_WIDTH, RANGE_COMBOBOX_HEIGHT); + } + + + private void setFindComboboxBounds(int x, int y, int templateWidth) { + FIND_COMBOBOX_X = x + templateWidth / 30 * 2; + FIND_COMBOBOX_Y = y + 20; + FIND_COMBOBOX_WIDTH = templateWidth / 3 + templateWidth / 60; + FIND_COMBOBOX_HEIGHT = 25; + findCombobox.setBounds(FIND_COMBOBOX_X, FIND_COMBOBOX_Y, FIND_COMBOBOX_WIDTH, FIND_COMBOBOX_HEIGHT); + } + + + private void setResultLabelBounds(int x, int y, int templateWidth) { + RESULT_LABEL_X = FIND_LABEL_X; + RESULT_LABEL_Y = y + 125; + RESULT_LABEL_WIDTH = templateWidth; + RESULT_LABEL_HEIGHT = 25; + resultLabel.setBounds(RESULT_LABEL_X, RESULT_LABEL_Y, RESULT_LABEL_WIDTH, RESULT_LABEL_HEIGHT); + + } + + private void setRangeLabelBounds(int x, int y, int templateWidth) { + RANGE_LABEL_X = x + templateWidth / 2 + templateWidth / 30; + RANGE_LABEL_Y = y + 20; + RANGE_LABEL_WIDTH = FIND_LABEL_WIDTH; + RANGE_LABEL_HEIGHT = 25; + rangeLabel.setBounds(RANGE_LABEL_X, RANGE_LABEL_Y, RANGE_LABEL_WIDTH, RANGE_LABEL_HEIGHT); + + } + + private void setFindLabelBounds(int x, int y, int templateWidth) { + FIND_LABEL_X = x + templateWidth / 60; + FIND_LABEL_Y = y + 20; + FIND_LABEL_WIDTH = templateWidth / 20; + FIND_LABEL_HEIGHT = 25; + findLabel.setBounds(FIND_LABEL_X, FIND_LABEL_Y, FIND_LABEL_WIDTH, FIND_LABEL_HEIGHT); + } + + public JPanel getUpPanel() { + return upPanel; + } + + public void setUpPanel(JPanel upPanel) { + this.upPanel = upPanel; + } + + public UILabel getFindLabel() { + return findLabel; + } + + public void setFindLabel(UILabel findLabel) { + this.findLabel = findLabel; + } + + public UILabel getRangeLabel() { + return rangeLabel; + } + + public void setRangeLabel(UILabel rangeLabel) { + this.rangeLabel = rangeLabel; + } + + public UILabel getResultLabel() { + return resultLabel; + } + + public void setResultLabel(UILabel resultLabel) { + this.resultLabel = resultLabel; + } + + public UIComboBox getFindCombobox() { + return findCombobox; + } + + public void setFindCombobox(UIComboBox findCombobox) { + this.findCombobox = findCombobox; + } + + public UIComboBox getRangeCombobox() { + return rangeCombobox; + } + + public void setRangeCombobox(UIComboBox rangeCombobox) { + this.rangeCombobox = rangeCombobox; + } + + public JCheckBox getMatchRadioButton() { + return matchRadioButton; + } + + public void setMatchRadioButton(JCheckBox checkBox) { + this.matchRadioButton = checkBox; + } + + public UIComboBox getFindInputCombobox() { + return findInputCombobox; + } + + public void setFindInputCombobox(UIComboBox findInputCombobox) { + this.findInputCombobox = findInputCombobox; + } + + public UIComboBox getReplaceInputCombobox() { + return replaceInputCombobox; + } + + public void setReplaceInputCombobox(UIComboBox replaceInputCombobox) { + this.replaceInputCombobox = replaceInputCombobox; + } + + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceSouthPanel.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceSouthPanel.java new file mode 100644 index 0000000000..0d31bfc351 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceSouthPanel.java @@ -0,0 +1,44 @@ +package com.fr.design.actions.replace.ui; + +import javax.swing.RowSorter; +import javax.swing.table.TableRowSorter; +import java.awt.Color; +import java.awt.Dimension; + +/** + * 下面板 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-05 + */ +public class ITReplaceSouthPanel { + ITTableEditorPane tableEditorPane; + ITTableEditor itTableEditor; + + public ITReplaceSouthPanel() { + itTableEditor = new ITTableEditor(); + tableEditorPane = new ITTableEditorPane<>(itTableEditor); + RowSorter sorter = new TableRowSorter(itTableEditor); + tableEditorPane.getEditTable().setRowSorter(sorter); + tableEditorPane.getEditTable().setSelectionBackground(new Color(217, 235, 254)); + tableEditorPane.getEditTable().setRowHeight(tableEditorPane.getEditTable().getRowHeight() / 2 + tableEditorPane.getEditTable().getRowHeight()); + tableEditorPane.makeFace(tableEditorPane.getEditTable()); + } + + public ITTableEditorPane getTableEditorPane() { + return tableEditorPane; + } + + public void setTableEditorPane(ITTableEditorPane tableEditorPane) { + this.tableEditorPane = tableEditorPane; + } + + public ITTableEditor getItTableEditor() { + return itTableEditor; + } + + public void setItTableEditor(ITTableEditor itTableEditor) { + this.itTableEditor = itTableEditor; + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceWestPanel.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceWestPanel.java new file mode 100644 index 0000000000..8fc69f0439 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceWestPanel.java @@ -0,0 +1,45 @@ +package com.fr.design.actions.replace.ui; + +import com.fr.design.gui.ibutton.UIToggleButton; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.i18n.Toolkit; + +import javax.swing.BorderFactory; +import javax.swing.JPanel; +import java.awt.Color; +import java.awt.GridLayout; + +/** + * 左侧面板 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-05 + */ +public class ITReplaceWestPanel { + JPanel leftJpanel; + + public ITReplaceWestPanel() { + + leftJpanel = new JPanel(new GridLayout(15, 1, 0, 0)); + UIToggleButton contentButton = new UIToggleButton(Toolkit.i18nText("Fine-Design_Basic_Templates_Content")); + contentButton.setSelected(true); + contentButton.setBorderPainted(false); + UIToggleButton settingButton = new UIToggleButton("//"); + settingButton.setBorderPainted(false); + leftJpanel.add(contentButton); + leftJpanel.setBorder(BorderFactory.createMatteBorder(0, 0, 0, 1, new Color(218, 218, 221))); + leftJpanel.add(settingButton); + for (int i = 0; i < 13; i++) { + leftJpanel.add(new UILabel("")); + } + } + + public JPanel getLeftJpanel() { + return leftJpanel; + } + + public void setLeftJpanel(JPanel leftJpanel) { + this.leftJpanel = leftJpanel; + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java new file mode 100644 index 0000000000..45ebc651bc --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java @@ -0,0 +1,102 @@ +package com.fr.design.actions.replace.ui; + +import com.fr.base.TRL; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.file.HistoryTemplateListCache; +import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.gui.icheckbox.UICheckBox; +import com.fr.design.gui.icombobox.UIComboBox; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.mainframe.JTemplate; +import com.fr.general.GeneralUtils; +import com.fr.stable.StringUtils; +import org.omg.Messaging.SYNC_WITH_TRANSPORT; + +import javax.swing.*; +import javax.swing.table.TableCellEditor; +import javax.swing.table.TableCellRenderer; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.ArrayList; + +import static com.fr.design.actions.replace.ui.ITTableEditorPane.getEditTable; + +/** + * 放进表格中的定位按钮 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-23 + */ +public class ITTableButton extends AbstractCellEditor implements TableCellEditor, TableCellRenderer { + + private UIButton paraButton; + + public ITTableButton() { + paraButton = new UIButton("定位 "); + paraButton.setVisible(true); + paraButton.setBorderPainted(false); + paraButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + ITContent content = (ITContent) getEditTable().getValueAt(getEditTable().getEditingRow(), 7); + if (!StringUtils.isEmpty(GeneralUtils.objectToString(content.getTrlString()))) { + ITReplaceMainDialog.setITReplaceFlag(true); + HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().navigate(new TRL(GeneralUtils.objectToString(content.getTrlString()))); + } + ITReplaceMainDialog.setITReplaceFlag(false); + } + }); + + + } + + /** + * 获取Editor的Component(编辑状态下) + * + * @param table 表格 + * @param value 传递的值 + * @param isSelected 是否选中 + * @param row 行 + * @param column 列 + * @return paraButton + */ + @Override + public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { + return paraButton; + } + + + /** + * 获取Renderer的Component(正常状态下) + * + * @param table 表格 + * @param value 传递的值 + * @param isSelected 是否选中 + * @param row 行 + * @param column 列 + * @return paraButton + */ + @Override + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { + return paraButton; + } + + @Override + public Object getCellEditorValue() { + return null; + } + + public UIButton getParaButton() { + return paraButton; + } + + public void setParaButton(UIButton paraButton) { + this.paraButton = paraButton; + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditor.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditor.java new file mode 100644 index 0000000000..babbc81ce4 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditor.java @@ -0,0 +1,225 @@ +package com.fr.design.actions.replace.ui; + +import com.fr.design.actions.replace.info.Info; +import com.fr.design.actions.replace.info.ReplaceObject; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.gui.icheckbox.UICheckBox; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.itableeditorpane.UITableEditAction; +import com.fr.design.gui.itableeditorpane.UITableModelAdapter; +import com.fr.design.i18n.Toolkit; +import com.fr.form.ui.CheckBox; +import com.fr.function.INDEX; +import org.jetbrains.annotations.Nullable; + +import javax.swing.*; +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-22 + */ + +public class ITTableEditor extends UITableModelAdapter { + + public ITTableEditor() { + super(new String[]{ + " ", + Toolkit.i18nText("Fine-Design_Replace_Search_Content"), + Toolkit.i18nText("Fine-Design_Replace_Template_Name"), + Toolkit.i18nText("Fine-Design_Replace_Sheet_Name"), + Toolkit.i18nText("Fine-Design_Replace_Block_Name"), + Toolkit.i18nText("Fine-Design_Replace_Location"), + Toolkit.i18nText("Fine-Design_Replace_Location_Info"), + Toolkit.i18nText("Fine-Design_Replace_Operator"), + }); + + //this.createTable().getColumnModel().getColumn(4).setMaxWidth(60); + this.setColumnClass(new Class[]{ + Boolean.class, + UILabel.class, + UILabel.class, + UILabel.class, + UILabel.class, + UILabel.class, + UILabel.class, + ITTableButton.class, + + }); + this.setDefaultEditor(ITTableButton.class, new ITTableButton()); + this.setDefaultRenderer(ITTableButton.class, new ITTableButton()); + + this.createTable().getColumnModel().getColumn(7).setMaxWidth(50); + this.createTable().getColumnModel().getColumn(0).setMaxWidth(50); + + } + + /** + * 获取指定单元格的值 + * + * @param rowIndex + * @param columnIndex + * @return + */ + @Nullable + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + ITContent content = (ITContent) this.getList().get(rowIndex); + ChooseIndex chooseIndex = ChooseIndex.match(columnIndex); + if (chooseIndex != null) { + return chooseIndex.returnContentObject(content); + } + return null; + + } + + /** + * 设置单元格能否编辑 + * + * @param row 行 + * @param col 列 + * @return + */ + @Override + public boolean isCellEditable(int row, int col) { + return col == 7 || col == 0; + } + + /** + * 创建Action + * + * @return UITableEditAction + */ + @Override + public UITableEditAction[] createAction() { + return new UITableEditAction[0]; + } + + /** + * 添加数据 + * + * @param arrayList + */ + public void add(ArrayList arrayList) { + for (Info info : arrayList) { + addRow(info.getContent()); + fireTableDataChanged(); + } + } + + public enum ChooseIndex { + /** + * 第一列,返回选中情况 + */ + INDEX_0(0) { + @Override + public Object returnContentObject(ITContent content) { + return content.isSelected(); + } + }, + + /** + * 第二列,展示内容 + */ + INDEX_1(1) { + @Override + public Object returnContentObject(ITContent content) { + return content.getShowStr(); + } + }, + /** + * 第三列,展示模板名 + */ + INDEX_2(2) { + @Override + public Object returnContentObject(ITContent content) { + return " " + content.getTemplateName(); + } + }, + + /** + * 第四列,展示Sheet + */ + INDEX_3(3) { + @Override + public Object returnContentObject(ITContent content) { + return " " + content.getSheetName(); + } + }, + + /** + * 第五列,展示块名、组件名 + */ + INDEX_4(4) { + @Override + public Object returnContentObject(ITContent content) { + return " " + content.getBlockName(); + } + }, + + /** + * 第六列,展示位置 + */ + INDEX_5(5) { + @Override + public Object returnContentObject(ITContent content) { + return " " + content.getShowObject(); + } + }, + + /** + * 第七列,展示路径 + */ + INDEX_6(6) { + @Override + public Object returnContentObject(ITContent content) { + return " " + content.getOtherPos(); + } + }, + + /** + * 第八列,展示定位按钮 + */ + INDEX_7(7) { + @Override + public Object returnContentObject(ITContent content) { + return content; + } + }; + + int index; + + ChooseIndex(int index) { + this.index = index; + } + + /** + * 匹配列 + * + * @param index 列序号 + * @return 选中的列 + */ + @Nullable + public static ChooseIndex match(int index) { + ChooseIndex[] values = ChooseIndex.values(); + for (ChooseIndex value : values) { + if (value.index == index) { + return value; + } + } + return null; + } + + /** + * 返回对应列的对应内容 + * + * @param content 存储信息的数据结构 + * @return Object + */ + @Nullable + public Object returnContentObject(ITContent content) { + return null; + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java new file mode 100644 index 0000000000..90d5c3f2b5 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java @@ -0,0 +1,265 @@ +package com.fr.design.actions.replace.ui; + +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.border.UIRoundedBorder; +import com.fr.design.constants.UIConstants; +import com.fr.design.dialog.BasicPane; +import com.fr.design.gui.icheckbox.UICheckBox; +import com.fr.design.gui.icontainer.UIScrollPane; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.itableeditorpane.UITableEditAction; +import com.fr.design.gui.itableeditorpane.UITableModelAdapter; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.mainframe.share.ui.base.MouseClickListener; +import com.fr.stable.StringUtils; + +import javax.swing.*; +import javax.swing.table.*; +import java.awt.*; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.List; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-22 + */ +public class ITTableEditorPane extends BasicPane { + + public static JTable editTable; + private UITableModelAdapter tableModel; + private String leftLabelName; + private JPanel buttonPane; + + public ITTableEditorPane(UITableModelAdapter model) { + this.tableModel = model; + this.initComponent(model.createAction()); + //((DefaultCellEditor) editTable.getCellEditor()).setClickCountToStart(1); + editTable.setGridColor(new Color(218, 218, 221)); + + } + + + /** + * 初始化 + * + * @param action + */ + private void initComponent(UITableEditAction[] action) { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + JPanel pane = new JPanel(new BorderLayout(4, 4)); + this.add(pane, BorderLayout.CENTER); + UILabel l = new UILabel(leftLabelName); + editTable = tableModel.createTable(); + editTable.getTableHeader().setBackground(UIConstants.DEFAULT_BG_RULER); + editTable.addMouseListener(new MouseClickListener() { + @Override + public void mouseClicked(MouseEvent e) { + int row = ((JTable) e.getSource()).rowAtPoint(e.getPoint()); + int col = ((JTable) e.getSource()).columnAtPoint(e.getPoint()); + if (col == 0) { + ITContent content = (ITContent) editTable.getValueAt(row, 7); + if (content.isSelected()) { + content.setSelected(false); + editTable.setValueAt(content.isSelected(), row, col); + } else { + content.setSelected(true); + editTable.setValueAt(content.isSelected(), row, col); + } + } + + } + }); + UIScrollPane scrollPane = new UIScrollPane(editTable); + scrollPane.setBorder(new UIRoundedBorder(UIConstants.TITLED_BORDER_COLOR, 1, UIConstants.ARC)); + pane.add(scrollPane, BorderLayout.CENTER); + + + } + + public UITableModelAdapter getTableModel() { + return tableModel; + } + + @Override + protected String title4PopupWindow() { + return StringUtils.EMPTY; + } + + + /** + * 表头渲染 + */ + public static class ITHeaderRenderer implements TableCellRenderer { + JTableHeader tableHeader; + final JCheckBox selectBox; + + public ITHeaderRenderer(JTable table) { + this.tableHeader = table.getTableHeader(); + selectBox = new JCheckBox(); + selectBox.setSelected(true); + tableHeader.addMouseListener(new MouseAdapter() { + public void mouseClicked(MouseEvent e) { + if (e.getClickCount() > 0) { + //获得选中列 + int selectColumn = tableHeader.columnAtPoint(e.getPoint()); + if (selectColumn == 0) { + boolean value = !selectBox.isSelected(); + selectBox.setSelected(value); + selectAllOrNull(value); + tableHeader.repaint(); + table.repaint(); + } + } + } + }); + } + + + @Override + public Component getTableCellRendererComponent(JTable table, + Object value, + boolean isSelected, + boolean hasFocus, + int row, int column) { + tableHeader = table.getTableHeader(); + tableHeader.setReorderingAllowed(false); + String valueStr = (String) value; + JLabel label = new JLabel(valueStr); + label.setHorizontalAlignment(SwingConstants.LEFT); + selectBox.setHorizontalAlignment(SwingConstants.CENTER); + selectBox.setBorderPainted(true); + JComponent component = (column == 0) ? selectBox : label; + component.setForeground(tableHeader.getForeground()); + component.setBackground(tableHeader.getBackground()); + component.setFont(tableHeader.getFont()); + component.setBorder(UIManager.getBorder("TableHeader.cellBorder")); + return component; + } + } + + + /** + * 设置表头属性 + * + * @param table + */ + public static void makeFace(JTable table) { + Dimension size = table.getTableHeader().getPreferredSize(); + size.height = 26;//设置新的表头高度 + + table.getTableHeader().setBackground(new Color(232, 232, 233)); + + table.getTableHeader().setPreferredSize(size); + + table.getTableHeader().setDefaultRenderer(new ITHeaderRenderer(table)); + } + + /** + * 选中全部 + * + * @param value + */ + public static void selectAllOrNull(Boolean value) { + for (int i = 0; i < getEditTable().getRowCount(); i++) { + ((ITContent) (getEditTable().getValueAt(i, 7))).setSelected(value); + } + } + + /** + * 填充数据 + * + * @param objs + */ + public void populate(T[] objs) { + tableModel.clear(); + if (objs == null) { + return; + } + for (T obj : objs) { + tableModel.addRow(obj); + } + this.tableModel.fireTableDataChanged(); + if (objs.length > 0) { + this.editTable.getSelectionModel().setSelectionInterval(0, 0); + } + } + + /** + * 更新列表内的数据 + * + * @return + */ + public java.util.List update() { + tableModel.stopCellEditing(); + return tableModel.getList(); + } + + /** + * 更新数据来源 + * + * @param list + */ + public void update(List list) { + tableModel.stopCellEditing(); + tableModel.setList(list); + } + + /** + * 获取选中行号 + * + * @return + */ + public int getSelectedRow() { + return this.editTable.getSelectedRow(); + } + + /** + * 获取选中列号 + * + * @return + */ + public int getSelectedColumn() { + return this.editTable.getSelectedColumn(); + } + + /** + * 获取面板 + * + * @return + */ + public JPanel getbuttonPane() { + return buttonPane; + } + + /** + * 停止编辑 + */ + public void stopEditing() { + tableModel.stopCellEditing(); + } + + + /** + * 设置表头是否可以改变大小 + */ + public void setHeaderResizing(boolean resizingAllowed) { + editTable.getTableHeader().setResizingAllowed(resizingAllowed); + } + + /** + * 获取表格 + * + * @return + */ + public static JTable getEditTable() { + return editTable; + } + + public void setEditTable(JTable editTable) { + this.editTable = editTable; + } + + +} \ No newline at end of file diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java new file mode 100644 index 0000000000..1acfbce880 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java @@ -0,0 +1,256 @@ +package com.fr.design.actions.replace.utils; + +import com.fr.chart.chartattr.ChartCollection; +import com.fr.chart.chartglyph.ConditionAttr; +import com.fr.chart.chartglyph.ConditionCollection; +import com.fr.design.actions.replace.info.JSInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; +import com.fr.form.event.Listener; +import com.fr.form.ui.Widget; +import com.fr.general.GeneralUtils; +import com.fr.js.JavaScript; +import com.fr.js.JavaScriptImpl; +import com.fr.js.NameJavaScript; +import com.fr.js.NameJavaScriptGroup; +import com.fr.plugin.chart.attr.plot.VanChartPlot; +import com.fr.plugin.chart.base.AttrTooltip; +import com.fr.plugin.chart.base.VanChartHtmlLabel; +import com.fr.plugin.chart.vanchart.VanChart; +import com.fr.report.cell.Elem; +import javafx.util.Pair; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-11 + */ +public class SearchJSUtils { + + /** + * 从Listener中获取JS + */ + public static void searchJSFromListener(ArrayList jsInfos, ITContent content) { + JavaScript javaScript = ((Listener) (content.getReplaceObject())).getAction(); + if (javaScript instanceof JavaScriptImpl) { + ITContent newContent = content.copy(); + newContent.getContentObject().setJs(javaScript); + SearchJSUtils.addJSInfos(jsInfos, new JSInfo(newContent)); + } + } + + /** + * 获取HtmlLabel数组 + * + * @param collection + * @return + */ + public static ArrayList> getHtmlLabel(ChartCollection collection) { + ArrayList> arrayList = new ArrayList<>(); + addHtmlLabel2Array(arrayList, collection); + return arrayList; + } + + /** + * 获取图表-样式-标签、图表-样式-提示以及图表-特效-条件显示中的HtmlLabel并加入数组 + * + * @param arrayList + * @param collection + */ + private static void addHtmlLabel2Array(ArrayList> arrayList, ChartCollection collection) { + for (int i = 0; i < collection.getChartCount(); i++) { + VanChart chart = ((VanChart) collection.getChart(i)); + int size = chart.getPlot().getConditionCollection().getConditionAttrSize(); + ConditionCollection conditionCollection = chart.getPlot().getConditionCollection(); + addAttrLabelHtmlLabel(chart, arrayList); + for (int j = 0; j < size; j++) { + searchConditionCollection(arrayList, conditionCollection.getConditionAttr(j)); + } + } + } + + /** + * 将图表-样式-标签以及图表-样式-提示中的HtmlLabel加入数组 + * + * @param chart + * @param arrayList + */ + private static void addAttrLabelHtmlLabel(VanChart chart, ArrayList> arrayList) { + VanChartPlot plot = chart.getPlot(); + addAttrToolTipCondition2Array(plot, arrayList); + if (isAttrLabelExist(plot)) { + addAttrLabelDetail2Array(plot, arrayList); + addAttrSecondLabelDetail2Array(plot, arrayList); + + } + + } + + private static void addAttrToolTipCondition2Array(VanChartPlot plot, ArrayList> arrayList) { + if (plot.getAttrTooltipFromConditionCollection() != null && ((AttrTooltip) plot.getAttrTooltipFromConditionCollection()).isEnable() && plot.getAttrTooltipFromConditionCollection() instanceof AttrTooltip) { + arrayList.add(new Pair<>(((AttrTooltip) plot.getAttrTooltipFromConditionCollection()).getContent().getHtmlLabel(), + Toolkit.i18nText("Fine-Design_Chart_Tooltip") + "-" + Toolkit.i18nText("Fine-Design_Basic_Custom"))); + } + } + + private static void addAttrLabelDetail2Array(VanChartPlot plot, ArrayList> arrayList) { + if (plot.getAttrLabelFromConditionCollection() != null + && plot.getAttrLabelFromConditionCollection().getAttrLabelDetail() != null + && plot.getAttrLabelFromConditionCollection().getAttrLabelDetail().getContent().getHtmlLabel() != null) { + arrayList.add(new Pair<>(plot.getAttrLabelFromConditionCollection().getAttrLabelDetail().getContent().getHtmlLabel(), Toolkit.i18nText("Fine-Design_Chart_Value_Label"))); + } + } + + private static void addAttrSecondLabelDetail2Array(VanChartPlot plot, ArrayList> arrayList) { + if (plot.getAttrLabelFromConditionCollection() != null + && plot.getAttrLabelFromConditionCollection().getSecondLabelDetail() != null + && plot.getAttrLabelFromConditionCollection().getSecondLabelDetail().getContent().getHtmlLabel() != null) { + arrayList.add(new Pair<>(plot.getAttrLabelFromConditionCollection().getSecondLabelDetail().getContent().getHtmlLabel(), Toolkit.i18nText("Fine-Design_Chart_Category_Label"))); + } + } + + private static boolean isAttrLabelExist(VanChartPlot plot) { + return plot.getAttrLabelFromConditionCollection() != null && plot.getAttrLabelFromConditionCollection().isEnable(); + } + + /** + * 将图表-特效-条件显示中的HtmlLabel加入数组 + * + * @param arrayList + * @param conditionAttr + */ + private static void searchConditionCollection(ArrayList> arrayList, ConditionAttr conditionAttr) { + int conditionSize = conditionAttr.getDataSeriesConditionCount(); + for (int t = 0; t < conditionSize; t++) { + if (conditionAttr.getDataSeriesCondition(t) instanceof AttrTooltip) { + arrayList.add(new Pair<>(((AttrTooltip) conditionAttr.getDataSeriesCondition(t)).getContent().getHtmlLabel(), + Toolkit.i18nText("Fine-Design_Chart_Animation_Special") + "-" + Toolkit.i18nText("Fine-Design_Chart_Condition_Display"))); + } + + } + } + + /** + * 获取图表-特效-交互属性中的JS + * + * @param chartCollection + * @return + */ + public static ArrayList getNameJavaScript(ChartCollection chartCollection) { + ArrayList nameJavaScriptArrayList = new ArrayList<>(); + for (int i = 0; i < chartCollection.getChartCount(); i++) { + VanChart chart = ((VanChart) chartCollection.getChart(i)); + NameJavaScriptGroup nameJavaScriptGroup = chart.getPlot().getHotHyperLink(); + addNameJavaScript2Array(nameJavaScriptArrayList, nameJavaScriptGroup); + + } + return nameJavaScriptArrayList; + } + + private static void addNameJavaScript2Array(ArrayList nameJavaScriptArrayList, NameJavaScriptGroup nameJavaScriptGroup) { + if (isNameJavaScriptGroupExist(nameJavaScriptGroup)) { + for (int j = 0; j < nameJavaScriptGroup.size(); j++) { + if (nameJavaScriptGroup.getNameHyperlink(j).getJavaScript() instanceof JavaScriptImpl) { + nameJavaScriptArrayList.add(nameJavaScriptGroup.getNameHyperlink(j)); + } + } + } + } + + private static boolean isNameJavaScriptGroupExist(NameJavaScriptGroup nameJavaScriptGroup) { + return nameJavaScriptGroup != null; + } + + /** + * 添加JSInfo到列表 + * + * @param jsInfos + * @param jsInfo + */ + public static void addJSInfos(ArrayList jsInfos, JSInfo jsInfo) { + jsInfo.setContent(jsInfo.getContent().copy()); + jsInfos.add(jsInfo); + } + + + /** + * 从HtmlLabel去获取JS + * 从图表-样式-标签以及图表-特效-条件显示获取JSInfo + * + * @param content + * @param htmlLabels + * @param jsInfos + */ + public static void addJSInfosFromHtmlLabel(ITContent content, ArrayList> htmlLabels, ArrayList jsInfos) { + if (!htmlLabels.isEmpty()) { + for (Pair pair : htmlLabels) { + ITContent newContent = content.copy(); + newContent.getContentObject().setHtmlLabel((VanChartHtmlLabel) pair.getKey()); + newContent.addOtherPos(GeneralUtils.objectToString(pair.getValue())); + newContent.setReplaceObject(pair.getKey()); + SearchJSUtils.addJSInfos(jsInfos, new JSInfo(newContent)); + } + } + } + + /** + * 从NameJS类型里面拿JS + * + * @param content + * @param nameJavaScripts + * @param jsInfos + */ + public static void addJSInfosFromNameJS(ITContent content, ArrayList nameJavaScripts, ArrayList jsInfos) { + if (!nameJavaScripts.isEmpty()) { + for (NameJavaScript nameJS : nameJavaScripts) { + ITContent newContent = content.copy(); + newContent.getContentObject().setNameJavaScript(nameJS); + newContent.setReplaceObject(nameJS); + newContent.addOtherPos(nameJS.getName()); + SearchJSUtils.addJSInfos(jsInfos, new JSInfo(newContent)); + + } + } + } + + /** + * 从超级链接里面拿JS + * + * @param elem + * @param jsInfos + * @param content + */ + public static void addJSInfosFromHyperLink(Elem elem, ArrayList jsInfos, ITContent content) { + if (elem.getNameHyperlinkGroup() != null) { + for (int j = 0; j < elem.getNameHyperlinkGroup().size(); j++) { + if ((elem.getNameHyperlinkGroup().getNameHyperlink(j).getJavaScript()) instanceof JavaScriptImpl) { + ITContent newContent = content.copy(); + newContent.getContentObject().setNameJavaScript(elem.getNameHyperlinkGroup().getNameHyperlink(j)); + newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Report_Hyperlink")); + newContent.setReplaceObject(elem.getNameHyperlinkGroup().getNameHyperlink(j)); + newContent.addOtherPos(elem.getNameHyperlinkGroup().getNameHyperlink(j).getName()); + SearchJSUtils.addJSInfos(jsInfos, new JSInfo(newContent)); + } + } + } + } + + /** + * 从Action中拿JS + * + * @param jsInfos + * @param content + */ + public static void selectJSAction(ArrayList jsInfos, ITContent content) { + for (int i = 0; i < ((Widget) (content.getReplaceObject())).getListenerSize(); i++) { + Listener listener = ((Widget) (content.getReplaceObject())).getListener(i); + ITContent newContent = content.copy(); + newContent.getContentObject().setListener(listener); + newContent.addOtherPos(listener.getName()); + newContent.setReplaceObject(listener); + SearchJSUtils.searchJSFromListener(jsInfos, newContent); + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java new file mode 100644 index 0000000000..91d2473a65 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java @@ -0,0 +1,91 @@ +package com.fr.design.actions.replace.utils; + + +import com.fr.design.actions.replace.info.DealWithInfoValue; +import com.fr.design.actions.replace.info.Info; +import com.fr.design.actions.replace.info.JSInfo; +import com.fr.third.org.apache.poi.hssf.record.formula.functions.Int; +import javafx.util.Pair; +import org.gradle.internal.impldep.org.apache.commons.lang.StringUtils; + +import java.util.ArrayList; +import java.util.regex.Pattern; + +/** + * 用来处理展示内容的工具类(截取、高亮) + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-23 + */ +public class ShowValueUtils { + + /** + * 获取除内容外其他一次性展示所有的内容(名称、水印...) + * + * @param str + * @param searchStr + * @return + */ + public static String getCommonString(String str, String searchStr) { + if (StringUtils.isEmpty(searchStr)) { + return str; + } else { + return "
" + + replaceAll(str, searchStr, "" + searchStr + "") + + "
"; + } + } + + /** + * 可以替换括号的replaceAll + * + * @param str 原字符串 + * @param regex 要被替换的内容 + * @param replacement 要用来替换进去的内容 + * @return 替换后的字符串 + */ + public static String replaceAll(String str, String regex, String replacement) { + return str.replaceAll(Pattern.quote(regex), replacement); + } + + + /** + * 获取匹配的字符串的位置(开始位置,结束位置) + * + * @param str 原字符串 + * @param find 要查找的内容 + * @return 存储匹配的字符串的位置的列表 + */ + public static ArrayList> getStringStartAndEndIndex(String str, String find) { + ArrayList> pairs = new ArrayList<>(); + int frontLength = 0;//定义该变量用于记录匹配元素前面的长度 + StringBuffer result = new StringBuffer(); + if (StringUtils.isEmpty(find)) { + return pairs; + } + while (str.contains(find)) {//只要该str字符串中有匹配的元素,才进行以下操作 + int index = str.indexOf(find);//定义该变量用于记录匹配的元素在当前字符串的位置 + pairs.add(new Pair<>(index + frontLength, index + frontLength + find.length())); + frontLength += (index + find.length()); + str = str.substring(index + find.length());//将字符串中匹配元素的前面部分及其本身截取,留下后面的部分 + + } + return pairs; + } + + /** + * 更新高亮状态 + * + * @param info + * @param replaceStr + */ + public static void updateHighlight(Info info, String replaceStr) { + String s = info.getInfoShowStr(info); + s = ShowValueUtils.replaceAll(s, info.getContent().getLastSearchStr(), "" + replaceStr + ""); + info.getContent().setShowStr( + "
" + s + "
" + ); + + } +} From 31d7caf8bc0bb8e61af209cd09ff6660f6705f09 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Wed, 14 Sep 2022 14:55:31 +0800 Subject: [PATCH 08/93] =?UTF-8?q?REPORT-75998=20=E4=B8=BB=E8=A6=81?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/actions/replace/info/CellInfo.java | 357 ++++++++++++++++++ .../actions/replace/info/ComponentInfo.java | 72 ++++ .../actions/replace/info/FloatInfo.java | 114 ++++++ .../actions/replace/info/FormulaInfo.java | 71 ++++ .../design/actions/replace/info/JSInfo.java | 81 ++++ .../actions/replace/info/ReplaceObject.java | 217 +++++++++++ .../design/actions/replace/info/SQLInfo.java | 64 ++++ .../actions/replace/info/WidgetInfo.java | 103 +++++ .../replace/info/base/ContentObject.java | 232 ++++++++++++ .../actions/replace/info/base/ITContent.java | 244 ++++++++++++ 10 files changed, 1555 insertions(+) create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/info/CellInfo.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/info/ComponentInfo.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/info/FloatInfo.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/info/FormulaInfo.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/info/JSInfo.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/info/SQLInfo.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/info/WidgetInfo.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ContentObject.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/CellInfo.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/CellInfo.java new file mode 100644 index 0000000000..aff0a56fd3 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/CellInfo.java @@ -0,0 +1,357 @@ +package com.fr.design.actions.replace.info; + +import com.fr.base.Formula; +import com.fr.chart.chartattr.ChartCollection; +import com.fr.chart.chartattr.Title; +import com.fr.design.actions.replace.action.ShowValue; +import com.fr.design.actions.replace.action.content.widget.FrmWidgetType; +import com.fr.design.actions.replace.info.base.ITContent; + +import com.fr.design.actions.replace.utils.ShowValueUtils; +import com.fr.design.write.submit.DBManipulationPane; +import com.fr.form.ui.Widget; +import com.fr.general.GeneralUtils; +import com.fr.general.ImageWithSuffix; +import com.fr.general.data.TableDataColumn; +import com.fr.invoke.Reflect; +import com.fr.main.impl.LinkWorkBookTemplate; +import com.fr.report.cell.CellElement; +import com.fr.report.cell.FloatElement; +import com.fr.report.cell.cellattr.core.RichChar; +import com.fr.report.cell.cellattr.core.RichText; +import com.fr.report.cell.cellattr.core.SubReport; +import com.fr.report.cell.cellattr.core.group.DSColumn; +import com.fr.report.cell.painter.BiasTextPainter; +import com.fr.stable.AssistUtils; +import com.fr.stable.StringUtils; +import javafx.util.Pair; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; + +/** + * 返回:查找内容(匹配词高亮)、模板名称、所在sheet、分布组件、单元格位置、操作 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-11 + */ +public class CellInfo implements Info { + private ITContent content; + private int cellChartIndex = -1; + private boolean chartExist = false; + + public CellInfo(ITContent content) { + this.content = content; + } + + @Override + public ITContent getContent() { + return content; + } + + public void setContent(ITContent content) { + this.content = content; + } + + @Override + public String toString() { + return AssistUtils.toString(this); + } + + + /** + * 获取单元格的值(不对图表进行处理,如果是图表类型在展示阶段特殊处理) + * + * @param o 用于替换的replaceObject + * @return + */ + @Override + public HashMap getValue(Object... o) { + HashMap stringHashMap = new HashMap<>(); + CellElement cellElement = (((CellElement) (this.getContent().getReplaceObject()))); + if (cellElement.getValue() != null && !this.isChartExist()) { + CellValueType cellValueType = CellValueType.match(cellElement.getValue().getClass().getSimpleName()); + if (cellValueType != null) { + cellValueType.addValue2Map(cellElement.getValue(), stringHashMap); + } else { + stringHashMap.put("content", GeneralUtils.objectToString(cellElement.getValue())); + } + } + return stringHashMap; + } + + /** + * 对不同类型的值进行设置与替换 + * + * @param info 用于获取值和设置值 + * @param findStr 要被替换的字符串 + * @param replaceStr 用于替换的字符串 + * @param operatorArray 存储内容类替换所要操作的所有位置(Pair<起始位置,结束位置>) + */ + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + CellElement cellElement = (((CellElement) (this.getContent().getReplaceObject()))); + if (this.isChartExist() && this.getCellChartIndex() != -1) { + ChartCollection chartCollection = (ChartCollection) ((CellElement) this.getContent().getReplaceObject()).getValue(); + Title title = chartCollection.getChart(this.getCellChartIndex()).getTitle(); + if (title.getTextObject() instanceof Formula) { + Formula formula = (Formula) title.getTextObject(); + updateOldStr(formula.getContent(), findStr); + formula.setContent(ShowValueUtils.replaceAll(formula.getContent(), findStr, replaceStr)); + } else { + updateOldStr(GeneralUtils.objectToString(title.getTextObject()), findStr); + title.setTextObject(ShowValueUtils.replaceAll(GeneralUtils.objectToString(title.getTextObject()), findStr, replaceStr)); + } + } else { + CellValueType cellValueType = CellValueType.match(cellElement.getValue().getClass().getSimpleName()); + if (cellValueType != null) { + cellValueType.setValue(this, cellElement.getValue(), findStr, replaceStr); + } else { + updateOldStr(GeneralUtils.objectToString(cellElement.getValue()), findStr); + cellElement.setValue(ShowValueUtils.replaceAll(GeneralUtils.objectToString(cellElement.getValue()), findStr, replaceStr)); + } + + } + } + + public int getCellChartIndex() { + return cellChartIndex; + } + + public void setCellChartIndex(int cellChartIndex) { + this.cellChartIndex = cellChartIndex; + } + + public boolean isChartExist() { + return chartExist; + } + + public void setChartExist(boolean chartExist) { + this.chartExist = chartExist; + } + + /** + * 复制一份CellInfo,防止引用传递问题 + * + * @return + */ + public CellInfo copy() { + ITContent content = this.getContent().copy(); + CellInfo cellInfo = new CellInfo(content); + cellInfo.setCellChartIndex(this.getCellChartIndex()); + cellInfo.setChartExist(this.isChartExist()); + return cellInfo; + } + + /** + * 获取展示的字符串 + * + * @param info 信息 + * @return + */ + @Override + public String getInfoShowStr(Info info) { + return this.getContent().getOldShowStr(); + } + + @Override + public Boolean checkValid() { + CellElement cellElement = (((CellElement) (this.getContent().getReplaceObject()))); + String newValue; + if (this.isChartExist() && this.getCellChartIndex() != -1) { + newValue = getChartCheckValue(); + } else { + CellValueType cellValueType = CellValueType.match(cellElement.getValue().getClass().getSimpleName()); + if (cellValueType != null) { + newValue = cellValueType.getCheckValue(this); + } else { + newValue = GeneralUtils.objectToString(cellElement.getValue()); + } + } + return StringUtils.equals(newValue, this.getContent().getOldShowStr()); + } + + private String getChartCheckValue() { + ChartCollection chartCollection = (ChartCollection) ((CellElement) this.getContent().getReplaceObject()).getValue(); + Title title = chartCollection.getChart(this.getCellChartIndex()).getTitle(); + if (title.getTextObject() instanceof Formula) { + Formula formula = (Formula) title.getTextObject(); + return formula.getContent(); + } else { + return GeneralUtils.objectToString(title.getTextObject()); + } + } + + /** + * 单元格的值的类型 + */ + public enum CellValueType { + /** + * 数据列类型(目前只对数据集的名称进行修改,对于其中的列名暂不支持修改) + */ + DS_COLUMN("DSColumn") { + @Override + public void setValue(CellInfo cellInfo, Object o, String findStr, String replaceStr) { + cellInfo.updateOldStr(GeneralUtils.objectToString(((DSColumn) o).getDSName()), findStr); + ((DSColumn) o).setDSName(ShowValueUtils.replaceAll(((DSColumn) o).getDSName(), findStr, replaceStr)); + } + + @Override + public void addValue2Map(Object o, HashMap map) { + map.put("content", ((DSColumn) o).getDSName()); + } + + @Override + public String getCheckValue(Info info) { + CellElement o = (CellElement) info.getContent().getReplaceObject(); + return ((DSColumn) o.getValue()).getDSName(); + } + }, + + /** + * 富文本形式 + * 为了不破坏富文本的格式,暂时不对样式不同的文本进行连接替换,每个样式不同的文本都是一个独立的个体 + */ + RICH_TEXT("RichText") { + @Override + public void setValue(CellInfo cellInfo, Object o, String findStr, String replaceStr) { + cellInfo.updateOldStr(GeneralUtils.objectToString(((RichText) o).getContent()), findStr); + Iterator it = ((RichText) o).charIterator(); + while (it.hasNext()) { + RichChar richChar = it.next(); + richChar.setText(ShowValueUtils.replaceAll(richChar.getText(), findStr, replaceStr)); + } + } + + @Override + public void addValue2Map(Object o, HashMap map) { + map.put("content", ((RichText) o).getContent()); + } + + @Override + public String getCheckValue(Info info) { + CellElement o = (CellElement) info.getContent().getReplaceObject(); + return ((RichText) o.getValue()).getContent(); + } + }, + + /** + * 公式类型 + */ + FORMULA("Formula") { + @Override + public void setValue(CellInfo cellInfo, Object o, String findStr, String replaceStr) { + cellInfo.updateOldStr(GeneralUtils.objectToString(o), findStr); + ((Formula) o).setContent(ShowValueUtils.replaceAll(((Formula) o).getContent(), findStr, replaceStr)); + } + + @Override + public String getCheckValue(Info info) { + CellElement o = (CellElement) info.getContent().getReplaceObject(); + return ((Formula) o.getValue()).getContent(); + } + }, + + /** + * 子报表类型(目前支持修改路径) + */ + SUB_REPORT("SubReport") { + @Override + public void setValue(CellInfo cellInfo, Object o, String findStr, String replaceStr) { + LinkWorkBookTemplate workBookTemplate = (LinkWorkBookTemplate) ((SubReport) o).getPackee(); + cellInfo.updateOldStr(workBookTemplate.getTemplatePath(), findStr); + workBookTemplate.setTemplatePath(ShowValueUtils.replaceAll(workBookTemplate.getTemplatePath(), findStr, replaceStr)); + } + + @Override + public void addValue2Map(Object o, HashMap map) { + LinkWorkBookTemplate workBookTemplate = (LinkWorkBookTemplate) ((SubReport) o).getPackee(); + map.put("content", GeneralUtils.objectToString(workBookTemplate.getTemplatePath())); + } + + @Override + public String getCheckValue(Info info) { + CellElement o = (CellElement) info.getContent().getReplaceObject(); + LinkWorkBookTemplate workBookTemplate = (LinkWorkBookTemplate) ((SubReport) o.getValue()).getPackee(); + return GeneralUtils.objectToString(workBookTemplate.getTemplatePath()); + } + }, + + /** + * 斜线类型 + */ + BIAS_TEXT_PAINTER("BiasTextPainter") { + @Override + public void setValue(CellInfo cellInfo, Object o, String findStr, String replaceStr) { + cellInfo.updateOldStr(((BiasTextPainter) o).getText(), findStr); + ((BiasTextPainter) o).setText(ShowValueUtils.replaceAll(((BiasTextPainter) o).getText(), findStr, replaceStr)); + } + + @Override + public void addValue2Map(Object o, HashMap map) { + map.put("content", ((BiasTextPainter) o).getText()); + } + + @Override + public String getCheckValue(Info info) { + CellElement o = (CellElement) info.getContent().getReplaceObject(); + return ((BiasTextPainter) o.getValue()).getText(); + } + }; + + + String name; + + CellValueType(String name) { + this.name = name; + } + + + /** + * 匹配 + * + * @param name + * @return + */ + @Nullable + public static CellValueType match(String name) { + CellValueType[] values = CellValueType.values(); + for (CellValueType value : values) { + if (value.name.equals(name)) { + return value; + } + } + return null; + } + + /** + * 设置值 + * + * @param cellInfo + * @param o + * @param findStr + * @param replaceStr + */ + public void setValue(CellInfo cellInfo, Object o, String findStr, String replaceStr) { + } + + /** + * 将值加到Map中 + * + * @param o + * @param map + */ + public void addValue2Map(Object o, HashMap map) { + map.put("content", GeneralUtils.objectToString(o)); + } + + public String getCheckValue(Info info) { + return StringUtils.EMPTY; + } + } + + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/ComponentInfo.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ComponentInfo.java new file mode 100644 index 0000000000..3bcaf53237 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ComponentInfo.java @@ -0,0 +1,72 @@ +package com.fr.design.actions.replace.info; + +import com.fr.design.actions.replace.action.content.component.ComponentType; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.form.ui.Widget; +import com.fr.stable.StringUtils; +import javafx.util.Pair; + +import java.util.ArrayList; +import java.util.HashMap; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-29 + */ +public class ComponentInfo implements Info { + private ITContent content; + + public ComponentInfo(ITContent content) { + this.content = content; + } + + public void setContent(ITContent content) { + this.content = content; + } + + @Override + public HashMap getValue(Object... o) { + HashMap hashMap = new HashMap<>(); + if (this.content.getReplaceObject() != null && this.content.getReplaceObject() instanceof Widget) { + hashMap.put("content", ((Widget) this.content.getReplaceObject()).getWidgetName()); + } + return hashMap; + } + + @Override + public ITContent getContent() { + return content; + } + + + /** + * 这边设置值其实就是修改组件的名称,要注意的就是如果是layout的情况下有些需要对其外面封装的对象也进行名称的修改 + * + * @param info 用于获取值和设置值 + * @param findStr 要被替换的字符串 + * @param replaceStr 用于替换的字符串 + * @param operatorArray 存储内容类替换所要操作的所有位置(Pair<起始位置,结束位置>) + */ + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + ComponentType componentType = ComponentType.match(this.content.getReplaceObject().getClass().getSimpleName()); + if (componentType != null) { + componentType.setValue(info, findStr, replaceStr, operatorArray); + } + } + + /** + * 获取展示的信息 + * + * @param info 信息 + * @return + */ + @Override + public String getInfoShowStr(Info info) { + if (this.content.getReplaceObject() != null && this.content.getReplaceObject() instanceof Widget) { + return ((Widget) this.content.getReplaceObject()).getWidgetName(); + } + return StringUtils.EMPTY; + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/FloatInfo.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/FloatInfo.java new file mode 100644 index 0000000000..8010fea814 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/FloatInfo.java @@ -0,0 +1,114 @@ +package com.fr.design.actions.replace.info; + +import com.fr.base.Formula; +import com.fr.chart.chartattr.ChartCollection; +import com.fr.chart.chartattr.Title; +import com.fr.design.actions.replace.info.base.ITContent; + +import com.fr.design.actions.replace.utils.ShowValueUtils; +import com.fr.general.GeneralUtils; +import com.fr.report.cell.FloatElement; +import com.fr.stable.AssistUtils; +import com.fr.stable.StringUtils; +import javafx.util.Pair; + +import java.util.ArrayList; +import java.util.HashMap; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-15 + */ +public class FloatInfo implements Info { + private ITContent content; + private int floatChartIndex = -1; + private boolean chartExist = false; + + public FloatInfo(ITContent content) { + this.content = content; + } + + @Override + public ITContent getContent() { + return content; + } + + public void setContent(ITContent content) { + this.content = content; + } + + @Override + public String toString() { + return AssistUtils.toString(this); + } + + public int getFloatChartIndex() { + return floatChartIndex; + } + + public void setFloatChartIndex(int charIndex) { + this.floatChartIndex = charIndex; + } + + public boolean isChartExist() { + return chartExist; + } + + public void setChartExist(boolean chartExist) { + this.chartExist = chartExist; + } + + @Override + public HashMap getValue(Object... o) { + HashMap hashMap = new HashMap<>(); + FloatElement floatElement = (((FloatElement) (this.getContent().getReplaceObject()))); + if (!this.isChartExist()) { + hashMap.put("content", GeneralUtils.objectToString(floatElement.getValue())); + } + return hashMap; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + if (this.isChartExist() && this.getFloatChartIndex() != -1) { + ChartCollection chartCollection = (ChartCollection) ((FloatElement) this.getContent().getReplaceObject()).getValue(); + Title title = chartCollection.getChart(this.getFloatChartIndex()).getTitle(); + if (title.getTextObject() instanceof Formula) { + Formula formula = (Formula) title.getTextObject(); + updateOldStr(formula.getContent(), findStr); + formula.setContent(ShowValueUtils.replaceAll(formula.getContent(), findStr, replaceStr)); + } else { + updateOldStr(GeneralUtils.objectToString(title.getTextObject()), findStr); + title.setTextObject(ShowValueUtils.replaceAll(GeneralUtils.objectToString(title.getTextObject()), findStr, replaceStr)); + } + } else { + FloatElement floatElement = ((FloatElement) this.getContent().getReplaceObject()); + if (floatElement.getValue() instanceof Formula) { + Formula formula = (Formula) floatElement.getValue(); + updateOldStr(formula.getContent(), findStr); + formula.setContent(ShowValueUtils.replaceAll(formula.getContent(), findStr, replaceStr)); + } else { + updateOldStr(GeneralUtils.objectToString(floatElement.getValue()), findStr); + floatElement.setValue(ShowValueUtils.replaceAll(GeneralUtils.objectToString(floatElement.getValue()), findStr, replaceStr)); + } + } + } + + @Override + public String getInfoShowStr(Info info) { + return this.getContent().getOldShowStr(); + } + + /** + * 复制 + * @return + */ + public FloatInfo copy() { + ITContent content = this.getContent().copy(); + FloatInfo floatInfo = new FloatInfo(content); + floatInfo.setFloatChartIndex(this.getFloatChartIndex()); + floatInfo.setChartExist(this.isChartExist()); + return floatInfo; + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/FormulaInfo.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/FormulaInfo.java new file mode 100644 index 0000000000..f456896551 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/FormulaInfo.java @@ -0,0 +1,71 @@ +package com.fr.design.actions.replace.info; + + +import com.fr.data.impl.FormulaDictionary; +import com.fr.design.actions.replace.action.content.formula.FormulaReplaceObject; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.stable.StringUtils; +import javafx.util.Pair; + +import java.util.ArrayList; +import java.util.HashMap; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-17 + */ +public class FormulaInfo implements Info{ + private ITContent content; + + public FormulaInfo(ITContent content) { + this.content = content; + } + @Override + public ITContent getContent() { + return content; + } + + public void setContent(ITContent content) { + this.content = content; + } + + @Override + public HashMap getValue(Object... o){ + HashMap map = new HashMap<>(); + //这边比较特殊,存的都是FormulaDictionary ,特殊判断一下 + if (this.content.getOtherPos().contains("数据字典-公式类型-显示值")){ + map.put("content",((FormulaDictionary)this.getContent().getReplaceObject()).getExcuteFormula()); + } else if (this.content.getOtherPos().contains("数据字典-公式类型-实际值")){ + map.put("content",((FormulaDictionary)this.getContent().getReplaceObject()).getProduceFormula()); + } else { + map = getCommonValue(); + } + return map; + } + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + FormulaReplaceObject formulaReplaceObject = FormulaReplaceObject.match(this.content.getReplaceObject().getClass().getSimpleName()); + if (formulaReplaceObject != null){ + formulaReplaceObject.setValue(this , findStr , replaceStr, operatorArray); + } + } + + @Override + public String getInfoShowStr(Info info) { + FormulaReplaceObject formulaReplaceObject = FormulaReplaceObject.match(this.content.getReplaceObject().getClass().getSimpleName()); + if (formulaReplaceObject != null){ + return formulaReplaceObject.getInfoShowStr(info); + } + return StringUtils.EMPTY; + } + + private HashMap getCommonValue(){ + FormulaReplaceObject o = FormulaReplaceObject.match(this.content.getReplaceObject().getClass().getSimpleName()); + if(o != null){ + return o.getValue(this.content.getReplaceObject()); + } + return new HashMap<>(); + } + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/JSInfo.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/JSInfo.java new file mode 100644 index 0000000000..23e6a9b3b8 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/JSInfo.java @@ -0,0 +1,81 @@ +package com.fr.design.actions.replace.info; + + +import com.fr.design.actions.replace.info.base.ITContent; + +import com.fr.stable.AssistUtils; +import com.fr.stable.StringUtils; +import javafx.util.Pair; + +import java.util.ArrayList; +import java.util.HashMap; + + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-11 + */ +public class JSInfo implements Info { + private ITContent content; + private boolean contentFlag = true; + + public JSInfo(ITContent content) { + this.content = content; + } + + @Override + public ITContent getContent() { + return content; + } + + public void setContent(ITContent content) { + this.content = content; + } + + @Override + public HashMap getValue(Object... object) { + ReplaceObject o = ReplaceObject.match(this.content.getReplaceObject().getClass().getSimpleName()); + if (o != null) { + return o.getValue(this.content.getReplaceObject()); + } + return new HashMap<>(); + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + ReplaceObject o = ReplaceObject.match(this.content.getReplaceObject().getClass().getSimpleName()); + if (o != null) { + o.setValue(this, findStr, replaceStr, this.getContent().getOperatorArray()); + } + + } + + @Override + public String getInfoShowStr(Info info) { + return info.getContent().getOldShowStr(); + } + + + @Override + public String toString() { + return AssistUtils.toString(this); + } + + public JSInfo copy() { + ITContent content = this.getContent().copy(); + JSInfo jsInfo = new JSInfo(content); + jsInfo.setContentFlag(this.isContent()); + return jsInfo; + } + + public boolean isContent() { + return contentFlag; + } + + public void setContentFlag(boolean contentFlag) { + this.contentFlag = contentFlag; + } + + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java new file mode 100644 index 0000000000..9918abec47 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java @@ -0,0 +1,217 @@ +package com.fr.design.actions.replace.info; + +import com.fr.data.impl.DBTableData; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.actions.replace.utils.ShowValueUtils; +import com.fr.form.event.Listener; +import com.fr.js.JavaScriptImpl; +import com.fr.js.NameJavaScript; +import com.fr.plugin.chart.base.VanChartHtmlLabel; +import com.fr.stable.StringUtils; +import javafx.util.Pair; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.HashMap; + +/** + * 处理所存储的不同类型的对象(除了Formula外的其他对象) + * 此处对象是ITContent中用于直接查找内容与替换内容的操作对象 + * Formula要处理的对象太多而且会和其他类型有重叠,所以单独开一个类放 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-23 + */ +public enum ReplaceObject implements DealWithInfoValue { + /** + * NameJavaScript——JS + */ + NAME_JAVA_SCRIPT("NameJavaScript") { + @Override + public HashMap getValue(Object... o) { + HashMap map = new HashMap<>(); + if (!StringUtils.isEmpty(((NameJavaScript) o[0]).getName())) { + map.put("name", ((NameJavaScript) o[0]).getName()); + } + if (!StringUtils.isEmpty(((JavaScriptImpl) (((NameJavaScript) o[0]).getJavaScript())).getContent())) { + map.put("content", ((JavaScriptImpl) (((NameJavaScript) o[0]).getJavaScript())).getContent()); + } + return map; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + if (((JSInfo) info).isContent()) { + JavaScriptImpl javaScript = (JavaScriptImpl) ((NameJavaScript) (info.getContent().getReplaceObject())).getJavaScript(); + info.updateOldStr(javaScript.getContent(), findStr); + javaScript.setContent(ShowValueUtils.replaceAll(javaScript.getContent(), findStr, replaceStr)); + } else { + NameJavaScript javaScript = ((NameJavaScript) (info.getContent().getReplaceObject())); + info.updateOldStr(javaScript.getName(), findStr); + javaScript.setName(javaScript.getName().replaceAll(findStr, replaceStr)); + } + } + + @Override + public String getInfoShowStr(Info info) { + if (((JSInfo) info).isContent()) { + JavaScriptImpl javaScript = (JavaScriptImpl) ((NameJavaScript) (info.getContent().getReplaceObject())).getJavaScript(); + return javaScript.getContent(); + } else { + NameJavaScript javaScript = ((NameJavaScript) (info.getContent().getReplaceObject())); + return javaScript.getName(); + } + } + }, + /** + * Listener——JS + */ + LISTENER("Listener") { + @Override + public HashMap getValue(Object... o) { + HashMap map = new HashMap<>(); + if (!StringUtils.isEmpty(((Listener) o[0]).getName())) { + map.put("name", ((Listener) o[0]).getName()); + } + if (!StringUtils.isEmpty(((JavaScriptImpl) (((Listener) o[0]).getAction())).getContent())) { + map.put("content", ((JavaScriptImpl) (((Listener) o[0]).getAction())).getContent()); + } + return map; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + if (((JSInfo) info).isContent()) { + if (operatorArray.size() > 0) { + JavaScriptImpl javaScript = (JavaScriptImpl) ((Listener) (info.getContent().getReplaceObject())).getAction(); + info.updateOldStr(javaScript.getContent(), findStr); + javaScript.setContent(ShowValueUtils.replaceAll(javaScript.getContent(), findStr, replaceStr)); + + } + } else { + Listener listener = ((Listener) ((info.getContent().getReplaceObject()))); + listener.setName(listener.getName().replaceAll(findStr, replaceStr)); + } + } + + @Override + public String getInfoShowStr(Info info) { + if (((JSInfo) info).isContent()) { + JavaScriptImpl javaScript = (JavaScriptImpl) ((Listener) (info.getContent().getReplaceObject())).getAction(); + return javaScript.getContent(); + } else { + Listener listener = ((Listener) (info.getContent().getReplaceObject())); + return listener.getName(); + } + } + }, + /** + * VanChartHtmlLabel——JS + */ + VAN_CHART_HTML_LABEL("VanChartHtmlLabel") { + @Override + public HashMap getValue(Object... o) { + HashMap map = new HashMap<>(); + if (!StringUtils.isEmpty(((VanChartHtmlLabel) o[0]).getCustomText())) { + map.put("content", ((VanChartHtmlLabel) o[0]).getCustomText()); + } + return map; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + if (((JSInfo) info).isContent()) { + if (operatorArray.size() > 0) { + VanChartHtmlLabel htmlLabel = ((VanChartHtmlLabel) (info.getContent().getReplaceObject())); + StringBuilder stringBuilder = new StringBuilder(htmlLabel.getCustomText()); + info.updateOldStr(htmlLabel.getCustomText(), findStr); + htmlLabel.setCustomText(ShowValueUtils.replaceAll(htmlLabel.getCustomText(), findStr, replaceStr)); + } + } + } + + @Override + public String getInfoShowStr(Info info) { + VanChartHtmlLabel htmlLabel = ((VanChartHtmlLabel) (info.getContent().getReplaceObject())); + return htmlLabel.getCustomText(); + } + }, + /** + * JavaScriptImpl——JS + */ + JAVA_SCRIPT_IMPL("JavaScriptImpl") { + @Override + public HashMap getValue(Object... o) { + HashMap map = new HashMap<>(); + if (!StringUtils.isEmpty(((JavaScriptImpl) o[0]).getContent())) { + map.put("content", ((JavaScriptImpl) o[0]).getContent()); + } + return map; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + JavaScriptImpl javaScript = (JavaScriptImpl) (info.getContent().getReplaceObject()); + info.updateOldStr(javaScript.getContent(), findStr); + javaScript.setContent(ShowValueUtils.replaceAll(javaScript.getContent(), findStr, replaceStr)); + } + + @Override + public String getInfoShowStr(Info info) { + JavaScriptImpl javaScript = (JavaScriptImpl) (info.getContent().getReplaceObject()); + return javaScript.getContent(); + } + }, + /** + * DBTableData——SQL + */ + DB_TABLE_DATA("DBTableData") { + @Override + public HashMap getValue(Object... o) { + HashMap map = new HashMap<>(); + if (!StringUtils.isEmpty(((DBTableData) o[0]).getQuery())) { + map.put("content", ((DBTableData) o[0]).getQuery()); + } + return map; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + DBTableData dbTableData = (DBTableData) info.getContent().getReplaceObject(); + info.updateOldStr(dbTableData.getQuery(), findStr); + dbTableData.setQuery(ShowValueUtils.replaceAll(dbTableData.getQuery(), findStr, replaceStr)); + } + + @Override + public String getInfoShowStr(Info info) { + return info.getInfoShowStr(info); + } + }; + + + String name; + + ReplaceObject(String name) { + this.name = name; + } + + /** + * 匹配 + * + * @param name + * @return + */ + @Nullable + public static ReplaceObject match(String name) { + ReplaceObject[] values = ReplaceObject.values(); + for (ReplaceObject value : values) { + if (value.name.equals(name)) { + return value; + } + } + return null; + } + + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/SQLInfo.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/SQLInfo.java new file mode 100644 index 0000000000..cf40e52ca1 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/SQLInfo.java @@ -0,0 +1,64 @@ +package com.fr.design.actions.replace.info; + +import com.fr.design.actions.replace.info.base.ITContent; + +import com.fr.stable.AssistUtils; +import javafx.util.Pair; + +import java.util.ArrayList; +import java.util.HashMap; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-16 + */ +public class SQLInfo implements Info { + private ITContent content; + + public SQLInfo(ITContent content) { + this.content = content; + } + + @Override + public ITContent getContent() { + return content; + } + + public void setContent(ITContent content) { + this.content = content; + } + + @Override + public HashMap getValue(Object... objects) { + ReplaceObject o = ReplaceObject.match(this.content.getReplaceObject().getClass().getSimpleName()); + if (o != null) { + return o.getValue(this.content.getReplaceObject()); + } + return new HashMap<>(); + } + + public SQLInfo copy() { + ITContent content = this.getContent().copy(); + return new SQLInfo(content); + } + + @Override + public String toString() { + return AssistUtils.toString(this); + } + + + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + ReplaceObject o = ReplaceObject.match(this.content.getReplaceObject().getClass().getSimpleName()); + if (o != null) { + o.setValue(this, findStr, replaceStr, operatorArray); + } + } + + @Override + public String getInfoShowStr(Info info) { + return this.getContent().getOldShowStr(); + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/WidgetInfo.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/WidgetInfo.java new file mode 100644 index 0000000000..3c313cc467 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/WidgetInfo.java @@ -0,0 +1,103 @@ +package com.fr.design.actions.replace.info; + +import com.fr.design.actions.replace.action.content.widget.FrmWidgetType; +import com.fr.design.actions.replace.info.base.ITContent; + +import com.fr.design.actions.replace.utils.ShowValueUtils; +import com.fr.form.ui.WaterMark; +import com.fr.form.ui.Widget; +import com.fr.form.ui.container.WScaleLayout; +import com.fr.form.ui.widget.CRBoundsWidget; +import com.fr.stable.AssistUtils; +import javafx.util.Pair; + +import java.util.ArrayList; +import java.util.HashMap; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-16 + */ +public class WidgetInfo implements Info, DealWithInfoValue { + private ITContent content; + private boolean waterMarkFlag = true; + + public WidgetInfo(ITContent content) { + this.content = content; + } + + @Override + public ITContent getContent() { + return content; + } + + public void setContent(ITContent content) { + this.content = content; + } + + @Override + public HashMap getValue(Object... o) { + HashMap map = new HashMap<>(); + Widget widget = (Widget) this.content.getReplaceObject(); + if (widget instanceof WScaleLayout) { + widget = ((CRBoundsWidget) ((WScaleLayout) widget).getWidget(0)).getWidget(); + } + if (widget.getWidgetName() != null) { + map.put("name", widget.getWidgetName()); + } + if (widget instanceof WaterMark && (((WaterMark) widget).getWaterMark() != null)) { + map.put("waterMark", ((WaterMark) widget).getWaterMark()); + } + return map; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + Widget widget = ((Widget) (this.content.getReplaceObject())); + if (this.getContent().isFrm()) { + FrmWidgetType widgetType = FrmWidgetType.match(widget.getClass().getSimpleName()); + if (widgetType != null) { + widgetType.setValue(info, findStr, replaceStr, this.getContent().getOperatorArray()); + } + } else { + if (isWaterMark()) { + updateOldStr(((WaterMark) widget).getWaterMark(), findStr); + ((WaterMark) widget).setWaterMark(ShowValueUtils.replaceAll(((WaterMark) widget).getWaterMark(), findStr, replaceStr)); + } else { + updateOldStr(widget.getWidgetName(), findStr); + widget.setWidgetName(ShowValueUtils.replaceAll(widget.getWidgetName(), findStr, replaceStr)); + } + } + + } + + @Override + public String getInfoShowStr(Info info) { + return this.getContent().getOldShowStr(); + } + + public WidgetInfo copy(WidgetInfo widgetInfo) { + ITContent content = widgetInfo.getContent().copy(); + return new WidgetInfo(content); + } + + public boolean isWaterMark() { + return waterMarkFlag; + } + + public void setWaterMarkFlag(boolean waterMarkFlag) { + this.waterMarkFlag = waterMarkFlag; + } + + public boolean isReplaceObjectExist() { + return content != null && content.getReplaceObject() != null; + } + + @Override + public String toString() { + return AssistUtils.toString(this); + } + + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ContentObject.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ContentObject.java new file mode 100644 index 0000000000..74adc8e013 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ContentObject.java @@ -0,0 +1,232 @@ +package com.fr.design.actions.replace.info.base; + +import com.fr.base.Formula; +import com.fr.chartx.constant.ChartKeyCst; +import com.fr.data.impl.DBTableData; +import com.fr.form.event.Listener; +import com.fr.form.ui.Widget; +import com.fr.general.data.Condition; +import com.fr.js.JavaScript; +import com.fr.js.NameJavaScript; +import com.fr.plugin.chart.base.VanChartHtmlLabel; +import com.fr.report.cell.CellElement; +import com.fr.report.cell.FloatElement; +import com.fr.report.core.sort.sortexpression.FormulaSortExpression; +import com.fr.report.core.sort.sortexpression.SortExpression; +import com.fr.stable.AssistUtils; +import com.teamdev.jxbrowser.deps.org.checkerframework.checker.units.qual.C; + +/** + * 存储用于定位内容的对象(便于定位) + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-16 + */ +public class ContentObject { + //todo 可能没用,考虑废除掉 + private CellElement cell; + private JavaScript js; + private NameJavaScript nameJavaScript; + private VanChartHtmlLabel htmlLabel; + private Widget widget; + private Listener listener; + private FloatElement floatElement; + private Formula formula; + private Condition condition; + private FormulaSortExpression sortExpression; + private DBTableData dbTableData; + + public ContentObject() { + this.cell = null; + this.js = null; + this.nameJavaScript = null; + this.htmlLabel = null; + this.widget = null; + this.listener = null; + this.floatElement = null; + this.formula = null; + this.condition = null; + this.sortExpression = null; + this.dbTableData = null; + } + + public ContentObject newContentObject(ContentObject contentObject) { + ContentObject newContent = new ContentObject(); + newContent.copyCellElement(contentObject); + newContent.copyFloatElement(contentObject); + newContent.copyHtmlLabel(contentObject); + newContent.copyJavaScript(contentObject); + newContent.copyListener(contentObject); + newContent.copyNameJavaScript(contentObject); + newContent.copyWidget(contentObject); + newContent.copyFormula(contentObject); + newContent.copyCondition(contentObject); + newContent.copySortExpression(contentObject); + newContent.copyDBTableData(contentObject); + return newContent; + } + + public void copyCellElement(ContentObject contentObject) { + if (contentObject.getCell() != null) { + this.setCell(contentObject.getCell()); + } + } + + public void copyJavaScript(ContentObject contentObject) { + if (contentObject.getJs() != null) { + this.setJs(contentObject.getJs()); + } + } + + public void copyNameJavaScript(ContentObject contentObject) { + if (contentObject.getNameJavaScript() != null) { + this.setNameJavaScript(contentObject.getNameJavaScript()); + } + } + + public void copyHtmlLabel(ContentObject contentObject) { + if (contentObject.getHtmlLabel() != null) { + this.setHtmlLabel(contentObject.getHtmlLabel()); + } + } + + public void copyListener(ContentObject contentObject) { + if (contentObject.getListener() != null) { + this.setListener(contentObject.getListener()); + } + } + + public void copyFloatElement(ContentObject contentObject) { + if (contentObject.getFloatElement() != null) { + this.setFloatElement(contentObject.getFloatElement()); + } + } + + public void copyWidget(ContentObject contentObject) { + if (contentObject.getWidget() != null) { + this.setWidget(contentObject.getWidget()); + } + } + + public void copyFormula(ContentObject contentObject) { + if (contentObject.getFormula() != null) { + this.setFormula(contentObject.getFormula()); + } + } + + public void copyCondition(ContentObject contentObject) { + if (contentObject.getCondition() != null) { + this.setCondition(contentObject.getCondition()); + } + } + + public void copySortExpression(ContentObject contentObject) { + if (contentObject.getSortExpression() != null) { + this.setSortExpression(contentObject.getSortExpression()); + } + } + + public void copyDBTableData(ContentObject contentObject) { + if (contentObject.getDbTableData() != null) { + this.setDbTableData(contentObject.getDbTableData()); + } + } + + public DBTableData getDbTableData() { + return dbTableData; + } + + public void setDbTableData(DBTableData dbTableData) { + this.dbTableData = dbTableData; + } + + public FormulaSortExpression getSortExpression() { + return sortExpression; + } + + public void setSortExpression(FormulaSortExpression sortExpression) { + this.sortExpression = sortExpression; + } + + public Condition getCondition() { + return condition; + } + + public void setCondition(Condition condition) { + this.condition = condition; + } + + public Formula getFormula() { + return formula; + } + + public void setFormula(Formula formula) { + this.formula = formula; + } + + public CellElement getCell() { + return cell; + } + + public void setCell(CellElement cell) { + this.cell = cell; + } + + public JavaScript getJs() { + return js; + } + + public void setJs(JavaScript js) { + this.js = js; + } + + public NameJavaScript getNameJavaScript() { + return nameJavaScript; + } + + public void setNameJavaScript(NameJavaScript nameJavaScript) { + this.nameJavaScript = nameJavaScript; + } + + public VanChartHtmlLabel getHtmlLabel() { + return htmlLabel; + } + + public void setHtmlLabel(VanChartHtmlLabel htmlLabel) { + this.htmlLabel = htmlLabel; + } + + public Widget getWidget() { + return widget; + } + + public void setWidget(Widget widget) { + this.widget = widget; + } + + public Listener getListener() { + return listener; + } + + public void setListener(Listener listener) { + this.listener = listener; + } + + public FloatElement getFloatElement() { + return floatElement; + } + + public void setFloatElement(FloatElement floatElement) { + this.floatElement = floatElement; + } + + @Override + public String toString() { + return AssistUtils.toString(this); + } + + public boolean isNameJSExist() { + return this.nameJavaScript != null; + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java new file mode 100644 index 0000000000..79b7c91994 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java @@ -0,0 +1,244 @@ +package com.fr.design.actions.replace.info.base; + +import com.fr.design.actions.replace.info.DealWithInfoValue; +import com.fr.stable.AssistUtils; +import com.fr.stable.StringUtils; +import javafx.util.Pair; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +/** + * 主要的存储信息的数据结构 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-11 + */ +public class ITContent implements Cloneable { + private String sheetID; + private String sheetName; + private String templateName; + private String blockName; + //一些不好定位的位置先用字符串展示出来就好 + private String otherPos; + //用于后续跳转相关的对象信息 + private ContentObject contentObject; + //用于操作替换相关的对象(通过此属性获取所需的对象) + private Object replaceObject; + //用于展示给用户的位置 + private Object showObject; + //用于展示内容 + private String showStr; + //存储展示前的旧值 + private String oldShowStr; + //存储上一次搜索的string + private String lastSearchStr; + //由于我们TRL是一次性的,这边存字符串到时候new一个即可 + private String trlString; + //为操作字符串提供操作位置的定位信息,Pair中存储的是开始操作的索引以及结束操作的索引 + private ArrayList> operatorArray; + //是否是决策报表——用于判断一些决策报表的特殊操作(比如决策报表控件在设置值时要多设置几个地方,一层套一层) + private boolean frmFlag = false; + //是否被选中 + private boolean selected = true; + + + public ITContent() { + this.sheetID = StringUtils.EMPTY; + this.sheetName = StringUtils.EMPTY; + this.blockName = StringUtils.EMPTY; + this.templateName = StringUtils.EMPTY; + this.otherPos = StringUtils.EMPTY; + this.replaceObject = StringUtils.EMPTY; + this.contentObject = new ContentObject(); + this.showObject = StringUtils.EMPTY; + this.showStr = StringUtils.EMPTY; + this.oldShowStr = StringUtils.EMPTY; + this.lastSearchStr = StringUtils.EMPTY; + this.trlString = StringUtils.EMPTY; + this.operatorArray = new ArrayList<>(); + } + + + /** + * 复制 + * @return + */ + public ITContent copy() { + ITContent result = new ITContent(); + result.setSheetID(this.getSheetID()); + result.setSheetName(this.getSheetName()); + result.setTemplateName(this.getTemplateName()); + result.setBlockName(this.getBlockName()); + result.addOtherPos(this.getOtherPos()); + result.setReplaceObject(this.getReplaceObject()); + result.setContentObject(this.getContentObject().newContentObject(getContentObject())); + result.setShowObject(this.getShowObject()); + result.setTrlString(this.getTrlString()); + result.setShowStr(this.getShowStr()); + result.setOldShowStr(this.getOldShowStr()); + result.setLastSearchStr(this.getLastSearchStr()); + result.setOperatorArray(this.getOperatorArray()); + result.setFrmFlag(this.isFrm()); + return result; + } + + public ContentObject getContentObject() { + return contentObject; + } + + public void setContentObject(ContentObject contentObject) { + this.contentObject = contentObject; + } + + public Object getReplaceObject() { + return replaceObject; + } + + public void setReplaceObject(Object replaceObject) { + this.replaceObject = replaceObject; + } + + public String getSheetID() { + return sheetID; + } + + public void setSheetID(String sheetID) { + this.sheetID = sheetID; + } + + public String getSheetName() { + return sheetName; + } + + public void setSheetName(String sheetName) { + this.sheetName = sheetName; + } + + public String getTemplateName() { + return templateName; + } + + public void setTemplateName(String templateName) { + this.templateName = templateName; + } + + public String getBlockName() { + return blockName; + } + + public void setBlockName(String blockName) { + this.blockName = blockName; + } + + public String getOtherPos() { + return otherPos; + } + + public Object getShowObject() { + return showObject; + } + + public String getShowStr() { + return showStr; + } + + public void setShowStr(String showStr) { + this.showStr = showStr; + } + + public String getTrlString() { + return trlString; + } + + public void setTrlString(String trlString) { + this.trlString = trlString; + } + + public void setShowObject(Object showObject) { + this.showObject = showObject; + } + + /** + * 添加位置信息 + * @param otherPoses + */ + public void addOtherPos(String... otherPoses) { + for (String otherPos : otherPoses) { + if (this.otherPos != null && !StringUtils.isEmpty(this.otherPos)) { + this.otherPos = this.otherPos + "-" + otherPos; + } else { + this.otherPos = otherPos; + } + } + } + + /** + * 添加跳转路径 + * @param trlString + */ + public void addTRL(String trlString) { + if (!StringUtils.isEmpty(trlString)) { + if (this.trlString != null && !StringUtils.isEmpty(this.trlString)) { + this.trlString = this.trlString + ":" + trlString; + } else { + this.trlString = trlString; + } + } + + } + + public ArrayList> getOperatorArray() { + return operatorArray; + } + + public void setOperatorArray(ArrayList> operatorArray) { + this.operatorArray = operatorArray; + } + + public void setOtherPos(String otherPos) { + this.otherPos = otherPos; + } + + public boolean isSelected() { + return selected; + } + + public void setSelected(boolean selected) { + this.selected = selected; + } + + public boolean isFrm() { + return frmFlag; + } + + public void setFrmFlag(boolean frmFlag) { + this.frmFlag = frmFlag; + } + + public String getOldShowStr() { + return oldShowStr; + } + + public void setOldShowStr(String oldShowStr) { + this.oldShowStr = oldShowStr; + } + + public String getLastSearchStr() { + return lastSearchStr; + } + + public void setLastSearchStr(String lastSearchStr) { + this.lastSearchStr = lastSearchStr; + } + + + @Override + public String toString() { + return AssistUtils.toString(this); + } + + +} From 82be344119711efe1ee65f7fe8cf1e10382d9ae1 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Wed, 14 Sep 2022 14:56:41 +0800 Subject: [PATCH 09/93] =?UTF-8?q?REPORT-75998=20=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E5=8D=95=E5=85=83=E6=A0=BC=E3=80=81=E7=BB=84=E4=BB=B6=E3=80=81?= =?UTF-8?q?=E6=82=AC=E6=B5=AE=E5=85=83=E7=B4=A0=E3=80=81SQL=E3=80=81?= =?UTF-8?q?=E6=8E=A7=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/ShowSearchResultAction.java | 388 ++++++++++++++++++ .../action/content/cell/SearchCellAction.java | 192 +++++++++ .../content/component/ComponentType.java | 316 ++++++++++++++ .../component/SearchComponentAction.java | 142 +++++++ .../floatelement/SearchFloatAction.java | 104 +++++ .../action/content/sql/SearchSQLAction.java | 107 +++++ .../action/content/widget/FrmWidgetType.java | 186 +++++++++ .../content/widget/SearchWidgetAction.java | 166 ++++++++ 8 files changed, 1601 insertions(+) create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/cell/SearchCellAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/ComponentType.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/floatelement/SearchFloatAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/sql/SearchSQLAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/FrmWidgetType.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchWidgetAction.java diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java new file mode 100644 index 0000000000..acf430a91b --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java @@ -0,0 +1,388 @@ +package com.fr.design.actions.replace.action; + + +import com.fr.chart.chartattr.ChartCollection; +import com.fr.design.actions.replace.action.content.cell.SearchCellAction; +import com.fr.design.actions.replace.action.content.component.SearchComponentAction; +import com.fr.design.actions.replace.action.content.floatelement.SearchFloatAction; +import com.fr.design.actions.replace.action.content.formula.SearchFormulaAction; +import com.fr.design.actions.replace.action.content.js.SearchJSAction; +import com.fr.design.actions.replace.action.content.sql.SearchSQLAction; +import com.fr.design.actions.replace.action.content.widget.SearchWidgetAction; +import com.fr.design.actions.replace.info.*; +import com.fr.design.actions.replace.utils.ShowValueUtils; +import com.fr.design.i18n.Toolkit; +import com.fr.design.mainframe.JTemplate; +import com.fr.general.GeneralUtils; +import com.fr.report.cell.CellElement; +import com.fr.report.cell.FloatElement; +import com.fr.third.org.apache.poi.hssf.record.formula.functions.Int; +import javafx.util.Pair; +import org.gradle.internal.impldep.org.apache.commons.lang.StringUtils; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-22 + */ +public enum ShowSearchResultAction implements ShowValue { + /** + * 搜索单元格 + */ + CELL(Toolkit.i18nText("Fine-Design_Basic_Cell")) { + @Override + public ArrayList showSearchValue(JTemplate jTemplate) { + return new SearchCellAction(jTemplate).getCellInfos(); + } + + @Override + public ArrayList addMatchResult(String str, ArrayList arrayList) { + ArrayList cellInfos = new ArrayList<>(); + for (Info info : arrayList) { + if (((CellInfo) info).isChartExist()) { + CellElement cellElement = (CellElement) info.getContent().getReplaceObject(); + ChartCollection chartCollection = (ChartCollection) cellElement.getValue(); + for (int i = 0; i < chartCollection.getChartCount(); i++) { + String titleName = GeneralUtils.objectToString(chartCollection.getChart(i).getTitle().getTextObject()); + if (titleName.contains(str)) { + CellInfo cellInfo = ((CellInfo) info).copy(); + cellInfo.setCellChartIndex(i); + cellInfo.getContent().addOtherPos( + Toolkit.i18nText("Fine-Design_Replace_Chart_Title"), + chartCollection.getChartName(i), + titleName + ); + setShowInfo(cellInfo, titleName, str); + cellInfos.add(cellInfo); + } + } + } else { + HashMap stringHashMap = info.getValue(); + String content = stringHashMap.getOrDefault("content", StringUtils.EMPTY); + if (content.contains(str) && !StringUtils.isEmpty(content)) { + info.getContent().setShowStr(ShowValueUtils.getCommonString(content, str)); + info.getContent().setOldShowStr(content); + info.getContent().setOperatorArray(ShowValueUtils.getStringStartAndEndIndex(content, str)); + info.getContent().setSelected(true); + cellInfos.add((CellInfo) info); + } + } + } + return cellInfos; + } + + private void setShowInfo(CellInfo cellInfo, String titleName, String str) { + cellInfo.getContent().setShowStr(ShowValueUtils.getCommonString(titleName, str)); + cellInfo.getContent().setOldShowStr(titleName); + cellInfo.getContent().setOperatorArray(ShowValueUtils.getStringStartAndEndIndex(titleName, str)); + cellInfo.getContent().setSelected(true); + } + }, + /** + * 搜索JS事件 + */ + JS(Toolkit.i18nText("Fine-Design_Replace_JS")) { + @Override + public ArrayList showSearchValue(JTemplate jTemplate) { + return new SearchJSAction(jTemplate).getJsInfos(); + } + + @Override + public ArrayList addMatchResult(String str, ArrayList arrayList) { + ArrayList jsInfos = new ArrayList<>(); + HashMap stringHashMap = new HashMap<>(); + for (Info info : arrayList) { + stringHashMap = info.getValue(); + if (StringUtils.isEmpty(str)) { + if (!StringUtils.isEmpty(stringHashMap.getOrDefault("content", StringUtils.EMPTY))) { + JSInfo contentJSInfo = ((JSInfo) info).copy(); + contentJSInfo.getContent().setShowStr(stringHashMap.get("content")); + contentJSInfo.getContent().setOldShowStr(stringHashMap.get("content")); + contentJSInfo.getContent().setSelected(true); + contentJSInfo.setContentFlag(true); + jsInfos.add(contentJSInfo); + } + if (!StringUtils.isEmpty(stringHashMap.getOrDefault("name", StringUtils.EMPTY))) { + JSInfo nameJSInfo = ((JSInfo) info).copy(); + nameJSInfo.getContent().setShowStr(stringHashMap.get("name")); + nameJSInfo.getContent().setOldShowStr(stringHashMap.get("name")); + nameJSInfo.getContent().setSelected(true); + nameJSInfo.setContentFlag(false); + jsInfos.add(nameJSInfo); + } + } else { + searchMap4JS(stringHashMap, jsInfos, ((JSInfo) info), str); + //searchMap4JSContent(stringHashMap, jsInfos, ((JSInfo) info), str); + } + + } + return jsInfos; + } + + private void searchMap4JS(HashMap stringHashMap, ArrayList jsInfos, JSInfo info, String str) { + if (stringHashMap.containsKey("name") && !StringUtils.isEmpty(stringHashMap.get("name"))) { + String name = stringHashMap.get("name"); + if (name.contains(str)) { + JSInfo nameJSInfo = info.copy(); + nameJSInfo.getContent().setShowStr(ShowValueUtils.getCommonString(name, str)); + nameJSInfo.getContent().setOperatorArray(ShowValueUtils.getStringStartAndEndIndex(name, str)); + nameJSInfo.getContent().setOldShowStr(stringHashMap.get("name")); + nameJSInfo.setContentFlag(false); + nameJSInfo.getContent().setSelected(true); + jsInfos.add(nameJSInfo); + } + } + if (stringHashMap.containsKey("content") && !StringUtils.isEmpty(stringHashMap.get("content"))) { + String content = stringHashMap.get("content"); + if (content.contains(str)) { + JSInfo contentJSInfo = info.copy(); + contentJSInfo.getContent().setShowStr(ShowValueUtils.getCommonString(content, str)); + contentJSInfo.getContent().setOperatorArray(ShowValueUtils.getStringStartAndEndIndex(content, str)); + contentJSInfo.getContent().setOldShowStr(stringHashMap.get("content")); + contentJSInfo.setContentFlag(true); + contentJSInfo.getContent().setSelected(true); + jsInfos.add(contentJSInfo); + } + } + } + }, + /** + * 搜索SQL + */ + SQL("SQL") { + @Override + public ArrayList showSearchValue(JTemplate jTemplate) { + return new SearchSQLAction(jTemplate).getSqlInfos(); + } + + @Override + public ArrayList addMatchResult(String str, ArrayList arrayList) { + ArrayList sqlInfos = new ArrayList<>(); + HashMap stringHashMap = new HashMap<>(); + for (Info info : arrayList) { + stringHashMap = ((SQLInfo) info).getValue(); + if (StringUtils.isEmpty(str)) { + info.getContent().setShowStr(stringHashMap.get("content")); + info.getContent().setOldShowStr(stringHashMap.get("content")); + info.getContent().setSelected(true); + sqlInfos.add((SQLInfo) info); + } else { + searchMap4SQLContent(stringHashMap, sqlInfos, ((SQLInfo) info), str); + } + + } + return sqlInfos; + } + + private void searchMap4SQLContent(HashMap stringHashMap, ArrayList sqlInfos, SQLInfo info, String str) { + if (stringHashMap.containsKey("content") && !StringUtils.isEmpty(stringHashMap.get("content"))) { + String content = stringHashMap.get("content"); + if (content.contains(str)) { + SQLInfo contentJSInfo = info.copy(); + contentJSInfo.getContent().setShowStr(ShowValueUtils.getCommonString(content, str)); + contentJSInfo.getContent().setOperatorArray(ShowValueUtils.getStringStartAndEndIndex(content, str)); + contentJSInfo.getContent().setOldShowStr(stringHashMap.get("content")); + contentJSInfo.getContent().setSelected(true); + sqlInfos.add(contentJSInfo); + } + } + } + + private void updateOperaotrArray(int index, int preLength, int strLength, SQLInfo sqlInfo) { + ArrayList> pairs = new ArrayList<>(); + pairs.add(new Pair<>(index + preLength, index + preLength + strLength)); + sqlInfo.getContent().setOperatorArray(pairs); + } + }, + /** + * 搜索悬浮元素 + */ + FLOAT(Toolkit.i18nText("Fine-Design_Basic_Float_Element")) { + @Override + public ArrayList showSearchValue(JTemplate jTemplate) { + return new SearchFloatAction(jTemplate).getFloatInfos(); + } + + @Override + public ArrayList addMatchResult(String str, ArrayList arrayList) { + ArrayList floatInfos = new ArrayList<>(); + for (Info info : arrayList) { + FloatElement floatElement = ((FloatElement) (info.getContent().getReplaceObject())); + //如果存的是图表,就要特殊处理 + if (((FloatInfo) info).isChartExist()) { + ChartCollection chartCollection = (ChartCollection) floatElement.getValue(); + for (int i = 0; i < chartCollection.getChartCount(); i++) { + String titleName = GeneralUtils.objectToString(chartCollection.getChart(i).getTitle().getTextObject()); + if (titleName.contains(str)) { + FloatInfo floatInfo = ((FloatInfo) info).copy(); + floatInfo.setFloatChartIndex(i); + floatInfo.getContent().addOtherPos( + Toolkit.i18nText("Fine-Design_Replace_Chart_Title"), + chartCollection.getChartName(i), + titleName); + setShowInfo(floatInfo, titleName, str); + floatInfos.add(floatInfo); + } + } + } else { + if (GeneralUtils.objectToString(floatElement.getValue()).contains(str)) { + FloatInfo floatInfo = ((FloatInfo) info).copy(); + setShowInfo(floatInfo, GeneralUtils.objectToString(floatElement.getValue()), str); + floatInfos.add(floatInfo); + } + } + } + return floatInfos; + } + + private void setShowInfo(FloatInfo floatInfo, String value, String str) { + floatInfo.getContent().setOldShowStr(value); + floatInfo.getContent().setShowStr(ShowValueUtils.getCommonString(value, str)); + floatInfo.getContent().setOperatorArray(ShowValueUtils.getStringStartAndEndIndex(value, str)); + floatInfo.getContent().setSelected(true); + } + }, + /** + * 搜索组件 + */ + COMPONENT(Toolkit.i18nText("Fine-Design_Replace_Component")) { + @Override + public ArrayList showSearchValue(JTemplate jTemplate) { + return new SearchComponentAction(jTemplate).getComponentInfos(); + } + + @Override + public ArrayList addMatchResult(String str, ArrayList arrayList) { + ArrayList componentInfos = new ArrayList<>(); + HashMap stringHashMap = new HashMap<>(); + for (Info info : arrayList) { + stringHashMap = info.getValue(info.getContent().getReplaceObject()); + searchMap4Component(stringHashMap, componentInfos, ((ComponentInfo) info), str); + } + return componentInfos; + } + + private void searchMap4Component(HashMap stringHashMap, ArrayList componentInfos, ComponentInfo info, String str) { + if (stringHashMap.containsKey("content")) { + String content = stringHashMap.get("content"); + if (content.contains(str)) { + info.getContent().setShowStr(ShowValueUtils.getCommonString(content, str)); + info.getContent().setOldShowStr(stringHashMap.get("content")); + info.getContent().setOperatorArray(ShowValueUtils.getStringStartAndEndIndex(content, str)); + info.getContent().setSelected(true); + componentInfos.add(info); + } + } + } + }, + /** + * 搜索控件 + */ + WIDGET(Toolkit.i18nText("Fine-Design_Basic_Widget")) { + @Override + public ArrayList showSearchValue(JTemplate jTemplate) { + return new SearchWidgetAction(jTemplate).getWidgetInfos(); + } + + @Override + public ArrayList addMatchResult(String str, ArrayList arrayList) { + ArrayList widgetInfos = new ArrayList<>(); + HashMap stringHashMap = new HashMap<>(); + for (Info info : arrayList) { + stringHashMap = info.getValue(); + searchMap4Widget(stringHashMap, widgetInfos, ((WidgetInfo) info), str); + } + return widgetInfos; + } + + private void searchMap4Widget(HashMap stringHashMap, ArrayList widgetInfos, WidgetInfo info, String str) { + if (stringHashMap.containsKey("name")) { + String name = stringHashMap.get("name"); + if (!StringUtils.isEmpty(name) && name.contains(str)) { + WidgetInfo nameInfo = info.copy(info); + nameInfo.getContent().setShowStr(ShowValueUtils.getCommonString(name, str)); + nameInfo.getContent().setOldShowStr(stringHashMap.get("name")); + nameInfo.getContent().setOperatorArray(ShowValueUtils.getStringStartAndEndIndex(name, str)); + nameInfo.getContent().setSelected(true); + nameInfo.setWaterMarkFlag(false); + widgetInfos.add(nameInfo); + } + } + if (stringHashMap.containsKey("waterMark")) { + String waterMark = stringHashMap.get("waterMark"); + if (!StringUtils.isEmpty(waterMark) && waterMark.contains(str)) { + WidgetInfo widgetInfo = info.copy(info); + widgetInfo.getContent().setShowStr(ShowValueUtils.getCommonString(waterMark, str)); + widgetInfo.getContent().setOldShowStr(stringHashMap.get("waterMark")); + widgetInfo.getContent().setShowObject(widgetInfo.getContent().getShowObject() + "水印"); + widgetInfo.getContent().setOperatorArray(ShowValueUtils.getStringStartAndEndIndex(waterMark, str)); + widgetInfo.getContent().setSelected(true); + widgetInfo.setWaterMarkFlag(true); + widgetInfos.add(widgetInfo); + } + } + } + }, + /** + * 搜索公式 + */ + FORMULA(Toolkit.i18nText("Fine-Design_Basic_Formula")) { + @Override + public ArrayList showSearchValue(JTemplate jTemplate) { + return new SearchFormulaAction(jTemplate).getFormulaInfos(); + } + + @Override + public ArrayList addMatchResult(String str, ArrayList arrayList) { + ArrayList formulaInfos = new ArrayList<>(); + HashMap stringHashMap = new HashMap<>(); + for (Info info : arrayList) { + stringHashMap = info.getValue(); + searchMap4Formula(stringHashMap, formulaInfos, ((FormulaInfo) info), str); + } + return formulaInfos; + } + + private void searchMap4Formula(HashMap stringHashMap, ArrayList formulaInfos, FormulaInfo info, String str) { + if (stringHashMap.containsKey("content")) { + String name = stringHashMap.get("content"); + if (name.contains(str)) { + info.getContent().setShowStr(ShowValueUtils.getCommonString(name, str)); + info.getContent().setOldShowStr(stringHashMap.get("content")); + info.getContent().setOperatorArray(ShowValueUtils.getStringStartAndEndIndex(name, str)); + info.getContent().setSelected(true); + formulaInfos.add(info); + } + } + } + }; + + + String name; + + ShowSearchResultAction(String name) { + this.name = name; + } + + /** + * 匹配 + * + * @param name + * @return + */ + @Nullable + public static ShowSearchResultAction match(String name) { + ShowSearchResultAction[] values = ShowSearchResultAction.values(); + for (ShowSearchResultAction value : values) { + if (value.name.equals(name)) { + return value; + } + } + return null; + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/cell/SearchCellAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/cell/SearchCellAction.java new file mode 100644 index 0000000000..12f73a33f4 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/cell/SearchCellAction.java @@ -0,0 +1,192 @@ +package com.fr.design.actions.replace.action.content.cell; + +import com.fr.chart.chartattr.ChartCollection; +import com.fr.design.actions.replace.action.SearchAction; +import com.fr.design.actions.replace.action.content.component.SearchComponentAction; +import com.fr.design.actions.replace.info.ComponentInfo; +import com.fr.design.actions.replace.info.DealWithInfoValue; +import com.fr.design.actions.replace.info.Info; +import com.fr.design.actions.replace.info.base.ITContent; + +import com.fr.design.i18n.Toolkit; +import com.fr.design.mainframe.JTemplate; +import com.fr.design.actions.replace.info.CellInfo; +import com.fr.form.main.Form; +import com.fr.form.ui.ElementCaseEditor; +import com.fr.form.ui.Widget; +import com.fr.form.ui.container.*; +import com.fr.form.ui.widget.CRBoundsWidget; +import com.fr.general.GeneralUtils; +import com.fr.main.impl.WorkBook; +import com.fr.report.cell.CellElement; +import com.fr.report.elementcase.ElementCase; +import com.fr.report.poly.PolyECBlock; +import com.fr.report.report.Report; +import com.fr.stable.AssistUtils; +import javafx.util.Pair; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; + +/** + * 获取有内容的单元格相关信息 + * + * tips:这边报表分为两块——决策报表(dealForm)和普通报表(dealWorkBook),二者最后都会归于ElementCase + * 决策报表:虽然分为绝对布局和自适应布局,但是单元格可能存在的地方只有report ,二者对它(report)的处理是统一的,都属于WTitleLayout,因此没必要划分两种布局 + * 普通报表:获取elementCase拿到cellIterator遍历即可 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-11 + */ +public class SearchCellAction implements SearchAction { + private ArrayList cellInfos; + + /** + * 构造时会搜索单元格,设置对应的单元格列表信息 + * @param jTemplate 要搜索的报表对象 + */ + public SearchCellAction(JTemplate jTemplate){ + setCellInfos(search4Infos(jTemplate)); + } + + + public ArrayList getCellInfos() { + return cellInfos; + } + + public void setCellInfos(ArrayList cellInfos) { + this.cellInfos = cellInfos; + } + + + /** + * 搜索对应的信息 + * @param jTemplate 要搜索的报表对象 + * @return 返回单元格信息Array + */ + @Override + public ArrayList search4Infos(JTemplate jTemplate){ + if (jTemplate.getTarget() instanceof Form){ + return dealForm(jTemplate); + + } else if (jTemplate.getTarget() instanceof WorkBook){ + return dealWorkBook(jTemplate); + } + return new ArrayList<>(); + } + + + /** + * 处理决策报表 + * 流程:dealForm——>getCellInfosFromBoundsWidget——>getCellInfoFromElementCase + * @param jTemplate 要搜索的报表对象 + * @return 返回单元格信息Array + */ + private ArrayList dealForm(JTemplate jTemplate) { + ArrayList result = new ArrayList<>(); + SearchComponentAction searchComponentAction = new SearchComponentAction(jTemplate); + for (ComponentInfo info : searchComponentAction.getComponentInfos()){ + ITContent content = info.getContent().copy(); + getCellInfosFromBoundsWidget(result,content, (Widget) info.getContent().getReplaceObject()); + + } + return result; + } + + /** + * 从组件信息中获取到的layout中的BoundsWidget中获取真正的报表块,并且将信息添加到列表中 + * @param result 要操作的Array + * @param content 存储查找替换相关信息的类 + * @param widget 控件和组件的最高层接口 + */ + private void getCellInfosFromBoundsWidget(ArrayList result, ITContent content, Widget widget) { + //report在两种布局中都属于WTitleLayout + if (widget instanceof WTitleLayout){ + for (int i = 0 ; i < ((WTitleLayout) widget).getWidgetCount() ; i++){ + //这里它又套了一层BoundsWidget + if (((CRBoundsWidget)((WTitleLayout) widget).getWidget(i)).getWidget() instanceof ElementCaseEditor){ + ElementCaseEditor editor = (ElementCaseEditor) ((CRBoundsWidget)((WTitleLayout) widget).getWidget(i)).getWidget(); + ITContent newContent = content.copy(); + getCellInfoFromElementCase((ElementCase) editor.getElementCase(),result,newContent); + } + } + } + + } + + /** + * 处理普通报表 + * @param jTemplate 要搜索的报表对象 + * @return 对应信息Array + */ + private ArrayList dealWorkBook(JTemplate jTemplate) { + WorkBook workBook = (WorkBook) jTemplate.getTarget(); + ArrayList result = new ArrayList<>(); + for (int i = 0 ; i < workBook.getReportCount() ; i++){ + Report report = workBook.getReport(i); + ITContent content = new ITContent(); + content.setSheetID(String.valueOf(i)); + content.setSheetName(workBook.getReportName(i)); + content.setTemplateName(jTemplate.getTemplateName()); + content.addTRL(jTemplate.getTemplateName()); + getCellInfoFromReport(report,result, content); + } + return result; + } + + /** + * 处理普通报表的sheet + * @param report sheet + * @param result 要操作的信息Array + * @param content 存储查找替换相关信息的类 + */ + private void getCellInfoFromReport(Report report, ArrayList result,ITContent content){ + + if (report != null){ + Iterator it = report.iteratorOfElementCase(); + while (it.hasNext()){ + ITContent newContent =content.copy(); + ElementCase elementCase = (ElementCase) it.next(); + getCellInfoFromElementCase(elementCase,result, newContent); + } + } + } + + + private void getCellInfoFromElementCase(ElementCase elementCase, ArrayList result,ITContent content){ + Iterator cellIterator = elementCase.cellIterator(); + while (cellIterator.hasNext()){ + ITContent newContent = content.copy(); + CellElement cell = (CellElement) cellIterator.next(); + newContent.getContentObject().setCell(cell); + newContent.setReplaceObject(cell); + //单元格 + newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Cell") +cell); + newContent.setShowObject(cell); + newContent.addTRL(newContent.getSheetID()); + if (elementCase instanceof PolyECBlock){ + newContent.setBlockName(((PolyECBlock)elementCase).getBlockName()); + newContent.addTRL(((PolyECBlock)elementCase).getBlockName()); + } + newContent.addTRL(GeneralUtils.objectToString(cell)); + CellInfo cellInfo = new CellInfo(newContent); + if (cell.getValue() instanceof ChartCollection){ + cellInfo.setChartExist(true); + } + result.add(cellInfo); + } + } + + + /** + * 对应的单元格信息列表是否有内容 + * @return 判断的布尔值 + */ + public boolean isCellInfosExist(){ + return this.getCellInfos().size() > 0; + } + + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/ComponentType.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/ComponentType.java new file mode 100644 index 0000000000..4f63e14023 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/ComponentType.java @@ -0,0 +1,316 @@ +package com.fr.design.actions.replace.action.content.component; + +import com.fr.design.actions.replace.action.content.widget.FrmWidgetType; +import com.fr.design.actions.replace.action.content.widget.SearchFrmWidget; +import com.fr.design.actions.replace.info.ComponentInfo; +import com.fr.design.actions.replace.info.DealWithInfoValue; +import com.fr.design.actions.replace.info.Info; +import com.fr.design.actions.replace.info.WidgetInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.actions.replace.utils.ShowValueUtils; +import com.fr.form.ui.Widget; +import com.fr.form.ui.container.WAbsoluteLayout; +import com.fr.form.ui.container.WCardLayout; +import com.fr.form.ui.container.WLayout; +import com.fr.form.ui.container.WScaleLayout; +import com.fr.form.ui.container.WTitleLayout; +import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout; +import com.fr.form.ui.container.cardlayout.WCardTagLayout; +import com.fr.form.ui.container.cardlayout.WCardTitleLayout; +import com.fr.form.ui.container.cardlayout.WTabFitLayout; +import com.fr.form.ui.widget.CRBoundsWidget; +import com.fr.stable.StringUtils; +import javafx.util.Pair; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.HashMap; + +/** + * 决策报表组件类型 + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-08 + */ +public enum ComponentType implements DealWithInfoValue{ + + /** + * WCardMainBorderLayout属于Tab块组件中的最外层——默认命名方式为tablayout0的类型 + * WCardMainBorderLayout里面放两个,一个WCardTitleLayout,一个WCardLayout + * 处理该类型时需要先将该对象加入我们的组件列表中,再对其包含的内容进行递归处理 + * TIP:该类型对其设置组件名时直接setWidgetName即可,设计器右侧上方和右侧下方面板中的组件名称会同步更改 + */ + W_CARD_MAIN_BORDER_LAYOUT("WCardMainBorderLayout"){ + @Override + public void addComponent2Array(ArrayList componentInfos, ITContent bodyContent, Widget widget) { + super.addComponent2Array(componentInfos, bodyContent, widget); + ITContent content = bodyContent.copy(); + content.addOtherPos(widget.getWidgetName()); + for (int i = 0 ; i < ((WCardMainBorderLayout)widget).getWidgetCount() ; i ++){ + Widget cardLayoutWidget = ((WCardMainBorderLayout)widget).getWidget(i); + if (cardLayoutWidget instanceof WCardTitleLayout){ + for (int j = 0 ; j <((WCardTitleLayout) cardLayoutWidget).getWidgetCount() ; j++){ + if (((WCardTitleLayout) cardLayoutWidget).getWidget(j) instanceof WCardTagLayout){ + content.addOtherPos(((WCardTitleLayout) cardLayoutWidget).getWidget(j).getWidgetName()); + } + } + } + } + searchLayout4Component(componentInfos,content,((WCardMainBorderLayout)widget)); + } + }, + /** + * WCardTitleLayout里面两个,一个CardAddButton——不必处理,一个WCardTagLayout——默认命名方式为tabpane0的类型 + * 处理该类型时不用对该对象进行处理,直接对其包含的内容进行递归处理即可 + */ + W_CARD_TITLE_LAYOUT("WCardTitleLayout"){ + @Override + public void addComponent2Array(ArrayList componentInfos, ITContent bodyContent, Widget widget) { + searchLayout4Component(componentInfos,bodyContent,(WCardTitleLayout) widget); + } + }, + /** + * 对于WCardLayout 里面就是放的WTabFitLayout——tab00、tab10 + * 处理该类型时不用对该对象进行处理,直接对其包含的内容进行递归处理即可 + */ + W_CARD_LAYOUT("WCardLayout"){ + @Override + public void addComponent2Array(ArrayList componentInfos, ITContent bodyContent, Widget widget) { + searchLayout4Component(componentInfos,bodyContent,(WCardLayout) widget); + } + }, + /** + * WCardTagLayout——默认命名方式为tabpane0的类型 + * TIP:该类型对其设置组件名时直接setWidgetName即可,设计器右侧上方和右侧下方面板中的组件名称会同步更改 + */ + W_CARD_TAG_LAYOUT("WCardTagLayout"){ + @Override + public void addComponent2Array(ArrayList componentInfos, ITContent bodyContent, Widget widget) { + super.addComponent2Array(componentInfos, bodyContent, widget); + searchLayout4Component(componentInfos,bodyContent,(WCardTagLayout) widget); + } + }, + /** + * WAbsoluteLayout属于绝对布局块 + * 处理该类型时需要先将该对象加入我们的组件列表中,再对其包含的内容进行递归处理 + * TIP:该类型对其设置组件名时直接setWidgetName即可,设计器右侧上方和右侧下方面板中的组件名称会同步更改 + */ + W_ABSOLUTE_LAYOUT("WAbsoluteLayout"){ + @Override + public void addComponent2Array(ArrayList componentInfos, ITContent bodyContent, Widget widget) { + super.addComponent2Array(componentInfos, bodyContent, widget); + serachCRBoundsWidget4Component(componentInfos,bodyContent,(WAbsoluteLayout) widget); + } + }, + /** + * WTabFitLayout——里面放的是命名方式为tab00、tab10的tab块,在该块内部可以递归存放所有决策报表组件 + * 处理该类型时需要先将该对象加入我们的组件列表中,再对其包含的内容进行递归处理 + * TIP:该类型对其设置组件名时直接setWidgetName即可,设计器右侧上方和右侧下方面板中的组件名称会同步更改 + */ + W_TAB_FIT_LAYOUT("WTabFitLayout"){ + @Override + public void addComponent2Array(ArrayList componentInfos, ITContent bodyContent, Widget widget) { + super.addComponent2Array(componentInfos, bodyContent, widget); + serachCRBoundsWidget4Component(componentInfos,bodyContent,(WTabFitLayout) widget); + } + }, + /** + * 自适应布局下报表块和图表的存储方式 + * TIP:该类型对其设置组件名时需要对内外层进行setWidgetName,设计器右侧上方和右侧下方面板中的组件名称不会同步更改 + */ + W_TITLE_LAYOUT("WTitleLayout"){ + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + Object replaceObject = info.getContent().getReplaceObject(); + if (replaceObject instanceof WTitleLayout){ + WTitleLayout titleLayout = (WTitleLayout) replaceObject; + info.updateOldStr(titleLayout.getWidgetName(),findStr); + titleLayout.setWidgetName(ShowValueUtils.replaceAll(titleLayout.getWidgetName(),findStr,replaceStr)); + CRBoundsWidget crBoundsWidget = ((CRBoundsWidget)titleLayout.getWidget(0)); + crBoundsWidget.getWidget().setWidgetName(ShowValueUtils.replaceAll(crBoundsWidget.getWidget().getWidgetName(),findStr,replaceStr)); + } + } + }, + + /** + * 自适应布局下:下拉框控件、下拉复选框控件、日期控件、数字控件、下拉树控件、密码控件都属于该类型 + * TIP:该类型对其设置组件名时需要对内外层进行setWidgetName,设计器右侧上方和右侧下方面板中的组件名称不会同步更改 + */ + W_SCALE_LAYOUT("WScaleLayout"){ + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + Object replaceObject = info.getContent().getReplaceObject(); + if (replaceObject instanceof WScaleLayout){ + WScaleLayout scaleLayout = (WScaleLayout) replaceObject; + info.updateOldStr(scaleLayout.getWidgetName(),findStr); + scaleLayout.setWidgetName(ShowValueUtils.replaceAll(scaleLayout.getWidgetName(),findStr,replaceStr)); + CRBoundsWidget crBoundsWidget = ((CRBoundsWidget)scaleLayout.getWidget(0)); + crBoundsWidget.getWidget().setWidgetName(ShowValueUtils.replaceAll(crBoundsWidget.getWidget().getWidgetName(),findStr,replaceStr)); + } + } + }, + /** + * 绝对布局:文本控件 + */ + TEXT_EDITOR("TextEditor"), + + /** + * 自适应布局和绝对布局:标签控件 + */ + LABEL("Label"), + + /** + * 自适应布局和绝对布局:按钮控件 + */ + FREE_BUTTON("FreeButton"), + + /** + * 下绝对布局:拉框控件 + */ + COMBO_BOX("ComboBox"), + + /** + * 绝对布局:下拉复选框控件 + */ + COMBO_CHECK_BOX("ComboCheckBox"), + + /** + * 绝对布局:日期控件 + */ + DATE_EDITOR("DateEditor"), + + /** + * 绝对布局:数字控件 + */ + NUMBER_EDITOR("NumberEditor"), + + /** + * 绝对布局:下拉树控件 + */ + TREE_COMBO_BOX_EDITOR("TreeComboBoxEditor"), + + /** + * 自适应布局和绝对布局:单选按钮组控件 + */ + RADIO_GROUP("RadioGroup"), + + /** + * 自适应布局和绝对布局:复选按钮组控件 + */ + CHECK_BOX_GROUP("CheckBoxGroup"), + + /** + * 自适应布局和绝对布局:查询按钮 + */ + FORM_SUBMIT_BUTTON("FormSubmitButton"), + + /** + * 自适应布局和绝对布局:文本域控件 + */ + TEXT_AREA("TextArea"), + + /** + * 绝对布局:密码控件 + */ + PASS_WORD("Password"), + + /** + * 自适应布局和绝对布局:复选按钮控件 + */ + CHECK_BOX("CheckBox"), + + /** + * 自适应布局和绝对布局:视图树 + */ + TREE_EDITOR("TreeEditor"), + + /** + * 自适应布局和绝对布局:文件控件 + */ + MULTI_FILE_EDITOR("MultiFileEditor"); + + + String name; + ComponentType(String name) { + this.name = name; + } + + @Nullable + public static ComponentType match(String name){ + ComponentType[] values = ComponentType.values(); + for (ComponentType value : values) { + if(value.name.equals(name)){ + return value; + } + } + return null; + } + + public void addComponent2Array(ArrayList componentInfos, ITContent bodyContent, Widget widget) { + componentInfos.add(new ComponentInfo(getComponentContent(bodyContent,widget))); + } + + public ITContent getComponentContent(ITContent componentContent,Widget widget){ + ITContent content = componentContent.copy(); + content.setReplaceObject(widget); + String widgetName = widget.getWidgetName(); + if (!(widget instanceof WCardTagLayout)){ + content.addOtherPos(widgetName); + } + content.setBlockName(widgetName); + content.setShowObject(widgetName); + content.addTRL(widgetName); + return content; + } + + public void searchLayout4Component(ArrayList componentInfos, ITContent bodyContent, WLayout layout){ + for (int i = 0 ; i < layout.getWidgetCount() ; i ++){ + ComponentType componentType = ComponentType.match(layout.getWidget(i).getClass().getSimpleName()); + if (componentType != null){ + componentType.addComponent2Array(componentInfos, bodyContent, layout.getWidget(i)); + } + } + } + + public void serachCRBoundsWidget4Component(ArrayList componentInfos, ITContent bodyContent, WLayout layout){ + for (int i = 0 ; i < layout.getWidgetCount() ; i ++){ + //这边会套一层CRBoundsWidget + ComponentType componentType = ComponentType.match(((CRBoundsWidget)(layout.getWidget(i))).getWidget().getClass().getSimpleName()); + if (componentType != null){ + ITContent content = bodyContent.copy(); + content.addOtherPos(layout.getWidgetName()); + componentType.addComponent2Array(componentInfos, content, ((CRBoundsWidget)(layout.getWidget(i))).getWidget()); + } + } + } + + + @Override + public HashMap getValue(Object... o) { + HashMap hashMap = new HashMap<>(); + if (o != null && o[0] instanceof Widget){ + hashMap.put("content", ((Widget) o[0]).getWidgetName()); + } + return hashMap; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + Object replaceObject = info.getContent().getReplaceObject(); + if (replaceObject instanceof Widget){ + Widget widget = ((Widget) replaceObject); + info.updateOldStr(widget.getWidgetName(),findStr); + widget.setWidgetName(widget.getWidgetName().replaceAll(findStr,replaceStr)); + } + } + + @Override + public String getInfoShowStr(Info info) { + if (info instanceof ComponentInfo && info.getContent().getReplaceObject() instanceof Widget){ + return ((Widget) info.getContent().getReplaceObject()).getWidgetName(); + } + return StringUtils.EMPTY; + } + + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java new file mode 100644 index 0000000000..70f4ea4195 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java @@ -0,0 +1,142 @@ +package com.fr.design.actions.replace.action.content.component; + +import com.fr.design.actions.replace.action.SearchAction; +import com.fr.design.actions.replace.info.ComponentInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.mainframe.JTemplate; +import com.fr.form.main.Form; +import com.fr.form.ui.Widget; +import com.fr.form.ui.container.WAbsoluteLayout; +import com.fr.form.ui.container.WCardLayout; +import com.fr.form.ui.container.WLayout; +import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout; +import com.fr.form.ui.container.cardlayout.WCardTagLayout; +import com.fr.form.ui.container.cardlayout.WCardTitleLayout; +import com.fr.form.ui.container.cardlayout.WTabFitLayout; +import com.fr.form.ui.widget.CRBoundsWidget; +import com.fr.stable.StringUtils; +import com.teamdev.jxbrowser.deps.org.checkerframework.checker.units.qual.C; + +import java.util.ArrayList; + +/** + * 获取决策报表组件 + * TIPS:组件只在决策报表中,只用考虑决策报表Form,分为para和body两部分来处理 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-29 + */ +public class SearchComponentAction implements SearchAction { + + private ArrayList componentInfos; + + + public ArrayList getComponentInfos() { + return componentInfos; + } + + public void setComponentInfos(ArrayList componentInfos) { + this.componentInfos = componentInfos; + } + + /** + * 构造时会搜索组件,设置对应的组件列表信息 + * @param jTemplate 要搜索的模板 + */ + public SearchComponentAction(JTemplate jTemplate) { + setComponentInfos(search4Infos(jTemplate)); + } + + /** + * 搜索决策报表参数面板以及body面板两个地方的组件 + * @param jTemplate 要搜索的模板 + * @return 组件信息Array + */ + @Override + public ArrayList search4Infos(JTemplate jTemplate) { + ArrayList componentInfos = new ArrayList<>(); + if (jTemplate.getTarget() instanceof Form) { + Form form = (Form) jTemplate.getTarget(); + ITContent content = new ITContent(); + content.setTemplateName(jTemplate.getTemplateName()); + content.addTRL(jTemplate.getTemplateName()); + content.setFrmFlag(true); + //参数面板 + dealPara(componentInfos, content, form.getParaContainer()); + //body面板 + dealBody(componentInfos, content, form.getBody()); + } + return componentInfos; + } + + private void dealBody(ArrayList componentInfos, ITContent content, Widget body) { + if (body instanceof WLayout) { + ITContent bodyContent = content.copy(); + bodyContent.addOtherPos(body.getWidgetName()); + //单独处理一下body组件 + dealBodyContainer(componentInfos, bodyContent, (WLayout) body); + //处理body的子组件 + searchBodyComponent(componentInfos, bodyContent, body); + //searchBodyComponent(); + } + } + + private void searchBodyComponent(ArrayList componentInfos, ITContent bodyContent, Widget body) { + for (int i = 0 ; i < ((WLayout) body).getWidgetCount(); i++){ + //body下面的每个控件都会有一层BoundsWidget,为了兼容用了CRBoundsWidget,boundsWidget.getWidget()里面才是真正我们需要的widget + CRBoundsWidget boundsWidget = (CRBoundsWidget) ((WLayout) body).getWidget(i); + ComponentType componentType = ComponentType.match(boundsWidget.getWidget().getClass().getSimpleName()); + if (componentType != null){ + componentType.addComponent2Array(componentInfos,bodyContent,boundsWidget.getWidget()); + } + } + } + + private void dealBodyContainer(ArrayList componentInfos, ITContent bodyContent, WLayout body) { + ITContent content = bodyContent.copy(); + content.setReplaceObject(body); + dealContent(content, body.getWidgetName()); + //WParameterLayout + componentInfos.add(new ComponentInfo(content)); + } + + private void dealPara(ArrayList componentInfos, ITContent content, WLayout paraContainer) { + if (paraContainer != null) { + ITContent paraContent = content.copy(); + paraContent.addOtherPos(paraContainer.getWidgetName()); + //单独处理一下para组件 + dealParaContainer(componentInfos, paraContent, paraContainer); + //处理para的子组件 + searchParaComponent(componentInfos, paraContent, paraContainer); + } + } + + private void searchParaComponent(ArrayList componentInfos, ITContent paraContent, WLayout paraContainer) { + for (int i = 0; i < paraContainer.getWidgetCount(); i++) { + ITContent content = paraContent.copy(); + String widgetName = ((CRBoundsWidget) (paraContainer.getWidget(i))).getWidget().getWidgetName(); + content.addOtherPos(widgetName); + content.setReplaceObject(((CRBoundsWidget) (paraContainer.getWidget(i))).getWidget()); + dealContent(content, widgetName); + componentInfos.add(new ComponentInfo(content)); + + } + } + + //单独处理WParameterLayout组件 + private void dealParaContainer(ArrayList componentInfos, ITContent content, WLayout paraContainer) { + ITContent paraContent = content.copy(); + paraContent.setReplaceObject(paraContainer); + dealContent(paraContent, paraContainer.getWidgetName()); + //WParameterLayout + componentInfos.add(new ComponentInfo(paraContent)); + } + + + private void dealContent(ITContent content, String widgetName) { + content.setBlockName(widgetName); + content.setShowObject(widgetName); + content.addTRL(widgetName); + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/floatelement/SearchFloatAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/floatelement/SearchFloatAction.java new file mode 100644 index 0000000000..c3bd741e02 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/floatelement/SearchFloatAction.java @@ -0,0 +1,104 @@ +package com.fr.design.actions.replace.action.content.floatelement; + +import com.fr.chart.chartattr.ChartCollection; +import com.fr.design.actions.replace.action.SearchAction; +import com.fr.design.actions.replace.info.FloatInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; +import com.fr.design.mainframe.JTemplate; +import com.fr.main.impl.WorkBook; +import com.fr.report.cell.FloatElement; +import com.fr.report.elementcase.ElementCase; +import com.fr.report.poly.PolyECBlock; +import com.fr.report.report.Report; + +import java.util.ArrayList; +import java.util.Iterator; + +/** + * 查找悬浮元素的信息 + * + * 由于决策报表没有悬浮元素,因此不用考虑决策报表,只需要考虑普通报表即可 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-16 + */ +public class SearchFloatAction implements SearchAction { + private ArrayList floatInfos; + + /** + * 构造时会搜索悬浮元素,设置对应的悬浮元素信息列表 + * @param jTemplate 指定搜索的模板 + */ + public SearchFloatAction(JTemplate jTemplate){ setFloatInfos(search4Infos(jTemplate));} + + /** + * 查找悬浮元素信息,只需要考虑普通报表 + * @param jTemplate 指定搜索模板 + * @return 悬浮元素信息列表 + */ + @Override + public ArrayList search4Infos(JTemplate jTemplate) { + ArrayList result = new ArrayList<>(); + if (jTemplate.getTarget() instanceof WorkBook){ + WorkBook workBook = (WorkBook) jTemplate.getTarget(); + for (int i = 0 ; i < workBook.getReportCount() ; i++){ + Report report = workBook.getReport(i); + ITContent content = new ITContent(); + content.setTemplateName(jTemplate.getTemplateName()); + content.setSheetID(String.valueOf(i)); + content.setSheetName(workBook.getReportName(i)); + content.addTRL(jTemplate.getTemplateName()); + content.addTRL(String.valueOf(i)); + getFloatInfoFromReport(report,result, content); + } + } + return result; + } + + + + private void getFloatInfoFromReport(Report report, ArrayList result, ITContent content) { + + if (report != null){ + Iterator it = report.iteratorOfElementCase(); + while (it.hasNext()){ + ITContent newContent = content.copy(); + ElementCase elementCase = (ElementCase) it.next(); + getFloatInfoFromElementCase(elementCase,result, newContent); + } + } + } + + private void getFloatInfoFromElementCase(ElementCase elementCase, ArrayList result, ITContent content) { + Iterator floatIterator = elementCase.floatIterator(); + while (floatIterator.hasNext()){ + ITContent newContent = content.copy(); + FloatElement floatElement = (FloatElement) floatIterator.next(); + newContent.getContentObject().setFloatElement(floatElement); + newContent.setReplaceObject(floatElement); + newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Float_Element")); + if (elementCase instanceof PolyECBlock){ + newContent.setBlockName(((PolyECBlock)elementCase).getBlockName()); + newContent.addTRL(((PolyECBlock)elementCase).getBlockName()); + } + newContent.setShowObject(floatElement.getName()); + newContent.addTRL(floatElement.getName()); + FloatInfo floatInfo = new FloatInfo(newContent); + if (floatElement.getValue() instanceof ChartCollection){ + floatInfo.setChartExist(true); + } + result.add(floatInfo); + } + } + + + public ArrayList getFloatInfos() { + return floatInfos; + } + + public void setFloatInfos(ArrayList floatInfos) { + this.floatInfos = floatInfos; + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/sql/SearchSQLAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/sql/SearchSQLAction.java new file mode 100644 index 0000000000..ca30e60d5a --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/sql/SearchSQLAction.java @@ -0,0 +1,107 @@ +package com.fr.design.actions.replace.action.content.sql; + +import com.fr.data.TableDataSource; +import com.fr.data.impl.DBTableData; +import com.fr.design.actions.replace.action.SearchAction; +import com.fr.design.actions.replace.info.SQLInfo; + +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.data.tabledata.wrapper.TableDataFactory; +import com.fr.design.i18n.Toolkit; +import com.fr.design.mainframe.JTemplate; +import com.fr.file.TableDataConfig; +import com.fr.form.main.Form; +import com.fr.main.impl.WorkBook; +import com.fr.stable.AssistUtils; + +import java.util.ArrayList; +import java.util.Iterator; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-16 + */ +public class SearchSQLAction implements SearchAction { + private ArrayList sqlInfos; + + public SearchSQLAction(JTemplate jTemplate) { + setSqlInfos(search4Infos(jTemplate)); + } + + @Override + public ArrayList search4Infos(JTemplate jTemplate) { + ArrayList sqlInfos = new ArrayList<>(); + ITContent content = new ITContent(); + content.setTemplateName(jTemplate.getTemplateName()); + addModelDataInfos2Array(jTemplate, content, sqlInfos); + addServerDataInfos2Array(content, sqlInfos); + return sqlInfos; + } + + + /** + * 服务器数据集 + * @param content + * @param sqlInfos + */ + private void addServerDataInfos2Array(ITContent content, ArrayList sqlInfos) { + TableDataConfig tableDataConfig = TableDataConfig.getInstance(); + String[] nameArray = TableDataFactory.getSortOfChineseNameOfServerData(tableDataConfig); + for (String dataName : nameArray) { + if (tableDataConfig.getTableData(dataName) instanceof DBTableData) { + ITContent newContent = content.copy(); + newContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_DS_Server_TableData"), + dataName + ); + newContent.setShowObject(Toolkit.i18nText("Fine-Design_Basic_DS_Server_TableData")); + newContent.setReplaceObject(tableDataConfig.getTableData(dataName)); + newContent.getContentObject().setDbTableData((DBTableData) tableDataConfig.getTableData(dataName)); + sqlInfos.add(new SQLInfo(newContent)); + } + + } + } + + /** + * 模板数据集 + * @param jTemplate + * @param content + * @param sqlInfos + */ + private void addModelDataInfos2Array(JTemplate jTemplate, ITContent content, ArrayList sqlInfos) { + if (jTemplate.getTarget() instanceof TableDataSource) { + TableDataSource source = (TableDataSource) jTemplate.getTarget(); + Iterator dataIterator = source.getTableDataNameIterator(); + while (dataIterator.hasNext()) { + String dataName = (String) dataIterator.next(); + if (source.getTableData(dataName) instanceof DBTableData) { + ITContent newContent = content.copy(); + newContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_DS_Report_TableData"), + dataName + ); + newContent.setShowObject(Toolkit.i18nText("Fine-Design_Basic_DS_Report_TableData")); + newContent.setReplaceObject(source.getTableData(dataName)); + newContent.getContentObject().setDbTableData(((DBTableData) source.getTableData(dataName))); + sqlInfos.add(new SQLInfo(newContent)); + } + } + } + + } + + public ArrayList getSqlInfos() { + return sqlInfos; + } + + public void setSqlInfos(ArrayList sqlInfos) { + this.sqlInfos = sqlInfos; + } + + @Override + public String toString() { + return AssistUtils.toString(this); + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/FrmWidgetType.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/FrmWidgetType.java new file mode 100644 index 0000000000..e86c5e3e1c --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/FrmWidgetType.java @@ -0,0 +1,186 @@ +package com.fr.design.actions.replace.action.content.widget; + +import com.fr.design.actions.replace.action.content.component.ComponentType; +import com.fr.design.actions.replace.info.DealWithInfoValue; +import com.fr.design.actions.replace.info.Info; +import com.fr.design.actions.replace.info.WidgetInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.actions.replace.utils.ShowValueUtils; +import com.fr.form.ui.WaterMark; +import com.fr.form.ui.Widget; +import com.fr.form.ui.container.WScaleLayout; +import com.fr.form.ui.widget.CRBoundsWidget; +import javafx.util.Pair; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.HashMap; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-29 + */ +public enum FrmWidgetType implements SearchFrmWidget, DealWithInfoValue { + /** + * 自适应布局 + */ + W_SCALE_LAYOUT("WScaleLayout") { + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + WScaleLayout widget = (WScaleLayout) info.getContent().getReplaceObject(); + if (((WidgetInfo) info).isWaterMark()) { + FrmWidgetType frmWidgetType = FrmWidgetType.match(((CRBoundsWidget) widget.getWidget(0)).getWidget().getClass().getSimpleName()); + if (frmWidgetType != null) { + frmWidgetType.setValue(info, findStr, replaceStr, operatorArray); + } + } else { + ComponentType componentType = ComponentType.match(widget.getClass().getSimpleName()); + if (componentType != null) { + componentType.setValue(info, findStr, replaceStr, operatorArray); + } + } + + } + }, + /** + * 文本控件 + */ + TEXT_EDITOR("TextEditor"), + /** + * 标签控件 + */ + LABEL("Label"), + /** + * 按钮控件 + */ + FREE_BUTTON("FreeButton"), + /** + * 下拉框控件 + */ + COMBO_BOX("ComboBox"), + /** + * 下拉复选框控件 + */ + COMBO_CHECK_BOX("ComboCheckBox"), + /** + * 日期控件 + */ + DATE_EDITOR("DateEditor"), + /** + * 数字控件 + */ + NUMBER_EDITOR("NumberEditor"), + /** + * 下拉树控件 + */ + TREE_COMBO_BOX_EDITOR("TreeComboBoxEditor"), + /** + * 单选按钮组控件 + */ + RADIO_GROUP("RadioGroup"), + /** + * 复选按钮组控件 + */ + CHECK_BOX_GROUP("CheckBoxGroup"), + /** + * 查询按钮 + */ + FORM_SUBMIT_BUTTON("FormSubmitButton"), + /** + * 文本域控件 + */ + TEXT_AREA("TextArea"), + /** + * 密码控件 + */ + PASS_WORD("Password"), + /** + * 复选按钮控件 + */ + CHECK_BOX("CheckBox"), + /** + * 视图树 + */ + TREE_EDITOR("TreeEditor"), + /** + * 文件控件 + */ + MULTI_FILE_EDITOR("MultiFileEditor"); + + + String name; + + FrmWidgetType(String name) { + this.name = name; + } + + + /** + * 处理绝对布局或者已经是真正存储对象的控件 + * + * @param content + * @param widget + * @return + */ + public ArrayList dealAbsoluteWidget(ITContent content, Widget widget) { + ArrayList widgetInfos = new ArrayList<>(); + ITContent newContent = content.copy(); + widgetInfos.add(new WidgetInfo(newContent)); + return widgetInfos; + } + + + /** + * 匹配 + * + * @param name + * @return + */ + @Nullable + public static FrmWidgetType match(String name) { + FrmWidgetType[] values = FrmWidgetType.values(); + for (FrmWidgetType value : values) { + if (value.name.equals(name)) { + return value; + } + } + return null; + } + + + @Override + public HashMap getValue(Object... o) { + return new HashMap<>(); + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + Widget widget = (Widget) info.getContent().getReplaceObject(); + if (widget instanceof WScaleLayout) { + widget = ((CRBoundsWidget) ((WScaleLayout) widget).getWidget(0)).getWidget(); + } + if (((WidgetInfo) info).isWaterMark()) { + WaterMark waterMark = (WaterMark) widget; + info.updateOldStr(waterMark.getWaterMark(), findStr); + waterMark.setWaterMark(ShowValueUtils.replaceAll(waterMark.getWaterMark(), findStr, replaceStr)); + } else { + info.updateOldStr(widget.getWidgetName(), findStr); + ComponentType componentType = ComponentType.match(widget.getClass().getSimpleName()); + if (componentType != null) { + componentType.setValue(info, findStr, replaceStr, operatorArray); + } + } + } + + @Override + public String getInfoShowStr(Info info) { + return info.getContent().getOldShowStr(); + } + + @Override + public ArrayList addFrmWidget2Array(ITContent content, Widget widget) { + return dealAbsoluteWidget(content, widget); + } + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchWidgetAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchWidgetAction.java new file mode 100644 index 0000000000..28ae1cef3a --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchWidgetAction.java @@ -0,0 +1,166 @@ +package com.fr.design.actions.replace.action.content.widget; + +import com.fr.base.parameter.ParameterUI; +import com.fr.design.actions.replace.action.SearchAction; +import com.fr.design.actions.replace.action.content.cell.SearchCellAction; +import com.fr.design.actions.replace.action.content.component.SearchComponentAction; +import com.fr.design.actions.replace.info.CellInfo; +import com.fr.design.actions.replace.info.ComponentInfo; +import com.fr.design.actions.replace.info.WidgetInfo; +import com.fr.design.actions.replace.info.base.ITContent; + +import com.fr.design.mainframe.JTemplate; +import com.fr.form.main.Form; +import com.fr.form.ui.Widget; +import com.fr.form.ui.container.WLayout; +import com.fr.form.ui.widget.CRBoundsWidget; +import com.fr.main.impl.WorkBook; +import com.fr.main.parameter.ReportParameterAttr; +import com.fr.report.cell.TemplateCellElement; +import com.fr.report.cell.cellattr.highlight.DefaultHighlight; +import com.fr.report.cell.cellattr.highlight.HighlightAction; +import com.fr.report.cell.cellattr.highlight.HighlightGroup; +import com.fr.report.cell.cellattr.highlight.WidgetHighlightAction; +import com.fr.stable.StringUtils; + +import java.util.ArrayList; + +/** + * 获取控件 + * 目前获取位置:单元格本身、单元格条件属性内超链控件、参数面板控件、决策报表的组件 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-16 + */ +public class SearchWidgetAction implements SearchAction { + ArrayList widgetInfos; + + public SearchWidgetAction(JTemplate jTemplate) { + setWidgetInfos(search4Infos(jTemplate)); + } + + @Override + public ArrayList search4Infos(JTemplate jTemplate) { + ArrayList widgetInfos = new ArrayList<>(); + ITContent content = new ITContent(); + content.setTemplateName(jTemplate.getTemplateName()); + //这边拿SearchCellAction里的CellInfo来查找,由于在SearchCellAction里面已经考虑了决策报表和普通报表两种情况了,这边就不用再做区分 + addCellWidget2Array(widgetInfos, jTemplate); + content.addTRL(jTemplate.getTemplateName()); + if (jTemplate.getTarget() instanceof WorkBook) { + addWorkBookParaWidget2Array(content, widgetInfos, jTemplate); + } else if (jTemplate.getTarget() instanceof Form) { + addFrmWidget2Array(content, widgetInfos, jTemplate); + } + + return widgetInfos; + } + + private void addFrmWidget2Array(ITContent content, ArrayList widgetInfos, JTemplate jTemplate) { + SearchComponentAction searchComponentAction = new SearchComponentAction(jTemplate); + for (ComponentInfo componentInfo : searchComponentAction.getComponentInfos()) { + FrmWidgetType frmWidgetType = FrmWidgetType.match(componentInfo.getContent().getReplaceObject().getClass().getSimpleName()); + if (frmWidgetType != null) { + widgetInfos.addAll(frmWidgetType.addFrmWidget2Array(componentInfo.getContent(), (Widget) componentInfo.getContent().getReplaceObject())); + } + } + + } + + private void addCellWidget2Array(ArrayList widgetInfos, JTemplate jTemplate) { + SearchCellAction searchCellAction = new SearchCellAction(jTemplate); + if (searchCellAction.getCellInfos().size() > 0) { + for (CellInfo cellInfo : searchCellAction.getCellInfos()) { + //单元格本身的控件 + addWidget2ArrayFromCell(widgetInfos, cellInfo); + //单元格条件属性中超链内的控件 + addWidget2ArrayFromCellHighlight(widgetInfos, cellInfo); + } + } + + } + + private void addWidget2ArrayFromCellHighlight(ArrayList widgetInfos, CellInfo cellInfo) { + if (cellInfo.getContent().getReplaceObject() instanceof TemplateCellElement) { + TemplateCellElement cell = (TemplateCellElement) cellInfo.getContent().getReplaceObject(); + if (cell.getHighlightGroup() != null) { + HighlightGroup highlightGroup = cell.getHighlightGroup(); + dealWithHighlightGroup4Widget(highlightGroup, widgetInfos, cellInfo); + } + } + } + + private void dealWithHighlightGroup4Widget(HighlightGroup highlightGroup, ArrayList widgetInfos, CellInfo cellInfo) { + for (int i = 0; i < highlightGroup.size(); i++) { + for (int j = 0; j < ((DefaultHighlight) highlightGroup.getHighlight(i)).actionCount(); j++) { + HighlightAction highlightAction = ((DefaultHighlight) highlightGroup.getHighlight(i)).getHighlightAction(j); + //处理HighlightAction + if (isHighlightWidgetExist(highlightAction)) { + ITContent content = cellInfo.getContent().copy(); + content.addOtherPos("条件属性-超链控件"); + content.setReplaceObject(((WidgetHighlightAction) highlightAction).getWidget()); + content.setShowObject(cellInfo.getContent().getReplaceObject()); + widgetInfos.add(new WidgetInfo(content)); + } + } + } + } + + private boolean isHighlightWidgetExist(HighlightAction highlightAction) { + return highlightAction instanceof WidgetHighlightAction && ((WidgetHighlightAction) highlightAction).getWidget() != null; + } + + private void addWidget2ArrayFromCell(ArrayList widgetInfos, CellInfo cellInfo) { + if (cellInfo.getContent().getReplaceObject() instanceof TemplateCellElement + && ((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getWidget() != null) { + // 单元格内有控件 + ITContent newContent = cellInfo.getContent().copy(); + + Widget widget = ((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getWidget(); + newContent.addOtherPos("控件"); + if (!StringUtils.isEmpty(widget.getWidgetName())) { + newContent.addOtherPos(widget.getWidgetName()); + } + newContent.getContentObject().setWidget(widget); + newContent.setReplaceObject(widget); + newContent.setShowObject(cellInfo.getContent().getReplaceObject()); + widgetInfos.add(new WidgetInfo(newContent)); + + } + } + + private void addWorkBookParaWidget2Array(ITContent content, ArrayList widgetInfos, JTemplate jTemplate) { + WorkBook workBook = (WorkBook) jTemplate.getTarget(); + ReportParameterAttr reportParameterAttr = workBook.getReportParameterAttr(); + if (reportParameterAttr != null && reportParameterAttr.getParameterUI() != null) { + ParameterUI parameterUI = reportParameterAttr.getParameterUI(); + Widget[] widgets = parameterUI.getAllWidgets(); + for (Widget widget : widgets) { + ITContent newContent = content.copy(); + newContent.addOtherPos("参数面板控件-" + widget.getWidgetName()); + newContent.setReplaceObject(widget); + newContent.getContentObject().setWidget(widget); + newContent.setShowObject("参数面板控件"); + widgetInfos.add(new WidgetInfo(newContent)); + } + } + + } + + /** + * 是否为空 + * @return 为空返回true + */ + public boolean isWidgetInfosEmpty() { + return widgetInfos.isEmpty(); + } + + public ArrayList getWidgetInfos() { + return widgetInfos; + } + + public void setWidgetInfos(ArrayList widgetInfos) { + this.widgetInfos = widgetInfos; + } +} From 84e0de218338b316ad413a682ac2cd70065c6e01 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Wed, 14 Sep 2022 14:58:08 +0800 Subject: [PATCH 10/93] =?UTF-8?q?REPORT-75998=20=E6=90=9C=E7=B4=A2JS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/content/js/SearchCellJSAction.java | 123 ++++++++++++++++ .../content/js/SearchFloatJSAction.java | 65 +++++++++ .../action/content/js/SearchJSAction.java | 46 ++++++ .../action/content/js/SearchWebJSAction.java | 137 ++++++++++++++++++ .../content/js/SearchWidgetJSAction.java | 57 ++++++++ 5 files changed, 428 insertions(+) create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchCellJSAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchFloatJSAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchJSAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWidgetJSAction.java diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchCellJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchCellJSAction.java new file mode 100644 index 0000000000..9c066b2eb1 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchCellJSAction.java @@ -0,0 +1,123 @@ +package com.fr.design.actions.replace.action.content.js; + +import com.fr.chart.chartattr.ChartCollection; +import com.fr.design.actions.replace.action.SearchAction; +import com.fr.design.actions.replace.action.content.cell.SearchCellAction; +import com.fr.design.actions.replace.info.CellInfo; +import com.fr.design.actions.replace.info.JSInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.actions.replace.utils.SearchJSUtils; +import com.fr.design.i18n.Toolkit; +import com.fr.design.mainframe.JTemplate; +import com.fr.js.JavaScriptImpl; +import com.fr.js.NameJavaScript; +import com.fr.js.NameJavaScriptGroup; +import com.fr.plugin.chart.base.VanChartHtmlLabel; +import com.fr.report.cell.CellElement; +import com.fr.report.cell.TemplateCellElement; +import com.fr.report.cell.cellattr.highlight.DefaultHighlight; +import com.fr.report.cell.cellattr.highlight.HighlightAction; +import com.fr.report.cell.cellattr.highlight.HyperlinkHighlightAction; +import javafx.util.Pair; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-13 + */ +public class SearchCellJSAction implements SearchAction { + + + public SearchCellJSAction(JTemplate jTemplate, ArrayList jsInfos) { + jsInfos.addAll(search4Infos(jTemplate)); + } + + + @Override + public ArrayList search4Infos(JTemplate jTemplate) { + ArrayList jsInfos = new ArrayList<>(); + addJSInfos2ListFromCell(jTemplate, jsInfos); + return jsInfos; + } + + + private void addJSInfos2ListFromCell(JTemplate jTemplate, ArrayList jsInfos) { + SearchCellAction searchCellAction = new SearchCellAction(jTemplate); + for (CellInfo cellInfo : searchCellAction.getCellInfos()) { + CellElement cell = (CellElement) cellInfo.getContent().getReplaceObject(); + ITContent newContent4Cell = cellInfo.getContent().copy(); + ITContent newContent4CellCondition = cellInfo.getContent().copy(); + ITContent newContent4CellWidgetCondition = cellInfo.getContent().copy(); + //单元格的超级链接里面的JS + SearchJSUtils.addJSInfosFromHyperLink(cell, jsInfos, newContent4Cell); + + //单元格条件属性里的JS + newContent4CellCondition.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Condition_Attributes")); + searchCellConditionJS(cell, jsInfos, newContent4CellCondition); + + + //单元格如果是图表还需要额外处理 + if (cell.getValue() instanceof ChartCollection) { + ArrayList> htmlLabels = SearchJSUtils.getHtmlLabel((ChartCollection) cell.getValue()); + ArrayList nameJavaScripts = SearchJSUtils.getNameJavaScript((ChartCollection) cell.getValue()); + //图表-样式-标签以及图表-特效-条件显示 + ITContent htmlITContent = cellInfo.getContent().copy(); + htmlITContent.getContentObject().setCell(cell); + htmlITContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Chart")); + SearchJSUtils.addJSInfosFromHtmlLabel(htmlITContent, htmlLabels, jsInfos); + //图表-特效-交互属性 + ITContent conditionContent = cellInfo.getContent().copy(); + conditionContent.getContentObject().setCell(cell); + conditionContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Chart_Interactive"), + Toolkit.i18nText("Fine-Design_Report_Hyperlink") + ); + SearchJSUtils.addJSInfosFromNameJS(conditionContent, nameJavaScripts, jsInfos); + } + } + } + + private void searchCellConditionJS(CellElement cell, ArrayList jsInfos, ITContent content) { + if (((TemplateCellElement) cell).getHighlightGroup() != null) { + for (int i = 0; i < ((TemplateCellElement) cell).getHighlightGroup().size(); i++) { + NameJavaScriptGroup njsg = getJSFromAction(((DefaultHighlight) ((TemplateCellElement) cell).getHighlightGroup().getHighlight(i))); + getAllJSFromNameJavaScriptGroup(cell, jsInfos, njsg, content); + + } + } + } + + private void getAllJSFromNameJavaScriptGroup(CellElement cell, ArrayList jsInfos, NameJavaScriptGroup njsg, ITContent content) { + if (isJSExist(njsg)) { + for (int i = 0; i < njsg.size(); i++) { + if (njsg.getNameHyperlink(i).getJavaScript() instanceof JavaScriptImpl) { + ITContent newContent = content.copy(); + newContent.getContentObject().setCell(cell); + newContent.getContentObject().setNameJavaScript(njsg.getNameHyperlink(i)); + newContent.setReplaceObject(njsg.getNameHyperlink(i)); + SearchJSUtils.addJSInfos(jsInfos, new JSInfo(newContent)); + } + + } + } + } + + private boolean isJSExist(NameJavaScriptGroup njsg) { + return njsg != null; + } + + private NameJavaScriptGroup getJSFromAction(DefaultHighlight highlight) { + for (int i = 0; i < highlight.actionCount(); i++) { + if (isHighlightAction(highlight.getHighlightAction(i))) { + return ((HyperlinkHighlightAction) highlight.getHighlightAction(i)).getHperlink(); + } + } + return null; + } + + private boolean isHighlightAction(HighlightAction highlightAction) { + return highlightAction instanceof HyperlinkHighlightAction; + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchFloatJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchFloatJSAction.java new file mode 100644 index 0000000000..7f29a12ea6 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchFloatJSAction.java @@ -0,0 +1,65 @@ +package com.fr.design.actions.replace.action.content.js; + +import com.fr.chart.chartattr.ChartCollection; +import com.fr.design.actions.replace.action.SearchAction; +import com.fr.design.actions.replace.action.content.floatelement.SearchFloatAction; +import com.fr.design.actions.replace.info.FloatInfo; +import com.fr.design.actions.replace.info.JSInfo; +import com.fr.design.actions.replace.info.base.ITContent; + +import com.fr.design.actions.replace.utils.SearchJSUtils; +import com.fr.design.i18n.Toolkit; +import com.fr.design.mainframe.JTemplate; +import com.fr.js.NameJavaScript; +import com.fr.main.impl.WorkBook; +import com.fr.plugin.chart.base.VanChartHtmlLabel; +import com.fr.report.cell.FloatElement; +import com.fr.report.elementcase.ElementCase; +import com.fr.report.poly.PolyECBlock; +import com.fr.report.report.Report; +import javafx.util.Pair; + +import java.util.*; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-15 + */ +public class SearchFloatJSAction implements SearchAction { + + public SearchFloatJSAction(JTemplate jTemplate, ArrayList jsInfos) { + jsInfos.addAll(search4Infos(jTemplate)); + } + + @Override + public ArrayList search4Infos(JTemplate jTemplate) { + ArrayList jsInfos = new ArrayList<>(); + addJSInfos2ListFromFloat(jTemplate, jsInfos); + return jsInfos; + } + + private void addJSInfos2ListFromFloat(JTemplate jTemplate, ArrayList jsInfos) { + SearchFloatAction searchFloatAction = new SearchFloatAction(jTemplate); + for (FloatInfo floatInfo : searchFloatAction.getFloatInfos()) { + FloatElement floatElement = (FloatElement) floatInfo.getContent().getReplaceObject(); + ITContent content = floatInfo.getContent().copy(); + //从超级链接搜索 + SearchJSUtils.addJSInfosFromHyperLink(floatElement, jsInfos, content); + if (floatElement.getValue() instanceof ChartCollection) { + ArrayList> htmlLabels = SearchJSUtils.getHtmlLabel((ChartCollection) floatElement.getValue()); + ArrayList nameJavaScripts = SearchJSUtils.getNameJavaScript((ChartCollection) floatElement.getValue()); + //图表-样式-标签以及图表-特效-条件显示 + SearchJSUtils.addJSInfosFromHtmlLabel(content, htmlLabels, jsInfos); + //图表-特效-交互属性 + ITContent newContent = content.copy(); + newContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Chart_Animation_Special"), + Toolkit.i18nText("Fine-Design_Chart_Interactive") + ); + SearchJSUtils.addJSInfosFromNameJS(newContent, nameJavaScripts, jsInfos); + } + } + } + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchJSAction.java new file mode 100644 index 0000000000..a62543d369 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchJSAction.java @@ -0,0 +1,46 @@ +package com.fr.design.actions.replace.action.content.js; + +import com.fr.design.actions.replace.action.SearchAction; +import com.fr.design.actions.replace.info.JSInfo; + +import com.fr.design.mainframe.JTemplate; + +import java.util.ArrayList; + + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-12 + */ +public class SearchJSAction implements SearchAction { + private ArrayList jsInfos; + + public SearchJSAction(JTemplate jTemplate) { + setJsInfos(search4Infos(jTemplate)); + } + + @Override + public ArrayList search4Infos(JTemplate jTemplate) { + ArrayList jsInfos = new ArrayList<>(); + //从单元格获取JS + new SearchCellJSAction(jTemplate, jsInfos); + //从参数面板控件 + new SearchWidgetJSAction(jTemplate, jsInfos); + //从模板Web属性 + new SearchWebJSAction(jTemplate, jsInfos); + //从悬浮元素 + new SearchFloatJSAction(jTemplate, jsInfos); + return jsInfos; + } + + public ArrayList getJsInfos() { + return jsInfos; + } + + public void setJsInfos(ArrayList jsInfos) { + this.jsInfos = jsInfos; + } + + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java new file mode 100644 index 0000000000..6c84d71af5 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java @@ -0,0 +1,137 @@ +package com.fr.design.actions.replace.action.content.js; + +import com.fr.design.actions.replace.action.SearchAction; +import com.fr.design.actions.replace.info.JSInfo; + +import com.fr.design.actions.replace.info.base.ITContent; + +import com.fr.design.actions.replace.utils.SearchJSUtils; +import com.fr.design.i18n.Toolkit; +import com.fr.design.mainframe.JTemplate; +import com.fr.form.event.Listener; +import com.fr.form.ui.CustomToolBarButton; +import com.fr.form.ui.Widget; + +import com.fr.js.JavaScriptImpl; +import com.fr.main.impl.WorkBook; +import com.fr.report.web.ToolBarManager; +import com.fr.report.web.WebContent; +import com.fr.web.attr.ReportWebAttr; + +import java.util.ArrayList; +import java.util.HashMap; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-15 + */ +public class SearchWebJSAction implements SearchAction { + + private final static HashMap map = new HashMap<>(); + private ArrayList arrayList = new ArrayList<>(); + + + static { + map.put("WebPage", Toolkit.i18nText("Fine-Design_Report_Pagination_Setting")); + map.put("WebWrite", Toolkit.i18nText("Fine-Design_Report_Write_Setting")); + map.put("WebView", Toolkit.i18nText("Fine-Design_Report_Data_Analysis_Settings")); + } + + public SearchWebJSAction(JTemplate jTemplate, ArrayList jsInfos) { + jsInfos.addAll(search4Infos(jTemplate)); + } + + @Override + public ArrayList search4Infos(JTemplate jTemplate) { + ArrayList jsInfos = new ArrayList<>(); + addJSInfos2ListFromWeb(jTemplate, jsInfos); + return jsInfos; + } + + private void addJSInfos2ListFromWeb(JTemplate jTemplate, ArrayList jsInfos) { + if (jTemplate.getTarget() instanceof WorkBook) { + WorkBook workBook = (WorkBook) jTemplate.getTarget(); + ReportWebAttr webAttr = workBook.getReportWebAttr(); + ITContent content = new ITContent(); + content.setTemplateName(jTemplate.getTemplateName()); + addWebContent2Array(webAttr); + for (int i = 0; i < arrayList.size(); i++) { + addJSInfos2ListFromArray(content, jsInfos, arrayList.get(i)); + } + } + } + + private void addJSInfos2ListFromArray(ITContent content, ArrayList jsInfos, WebContent webContent) { + ITContent newContent = content.copy(); + if (map.containsKey(webContent.getClass().getSimpleName())) { + newContent.addOtherPos(map.get(webContent.getClass().getSimpleName())); + } + addJSInfos2ListFromWebButton(newContent, jsInfos, webContent); + addJSInfos2ListFromWebListener(newContent, jsInfos, webContent); + } + + private void addJSInfos2ListFromWebListener(ITContent content, ArrayList jsInfos, WebContent webContent) { + for (int i = 0; i < webContent.getListenerSize(); i++) { + Listener listener = webContent.getListener(i); + ITContent newContent = content.copy(); + newContent.setReplaceObject(listener); + SearchJSUtils.searchJSFromListener(jsInfos, newContent); + } + } + + private void addJSInfos2ListFromWebButton(ITContent content, ArrayList jsInfos, WebContent webContent) { + if (hasToolBarManagers(webContent.getToolBarManagers())) { + for (ToolBarManager toolBarManager : webContent.getToolBarManagers()) { + dealWithCustonToolBarButtonImpl(content, jsInfos, toolBarManager); + } + } + } + + private void addWebContent2Array(ReportWebAttr webAttr) { + if (webAttr != null) { + addContent(arrayList, webAttr.getWebWrite()); + addContent(arrayList, webAttr.getWebPage()); + addContent(arrayList, webAttr.getWebView()); + } + + } + + private void addContent(ArrayList arrayList, WebContent webContent) { + if (webContent != null) { + arrayList.add(webContent); + } + } + + private void dealWithCustonToolBarButtonImpl(ITContent content, ArrayList jsInfos, ToolBarManager toolBarManager) { + for (int i = 0; i < toolBarManager.getToolBar().getWidgetSize(); i++) { + if (isWidgetIntanceofCustomToolBarButton(toolBarManager.getToolBar().getWidget(i))) { + ITContent newContent = content.copy(); + newContent.getContentObject().setWidget(toolBarManager.getToolBar().getWidget(i)); + addJSInfos2ListFromButtonImpl(newContent, jsInfos); + } + } + + } + + private void addJSInfos2ListFromButtonImpl(ITContent content, ArrayList jsInfos) { + + if (((CustomToolBarButton) content.getContentObject().getWidget()).getJSImpl() != null + && ((CustomToolBarButton) content.getContentObject().getWidget()).getJSImpl() instanceof JavaScriptImpl) { + ITContent newContent = content.copy(); + newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Report_Custom_Form_Button")); + newContent.getContentObject().setJs(((CustomToolBarButton) content.getContentObject().getWidget()).getJSImpl()); + newContent.setReplaceObject(((CustomToolBarButton) content.getContentObject().getWidget()).getJSImpl()); + SearchJSUtils.addJSInfos(jsInfos, new JSInfo(newContent)); + } + + } + + private boolean hasToolBarManagers(ToolBarManager[] toolBarManagers) { + return toolBarManagers.length > 0; + } + + private boolean isWidgetIntanceofCustomToolBarButton(Widget widget) { + return widget instanceof CustomToolBarButton; + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWidgetJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWidgetJSAction.java new file mode 100644 index 0000000000..2881af5c0f --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWidgetJSAction.java @@ -0,0 +1,57 @@ +package com.fr.design.actions.replace.action.content.js; + +import com.fr.base.parameter.ParameterUI; +import com.fr.design.actions.replace.action.SearchAction; +import com.fr.design.actions.replace.action.content.component.SearchComponentAction; +import com.fr.design.actions.replace.action.content.widget.SearchWidgetAction; +import com.fr.design.actions.replace.info.ComponentInfo; +import com.fr.design.actions.replace.info.JSInfo; + +import com.fr.design.actions.replace.info.WidgetInfo; +import com.fr.design.actions.replace.info.base.ITContent; + +import com.fr.design.actions.replace.utils.SearchJSUtils; +import com.fr.design.i18n.Toolkit; +import com.fr.design.mainframe.JTemplate; +import com.fr.form.ui.Widget; +import com.fr.main.impl.WorkBook; +import com.fr.main.parameter.ReportParameterAttr; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-13 + */ +public class SearchWidgetJSAction implements SearchAction { + public SearchWidgetJSAction(JTemplate jTemplate,ArrayList jsInfos){ + jsInfos.addAll(search4Infos(jTemplate)); + } + @Override + public ArrayList search4Infos(JTemplate jTemplate) { + ArrayList jsInfos = new ArrayList<>(); + addJSInfos2ListFromWidget(jTemplate,jsInfos); + return jsInfos; + } + + private void addJSInfos2ListFromWidget(JTemplate jTemplate, ArrayList jsInfos) { + if (jTemplate.getTarget() instanceof WorkBook){ + SearchWidgetAction searchWidgetAction = new SearchWidgetAction(jTemplate); + for (WidgetInfo widgetInfo : searchWidgetAction.getWidgetInfos()){ + ITContent content = widgetInfo.getContent().copy(); + content.addOtherPos(Toolkit.i18nText("Fine-Design_Report_Event")); + SearchJSUtils.selectJSAction(jsInfos,content); + } + } else { + SearchComponentAction searchComponentAction = new SearchComponentAction(jTemplate); + for (ComponentInfo componentInfo : searchComponentAction.getComponentInfos()){ + ITContent content = componentInfo.getContent().copy(); + content.addOtherPos(Toolkit.i18nText("Fine-Design_Report_Event")); + SearchJSUtils.selectJSAction(jsInfos,content); + } + } + + } + +} From eeb25e7dfafa2cebd93397c63c0b732e074a5ee9 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Wed, 14 Sep 2022 14:59:21 +0800 Subject: [PATCH 11/93] =?UTF-8?q?REPORT-75998=20=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E5=85=AC=E5=BC=8F=E2=80=94=E2=80=94=E5=8D=95=E5=85=83=E6=A0=BC?= =?UTF-8?q?=E3=80=81=E5=9B=BE=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../formula/AbstractSearchFormulaAction.java | 25 ++ .../content/formula/FormulaReplaceObject.java | 396 ++++++++++++++++++ .../content/formula/SearchFormulaAction.java | 46 ++ .../cell/AbstractSearchCellFormulaAction.java | 37 ++ .../formula/cell/SearchCellFormulaAction.java | 198 +++++++++ .../cell/SearchCellFormulaTypeAction.java | 27 ++ .../cell/SearchDSColumnFormulaAction.java | 117 ++++++ .../formula/cell/SearchRichFormulaAction.java | 34 ++ .../cell/SearchSubReportFormulaAction.java | 36 ++ .../SearchChartCollectionFormulaAction.java | 213 ++++++++++ 10 files changed, 1129 insertions(+) create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/AbstractSearchFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/AbstractSearchCellFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaTypeAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchDSColumnFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchRichFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchSubReportFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/AbstractSearchFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/AbstractSearchFormulaAction.java new file mode 100644 index 0000000000..9746cc169a --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/AbstractSearchFormulaAction.java @@ -0,0 +1,25 @@ +package com.fr.design.actions.replace.action.content.formula; + +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.Info; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.mainframe.JTemplate; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-19 + */ +public abstract class AbstractSearchFormulaAction implements SearchFormula{ + @Override + public void searchFormula(ArrayList formulaInfos, ITContent content) { + + } + + @Override + public ArrayList search4Infos(JTemplate jTemplate) { + return null; + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java new file mode 100644 index 0000000000..2971945689 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java @@ -0,0 +1,396 @@ +package com.fr.design.actions.replace.action.content.formula; + +import com.fr.base.BaseFormula; +import com.fr.base.Formula; +import com.fr.base.Parameter; +import com.fr.base.StoreProcedureParameter; +import com.fr.base.iofile.attr.WatermarkAttr; +import com.fr.base.present.FormulaPresent; +import com.fr.data.condition.FormulaCondition; +import com.fr.data.core.Compare; +import com.fr.design.actions.replace.action.ShowValue; +import com.fr.design.actions.replace.info.DealWithInfoValue; +import com.fr.design.actions.replace.info.Info; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.actions.replace.utils.ShowValueUtils; +import com.fr.design.file.HistoryTemplateListCache; +import com.fr.js.SingleJavaScript; +import com.fr.main.impl.WorkBook; +import com.fr.report.cell.CellElement; +import com.fr.report.cell.cellattr.CellInsertPolicyAttr; +import com.fr.report.cell.cellattr.core.RichText; +import com.fr.report.cell.cellattr.core.group.DSColumn; +import com.fr.stable.FormulaProvider; +import com.fr.stable.ParameterProvider; +import com.fr.stable.StringUtils; +import javafx.util.Pair; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.HashMap; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-25 + */ +public enum FormulaReplaceObject implements DealWithInfoValue { + /** + * Formula类型(最基础也是最常见) + */ + FORMULA("Formula") { + @Override + public HashMap getValue(Object... o) { + HashMap map = new HashMap<>(); + if (!StringUtils.isEmpty(((Formula) o[0]).getContent())) { + map.put("content", ((Formula) o[0]).getContent()); + } + return map; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + Object replaceObject = info.getContent().getReplaceObject(); + info.updateOldStr(((Formula) replaceObject).getContent(), findStr); + ((Formula) replaceObject).setContent(ShowValueUtils.replaceAll(((Formula) replaceObject).getContent(), findStr, replaceStr)); + } + }, + /** + * FormulaCondition + */ + FORMULA_CONDITION("FormulaCondition") { + @Override + public HashMap getValue(Object... o) { + HashMap map = new HashMap<>(); + if (!StringUtils.isEmpty(((FormulaCondition) o[0]).getFormula())) { + map.put("content", ((FormulaCondition) o[0]).getFormula()); + } + return map; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + Object replaceObject = info.getContent().getReplaceObject(); + //更新上一次操作的信息 + info.updateOldStr(((FormulaCondition) replaceObject).getFormula(), findStr); + + ((FormulaCondition) replaceObject).setFormula(ShowValueUtils.replaceAll(((FormulaCondition) replaceObject).getFormula(), findStr, replaceStr)); + } + + }, + /** + * Compare + */ + COMPARE("Compare") { + @Override + public HashMap getValue(Object... o) { + HashMap map = new HashMap<>(); + if (!StringUtils.isEmpty(((Formula) ((Compare) o[0]).getValue()).getContent())) { + map.put("content", ((Formula) ((Compare) o[0]).getValue()).getContent()); + } + return map; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + Object replaceObject = info.getContent().getReplaceObject(); + if (((Compare) replaceObject).getValue() instanceof Formula) { + Formula formula = (Formula) ((Compare) replaceObject).getValue(); + info.updateOldStr(formula.getContent(), findStr); + + formula.setContent(ShowValueUtils.replaceAll(formula.getContent(), findStr, replaceStr)); + } + } + + }, + /** + * 富文本 + */ + RICH_TEXT("RichText") { + @Override + public HashMap getValue(Object... o) { + HashMap map = new HashMap<>(); + if (!StringUtils.isEmpty(((RichText) ((CellElement) o[0]).getValue()).getContent())) { + map.put("content", ((RichText) ((CellElement) o[0]).getValue()).getContent()); + } + return map; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + //todo 富文本公式处理 + } + + }, + /** + * KV + */ + KV("KV") { + @Override + public HashMap getValue(Object... o) { + HashMap map = new HashMap<>(); + if (!StringUtils.isEmpty(((Formula) ((com.fr.base.core.KV) o[0]).getValue()).getContent())) { + map.put("content", ((Formula) ((com.fr.base.core.KV) o[0]).getValue()).getContent()); + } + return map; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + Object replaceObject = info.getContent().getReplaceObject(); + info.updateOldStr(((Formula) ((com.fr.base.core.KV) replaceObject).getValue()).getContent(), findStr); + + ((Formula) ((com.fr.base.core.KV) replaceObject).getValue()).setContent(ShowValueUtils.replaceAll(((Formula) ((com.fr.base.core.KV) replaceObject).getValue()).getContent(), findStr, replaceStr)); + } + + }, + /** + * 插入策略 + */ + CELL_INSERT_POLICY_ATTR("CellInsertPolicyAttr") { + @Override + public HashMap getValue(Object... o) { + HashMap map = new HashMap<>(); + if (!StringUtils.isEmpty(((Formula) (((CellInsertPolicyAttr) o[0]).getDefaultInsertValue())).getContent())) { + map.put("content", ((Formula) (((CellInsertPolicyAttr) o[0]).getDefaultInsertValue())).getContent()); + } + return map; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + Object replaceObject = info.getContent().getReplaceObject(); + info.updateOldStr(((Formula) (((CellInsertPolicyAttr) replaceObject).getDefaultInsertValue())).getContent(), findStr); + ((Formula) (((CellInsertPolicyAttr) replaceObject).getDefaultInsertValue())).setContent(ShowValueUtils.replaceAll(((Formula) (((CellInsertPolicyAttr) replaceObject).getDefaultInsertValue())).getContent(), findStr, replaceStr)); + } + + }, + /** + * present + */ + PRESENT("Present") { + @Override + public HashMap getValue(Object... o) { + HashMap map = new HashMap<>(); + if (!StringUtils.isEmpty(((FormulaPresent) o[0]).getFormulaContent())) { + map.put("content", ((FormulaPresent) o[0]).getFormulaContent()); + } + return map; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + Object replaceObject = info.getContent().getReplaceObject(); + info.updateOldStr(((FormulaPresent) replaceObject).getFormulaContent(), findStr); + + ((FormulaPresent) replaceObject).setFormulaContent(ShowValueUtils.replaceAll(((FormulaPresent) replaceObject).getFormulaContent(), findStr, replaceStr)); + } + + }, + /** + * SingleJavaScript + */ + SINGLE_JAVA_SCRIPT("SingleJavaScript") { + @Override + public HashMap getValue(Object... o) { + HashMap map = new HashMap<>(); + if (!StringUtils.isEmpty(((SingleJavaScript) o[0]).getFileName())) { + map.put("content", ((SingleJavaScript) o[0]).getFileName()); + } + return map; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + Object replaceObject = info.getContent().getReplaceObject(); + info.updateOldStr(((SingleJavaScript) replaceObject).getFileName(), findStr); + + ((SingleJavaScript) replaceObject).setFileName(ShowValueUtils.replaceAll(((SingleJavaScript) replaceObject).getFileName(), findStr, replaceStr)); + } + + }, + /** + * 参数 + */ + PARAMETER_PROVIDER("ParameterProvider") { + @Override + public HashMap getValue(Object... o) { + HashMap map = new HashMap<>(); + if (!StringUtils.isEmpty(((Formula) (((ParameterProvider) o[0]).getValue())).getContent())) { + map.put("content", ((Formula) (((ParameterProvider) o[0]).getValue())).getContent()); + } + return map; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + Object replaceObject = info.getContent().getReplaceObject(); + info.updateOldStr(((Formula) (((ParameterProvider) replaceObject).getValue())).getContent(), findStr); + + ((Formula) (((ParameterProvider) replaceObject).getValue())).setContent(ShowValueUtils.replaceAll(((Formula) (((ParameterProvider) replaceObject).getValue())).getContent(), findStr, replaceStr)); + } + + }, + /** + * FormulaProvider + */ + FORMULA_PROVIDER("FormulaProvider") { + @Override + public HashMap getValue(Object... o) { + HashMap map = new HashMap<>(); + if (!StringUtils.isEmpty(((FormulaProvider) o[0]).getContent())) { + map.put("content", ((FormulaProvider) o[0]).getContent()); + } + return map; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + Object replaceObject = info.getContent().getReplaceObject(); + info.updateOldStr(((FormulaProvider) replaceObject).getContent(), findStr); + + ((FormulaProvider) replaceObject).setContent(ShowValueUtils.replaceAll(((FormulaProvider) replaceObject).getContent(), findStr, replaceStr)); + } + + }, + /** + * 参数 + */ + PARAMETER("Parameter") { + @Override + public HashMap getValue(Object... o) { + HashMap map = new HashMap<>(); + if (!StringUtils.isEmpty(((Formula) (((Parameter) o[0]).getValue())).getContent())) { + map.put("content", ((Formula) (((Parameter) o[0]).getValue())).getContent()); + } + return map; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + Object replaceObject = info.getContent().getReplaceObject(); + info.updateOldStr(((Formula) (((Parameter) replaceObject).getValue())).getContent(), findStr); + + ((Formula) (((Parameter) replaceObject).getValue())).setContent(ShowValueUtils.replaceAll(((Formula) (((Parameter) replaceObject).getValue())).getContent(), findStr, replaceStr)); + } + + }, + /** + * 数据列 + */ + DS_COLUMN("DSColumn") { + @Override + public HashMap getValue(Object... o) { + HashMap map = new HashMap<>(); + if (!StringUtils.isEmpty(((DSColumn) o[0]).getResult())) { + map.put("content", ((DSColumn) o[0]).getResult()); + } + return map; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + Object replaceObject = info.getContent().getReplaceObject(); + info.updateOldStr(((DSColumn) replaceObject).getResult(), findStr); + + ((DSColumn) replaceObject).setResult(ShowValueUtils.replaceAll(((DSColumn) replaceObject).getResult(), findStr, replaceStr)); + } + + }, + /** + * 公式类型 + */ + BASE_FORMULA("BaseFormula") { + @Override + public HashMap getValue(Object... o) { + HashMap map = new HashMap<>(); + if (!StringUtils.isEmpty(((BaseFormula) o[0]).getContent())) { + map.put("content", ((BaseFormula) o[0]).getContent()); + } + return map; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + Object replaceObject = info.getContent().getReplaceObject(); + info.updateOldStr(((BaseFormula) replaceObject).getContent(), findStr); + + ((BaseFormula) replaceObject).setContent(ShowValueUtils.replaceAll(((BaseFormula) replaceObject).getContent(), findStr, replaceStr)); + } + + }, + /** + * 存储过程的参数 + */ + STORE_PROCEDURE_PARAMETER("StoreProcedureParameter") { + @Override + public HashMap getValue(Object... o) { + HashMap map = new HashMap<>(); + if (!StringUtils.isEmpty(((Formula) ((StoreProcedureParameter) o[0]).getValue()).getContent())) { + map.put("content", ((Formula) ((StoreProcedureParameter) o[0]).getValue()).getContent()); + } + return map; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + Object replaceObject = info.getContent().getReplaceObject(); + info.updateOldStr(((Formula) ((StoreProcedureParameter) replaceObject).getValue()).getContent(), findStr); + + ((Formula) ((StoreProcedureParameter) replaceObject).getValue()).setContent(ShowValueUtils.replaceAll(((Formula) ((StoreProcedureParameter) replaceObject).getValue()).getContent(), findStr, replaceStr)); + } + + }, + /** + * WatermarkAttr水印 + */ + WATER_MARK_ATTR("WatermarkAttr") { + @Override + public HashMap getValue(Object... o) { + HashMap map = new HashMap<>(); + if (!StringUtils.isEmpty(((WatermarkAttr) o[0]).getText())) { + map.put("content", ((WatermarkAttr) o[0]).getText()); + } + return map; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + WorkBook workBook = (WorkBook) HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getTarget(); + WatermarkAttr watermarkAttr = (WatermarkAttr) info.getContent().getReplaceObject(); + info.updateOldStr(watermarkAttr.getText(), findStr); + watermarkAttr.setText(ShowValueUtils.replaceAll(watermarkAttr.getText(), findStr, replaceStr)); + workBook.addAttrMark(watermarkAttr); + } + }; + + + String name; + + FormulaReplaceObject(String name) { + this.name = name; + } + + /** + * 匹配 + * + * @param name + * @return + */ + @Nullable + public static FormulaReplaceObject match(String name) { + FormulaReplaceObject[] values = FormulaReplaceObject.values(); + for (FormulaReplaceObject value : values) { + if (value.name.equals(name)) { + return value; + } + } + return null; + } + + + @Override + public String getInfoShowStr(Info info) { + return info.getContent().getOldShowStr(); + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormulaAction.java new file mode 100644 index 0000000000..2f5e03137b --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormulaAction.java @@ -0,0 +1,46 @@ +package com.fr.design.actions.replace.action.content.formula; + +import com.fr.design.actions.replace.action.SearchAction; +import com.fr.design.actions.replace.action.content.formula.cell.SearchCellFormulaAction; +import com.fr.design.actions.replace.action.content.formula.data.SearchDataFormulaAction; +import com.fr.design.actions.replace.action.content.formula.floatelement.SearchFloatFormulaAction; +import com.fr.design.actions.replace.action.content.formula.template.SearchTemplateFormulaAction; +import com.fr.design.actions.replace.action.content.formula.widget.SearchWidgetFormulaAction; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.mainframe.JTemplate; +import com.fr.form.main.Form; +import com.fr.main.impl.WorkBook; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-17 + */ +public class SearchFormulaAction implements SearchAction { + private ArrayList formulaInfos; + + public SearchFormulaAction(JTemplate jTemplate) { + setFormulaInfos(search4Infos(jTemplate)); + } + + @Override + public ArrayList search4Infos(JTemplate jTemplate) { + ArrayList formulaInfos = new ArrayList<>(); + new SearchCellFormulaAction(jTemplate, formulaInfos); + new SearchWidgetFormulaAction(jTemplate, formulaInfos); + new SearchDataFormulaAction(jTemplate, formulaInfos); + new SearchTemplateFormulaAction(jTemplate, formulaInfos); + new SearchFloatFormulaAction(jTemplate, formulaInfos); + return formulaInfos; + } + + public ArrayList getFormulaInfos() { + return formulaInfos; + } + + public void setFormulaInfos(ArrayList formulaInfos) { + this.formulaInfos = formulaInfos; + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/AbstractSearchCellFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/AbstractSearchCellFormulaAction.java new file mode 100644 index 0000000000..3156878f3f --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/AbstractSearchCellFormulaAction.java @@ -0,0 +1,37 @@ +package com.fr.design.actions.replace.action.content.formula.cell; + +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.Info; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.mainframe.JTemplate; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-30 + */ +public abstract class AbstractSearchCellFormulaAction implements SearchCellFormula{ + + + @Override + public void searchFormulaFromCell(JTemplate jTemplate, ArrayList formulaInfos) { + + } + + @Override + public void searchFormulaFromCellType(ArrayList formulaInfos, ITContent content) { + + } + + @Override + public void searchFormula(ArrayList formulaInfos, ITContent content) { + + } + + @Override + public ArrayList search4Infos(JTemplate jTemplate) { + return new ArrayList<>(); + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java new file mode 100644 index 0000000000..cc27b002ea --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java @@ -0,0 +1,198 @@ +package com.fr.design.actions.replace.action.content.formula.cell; + +import com.fr.base.Formula; +import com.fr.base.present.FormulaPresent; +import com.fr.design.actions.replace.action.content.cell.SearchCellAction; +import com.fr.design.actions.replace.action.content.formula.AbstractSearchFormulaAction; +import com.fr.design.actions.replace.action.content.formula.SearchFormula; +import com.fr.design.actions.replace.action.content.formula.highlight.condition.*; +import com.fr.design.actions.replace.action.content.formula.highlight.SearchHighlightFormulaAction; +import com.fr.design.actions.replace.action.content.formula.highlight.javascript.SearchJSHighlightAction; +import com.fr.design.actions.replace.info.CellInfo; +import com.fr.design.actions.replace.info.FormulaInfo; + +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; +import com.fr.design.mainframe.JTemplate; +import com.fr.js.NameJavaScriptGroup; +import com.fr.report.cell.CellElement; +import com.fr.report.cell.TemplateCellElement; +import com.fr.report.cell.cellattr.highlight.DefaultHighlight; +import com.fr.report.cell.cellattr.highlight.HighlightAction; +import com.fr.report.cell.cellattr.highlight.HighlightGroup; +import com.fr.report.core.sort.common.CellSortAttr; +import com.fr.report.core.sort.sortexpression.FormulaSortExpression; +import com.fr.report.core.sort.sortexpression.SortExpression; + +import java.util.ArrayList; +import java.util.HashMap; + +/** + * 搜索单元格中的公式 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-17 + */ +public class SearchCellFormulaAction extends AbstractSearchCellFormulaAction { + + + public static HashMap cellType = new HashMap<>(); + + static { + cellType.put("DSColumn", new SearchDSColumnFormulaAction()); + cellType.put("Formula", new SearchCellFormulaTypeAction()); + cellType.put("RichText", new SearchRichFormulaAction()); + cellType.put("SubReport", new SearchSubReportFormulaAction()); + } + + public static HashMap conditionHashMap = new HashMap<>(); + + static { + conditionHashMap.put("FormulaCondition", new SearchFormulaConditionAction()); + conditionHashMap.put("ObjectCondition", new SearchObjectConditionAction()); + conditionHashMap.put("ListCondition", new SearchListConditionAction()); + } + + public SearchCellFormulaAction(JTemplate jTemplate, ArrayList fomulaInfos) { + searchFormulaFromCell(jTemplate, fomulaInfos); + } + + /** + * 从单元格中寻找公式 + * + * @param jTemplate 指定搜索模板 + * @param formulaInfos 指定添加信息的数组 + */ + @Override + public void searchFormulaFromCell(JTemplate jTemplate, ArrayList formulaInfos) { + SearchCellAction searchCellAction = new SearchCellAction(jTemplate); + if (searchCellAction.isCellInfosExist()) { + for (CellInfo cellInfo : searchCellAction.getCellInfos()) { + //根据单元格类型的不同来进行不同的操作 + searchFormulaFromCellInfo(cellInfo, formulaInfos); + + if (cellInfo.getContent().getReplaceObject() instanceof TemplateCellElement) { + //单元格属性-排序 + searchCellSortAttr4Formula(cellInfo, formulaInfos); + //单元格属性-形态 + searchCellPresent4Formula(cellInfo, formulaInfos); + //单元格属性-其他-插入策略 + searchCellInsertPolicy4Formula(cellInfo, formulaInfos); + //单元格条件属性-参数-公式 + searchCellConditionPara4Formula(cellInfo, formulaInfos); + //单元格条件属性-属性-参数 + searchCellHighlightPara4Formula(cellInfo, formulaInfos); + //单元格超链 + searchCellHyperLink4Formula(cellInfo, formulaInfos); + } + + } + } + + } + + private void searchCellHyperLink4Formula(CellInfo cellInfo, ArrayList formulaInfos) { + NameJavaScriptGroup nameJavaScriptGroup = ((CellElement) cellInfo.getContent().getReplaceObject()).getNameHyperlinkGroup(); + if (nameJavaScriptGroup != null) { + for (int i = 0; i < nameJavaScriptGroup.size(); i++) { + SearchJSHighlightAction action = new SearchJSHighlightAction(); + action.searchJSFormulaFromOther(formulaInfos, cellInfo.getContent(), nameJavaScriptGroup.getNameHyperlink(i).getJavaScript()); + } + } + + } + + private void searchCellHighlightPara4Formula(CellInfo cellInfo, ArrayList formulaInfos) { + if (((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getHighlightGroup() != null) { + HighlightGroup highlightGroup = ((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getHighlightGroup(); + for (int i = 0; i < highlightGroup.size(); i++) { + for (int j = 0; j < ((DefaultHighlight) highlightGroup.getHighlight(i)).actionCount(); j++) { + HighlightAction highlightAction = ((DefaultHighlight) highlightGroup.getHighlight(i)).getHighlightAction(j); + //处理HighlightAction + SearchHighlightFormulaAction searchHighlightAction = new SearchHighlightFormulaAction(); + ITContent newContent = cellInfo.getContent().copy(); + searchHighlightAction.dealWithHighlightAction(newContent, formulaInfos, highlightAction); + } + } + } + } + + private void searchCellConditionPara4Formula(CellInfo cellInfo, ArrayList formulaInfos) { + if (((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getHighlightGroup() != null) { + HighlightGroup highlightGroup = ((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getHighlightGroup(); + for (int i = 0; i < highlightGroup.size(); i++) { + if (conditionHashMap.containsKey(((DefaultHighlight) highlightGroup.getHighlight(i)).getCondition().getClass().getSimpleName())) { + SearchConditionFormula searchCondition = conditionHashMap.get(((DefaultHighlight) highlightGroup.getHighlight(i)).getCondition().getClass().getSimpleName()); + ITContent newContent = cellInfo.getContent().copy(); + newContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_Condition_Attributes"), + Toolkit.i18nText("Fine-Design_Basic_Formula")); + searchCondition.searchFormulaFromCondition(formulaInfos, newContent, ((DefaultHighlight) highlightGroup.getHighlight(i)).getCondition()); + } + } + } + } + + private void searchCellPresent4Formula(CellInfo cellInfo, ArrayList formulaInfos) { + if (((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getPresent() != null + && ((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getPresent() instanceof FormulaPresent) { + ITContent newContent = cellInfo.getContent().copy(); + newContent.setReplaceObject((((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getPresent())); + newContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_Cell_Attributes"), + Toolkit.i18nText("Fine-Design_Report_Present")); + formulaInfos.add(new FormulaInfo(newContent)); + } + } + + private void searchCellInsertPolicy4Formula(CellInfo cellInfo, ArrayList formulaInfos) { + if (((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getCellInsertPolicyAttr() != null + && ((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getCellInsertPolicyAttr().getDefaultInsertValue() instanceof Formula) { + ITContent newContent = cellInfo.getContent().copy(); + newContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_Cell_Attributes"), + Toolkit.i18nText("Fine-Design_Report_Other"), + Toolkit.i18nText("Fine-Design_Basic_CellWrite_InsertRow_Policy")); + newContent.setReplaceObject(((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getCellInsertPolicyAttr()); + formulaInfos.add(new FormulaInfo(newContent)); + } + } + + + private void searchCellSortAttr4Formula(CellInfo cellInfo, ArrayList formulaInfos) { + if (((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getCellExpandAttr() != null) { + CellSortAttr sortAttr = ((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getCellExpandAttr().getCellSortAttr(); + if (isSortAttrExist(sortAttr)) { + for (SortExpression sortExpression : sortAttr.getSortExpressions()) { + if (sortExpression instanceof FormulaSortExpression) { + ITContent newContent = cellInfo.getContent().copy(); + newContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_Cell_Attributes"), + Toolkit.i18nText("Fine-Design_Report_Expand"), + Toolkit.i18nText("Fine-Design_Basic_Action_Sort") + ); + newContent.setReplaceObject(sortExpression); + formulaInfos.add(new FormulaInfo(newContent)); + } + } + + } + } + } + + private boolean isSortAttrExist(CellSortAttr sortAttr) { + return sortAttr != null && sortAttr.getSortExpressions() != null; + } + + private void searchFormulaFromCellInfo(CellInfo cellInfo, ArrayList formulaInfos) { + if (((CellElement) (cellInfo.getContent().getReplaceObject())).getValue() != null + && cellType.containsKey(((CellElement) (cellInfo.getContent().getReplaceObject())).getValue().getClass().getSimpleName())) { + SearchCellFormula searchCellFormula = cellType.get(((CellElement) (cellInfo.getContent().getReplaceObject())).getValue().getClass().getSimpleName()); + searchCellFormula.searchFormulaFromCellType(formulaInfos, cellInfo.getContent()); + + } + } + + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaTypeAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaTypeAction.java new file mode 100644 index 0000000000..75e2083cf2 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaTypeAction.java @@ -0,0 +1,27 @@ +package com.fr.design.actions.replace.action.content.formula.cell; + +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; +import com.fr.report.cell.CellElement; + +import java.util.ArrayList; + +/** + * 查找公式时单元格格式如果是公式类型则操作此类 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-18 + */ +public class SearchCellFormulaTypeAction extends AbstractSearchCellFormulaAction { + + + @Override + public void searchFormulaFromCellType(ArrayList formulaInfos, ITContent content) { + ITContent newContent = content.copy(); + newContent.setReplaceObject(((CellElement)(content.getReplaceObject())).getValue()); + newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Formula")); + formulaInfos.add(new FormulaInfo(newContent)); + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchDSColumnFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchDSColumnFormulaAction.java new file mode 100644 index 0000000000..baa2e1ec61 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchDSColumnFormulaAction.java @@ -0,0 +1,117 @@ +package com.fr.design.actions.replace.action.content.formula.cell; + +import com.fr.base.Formula; +import com.fr.base.Parameter; +import com.fr.design.actions.replace.action.content.formula.AbstractSearchFormulaAction; +import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchCommonConditionAction; +import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchConditionFormula; +import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchFormulaConditionAction; +import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchListConditionAction; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; +import com.fr.general.data.Condition; +import com.fr.report.cell.cellattr.core.group.DSColumn; +import com.fr.report.core.sort.sortexpression.FormulaSortExpression; +import com.fr.report.core.sort.sortexpression.SortExpression; + +import java.util.ArrayList; +import java.util.HashMap; + +/** + * 查找公式时单元格格式如果是数据列型则操作此类 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-18 + */ +public class SearchDSColumnFormulaAction extends AbstractSearchCellFormulaAction { + public static HashMap conditionHashMap = new HashMap<>(); + static { + conditionHashMap.put("FormulaCondition",new SearchFormulaConditionAction()); + conditionHashMap.put("CommonCondition",new SearchCommonConditionAction()); + conditionHashMap.put("ListCondition",new SearchListConditionAction()); + } + + + @Override + public void searchFormulaFromCellType(ArrayList formulaInfos, ITContent itContent) { + if (itContent.getContentObject().getCell().getValue() instanceof DSColumn){ + if (((DSColumn) itContent.getContentObject().getCell().getValue()).getCondition() != null){ + ITContent content = itContent.copy(); + //数据列 + content.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_DS_Column")); + DSColumn dsColumn = ((DSColumn) itContent.getContentObject().getCell().getValue()); + //过滤条件中的公式 + addFormulaInfos2ArrayFromCondition(content,dsColumn.getCondition(), formulaInfos); + //动态参数中的公式 + addFormulaInfos2ArrayFromPara(content,dsColumn,formulaInfos); + //高级-排序中的公式 + addFormulaInfos2ArrayFromSortExpression(content,dsColumn,formulaInfos); + //高级-显示值中的公式 + addFormulaInfos2ArrayFromResult(content,dsColumn,formulaInfos); + + } + + } + } + private void addFormulaInfos2ArrayFromResult(ITContent content, DSColumn dsColumn, ArrayList formulaInfos) { + if (dsColumn.getResult().length() > 0 && dsColumn.getResult().charAt(0) == '='){ + ITContent newContent =content.copy(); + newContent.setReplaceObject(dsColumn); + //高级-显示值 + newContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_Advanced"), + Toolkit.i18nText("Fine-Design_Basic_Display_Value") + ); + formulaInfos.add(new FormulaInfo(newContent)); + } + + } + + private void addFormulaInfos2ArrayFromSortExpression(ITContent content, DSColumn dsColumn, ArrayList formulaInfos) { + if (dsColumn.getCellSortAttr() != null && dsColumn.getCellSortAttr().getSortExpressions() != null){ + for (SortExpression sortExpression : dsColumn.getCellSortAttr().getSortExpressions()){ + if (sortExpression instanceof FormulaSortExpression){ + ITContent newContent =content.copy(); + //高级-排序 + newContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_Advanced"), + Toolkit.i18nText("Fine-Design_Basic_Action_Sort") + ); + newContent.getContentObject().setSortExpression((FormulaSortExpression) sortExpression); + newContent.setReplaceObject(sortExpression); + formulaInfos.add(new FormulaInfo(newContent)); + + } + } + + } + } + + private void addFormulaInfos2ArrayFromPara(ITContent content, DSColumn dsColumn, ArrayList formulaInfos) { + for (Parameter parameter : dsColumn.getParameters()){ + if (parameter.getValue() instanceof Formula){ + ITContent newContent = content.copy(); + //动态参数注入 + newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Report_TableData_Dynamic_Parameter_Setting")); + newContent.getContentObject().setFormula((Formula) parameter.getValue()); + newContent.setReplaceObject(parameter.getValue()); + formulaInfos.add(new FormulaInfo(newContent)); + } + } + } + + /** + * 数据列过滤条件中的公式 + */ + private void addFormulaInfos2ArrayFromCondition(ITContent content, Condition condition, ArrayList formulaInfos){ + //这边condition有三种情况:FormulaCondition、CommonCondition、ListCondition,分别处理 + SearchConditionFormula searchCondition = conditionHashMap.get(condition.getClass().getSimpleName()); + ITContent newContent = content.copy(); + //过滤条件 + newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Report_Filter_Conditions")); + searchCondition.searchFormulaFromCondition(formulaInfos, newContent,condition); + + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchRichFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchRichFormulaAction.java new file mode 100644 index 0000000000..db1c97923a --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchRichFormulaAction.java @@ -0,0 +1,34 @@ +package com.fr.design.actions.replace.action.content.formula.cell; + +import com.fr.design.actions.replace.action.content.formula.AbstractSearchFormulaAction; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; +import com.fr.report.cell.CellElement; +import com.fr.report.cell.cellattr.core.RichText; + +import java.util.ArrayList; + +/** + * 搜索单元格富文本类型的公式 + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-18 + */ +public class SearchRichFormulaAction extends AbstractSearchCellFormulaAction { + @Override + public void searchFormulaFromCellType(ArrayList formulaInfos, ITContent content) { + //todo 富文本这边直接遍历RichChar来拿公式 + if (((RichText)((CellElement)(content.getReplaceObject())).getValue()).getContent().contains("${")){ + ITContent newContent =content.copy(); + newContent.setReplaceObject(((CellElement)(content.getReplaceObject())).getValue()); + newContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Chart_Rich_Text"), + Toolkit.i18nText("Fine-Design_Basic_Formula") + ); + formulaInfos.add(new FormulaInfo(newContent)); + } + + + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchSubReportFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchSubReportFormulaAction.java new file mode 100644 index 0000000000..66e9802a0f --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchSubReportFormulaAction.java @@ -0,0 +1,36 @@ +package com.fr.design.actions.replace.action.content.formula.cell; + +import com.fr.base.Formula; +import com.fr.base.core.KV; +import com.fr.design.actions.replace.action.content.formula.AbstractSearchFormulaAction; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; +import com.fr.report.cell.CellElement; +import com.fr.report.cell.cellattr.core.SubReport; + +import java.util.ArrayList; + +/** + * 搜索单元格子报表类型的公式 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-18 + */ +public class SearchSubReportFormulaAction extends AbstractSearchCellFormulaAction { + @Override + public void searchFormulaFromCellType(ArrayList formulaInfos, ITContent content) { + KV[] kvs = ((SubReport) (((CellElement) content.getReplaceObject()).getValue())).getParameterKVS(); + for (KV kv : kvs) { + if (kv.getValue() instanceof Formula) { + ITContent newContent = content.copy(); + newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Report_Sub_Report_Parameter")); + newContent.setReplaceObject(kv); + formulaInfos.add(new FormulaInfo(newContent)); + } + + } + + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java new file mode 100644 index 0000000000..0a30bc39c2 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java @@ -0,0 +1,213 @@ +package com.fr.design.actions.replace.action.content.formula.chart; + +import com.fr.base.Formula; +import com.fr.chart.chartattr.Axis; +import com.fr.chart.chartattr.Chart; +import com.fr.chart.chartattr.ChartCollection; +import com.fr.chart.chartattr.Title; +import com.fr.chart.chartdata.NormalChartData; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; +import com.fr.plugin.chart.attr.axis.VanChartAlertValue; +import com.fr.plugin.chart.attr.axis.VanChartAxis; +import com.fr.plugin.chart.attr.axis.VanChartValueAxis; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * 图表类型获取公式汇总 + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-12 + */ +public class SearchChartCollectionFormulaAction { + + public SearchChartCollectionFormulaAction(ArrayList formulaInfos, ITContent content, ChartCollection chartCollection) { + for (int i = 0 ; i < chartCollection.getChartCount() ;i ++){ + ITContent chartContent =content.copy(); + SearchChartPatternFormula(formulaInfos,chartContent,chartCollection.getChart(i)); + //数据-单元格数据-分类名&系列名&值 + SearchChartDataFormula(formulaInfos,content,chartCollection.getChart(i)); + } + + } + + private void SearchChartDataFormula(ArrayList formulaInfos, ITContent content, Chart chart) { + if (chart.defaultChartData() instanceof NormalChartData){ + NormalChartData chartData = (NormalChartData) chart.defaultChartData(); + //todo + } + } + + + private void SearchChartPatternFormula(ArrayList formulaInfos, ITContent chartContent, Chart chart){ + //样式-标题 + SearchChartPatternFormulaFromTitle(formulaInfos, chartContent, chart); + + //样式-坐标轴-值定义&样式-坐标轴-轴标题 + SearchChartPatternFormulaFromAxisValue(formulaInfos, chartContent, chart); + + //样式-背景-警戒线 + SearchChartPatternFormulaFromAlertLine(formulaInfos,chartContent,chart); + } + + private void SearchChartPatternFormulaFromAlertLine(ArrayList formulaInfos, ITContent chartContent, Chart chart) { + Axis xAxis = chart.getPlot().getxAxis(); + Axis yAxis = chart.getPlot().getyAxis(); + ITContent content = chartContent.copy(); + content.addOtherPos( + Toolkit.i18nText("Fine-Design_Chart_Pattern"), + Toolkit.i18nText("Fine-Design_Chart_Background"), + Toolkit.i18nText("Fine-Design_Chart_Plot_Region"), + Toolkit.i18nText("Fine-Design_Chart_Alert_Line") + ); + if (xAxis instanceof VanChartAxis){ + List list = ((VanChartAxis) xAxis).getAlertValues(); + for (VanChartAlertValue alertValue : list){ + //警戒线设置 + dealAlertValue(formulaInfos,content,alertValue); + //提示文字 + dealAlertContent(formulaInfos,content,alertValue); + } + } + if (yAxis instanceof VanChartAxis){ + List list = ((VanChartAxis) yAxis).getAlertValues(); + for (VanChartAlertValue alertValue : list){ + //警戒线设置 + dealAlertValue(formulaInfos,content,alertValue); + //提示文字 + dealAlertContent(formulaInfos,content,alertValue); + } + } + + } + + private void dealAlertContent(ArrayList formulaInfos, ITContent content, VanChartAlertValue alertValue) { + if (alertValue.getAlertContentFormula() != null){ + ITContent alertContent = content.copy(); + alertContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Alert_Text")); + alertContent.setReplaceObject(alertValue.getAlertContentFormula()); + formulaInfos.add(new FormulaInfo(alertContent)); + } + } + + private void dealAlertValue(ArrayList formulaInfos, ITContent content, VanChartAlertValue alertValue) { + if (alertValue.getAlertValueFormula() != null){ + ITContent valueContent = content.copy(); + valueContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Alert_Set")); + valueContent.setReplaceObject(alertValue.getAlertValueFormula()); + formulaInfos.add(new FormulaInfo(valueContent)); + } + } + + private void SearchChartPatternFormulaFromAxisValue(ArrayList formulaInfos, ITContent chartContent, Chart chart) { + Axis xAxis = chart.getPlot().getxAxis(); + Axis yAxis = chart.getPlot().getyAxis(); + //样式-坐标轴-x轴 + if (xAxis!= null){ + //轴标题 + ITContent xAxisContent = chartContent.copy(); + xAxisContent.addOtherPos( + chart.getChartName(), + Toolkit.i18nText("Fine-Design_Chart_Pattern"), + Toolkit.i18nText("Fine-Design_Chart_Axis"), + Toolkit.i18nText("Fine-Design_Chart_X_Axis") + ); + dealTitle(formulaInfos, xAxisContent,xAxis.getTitle()); + dealChartValueDefine(formulaInfos, xAxisContent,xAxis); + } + + //样式-坐标轴-y轴-轴标题 + if (yAxis !=null){ + ITContent yAxisContent = chartContent.copy(); + yAxisContent.addOtherPos( + chart.getChartName(), + Toolkit.i18nText("Fine-Design_Chart_Pattern"), + Toolkit.i18nText("Fine-Design_Chart_Axis"), + Toolkit.i18nText("Fine-Design_Chart_Y_Axis") + + ); + dealTitle(formulaInfos,yAxisContent,yAxis.getTitle()); + dealChartValueDefine(formulaInfos,yAxisContent,yAxis); + } + + + + } + + private void dealChartValueDefine(ArrayList formulaInfos, ITContent axisContent, Axis axis) { + ITContent content = axisContent.copy(); + content.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Value_Define")); + //自定义最大值最小值 + dealChartMaxAndMinValue(formulaInfos,content,axis); + //自定义主次刻度 + dealChartMainAndSecUnit(formulaInfos,content,axis); + //自定义对数底数 + dealChartLogBase(formulaInfos,content,axis); + + } + + private void dealChartLogBase(ArrayList formulaInfos, ITContent content, Axis axis) { + if (axis instanceof VanChartValueAxis){ + if (axis.isLog() && ((VanChartValueAxis) axis).getLogBase() != null){ + ITContent logContent =content.copy(); + logContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Custom_LogBase_Value")); + logContent.setReplaceObject(((VanChartValueAxis) axis).getLogBase()); + formulaInfos.add(new FormulaInfo(logContent)); + } + } + } + + private void dealChartMainAndSecUnit(ArrayList formulaInfos, ITContent content, Axis axis) { + if (axis.isCustomMainUnit() && axis.getMainUnit() != null){ + ITContent mainContent = content.copy(); + mainContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Custom_Main_Type")); + mainContent.setReplaceObject(axis.getMainUnit()); + formulaInfos.add(new FormulaInfo(mainContent)); + } + if (axis.isCustomSecUnit() && axis.getSecUnit() != null){ + ITContent secContent = content.copy(); + secContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Custom_Second_Type")); + secContent.setReplaceObject(axis.getSecUnit()); + formulaInfos.add(new FormulaInfo(secContent)); + } + } + + private void dealChartMaxAndMinValue(ArrayList formulaInfos, ITContent axisContent, Axis axis) { + if (axis.isCustomMaxValue() && axis.getMaxValue() != null){ + ITContent maxContent = axisContent.copy(); + maxContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Custom_Max_Value")); + maxContent.setReplaceObject(axis.getMaxValue()); + formulaInfos.add(new FormulaInfo(maxContent)); + } + if (axis.isCustomMinValue() && axis.getMinValue() != null){ + ITContent minContent = axisContent.copy(); + minContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Custom_Min_Value")); + minContent.setReplaceObject(axis.getMinValue()); + formulaInfos.add(new FormulaInfo(minContent)); + } + } + + private void SearchChartPatternFormulaFromTitle(ArrayList formulaInfos, ITContent chartContent, Chart chart){ + //样式-标题 + ITContent titleContent = chartContent.copy(); + titleContent.addOtherPos( + chart.getChartName(), + Toolkit.i18nText("Fine-Design_Chart_Pattern") + + ); + dealTitle(formulaInfos,titleContent,chart.getTitle()); + } + + private void dealTitle(ArrayList formulaInfos, ITContent chartContent, Title title) { + if (title !=null && title.getTextObject() instanceof Formula){ + ITContent content = chartContent.copy(); + content.addOtherPos(Toolkit.i18nText("Fine-Design_Form_Title")); + content.setReplaceObject(title.getTextObject()); + formulaInfos.add(new FormulaInfo(content)); + } + } +} From 6dc4f3ba963f9030759fbf0c1233eaa68dac53c3 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Wed, 14 Sep 2022 15:00:02 +0800 Subject: [PATCH 12/93] =?UTF-8?q?REPORT-75998=20=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E5=85=AC=E5=BC=8F=E2=80=94=E2=80=94=E6=95=B0=E6=8D=AE=E9=9B=86?= =?UTF-8?q?=E3=80=81=E6=82=AC=E6=B5=AE=E5=85=83=E7=B4=A0=E3=80=81=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E5=85=A8=E5=B1=80=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/AbstractSearchDataFormulaAction.java | 31 +++++ .../action/content/formula/data/DataType.java | 124 ++++++++++++++++++ .../formula/data/SearchDataFormulaAction.java | 75 +++++++++++ .../AbstractSearchFloatFormula.java | 26 ++++ .../SearchFloatFormulaAction.java | 111 ++++++++++++++++ .../AbstractSearchTemplateFormula.java | 27 ++++ .../template/SearchTemplateFormulaAction.java | 65 +++++++++ 7 files changed, 459 insertions(+) create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/AbstractSearchDataFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/DataType.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/AbstractSearchFloatFormula.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/SearchFloatFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/AbstractSearchTemplateFormula.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/AbstractSearchDataFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/AbstractSearchDataFormulaAction.java new file mode 100644 index 0000000000..108b1b66d2 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/AbstractSearchDataFormulaAction.java @@ -0,0 +1,31 @@ +package com.fr.design.actions.replace.action.content.formula.data; + +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.Info; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.mainframe.JTemplate; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-26 + */ +public abstract class AbstractSearchDataFormulaAction implements SearchDataFormula{ + + @Override + public void searchFormulaFromData(JTemplate jTemplate,ArrayList fomulaInfos) { + + } + + @Override + public void searchFormula(ArrayList formulaInfos, ITContent content) { + + } + + @Override + public ArrayList search4Infos(JTemplate jTemplate) { + return null; + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/DataType.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/DataType.java new file mode 100644 index 0000000000..3ed0b432dd --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/DataType.java @@ -0,0 +1,124 @@ +package com.fr.design.actions.replace.action.content.formula.data; + +import com.fr.base.Formula; +import com.fr.base.TableData; +import com.fr.data.impl.*; +import com.fr.data.impl.storeproc.StoreProcedure; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; +import com.fr.stable.ParameterProvider; +import com.fr.stable.StringUtils; + +import java.util.ArrayList; + +/** + * + * 分别对不同类型的数据集进行获取公式处理 + * 暂不支持ClassTableData(用户自定义数据集)、FileTableData(用户自定义数据集),EmbeddedTableData(无公式) + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-26 + */ +public enum DataType { + /** + * 数据库查询 + */ + DB_TABLE_DATA("DBTableData"){ + @Override + public void searchFormula(TableData tableData, ITContent content, ArrayList fomulaInfos) { + if (((DBTableData)tableData).getParameters() != null){ + for (ParameterProvider provider : ((DBTableData)tableData).getParameters()){ + dealProvider(provider,content,fomulaInfos); + } + } + } + + }, + /** + * 存储过程 + */ + STORE_PROCEDURE("StoreProcedure"){ + @Override + public void searchFormula(TableData tableData, ITContent content, ArrayList fomulaInfos) { + if (((StoreProcedure)tableData).getParameters() != null){ + for (ParameterProvider provider : ((StoreProcedure)tableData).getParameters()){ + dealProvider(provider,content,fomulaInfos); + + } + } + } + }, + /** + * 关联数据集 + */ + CONDITION_TABLE_DATA("ConditionTableData"){ + @Override + public void searchFormula(TableData tableData, ITContent content, ArrayList fomulaInfos) { + if (((ConditionTableData)tableData).getDefineParameters() != null){ + for (ParameterProvider provider : ((ConditionTableData)tableData).getDefineParameters()){ + dealProvider(provider,content,fomulaInfos); + } + } + } + }, + /** + * 树数据集 + */ + RECURSION_TABLE_DATA("RecursionTableData"){ + @Override + public void searchFormula(TableData tableData, ITContent content, ArrayList fomulaInfos) { + if (((RecursionTableData)tableData).getParameters() != null){ + for (ParameterProvider provider : ((RecursionTableData)tableData).getParameters()){ + dealProvider(provider,content,fomulaInfos); + } + } + } + }; + + + String name; + DataType(String name) { + this.name = name; + } + + /** + * 处理参数 + * @param provider + * @param content + * @param formulaInfos + */ + public void dealProvider(ParameterProvider provider, ITContent content, ArrayList formulaInfos) { + if (provider .getValue()instanceof Formula && !StringUtils.isEmpty((((Formula) provider.getValue())).getContent() )){ + ITContent newContent = content.copy(); + newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Parameter")); + newContent.setReplaceObject(provider); + formulaInfos.add(new FormulaInfo(newContent)); + } + } + + /** + * 匹配 + * @param name + * @return + */ + public static DataType match(String name){ + DataType[] values = DataType.values(); + for (DataType value : values) { + if(value.name.equals(name)){ + return value; + } + } + return null; + } + + /** + * 从数据集中获取公式 + * @param tableData + * @param content + * @param fomulaInfos + */ + void searchFormula(TableData tableData, ITContent content , ArrayList fomulaInfos){} + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormulaAction.java new file mode 100644 index 0000000000..31f04705e1 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormulaAction.java @@ -0,0 +1,75 @@ +package com.fr.design.actions.replace.action.content.formula.data; + +import com.fr.data.TableDataSource; +import com.fr.data.impl.DBTableData; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.SQLInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.data.tabledata.wrapper.TableDataFactory; +import com.fr.design.i18n.Toolkit; +import com.fr.design.mainframe.JTemplate; +import com.fr.file.TableDataConfig; +import com.fr.main.impl.WorkBook; + +import java.util.ArrayList; +import java.util.Iterator; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-26 + */ +public class SearchDataFormulaAction extends AbstractSearchDataFormulaAction{ + + public SearchDataFormulaAction(JTemplate jTemplate, ArrayList fomulaInfos){ + searchFormulaFromData(jTemplate,fomulaInfos); + } + @Override + public void searchFormulaFromData(JTemplate jTemplate, ArrayList fomulaInfos) { + + //模板数据集 + dealTemplateData(jTemplate,fomulaInfos); + + //服务器数据集 + dealServerData(fomulaInfos); + + } + + private void dealServerData(ArrayList fomulaInfos) { + TableDataConfig tableDataConfig = TableDataConfig.getInstance(); + String[] nameArray = TableDataFactory.getSortOfChineseNameOfServerData(tableDataConfig); + for (String dataName : nameArray) { + ITContent content = new ITContent(); + content.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_DS_Server_TableData"), + dataName + ); + content.setShowObject(Toolkit.i18nText("Fine-Design_Basic_DS_Server_TableData")); + DataType dataType = DataType.match(tableDataConfig.getTableData(dataName).getClass().getSimpleName()); + if (dataType != null){ + dataType.searchFormula(tableDataConfig.getTableData(dataName),content,fomulaInfos); + } + } + } + + private void dealTemplateData(JTemplate jTemplate, ArrayList fomulaInfos) { + if (jTemplate.getTarget() instanceof TableDataSource){ + TableDataSource source = (TableDataSource) jTemplate.getTarget(); + Iterator dataIterator = source.getTableDataNameIterator(); + while (dataIterator.hasNext()){ + String dataName = (String) dataIterator.next(); + ITContent content = new ITContent(); + content.setTemplateName(jTemplate.getTemplateName()); + content.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_DS_Report_TableData"), + dataName + ); + content.setShowObject(Toolkit.i18nText("Fine-Design_Basic_DS_Report_TableData")); + DataType dataType = DataType.match(source.getTableData(dataName).getClass().getSimpleName()); + if (dataType != null){ + dataType.searchFormula(source.getTableData(dataName),content,fomulaInfos); + } + } + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/AbstractSearchFloatFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/AbstractSearchFloatFormula.java new file mode 100644 index 0000000000..f4dff53627 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/AbstractSearchFloatFormula.java @@ -0,0 +1,26 @@ +package com.fr.design.actions.replace.action.content.formula.floatelement; + +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.Info; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.mainframe.JTemplate; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-12 + */ +public abstract class AbstractSearchFloatFormula implements SearchFloatFormula{ + @Override + public void searchFormula(ArrayList formulaInfos, ITContent content) { + } + + @Override + public ArrayList search4Infos(JTemplate jTemplate) { + return new ArrayList<>(); + } + + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/SearchFloatFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/SearchFloatFormulaAction.java new file mode 100644 index 0000000000..331da754a4 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/SearchFloatFormulaAction.java @@ -0,0 +1,111 @@ +package com.fr.design.actions.replace.action.content.formula.floatelement; + +import com.fr.base.Formula; +import com.fr.chart.chartattr.ChartCollection; +import com.fr.design.actions.replace.action.content.floatelement.SearchFloatAction; +import com.fr.design.actions.replace.action.content.formula.FormulaReplaceObject; +import com.fr.design.actions.replace.action.content.formula.chart.SearchChartCollectionFormulaAction; +import com.fr.design.actions.replace.action.content.formula.highlight.javascript.SearchJSHighlightAction; +import com.fr.design.actions.replace.info.FloatInfo; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; +import com.fr.design.mainframe.JTemplate; +import com.fr.js.NameJavaScriptGroup; +import com.fr.report.cell.CellElement; +import com.fr.report.cell.FloatElement; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-12 + */ +public class SearchFloatFormulaAction extends AbstractSearchFloatFormula { + + public SearchFloatFormulaAction(JTemplate jTemplate, ArrayList formulaInfos) { + SearchFloatAction searchFloatAction = new SearchFloatAction(jTemplate); + for (FloatInfo floatInfo : searchFloatAction.getFloatInfos()) { + searchFormulaFromFloat(formulaInfos, floatInfo); + searchFormulaFromFloatType(formulaInfos, floatInfo); + } + } + + @Override + public void searchFormulaFromFloat(ArrayList formulaInfos, FloatInfo floatInfo) { + NameJavaScriptGroup nameJavaScriptGroup = ((FloatElement) floatInfo.getContent().getReplaceObject()).getNameHyperlinkGroup(); + if (nameJavaScriptGroup != null) { + for (int i = 0; i < nameJavaScriptGroup.size(); i++) { + SearchJSHighlightAction action = new SearchJSHighlightAction(); + action.searchJSFormulaFromOther(formulaInfos, floatInfo.getContent(), nameJavaScriptGroup.getNameHyperlink(i).getJavaScript()); + } + } + } + + + @Override + public void searchFormulaFromFloatType(ArrayList formulaInfos, FloatInfo floatInfo) { + Object value = ((FloatElement) floatInfo.getContent().getReplaceObject()).getValue(); + FloatFormulaType floatFormulaType = FloatFormulaType.match(value.getClass().getSimpleName()); + if (floatFormulaType != null) { + floatFormulaType.searchFormulaFromFloatElementType(formulaInfos, floatInfo); + } + } + + /** + * 悬浮元素的类型 + */ + public enum FloatFormulaType { + /** + * 公式 + */ + FORMULA("Formula") { + @Override + public void searchFormulaFromFloatElementType(ArrayList formulaInfos, FloatInfo floatInfo) { + ITContent content = floatInfo.getContent().copy(); + Formula value = (Formula) ((FloatElement) floatInfo.getContent().getReplaceObject()).getValue(); + content.setReplaceObject(value); + formulaInfos.add(new FormulaInfo(content)); + } + }, + /** + * 图表 + */ + CHART_COLLECTION("ChartCollection") { + @Override + public void searchFormulaFromFloatElementType(ArrayList formulaInfos, FloatInfo floatInfo) { + ITContent content = floatInfo.getContent().copy(); + ChartCollection chartCollection = (ChartCollection) ((FloatElement) floatInfo.getContent().getReplaceObject()).getValue(); + content.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Chart")); + new SearchChartCollectionFormulaAction(formulaInfos, content, chartCollection); + } + }; + String name; + + FloatFormulaType(String name) { + this.name = name; + } + + /** + * 匹配 + * + * @param name + * @return + */ + @Nullable + public static FloatFormulaType match(String name) { + FloatFormulaType[] values = FloatFormulaType.values(); + for (FloatFormulaType value : values) { + if (value.name.equals(name)) { + return value; + } + } + return null; + } + + public void searchFormulaFromFloatElementType(ArrayList formulaInfos, FloatInfo floatInfo) { + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/AbstractSearchTemplateFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/AbstractSearchTemplateFormula.java new file mode 100644 index 0000000000..4de0fccc0f --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/AbstractSearchTemplateFormula.java @@ -0,0 +1,27 @@ +package com.fr.design.actions.replace.action.content.formula.template; + + +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.Info; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.mainframe.JTemplate; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-12 + */ +public abstract class AbstractSearchTemplateFormula implements SearchTemplateFormula{ + + @Override + public void searchFormula(ArrayList formulaInfos, ITContent content) { + + } + + @Override + public ArrayList search4Infos(JTemplate jTemplate) { + return null; + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java new file mode 100644 index 0000000000..bc89d2d6cf --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java @@ -0,0 +1,65 @@ +package com.fr.design.actions.replace.action.content.formula.template; + +import com.fr.base.Formula; +import com.fr.base.Parameter; +import com.fr.base.ParameterConfig; +import com.fr.base.io.AttrMark; +import com.fr.base.iofile.attr.WatermarkAttr; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; +import com.fr.design.mainframe.JTemplate; +import com.fr.main.impl.WorkBook; +import com.fr.report.core.ReportUtils; +import com.fr.report.core.watermark.WaterMarkFactory; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-12 + */ +public class SearchTemplateFormulaAction extends AbstractSearchTemplateFormula { + + public SearchTemplateFormulaAction(JTemplate jTemplate, ArrayList formulaInfos) { + ITContent content = new ITContent(); + content.setTemplateName(jTemplate.getTemplateName()); + searchTemplateParaFormula(jTemplate, formulaInfos, content); + searchTemplateWaterMarkFormula(jTemplate, formulaInfos, content); + } + + @Override + public void searchTemplateWaterMarkFormula(JTemplate jTemplate, ArrayList formulaInfos, ITContent content) { + WatermarkAttr watermarkAttr = ReportUtils.getWatermarkAttrFromTemplateAndGlobal((AttrMark) jTemplate.getTarget()); + if (watermarkAttr != null) { + ITContent waterMarkContent = content.copy(); + waterMarkContent.addOtherPos(Toolkit.i18nText("Fine-Design_Form_WaterMark")); + waterMarkContent.setReplaceObject(watermarkAttr); + formulaInfos.add(new FormulaInfo(waterMarkContent)); + } + } + + @Override + public void searchTemplateParaFormula(JTemplate jTemplate, ArrayList formulaInfos, ITContent content) { + Parameter[] parameters = jTemplate.getJTemplateParameters(); + for (Parameter parameter : parameters) { + if (parameter.getValue() instanceof Formula) { + ITContent paraContent = content.copy(); + paraContent.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Template_Parameter")); + paraContent.setReplaceObject(parameter.getValue()); + formulaInfos.add(new FormulaInfo(paraContent)); + } + } + + Parameter[] globalParameters = ParameterConfig.getInstance().getGlobalParameters(); + for (Parameter parameter : globalParameters) { + if (parameter.getValue() instanceof Formula) { + ITContent paraContent = content.copy(); + paraContent.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Parameter_Source_Type_Server")); + paraContent.setReplaceObject(parameter.getValue()); + formulaInfos.add(new FormulaInfo(paraContent)); + } + } + } +} From b12c7f591fe58ea17c1a19989879c5de94cb1650 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Wed, 14 Sep 2022 15:00:28 +0800 Subject: [PATCH 13/93] =?UTF-8?q?REPORT-75998=20=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E5=85=AC=E5=BC=8F=E2=80=94=E2=80=94=E6=8E=A7=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AbstractSearchWidgetFormulaAction.java | 79 ++++++++++++ .../formula/widget/DictionaryType.java | 114 ++++++++++++++++++ .../SearchCommonWidgetFormulaAction.java | 22 ++++ .../widget/SearchDateEditorFormulaAction.java | 46 +++++++ .../widget/SearchDictFormulaAction.java | 39 ++++++ .../widget/SearchTreeEditorFormulaAction.java | 75 ++++++++++++ .../widget/SearchWidgetFormulaAction.java | 108 +++++++++++++++++ 7 files changed, 483 insertions(+) create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/AbstractSearchWidgetFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/DictionaryType.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchCommonWidgetFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDictFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/AbstractSearchWidgetFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/AbstractSearchWidgetFormulaAction.java new file mode 100644 index 0000000000..d27899467d --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/AbstractSearchWidgetFormulaAction.java @@ -0,0 +1,79 @@ +package com.fr.design.actions.replace.action.content.formula.widget; + +import com.fr.base.Formula; +import com.fr.design.actions.replace.action.content.formula.highlight.javascript.SearchJSHighlightAction; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.Info; +import com.fr.design.actions.replace.info.WidgetInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; +import com.fr.design.mainframe.JTemplate; +import com.fr.form.event.Listener; +import com.fr.form.ui.DataControl; +import com.fr.form.ui.Widget; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-19 + */ +public abstract class AbstractSearchWidgetFormulaAction implements SearchWidgetFormula { + + /** + * 用于处理控件共有的事件以及控件值中的公式 + * + * @param content + * @param formulaInfos + */ + @Override + public void searchFormulaFromWidget(ITContent content, ArrayList formulaInfos) { + Widget widget = (Widget) content.getReplaceObject(); + //控件值中的公式 + searchFormulaFromWidgetValue(content,formulaInfos); + for (int i = 0 ; i < widget.getListenerSize() ;i++){ + Listener listener = widget.getListener(i); + ITContent newContent = content.copy(); + newContent.getContentObject().setListener(listener); + //控件的事件可以使用的JS有五种,这边统一交给Highlight那边判断超级链接并进行处理 + SearchJSHighlightAction SJSA = new SearchJSHighlightAction(); + newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Report_Event")); + SJSA.searchJSFormulaFromOther(formulaInfos,newContent, listener.getAction()); + } + } + + /** + * 判断一下控件有没有控件值接口,如果有再判断一下控件值是否已经设置并且是公式 + * @param content + * @param formulaInfos + */ + @Override + public void searchFormulaFromWidgetValue(ITContent content, ArrayList formulaInfos) { + if(content.getReplaceObject() instanceof DataControl){ + if (((DataControl) content.getReplaceObject()).getWidgetValue() != null + && ((DataControl) content.getReplaceObject()).getWidgetValue().getValue() instanceof Formula){ + ITContent newContent = content.copy(); + newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Report_Widget_Value")); + newContent.setReplaceObject(((DataControl)content.getReplaceObject()).getWidgetValue().getValue()); + formulaInfos.add(new FormulaInfo(newContent)); + } + } + } + + @Override + public void searchFormulaFromWidgetInfos(WidgetInfo widgetInfo, ArrayList formulaInfos) { + } + + + @Override + public void searchFormula(ArrayList formulaInfos, ITContent content) { + + } + + + @Override + public ArrayList search4Infos(JTemplate jTemplate) { + return null; + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/DictionaryType.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/DictionaryType.java new file mode 100644 index 0000000000..d5ebc70768 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/DictionaryType.java @@ -0,0 +1,114 @@ +package com.fr.design.actions.replace.action.content.formula.widget; + +import com.fr.data.Dictionary; +import com.fr.data.impl.DatabaseDictionary; +import com.fr.data.impl.FormulaDictionary; +import com.fr.data.impl.TableDataDictionary; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; + +/** + * 数据字典处理 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-22 + */ +enum DictionaryType implements DictionaryAction { + + /** + * 数据字典——公式 + */ + FORMULA_DICTIONARY("FormulaDictionary") { + @Override + public void searchFormulaFromDictionary(ITContent content, ArrayList formulaInfos, Dictionary dictionary) { + //显示值 + if (((FormulaDictionary) dictionary).getExcuteFormula() != null) { + ITContent excuteContent = content.copy(); + excuteContent.setReplaceObject(dictionary); + excuteContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary"), + Toolkit.i18nText("Fine-Design_Basic_Formula"), + Toolkit.i18nText("Fine-Design_Basic_Display_Value") + ); + formulaInfos.add(new FormulaInfo(excuteContent)); + } + //实际值 + if (((FormulaDictionary) dictionary).getProduceFormula() != null) { + ITContent produceContent = content.copy(); + produceContent.setReplaceObject(dictionary); + produceContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary"), + Toolkit.i18nText("Fine-Design_Basic_Formula"), + Toolkit.i18nText("Fine-Design_Basic_Actual_Value") + ); + formulaInfos.add(new FormulaInfo(produceContent)); + } + + } + }, + /** + * 数据查询 + */ + TABLE_DATA_DICTIONARY("TableDataDictionary") { + @Override + public void searchFormulaFromDictionary(ITContent content, ArrayList formulaInfos, Dictionary dictionary) { + if (((TableDataDictionary) dictionary).getFormula() != null) { + ITContent newContent = content.copy(); + newContent.setReplaceObject(((TableDataDictionary) dictionary).getFormula()); + newContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary"), + Toolkit.i18nText("Fine-Design_Basic_Dic_Data_Query"), + Toolkit.i18nText("Fine-Design_Basic_Display_Value") + ); + formulaInfos.add(new FormulaInfo(newContent)); + } + + } + }, + /** + * 数据库表 + */ + DATABASE_DICTIONARY("DatabaseDictionary") { + @Override + public void searchFormulaFromDictionary(ITContent content, ArrayList formulaInfos, Dictionary dictionary) { + if (((DatabaseDictionary) dictionary).getFormula() != null) { + ITContent newContent = content.copy(); + newContent.setReplaceObject(((DatabaseDictionary) dictionary).getFormula()); + newContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary"), + Toolkit.i18nText("Fine-Design_Basic_Datasource_From_Database"), + Toolkit.i18nText("Fine-Design_Basic_Display_Value") + ); + formulaInfos.add(new FormulaInfo(newContent)); + } + } + }; + + String name; + + DictionaryType(String name) { + this.name = name; + } + + /** + * 匹配 + * + * @param name + * @return + */ + @Nullable + public static DictionaryType match(String name) { + DictionaryType[] values = DictionaryType.values(); + for (DictionaryType value : values) { + if (value.name.equals(name)) { + return value; + } + } + return null; + } +} \ No newline at end of file diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchCommonWidgetFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchCommonWidgetFormulaAction.java new file mode 100644 index 0000000000..84273cc2b2 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchCommonWidgetFormulaAction.java @@ -0,0 +1,22 @@ +package com.fr.design.actions.replace.action.content.formula.widget; + +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; + +import java.util.ArrayList; + +/** + * 控件中的公式只会在事件、控件值 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-19 + */ +public class SearchCommonWidgetFormulaAction extends AbstractSearchWidgetFormulaAction { + + @Override + public void searchFormulaFromWidget(ITContent content, ArrayList formulaInfos) { + //每个事件的事件、控件值两部分的公式获取逻辑是一样的,直接调用即可,各自其他地方的公式就需要特殊处理 + super.searchFormulaFromWidget(content, formulaInfos); + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java new file mode 100644 index 0000000000..e2ff6d951c --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java @@ -0,0 +1,46 @@ +package com.fr.design.actions.replace.action.content.formula.widget; + +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; +import com.fr.form.ui.DateEditor; +import org.gradle.internal.impldep.org.apache.commons.lang.StringUtils; + +import java.util.ArrayList; + +/** + * 日期类型控件特殊处理 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-26 + */ +public class SearchDateEditorFormulaAction extends AbstractSearchWidgetFormulaAction { + @Override + public void searchFormulaFromWidget(ITContent content, ArrayList formulaInfos) { + super.searchFormulaFromWidget(content, formulaInfos); + dealStratDateFormula(content, formulaInfos); + dealEndDateFormula(content, formulaInfos); + } + + private void dealEndDateFormula(ITContent content, ArrayList formulaInfos) { + DateEditor dateEditor = (DateEditor) content.getReplaceObject(); + if (dateEditor.getEndDateFM() != null && !StringUtils.isEmpty(dateEditor.getEndDateFM().getContent())) { + ITContent newContent = content.copy(); + newContent.setReplaceObject(dateEditor.getEndDateFM()); + newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_End_Time")); + formulaInfos.add(new FormulaInfo(newContent)); + } + } + + private void dealStratDateFormula(ITContent content, ArrayList formulaInfos) { + DateEditor dateEditor = (DateEditor) content.getReplaceObject(); + if (dateEditor.getStartDateFM() != null && !StringUtils.isEmpty(dateEditor.getStartDateFM().getContent())) { + ITContent newContent = content.copy(); + newContent.setReplaceObject(dateEditor.getStartDateFM()); + newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Start_Time")); + formulaInfos.add(new FormulaInfo(newContent)); + } + } + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDictFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDictFormulaAction.java new file mode 100644 index 0000000000..a0dd7ded3a --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDictFormulaAction.java @@ -0,0 +1,39 @@ +package com.fr.design.actions.replace.action.content.formula.widget; + +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.form.ui.DictionaryContainer; + +import java.util.ArrayList; + +/** + * 控件中的公式会存在: 控件值、 非树形结构数据字典、 事件 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-20 + */ +public class SearchDictFormulaAction extends AbstractSearchWidgetFormulaAction { + + + @Override + public void searchFormulaFromWidget(ITContent content, ArrayList formulaInfos) { + //控件值、事件 + super.searchFormulaFromWidget(content, formulaInfos); + //数据字典 + searchFormulaFromDict(content, formulaInfos); + + } + + private void searchFormulaFromDict(ITContent content, ArrayList formulaInfos) { + if (content.getReplaceObject() instanceof DictionaryContainer) { + if (((DictionaryContainer) content.getReplaceObject()).getDictionary() != null) { + DictionaryType type = DictionaryType.match(((DictionaryContainer) content.getReplaceObject()).getDictionary().getClass().getSimpleName()); + if (type != null) { + type.searchFormulaFromDictionary(content, formulaInfos, ((DictionaryContainer) content.getReplaceObject()).getDictionary()); + } + } + } + + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java new file mode 100644 index 0000000000..8d231126d1 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java @@ -0,0 +1,75 @@ +package com.fr.design.actions.replace.action.content.formula.widget; + +import com.fr.data.impl.DatabaseDictionary; +import com.fr.data.impl.FormulaDisplayDictionary; +import com.fr.data.impl.TableDataDictionary; +import com.fr.data.impl.TreeNodeAttr; +import com.fr.data.impl.TreeNodeWrapper; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; +import com.fr.form.ui.TreeEditor; +import com.fr.form.ui.tree.LayerConfig; +import com.fr.stable.StringUtils; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-22 + */ +public class SearchTreeEditorFormulaAction extends AbstractSearchWidgetFormulaAction { + @Override + public void searchFormulaFromWidget(ITContent content, ArrayList formulaInfos) { + //控件值、事件 + super.searchFormulaFromWidget(content, formulaInfos); + //树形结构数据字典 + SearchFormulaFromModelConfig(content, formulaInfos); + + } + + private void SearchFormulaFromModelConfig(ITContent content, ArrayList formulaInfos) { + if (((TreeEditor) content.getReplaceObject()).getBuildModelConfig() != null) { + //LayerConfig[] 急速分层构建 + //TreeNodeWrapper 普通分层构建 + if (((TreeEditor) content.getReplaceObject()).getBuildModelConfig() instanceof LayerConfig[]) { + LayerConfig[] layerConfigs = (LayerConfig[]) ((TreeEditor) content.getReplaceObject()).getBuildModelConfig(); + dealWithLayerConfigs(layerConfigs, content, formulaInfos); + } else if (((TreeEditor) content.getReplaceObject()).getBuildModelConfig() instanceof TreeNodeWrapper) { + TreeNodeWrapper wrapper = (TreeNodeWrapper) ((TreeEditor) content.getReplaceObject()).getBuildModelConfig(); + dealWithTreeNodeWrapper(wrapper, content, formulaInfos); + } + } + } + + private void dealWithTreeNodeWrapper(TreeNodeWrapper wrapper, ITContent content, ArrayList formulaInfos) { + for (TreeNodeAttr attr : wrapper.getTreeNodeAttrs()) { + if (((FormulaDisplayDictionary) attr.getDictionary()).getFormula() != null + && !StringUtils.isEmpty(((FormulaDisplayDictionary) attr.getDictionary()).getFormula().getContent())) { + ITContent newContent = content.copy(); + newContent.setReplaceObject(((FormulaDisplayDictionary) attr.getDictionary()).getFormula()); + newContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary"), + Toolkit.i18nText("Fine-Design_Basic_Layer_Build") + ); + formulaInfos.add(new FormulaInfo(newContent)); + } + } + } + + private void dealWithLayerConfigs(LayerConfig[] layerConfigs, ITContent content, ArrayList formulaInfos) { + for (LayerConfig layerConfig : layerConfigs) { + if (layerConfig.getDictionary().getFormula() != null + && !StringUtils.isEmpty(layerConfig.getDictionary().getFormula().getContent())) { + ITContent newContent = content.copy(); + newContent.setReplaceObject(layerConfig.getDictionary().getFormula()); + newContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary"), + Toolkit.i18nText("Fine-Design_Basic_DataTable_Build") + ); + formulaInfos.add(new FormulaInfo(newContent)); + } + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java new file mode 100644 index 0000000000..6c262ee98d --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java @@ -0,0 +1,108 @@ +package com.fr.design.actions.replace.action.content.formula.widget; + +import com.fr.design.actions.replace.action.content.widget.SearchWidgetAction; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.WidgetInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.mainframe.JTemplate; +import com.fr.form.ui.Widget; + +import java.util.ArrayList; +import java.util.HashMap; + +/** + * 查找控件内的公式 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-19 + */ +public class SearchWidgetFormulaAction extends AbstractSearchWidgetFormulaAction { + public static HashMap widgetHashMap = new HashMap<>(); + static { + //WParameterLayout + //PageFixedRowComboBox + //FormSubmitButton + //TreeEditor + //CheckBox + //Password + //TextArea + //CheckBoxGroup + //RadioGroup + //TreeComboBoxEditor + //NumberEditor + //DateEditor + //ComboCheckBox + //ComboBox + //FreeButton + //Label + /** + * 可能有控件值、 有事件 + */ + widgetHashMap.put("FormSubmitButton",new SearchCommonWidgetFormulaAction()); + widgetHashMap.put("WParameterLayout",new SearchCommonWidgetFormulaAction()); + widgetHashMap.put("TextArea",new SearchCommonWidgetFormulaAction()); + widgetHashMap.put("Password",new SearchCommonWidgetFormulaAction()); + widgetHashMap.put("CheckBox",new SearchCommonWidgetFormulaAction()); + widgetHashMap.put("Label",new SearchCommonWidgetFormulaAction()); + widgetHashMap.put("FreeButton",new SearchCommonWidgetFormulaAction()); + widgetHashMap.put("NumberEditor",new SearchCommonWidgetFormulaAction()); + + /** + * 日期类型 + */ + widgetHashMap.put("DateEditor",new SearchDateEditorFormulaAction()); + + /** + * 控件值、事件、非树形数据字典 + */ + widgetHashMap.put("ComboBox",new SearchDictFormulaAction()); + widgetHashMap.put("RadioGroup",new SearchDictFormulaAction()); + widgetHashMap.put("CheckBoxGroup",new SearchDictFormulaAction()); + widgetHashMap.put("ComboCheckBox",new SearchDictFormulaAction()); + widgetHashMap.put("PageFixedRowComboBox",new SearchDictFormulaAction()); + + /** + * 控件值、事件、树形数据字典 + */ + widgetHashMap.put("TreeComboBoxEditor",new SearchTreeEditorFormulaAction()); + widgetHashMap.put("TreeEditor",new SearchTreeEditorFormulaAction()); + + + } + + + public SearchWidgetFormulaAction(JTemplate jTemplate,ArrayList fomulaInfos){ + fomulaInfos.addAll(search4Infos(jTemplate)); + } + + @Override + public ArrayList search4Infos(JTemplate jTemplate) { + ArrayList formulaInfos = new ArrayList<>(); + SearchWidgetAction searchWidgetAction = new SearchWidgetAction(jTemplate); + if (!searchWidgetAction.isWidgetInfosEmpty()){ + for (WidgetInfo widgetInfo : searchWidgetAction.getWidgetInfos()){ + //由于控件类型比较多,各种控件也不大相同,可能存放公式的地方也都不一样,这边根据对应的类型进行处理 + searchFormulaFromWidgetInfos(widgetInfo,formulaInfos); + } + } + return formulaInfos; + } + + @Override + public void searchFormulaFromWidgetInfos(WidgetInfo widgetInfo, ArrayList formulaInfos) { + if (widgetInfo.isReplaceObjectExist()){ + searchFormulaFromWidgetValue(widgetInfo,formulaInfos); + } + } + + private void searchFormulaFromWidgetValue(WidgetInfo widgetInfo, ArrayList formulaInfos) { + Widget widget = (Widget)widgetInfo.getContent().getReplaceObject(); + if (widgetHashMap.containsKey(widget.getClass().getSimpleName())){ + SearchWidgetFormula searchWidgetFormula = widgetHashMap.get(widget.getClass().getSimpleName()); + ITContent content = widgetInfo.getContent().copy(); + searchWidgetFormula.searchFormulaFromWidget(content,formulaInfos); + } + + } +} From 9da26485519990d2494e38693ff0225084ea178d Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Wed, 14 Sep 2022 15:01:17 +0800 Subject: [PATCH 14/93] =?UTF-8?q?REPORT-75998=20=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E5=85=AC=E5=BC=8F=E2=80=94=E2=80=94=E8=B6=85=E9=93=BE=E3=80=81?= =?UTF-8?q?=E9=AB=98=E4=BA=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AbstractSearchHighlightAction.java | 31 ++++++ .../SearchHighlightFormulaAction.java | 37 ++++++ .../SearchCommonConditionAction.java | 25 +++++ .../SearchFormulaConditionAction.java | 26 +++++ .../condition/SearchListConditionAction.java | 36 ++++++ .../SearchObjectConditionAction.java | 25 +++++ .../AbstractSearchJSFormulaAction.java | 42 +++++++ .../SearchCommit2DBJSFormulaAction.java | 97 ++++++++++++++++ .../SearchExportJSFormulaAction.java | 49 ++++++++ .../javascript/SearchJSHighlightAction.java | 105 ++++++++++++++++++ .../SearchMobileHyperlinkFormulaAction.java | 30 +++++ 11 files changed, 503 insertions(+) create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/AbstractSearchHighlightAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchCommonConditionAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchFormulaConditionAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchListConditionAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchObjectConditionAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/AbstractSearchJSFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchExportJSFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSHighlightAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchMobileHyperlinkFormulaAction.java diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/AbstractSearchHighlightAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/AbstractSearchHighlightAction.java new file mode 100644 index 0000000000..adb4ce6b1a --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/AbstractSearchHighlightAction.java @@ -0,0 +1,31 @@ +package com.fr.design.actions.replace.action.content.formula.highlight; + +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.Info; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.mainframe.JTemplate; +import com.fr.report.cell.cellattr.highlight.HighlightAction; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-19 + */ +public abstract class AbstractSearchHighlightAction implements SearchHighlightFormula { + @Override + public void dealWithHighlightAction(ITContent content, ArrayList formulaInfos, HighlightAction highlightAction) { + + } + + @Override + public void searchFormula(ArrayList formulaInfos, ITContent content) { + + } + + @Override + public ArrayList search4Infos(JTemplate jTemplate) { + return null; + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaAction.java new file mode 100644 index 0000000000..11667b228a --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaAction.java @@ -0,0 +1,37 @@ +package com.fr.design.actions.replace.action.content.formula.highlight; + +import com.fr.design.actions.replace.action.content.formula.highlight.javascript.SearchJSHighlightAction; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.report.cell.cellattr.highlight.HighlightAction; + +import java.util.ArrayList; +import java.util.HashMap; + +/** + * 处理条件属性中各种属性的公式(超级链接、控件...) + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-18 + */ +public class SearchHighlightFormulaAction extends AbstractSearchHighlightAction{ + public static HashMap highlightHashMap = new HashMap<>(); + static { + //这边控件类型不做处理,在SearchWidgetFormulaAction统一处理即可 + //条件属性-超级链接 + highlightHashMap.put("HyperlinkHighlightAction",new SearchJSHighlightAction()); + //条件属性-... + // TODO: 2022/9/14 条件属性的其他类型 + } + + + @Override + public void dealWithHighlightAction(ITContent content, ArrayList formulaInfos, HighlightAction highlightAction) { + if (highlightHashMap.containsKey(highlightAction.getClass().getSimpleName())){ + SearchHighlightFormula searchHighlight = highlightHashMap.get(highlightAction.getClass().getSimpleName()); + searchHighlight.dealWithHighlightAction(content,formulaInfos,highlightAction); + } + + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchCommonConditionAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchCommonConditionAction.java new file mode 100644 index 0000000000..d78041f569 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchCommonConditionAction.java @@ -0,0 +1,25 @@ +package com.fr.design.actions.replace.action.content.formula.highlight.condition; + +import com.fr.base.Formula; +import com.fr.data.condition.CommonCondition; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.general.data.Condition; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-17 + */ +public class SearchCommonConditionAction implements SearchConditionFormula { + @Override + public void searchFormulaFromCondition(ArrayList formulaInfos, ITContent content, Condition condition) { + if (((CommonCondition)condition).getCompare().getValue() != null && ((CommonCondition)condition).getCompare().getValue() instanceof Formula){ + ITContent newContent =content.copy(); + newContent.setReplaceObject(((CommonCondition) condition).getCompare()); + formulaInfos.add(new FormulaInfo(newContent)); + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchFormulaConditionAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchFormulaConditionAction.java new file mode 100644 index 0000000000..73a2a14351 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchFormulaConditionAction.java @@ -0,0 +1,26 @@ +package com.fr.design.actions.replace.action.content.formula.highlight.condition; + +import com.fr.data.condition.FormulaCondition; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; + +import com.fr.general.data.Condition; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-17 + */ +public class SearchFormulaConditionAction implements SearchConditionFormula { + @Override + public void searchFormulaFromCondition(ArrayList formulaInfos, ITContent content, Condition condition) { + if (((FormulaCondition)(condition)).getFormula() != null){ + ITContent newContent = content.copy(); + newContent.setReplaceObject(condition); + formulaInfos.add(new FormulaInfo(newContent)); + } + + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchListConditionAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchListConditionAction.java new file mode 100644 index 0000000000..33c52a7da1 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchListConditionAction.java @@ -0,0 +1,36 @@ +package com.fr.design.actions.replace.action.content.formula.highlight.condition; + +import com.fr.data.condition.CommonCondition; +import com.fr.data.condition.FormulaCondition; +import com.fr.data.condition.ListCondition; +import com.fr.data.condition.ObjectCondition; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; + +import com.fr.general.data.Condition; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-17 + */ +public class SearchListConditionAction implements SearchConditionFormula { + @Override + public void searchFormulaFromCondition(ArrayList formulaInfos, ITContent content, Condition condition) { + for (int i = 0 ;i <((ListCondition)condition).getJoinConditionCount() ;i++){ + Condition joinCondition = ((ListCondition)condition).getJoinCondition(i).getCondition(); + if (joinCondition instanceof CommonCondition){ + SearchCommonConditionAction commonConditionAction = new SearchCommonConditionAction(); + commonConditionAction.searchFormulaFromCondition(formulaInfos, content, joinCondition); + } else if (joinCondition instanceof FormulaCondition){ + SearchFormulaConditionAction formulaConditionAction = new SearchFormulaConditionAction(); + formulaConditionAction.searchFormulaFromCondition(formulaInfos, content, joinCondition); + } else if (joinCondition instanceof ObjectCondition){ + SearchObjectConditionAction objectConditionAction = new SearchObjectConditionAction(); + objectConditionAction.searchFormulaFromCondition(formulaInfos, content, joinCondition); + } + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchObjectConditionAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchObjectConditionAction.java new file mode 100644 index 0000000000..229512c2f5 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchObjectConditionAction.java @@ -0,0 +1,25 @@ +package com.fr.design.actions.replace.action.content.formula.highlight.condition; + +import com.fr.base.Formula; +import com.fr.data.condition.ObjectCondition; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.general.data.Condition; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-18 + */ +public class SearchObjectConditionAction implements SearchConditionFormula { + @Override + public void searchFormulaFromCondition(ArrayList formulaInfos, ITContent content, Condition condition) { + if (((ObjectCondition)condition).getCompare().getValue() != null && ((ObjectCondition)condition).getCompare().getValue() instanceof Formula){ + ITContent newContent =content.copy(); + newContent.setReplaceObject(((ObjectCondition) condition).getCompare()); + formulaInfos.add(new FormulaInfo(newContent)); + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/AbstractSearchJSFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/AbstractSearchJSFormulaAction.java new file mode 100644 index 0000000000..c7fd8cebc8 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/AbstractSearchJSFormulaAction.java @@ -0,0 +1,42 @@ +package com.fr.design.actions.replace.action.content.formula.highlight.javascript; + +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.Info; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.mainframe.JTemplate; +import com.fr.js.JavaScript; +import com.fr.report.cell.cellattr.highlight.HighlightAction; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-19 + */ +public abstract class AbstractSearchJSFormulaAction implements SearchJSFormula { + @Override + public void searchJSFormulaFromOther(ArrayList formulaInfos, ITContent content, JavaScript javaScript) { + + } + + @Override + public void dealWithHighlightAction(ITContent content, ArrayList formulaInfos, HighlightAction highlightAction) { + + } + + @Override + public void searchFormula(ArrayList formulaInfos, ITContent content) { + + } + + @Override + public ArrayList search4Infos(JTemplate jTemplate) { + return null; + } + + @Override + public void addFormulaInfosFromJSPara(ArrayList formulaInfos, ITContent content, JavaScript javaScript) { + + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java new file mode 100644 index 0000000000..aa956c52cc --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java @@ -0,0 +1,97 @@ +package com.fr.design.actions.replace.action.content.formula.highlight.javascript; + +import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchCommonConditionAction; +import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchConditionFormula; +import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchFormulaConditionAction; +import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchListConditionAction; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; +import com.fr.general.data.Condition; +import com.fr.js.Commit2DBJavaScript; +import com.fr.js.JavaScript; +import com.fr.write.DBManipulation; +import com.fr.write.DMLConfigJob; +import com.fr.write.config.DMLConfig; + +import java.util.ArrayList; +import java.util.HashMap; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-19 + */ +public class SearchCommit2DBJSFormulaAction extends AbstractSearchJSFormulaAction{ + + public static HashMap conditionHashMap = new HashMap<>(); + static { + conditionHashMap.put("FormulaCondition",new SearchFormulaConditionAction()); + conditionHashMap.put("CommonCondition",new SearchCommonConditionAction()); + conditionHashMap.put("ListCondition",new SearchListConditionAction()); + } + @Override + public void searchJSFormulaFromOther(ArrayList formulaInfos, ITContent content, JavaScript javaScript) { + if (!((Commit2DBJavaScript)javaScript).getDBManipulation().isEmpty()){ + + //处理回调函数——这里单独摘出来是因为这边逻辑比较复杂,提交事件会再循环产生一个新的DBManipulation,后续统一处理 + dealWithCallBack(formulaInfos,content,((Commit2DBJavaScript)javaScript)); + //处理DBManipulation + for (int i = 0 ; i < ((Commit2DBJavaScript)javaScript).getDBManipulation().size() ; i++){ + dealWithDBManipulation(formulaInfos,content, (DBManipulation) ((Commit2DBJavaScript)javaScript).getDBManipulation().get(i)); + } + } + } + + private void dealWithDBManipulation(ArrayList formulaInfos, ITContent content, DBManipulation dbManipulation) { + DMLConfig dmlConfig = dbManipulation.getDmlConfig(); + //处理提交条件中的公式 + dealWithCommit2DBCondition(formulaInfos,content,dmlConfig); + //处理DBManipulation + dealWithSubmitJob(formulaInfos,content,dmlConfig); + } + + private void dealWithSubmitJob(ArrayList formulaInfos, ITContent content, DMLConfig dmlConfig) { + for (int i = 0 ;i < dmlConfig.getSubmitJobCount() ; i ++){ + //这边自定义事件不需要处理,只处理提交事件 + if (dmlConfig.getSubmitJob(i) instanceof DMLConfigJob){ + ITContent newContent = content.copy(); + + newContent.addOtherPos( + Toolkit.i18nText("Fine-Engine_Report_JavaScript_Commit_To_Database"), + Toolkit.i18nText("Fine-Design_Basic_Write_Submit_Event") + ); + dealWithDBManipulation(formulaInfos,newContent,(((DMLConfigJob)dmlConfig.getSubmitJob(i)).getDBManipulation())); + } + } + } + + private void dealWithCallBack(ArrayList formulaInfos, ITContent content, Commit2DBJavaScript javaScript) { + if (javaScript.getCallBack() != null){ + SearchJSHighlightAction SJSA = new SearchJSHighlightAction(); + ITContent newContent = content.copy(); + newContent.addOtherPos( + Toolkit.i18nText("Fine-Engine_Report_JavaScript_Commit_To_Database"), + Toolkit.i18nText("Fine-Design_Basic_Set_Callback_Function") + ); + SJSA.searchJSFormulaFromOther(formulaInfos,newContent, javaScript.getCallBack()); + + } + } + + private void dealWithCommit2DBCondition(ArrayList formulaInfos, ITContent content, DMLConfig dmlConfig){ + if (dmlConfig.getCondition() != null){ + //这边condition有三种情况:FormulaCondition、CommonCondition、ListCondition,分别处理 + Condition condition = dmlConfig.getCondition(); + SearchConditionFormula searchCondition = conditionHashMap.get(condition.getClass().getSimpleName()); + ITContent newContent = content.copy(); + newContent.addOtherPos( + Toolkit.i18nText("Fine-Engine_Report_JavaScript_Commit_To_Database"), + Toolkit.i18nText("Fine-Design_Basic_Submit_Condition") + ); + searchCondition.searchFormulaFromCondition(formulaInfos, newContent,condition); + } + } + + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchExportJSFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchExportJSFormulaAction.java new file mode 100644 index 0000000000..c49496db7a --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchExportJSFormulaAction.java @@ -0,0 +1,49 @@ +package com.fr.design.actions.replace.action.content.formula.highlight.javascript; + +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; +import com.fr.js.ExportJavaScript; +import com.fr.js.JavaScript; +import com.fr.js.SingleJavaScript; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-19 + */ +public class SearchExportJSFormulaAction extends AbstractSearchJSFormulaAction{ + @Override + public void searchJSFormulaFromOther(ArrayList formulaInfos, ITContent content, JavaScript javaScript) { + //如果导出当前模板,可以存公式的地方就是命名方式-自定义 + if (((ExportJavaScript)javaScript).isCurrentTemplate()){ + dealSingleJavaScript(formulaInfos,content,((ExportJavaScript)javaScript).getCurrentTemplateJavaScript()); + } else { + List list = ((ExportJavaScript)javaScript).getJsListForOtherTemplates(); + if (isListExist(list)){ + for (SingleJavaScript singleJavaScript : list){ + dealSingleJavaScript(formulaInfos,content,singleJavaScript); + } + } + } + } + + public boolean isListExist(List list){ + return list != null && list.size() > 0; + } + + private void dealSingleJavaScript(ArrayList formulaInfos, ITContent content, SingleJavaScript javaScript){ + if (!javaScript.isDefaultFileName()){ + ITContent newContent = content.copy(); + newContent.setReplaceObject(javaScript); + newContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_Export_JS_Event"), + Toolkit.i18nText("Fine-Design_Basic_Export_JS_Filename") + ); + formulaInfos.add(new FormulaInfo(newContent)); + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSHighlightAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSHighlightAction.java new file mode 100644 index 0000000000..36f5c2d9e5 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSHighlightAction.java @@ -0,0 +1,105 @@ +package com.fr.design.actions.replace.action.content.formula.highlight.javascript; + +import com.fr.base.Formula; + +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; +import com.fr.js.Commit2DBJavaScript; +import com.fr.js.JavaScript; +import com.fr.js.NameJavaScriptGroup; +import com.fr.report.cell.cellattr.highlight.HighlightAction; +import com.fr.report.cell.cellattr.highlight.HyperlinkHighlightAction; +import com.fr.stable.ParameterProvider; + +import java.util.ArrayList; +import java.util.HashMap; + +/** + * 处理条件属性中各种超级链接内的公式(也包括事件中的各种超链) + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-18 + */ +public class SearchJSHighlightAction extends AbstractSearchJSFormulaAction { + //需要特殊处理的JS类型 + public static HashMap javaScriptHashMap = new HashMap<>(); + public static HashMap hashMap = new HashMap<>(); + static { + hashMap.put(Commit2DBJavaScript.class, new SearchCommit2DBJSFormulaAction()); + } + static { + //控件事件里面需要特殊处理的类型 + //EmailJavaScript(这个暂时不做处理) + //ExportJavaScript + //MobilePopupHyperlink + //Commit2DBJavaScript + //单元格条件属性里面需要处理的类型 + //WebHyperlink——只有参数可以放公式,不需要特殊处理 + //ReportletHyperlink——只有参数可以放公式,不需要特殊处理 + //EmailJavaScript(这个暂时不做处理) + //ParameterJavaScript——只有参数可以放公式,不需要特殊处理 + //JavaScriptImpl——只有参数可以放公式,不需要特殊处理 + //MobilePopupHyperlink + //ChartHyperPoplink + //ChartHyperRelateCellLink + //ChartHyperRelateFloatLink + javaScriptHashMap.put("Commit2DBJavaScript",new SearchCommit2DBJSFormulaAction()); + javaScriptHashMap.put("ExportJavaScript",new SearchExportJSFormulaAction()); + javaScriptHashMap.put("MobilePopupHyperlink",new SearchMobileHyperlinkFormulaAction()); + } + + @Override + public void dealWithHighlightAction( ITContent content, ArrayList formulaInfos,HighlightAction highlightAction) { + NameJavaScriptGroup nameJavaScriptGroup = ((HyperlinkHighlightAction)highlightAction).getHperlink(); + if (nameJavaScriptGroup != null){ + for (int i = 0 ; i < nameJavaScriptGroup.size() ; i ++){ + //单元格条件属性-属性-超级链接里面参数的公式统一判断获取一下 + ITContent newContent =content.copy(); + newContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_Cell"), + Toolkit.i18nText("Fine-Design_Basic_Condition_Attributes"), + Toolkit.i18nText("Fine-Design_Report_Hyperlink"), + Toolkit.i18nText("Fine-Design_Basic_Parameters")); + addFormulaInfosFromJSPara(formulaInfos,newContent,nameJavaScriptGroup.getNameHyperlink(i).getJavaScript()); + } + } + } + + /** + * 仅仅获取JS中的参数中的公式 + * @param formulaInfos + * @param content + * @param javaScript + */ + @Override + public void addFormulaInfosFromJSPara(ArrayList formulaInfos, ITContent content, JavaScript javaScript) { + if (javaScript.getParameters() != null){ + for (ParameterProvider provider : javaScript.getParameters()){ + if (provider.getValue() instanceof Formula){ + ITContent newContent = content.copy(); + newContent.setReplaceObject(provider); + formulaInfos.add(new FormulaInfo(newContent)); + } + } + } + } + + /** + * 对各种类型的JS分别处理,获取公式 + * @param formulaInfos + * @param content + * @param javaScript + */ + @Override + public void searchJSFormulaFromOther(ArrayList formulaInfos, ITContent content, JavaScript javaScript) { + //获取JS中的参数中的公式 + addFormulaInfosFromJSPara(formulaInfos, content, javaScript); + //这里面类型比较多,但是一部分不用处理——公式可能存在的地方只有参数,这部分在addFormulaInfosFromJSPara中就已经把公式拿完了 + if (javaScriptHashMap.containsKey(javaScript.getClass().getSimpleName())){ + SearchJSFormula javaScriptFormula = javaScriptHashMap.get(javaScript.getClass().getSimpleName()); + javaScriptFormula.searchJSFormulaFromOther(formulaInfos,content,javaScript); + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchMobileHyperlinkFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchMobileHyperlinkFormulaAction.java new file mode 100644 index 0000000000..3524f6af15 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchMobileHyperlinkFormulaAction.java @@ -0,0 +1,30 @@ +package com.fr.design.actions.replace.action.content.formula.highlight.javascript; + +import com.fr.base.Formula; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; +import com.fr.js.JavaScript; +import com.fr.js.MobilePopupHyperlink; + +import java.util.ArrayList; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-19 + */ +public class SearchMobileHyperlinkFormulaAction extends AbstractSearchJSFormulaAction{ + @Override + public void searchJSFormulaFromOther(ArrayList formulaInfos, ITContent content, JavaScript javaScript) { + if (((MobilePopupHyperlink)javaScript).getPopupText() instanceof Formula){ + ITContent newContent = content.copy(); + newContent.setReplaceObject(((MobilePopupHyperlink)javaScript).getPopupText()); + newContent.addOtherPos( + Toolkit.i18nText("FR-Plugin-Designer_Mobile_Popup"), + Toolkit.i18nText("FR-Plugin-Designer_Mobile_Popup_Text") + ); + formulaInfos.add(new FormulaInfo(newContent)); + } + } +} From fa7f11c43c6c824a021a4b006bc7d866b24bd0d4 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Fri, 16 Sep 2022 10:59:20 +0800 Subject: [PATCH 15/93] =?UTF-8?q?REPORT-75998=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=EF=BC=8C=E5=A4=A7=E9=83=A8=E5=88=86=E4=B8=8D?= =?UTF-8?q?=E6=8C=81=E6=9C=89=E5=B1=9E=E6=80=A7=E7=9A=84=E5=AF=B9=E8=B1=A1?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BA=E5=8D=95=E4=BE=8B=EF=BC=8C=E8=A1=A5?= =?UTF-8?q?=E5=85=85=E4=BA=86=E5=86=B3=E7=AD=96=E6=8A=A5=E8=A1=A8=E7=9A=84?= =?UTF-8?q?=E5=9B=BE=E8=A1=A8=E9=83=A8=E5=88=86=E7=9A=84=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../actions/replace/action/SearchAction.java | 8 +- .../action/ShowSearchResultAction.java | 180 +++++++------- .../actions/replace/action/ShowValue.java | 11 +- .../action/content/cell/SearchCellAction.java | 161 +++++++----- .../content/component/ComponentType.java | 163 +++++++----- .../component/SearchComponentAction.java | 84 ++++--- .../floatelement/SearchFloatAction.java | 90 ++++--- .../formula/AbstractSearchFormulaAction.java | 25 -- .../content/formula/FormulaReplaceObject.java | 67 +++-- .../action/content/formula/SearchFormula.java | 16 +- .../content/formula/SearchFormulaAction.java | 46 ---- .../content/formula/SearchFormulaManager.java | 94 +++++++ .../cell/AbstractSearchCellFormulaAction.java | 37 --- .../formula/cell/SearchCellFormula.java | 10 +- .../formula/cell/SearchCellFormulaAction.java | 164 ++++++++++--- .../cell/SearchCellFormulaTypeAction.java | 10 +- .../cell/SearchDSColumnFormulaAction.java | 63 ++--- .../formula/cell/SearchRichFormulaAction.java | 16 +- .../cell/SearchSubReportFormulaAction.java | 9 +- .../SearchChartCollectionFormulaAction.java | 178 +++++++++----- .../data/AbstractSearchDataFormulaAction.java | 31 --- .../action/content/formula/data/DataType.java | 62 ++--- .../formula/data/SearchDataFormula.java | 22 -- .../formula/data/SearchDataFormulaAction.java | 70 ++++-- .../AbstractSearchFloatFormula.java | 26 -- .../floatelement/SearchFloatFormula.java | 7 +- .../SearchFloatFormulaAction.java | 75 ++++-- .../AbstractSearchHighlightAction.java | 31 --- .../highlight/SearchHighlightFormula.java | 8 +- .../SearchHighlightFormulaAction.java | 12 +- .../SearchCommonConditionAction.java | 10 +- .../condition/SearchConditionFormula.java | 6 +- .../SearchFormulaConditionAction.java | 10 +- .../condition/SearchListConditionAction.java | 16 +- .../SearchObjectConditionAction.java | 10 +- .../AbstractSearchJSFormulaAction.java | 42 ---- .../SearchCommit2DBJSFormulaAction.java | 66 ++--- .../SearchExportJSFormulaAction.java | 28 ++- .../highlight/javascript/SearchJSFormula.java | 16 +- .../javascript/SearchJSHighlightAction.java | 48 ++-- .../SearchMobileHyperlinkFormulaAction.java | 14 +- .../AbstractSearchTemplateFormula.java | 27 -- .../template/SearchTemplateFormula.java | 10 +- .../template/SearchTemplateFormulaAction.java | 59 ++++- .../AbstractSearchWidgetFormulaAction.java | 55 ++--- .../formula/widget/DictionaryAction.java | 7 +- .../formula/widget/DictionaryType.java | 18 +- .../SearchCommonWidgetFormulaAction.java | 4 +- .../widget/SearchDateEditorFormulaAction.java | 14 +- .../widget/SearchDictFormulaAction.java | 6 +- .../widget/SearchTreeEditorFormulaAction.java | 15 +- .../formula/widget/SearchWidgetFormula.java | 15 +- .../widget/SearchWidgetFormulaAction.java | 166 +++++++++---- .../action/content/js/SearchCellJSAction.java | 103 +++++--- .../content/js/SearchChartJSAction.java | 123 ++++++++++ .../content/js/SearchFloatJSAction.java | 89 +++++-- .../replace/action/content/js/SearchJS.java | 26 ++ .../action/content/js/SearchJSAction.java | 46 ---- .../action/content/js/SearchJSManager.java | 105 ++++++++ .../action/content/js/SearchWebJSAction.java | 87 +++++-- .../content/js/SearchWidgetJSAction.java | 76 ++++-- .../action/content/sql/SearchSQLAction.java | 67 +++-- .../action/content/widget/FrmWidgetType.java | 18 +- .../content/widget/SearchFrmWidget.java | 8 +- .../content/widget/SearchWidgetAction.java | 73 ++++-- .../design/actions/replace/info/CellInfo.java | 35 ++- .../actions/replace/info/ComponentInfo.java | 12 +- .../replace/info/DealWithInfoValue.java | 11 +- .../actions/replace/info/FloatInfo.java | 26 +- .../actions/replace/info/FormulaInfo.java | 43 ++-- .../fr/design/actions/replace/info/Info.java | 16 +- .../design/actions/replace/info/JSInfo.java | 29 ++- .../actions/replace/info/ReplaceObject.java | 69 +++--- .../design/actions/replace/info/SQLInfo.java | 13 +- .../actions/replace/info/WidgetInfo.java | 35 ++- .../replace/info/base/ContentObject.java | 232 ------------------ .../actions/replace/info/base/ITContent.java | 112 +++++---- .../actions/replace/ui/ITComboBoxEditor.java | 15 +- .../replace/ui/ITReplaceMainDialog.java | 95 +++++-- .../replace/ui/ITReplaceNorthPanel.java | 58 +++-- .../replace/ui/ITReplaceSouthPanel.java | 1 - .../replace/ui/ITReplaceWestPanel.java | 4 +- .../actions/replace/ui/ITTableButton.java | 18 +- .../actions/replace/ui/ITTableEditor.java | 22 +- .../actions/replace/ui/ITTableEditorPane.java | 22 +- .../actions/replace/utils/SearchJSUtils.java | 87 ++++--- .../actions/replace/utils/ShowValueUtils.java | 36 ++- 87 files changed, 2492 insertions(+), 1758 deletions(-) delete mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/AbstractSearchFormulaAction.java delete mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormulaManager.java delete mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/AbstractSearchCellFormulaAction.java delete mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/AbstractSearchDataFormulaAction.java delete mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormula.java delete mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/AbstractSearchFloatFormula.java delete mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/AbstractSearchHighlightAction.java delete mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/AbstractSearchJSFormulaAction.java delete mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/AbstractSearchTemplateFormula.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchJS.java delete mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchJSAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchJSManager.java delete mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ContentObject.java diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/SearchAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/SearchAction.java index 3d44d92e69..7cce5087ea 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/SearchAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/SearchAction.java @@ -1,11 +1,11 @@ package com.fr.design.actions.replace.action; -import com.fr.design.actions.replace.info.Info; import com.fr.design.mainframe.JTemplate; -import java.util.ArrayList; /** + * 顶层行为接口 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-11 @@ -16,8 +16,8 @@ public interface SearchAction { * 搜索模板,获取信息列表 * * @param jTemplate 指定搜索的模板 - * @return 对应的Info信息列表 */ - ArrayList search4Infos(JTemplate jTemplate); + default void search4Infos(JTemplate jTemplate) { + } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java index acf430a91b..06520f52bf 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java @@ -5,8 +5,8 @@ import com.fr.chart.chartattr.ChartCollection; import com.fr.design.actions.replace.action.content.cell.SearchCellAction; import com.fr.design.actions.replace.action.content.component.SearchComponentAction; import com.fr.design.actions.replace.action.content.floatelement.SearchFloatAction; -import com.fr.design.actions.replace.action.content.formula.SearchFormulaAction; -import com.fr.design.actions.replace.action.content.js.SearchJSAction; +import com.fr.design.actions.replace.action.content.formula.SearchFormulaManager; +import com.fr.design.actions.replace.action.content.js.SearchJSManager; import com.fr.design.actions.replace.action.content.sql.SearchSQLAction; import com.fr.design.actions.replace.action.content.widget.SearchWidgetAction; import com.fr.design.actions.replace.info.*; @@ -16,16 +16,18 @@ import com.fr.design.mainframe.JTemplate; import com.fr.general.GeneralUtils; import com.fr.report.cell.CellElement; import com.fr.report.cell.FloatElement; -import com.fr.third.org.apache.poi.hssf.record.formula.functions.Int; -import javafx.util.Pair; +import com.fr.stable.collections.combination.Pair; import org.gradle.internal.impldep.org.apache.commons.lang.StringUtils; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; +import java.util.List; +import java.util.Map; /** + * 对展示结果进行处理(获取、过滤) + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-22 @@ -36,14 +38,15 @@ public enum ShowSearchResultAction implements ShowValue { */ CELL(Toolkit.i18nText("Fine-Design_Basic_Cell")) { @Override - public ArrayList showSearchValue(JTemplate jTemplate) { - return new SearchCellAction(jTemplate).getCellInfos(); + public List showSearchValue(JTemplate jTemplate) { + SearchCellAction.getInstance().search4Infos(jTemplate); + return SearchCellAction.getInstance().getCellInfos(); } @Override - public ArrayList addMatchResult(String str, ArrayList arrayList) { - ArrayList cellInfos = new ArrayList<>(); - for (Info info : arrayList) { + public List addMatchResult(String str, List list) { + List cellInfos = new ArrayList<>(); + for (Info info : list) { if (((CellInfo) info).isChartExist()) { CellElement cellElement = (CellElement) info.getContent().getReplaceObject(); ChartCollection chartCollection = (ChartCollection) cellElement.getValue(); @@ -62,8 +65,8 @@ public enum ShowSearchResultAction implements ShowValue { } } } else { - HashMap stringHashMap = info.getValue(); - String content = stringHashMap.getOrDefault("content", StringUtils.EMPTY); + Map stringHashMap = info.getValue(); + String content = stringHashMap.getOrDefault(objectContentKey, StringUtils.EMPTY); if (content.contains(str) && !StringUtils.isEmpty(content)) { info.getContent().setShowStr(ShowValueUtils.getCommonString(content, str)); info.getContent().setOldShowStr(content); @@ -88,62 +91,62 @@ public enum ShowSearchResultAction implements ShowValue { */ JS(Toolkit.i18nText("Fine-Design_Replace_JS")) { @Override - public ArrayList showSearchValue(JTemplate jTemplate) { - return new SearchJSAction(jTemplate).getJsInfos(); + public List showSearchValue(JTemplate jTemplate) { + SearchJSManager.getInstance().search4Infos(jTemplate); + return SearchJSManager.getInstance().getJsInfos(); } @Override - public ArrayList addMatchResult(String str, ArrayList arrayList) { - ArrayList jsInfos = new ArrayList<>(); - HashMap stringHashMap = new HashMap<>(); - for (Info info : arrayList) { + public List addMatchResult(String str, List list) { + List jsInfos = new ArrayList<>(); + Map stringHashMap = new HashMap<>(); + for (Info info : list) { stringHashMap = info.getValue(); if (StringUtils.isEmpty(str)) { - if (!StringUtils.isEmpty(stringHashMap.getOrDefault("content", StringUtils.EMPTY))) { + if (!StringUtils.isEmpty(stringHashMap.getOrDefault(objectContentKey, StringUtils.EMPTY))) { JSInfo contentJSInfo = ((JSInfo) info).copy(); - contentJSInfo.getContent().setShowStr(stringHashMap.get("content")); - contentJSInfo.getContent().setOldShowStr(stringHashMap.get("content")); + contentJSInfo.getContent().setShowStr(stringHashMap.get(objectContentKey)); + contentJSInfo.getContent().setOldShowStr(stringHashMap.get(objectContentKey)); contentJSInfo.getContent().setSelected(true); contentJSInfo.setContentFlag(true); jsInfos.add(contentJSInfo); } - if (!StringUtils.isEmpty(stringHashMap.getOrDefault("name", StringUtils.EMPTY))) { + if (!StringUtils.isEmpty(stringHashMap.getOrDefault(objectNameKey, StringUtils.EMPTY))) { JSInfo nameJSInfo = ((JSInfo) info).copy(); - nameJSInfo.getContent().setShowStr(stringHashMap.get("name")); - nameJSInfo.getContent().setOldShowStr(stringHashMap.get("name")); + nameJSInfo.getContent().setShowStr(stringHashMap.get(objectNameKey)); + nameJSInfo.getContent().setOldShowStr(stringHashMap.get(objectNameKey)); nameJSInfo.getContent().setSelected(true); nameJSInfo.setContentFlag(false); jsInfos.add(nameJSInfo); } } else { searchMap4JS(stringHashMap, jsInfos, ((JSInfo) info), str); - //searchMap4JSContent(stringHashMap, jsInfos, ((JSInfo) info), str); } } return jsInfos; } - private void searchMap4JS(HashMap stringHashMap, ArrayList jsInfos, JSInfo info, String str) { - if (stringHashMap.containsKey("name") && !StringUtils.isEmpty(stringHashMap.get("name"))) { - String name = stringHashMap.get("name"); + private void searchMap4JS(Map map, List jsInfos, JSInfo info, String str) { + if (map.containsKey(objectNameKey) && !StringUtils.isEmpty(map.get(objectNameKey))) { + String name = map.get(objectNameKey); if (name.contains(str)) { JSInfo nameJSInfo = info.copy(); nameJSInfo.getContent().setShowStr(ShowValueUtils.getCommonString(name, str)); nameJSInfo.getContent().setOperatorArray(ShowValueUtils.getStringStartAndEndIndex(name, str)); - nameJSInfo.getContent().setOldShowStr(stringHashMap.get("name")); + nameJSInfo.getContent().setOldShowStr(map.get(objectNameKey)); nameJSInfo.setContentFlag(false); nameJSInfo.getContent().setSelected(true); jsInfos.add(nameJSInfo); } } - if (stringHashMap.containsKey("content") && !StringUtils.isEmpty(stringHashMap.get("content"))) { - String content = stringHashMap.get("content"); + if (map.containsKey(objectContentKey) && !StringUtils.isEmpty(map.get(objectContentKey))) { + String content = map.get(objectContentKey); if (content.contains(str)) { JSInfo contentJSInfo = info.copy(); contentJSInfo.getContent().setShowStr(ShowValueUtils.getCommonString(content, str)); contentJSInfo.getContent().setOperatorArray(ShowValueUtils.getStringStartAndEndIndex(content, str)); - contentJSInfo.getContent().setOldShowStr(stringHashMap.get("content")); + contentJSInfo.getContent().setOldShowStr(map.get(objectContentKey)); contentJSInfo.setContentFlag(true); contentJSInfo.getContent().setSelected(true); jsInfos.add(contentJSInfo); @@ -156,19 +159,20 @@ public enum ShowSearchResultAction implements ShowValue { */ SQL("SQL") { @Override - public ArrayList showSearchValue(JTemplate jTemplate) { - return new SearchSQLAction(jTemplate).getSqlInfos(); + public List showSearchValue(JTemplate jTemplate) { + SearchSQLAction.getInstance().search4Infos(jTemplate); + return SearchSQLAction.getInstance().getSqlInfos(); } @Override - public ArrayList addMatchResult(String str, ArrayList arrayList) { - ArrayList sqlInfos = new ArrayList<>(); - HashMap stringHashMap = new HashMap<>(); - for (Info info : arrayList) { + public List addMatchResult(String str, List list) { + List sqlInfos = new ArrayList<>(); + Map stringHashMap = new HashMap<>(); + for (Info info : list) { stringHashMap = ((SQLInfo) info).getValue(); if (StringUtils.isEmpty(str)) { - info.getContent().setShowStr(stringHashMap.get("content")); - info.getContent().setOldShowStr(stringHashMap.get("content")); + info.getContent().setShowStr(stringHashMap.get(objectContentKey)); + info.getContent().setOldShowStr(stringHashMap.get(objectContentKey)); info.getContent().setSelected(true); sqlInfos.add((SQLInfo) info); } else { @@ -179,14 +183,14 @@ public enum ShowSearchResultAction implements ShowValue { return sqlInfos; } - private void searchMap4SQLContent(HashMap stringHashMap, ArrayList sqlInfos, SQLInfo info, String str) { - if (stringHashMap.containsKey("content") && !StringUtils.isEmpty(stringHashMap.get("content"))) { - String content = stringHashMap.get("content"); + private void searchMap4SQLContent(Map map, List sqlInfos, SQLInfo info, String str) { + if (map.containsKey(objectContentKey) && !StringUtils.isEmpty(map.get(objectContentKey))) { + String content = map.get(objectContentKey); if (content.contains(str)) { SQLInfo contentJSInfo = info.copy(); contentJSInfo.getContent().setShowStr(ShowValueUtils.getCommonString(content, str)); contentJSInfo.getContent().setOperatorArray(ShowValueUtils.getStringStartAndEndIndex(content, str)); - contentJSInfo.getContent().setOldShowStr(stringHashMap.get("content")); + contentJSInfo.getContent().setOldShowStr(map.get(objectContentKey)); contentJSInfo.getContent().setSelected(true); sqlInfos.add(contentJSInfo); } @@ -204,14 +208,15 @@ public enum ShowSearchResultAction implements ShowValue { */ FLOAT(Toolkit.i18nText("Fine-Design_Basic_Float_Element")) { @Override - public ArrayList showSearchValue(JTemplate jTemplate) { - return new SearchFloatAction(jTemplate).getFloatInfos(); + public List showSearchValue(JTemplate jTemplate) { + SearchFloatAction.getInstance().search4Infos(jTemplate); + return SearchFloatAction.getInstance().getFloatInfos(); } @Override - public ArrayList addMatchResult(String str, ArrayList arrayList) { - ArrayList floatInfos = new ArrayList<>(); - for (Info info : arrayList) { + public List addMatchResult(String str, List list) { + List floatInfos = new ArrayList<>(); + for (Info info : list) { FloatElement floatElement = ((FloatElement) (info.getContent().getReplaceObject())); //如果存的是图表,就要特殊处理 if (((FloatInfo) info).isChartExist()) { @@ -252,27 +257,28 @@ public enum ShowSearchResultAction implements ShowValue { */ COMPONENT(Toolkit.i18nText("Fine-Design_Replace_Component")) { @Override - public ArrayList showSearchValue(JTemplate jTemplate) { - return new SearchComponentAction(jTemplate).getComponentInfos(); + public List showSearchValue(JTemplate jTemplate) { + SearchComponentAction.getInstance().search4Infos(jTemplate); + return SearchComponentAction.getInstance().getComponentInfos(); } @Override - public ArrayList addMatchResult(String str, ArrayList arrayList) { + public List addMatchResult(String str, List list) { ArrayList componentInfos = new ArrayList<>(); - HashMap stringHashMap = new HashMap<>(); - for (Info info : arrayList) { - stringHashMap = info.getValue(info.getContent().getReplaceObject()); - searchMap4Component(stringHashMap, componentInfos, ((ComponentInfo) info), str); + Map map = new HashMap<>(); + for (Info info : list) { + map = info.getValue(info.getContent().getReplaceObject()); + searchMap4Component(map, componentInfos, ((ComponentInfo) info), str); } return componentInfos; } - private void searchMap4Component(HashMap stringHashMap, ArrayList componentInfos, ComponentInfo info, String str) { - if (stringHashMap.containsKey("content")) { - String content = stringHashMap.get("content"); + private void searchMap4Component(Map stringHashMap, ArrayList componentInfos, ComponentInfo info, String str) { + if (stringHashMap.containsKey(objectContentKey)) { + String content = stringHashMap.get(objectContentKey); if (content.contains(str)) { info.getContent().setShowStr(ShowValueUtils.getCommonString(content, str)); - info.getContent().setOldShowStr(stringHashMap.get("content")); + info.getContent().setOldShowStr(stringHashMap.get(objectContentKey)); info.getContent().setOperatorArray(ShowValueUtils.getStringStartAndEndIndex(content, str)); info.getContent().setSelected(true); componentInfos.add(info); @@ -285,41 +291,42 @@ public enum ShowSearchResultAction implements ShowValue { */ WIDGET(Toolkit.i18nText("Fine-Design_Basic_Widget")) { @Override - public ArrayList showSearchValue(JTemplate jTemplate) { - return new SearchWidgetAction(jTemplate).getWidgetInfos(); + public List showSearchValue(JTemplate jTemplate) { + SearchWidgetAction.getInstance().search4Infos(jTemplate); + return SearchWidgetAction.getInstance().getWidgetInfos(); } @Override - public ArrayList addMatchResult(String str, ArrayList arrayList) { + public List addMatchResult(String str, List list) { ArrayList widgetInfos = new ArrayList<>(); - HashMap stringHashMap = new HashMap<>(); - for (Info info : arrayList) { + Map stringHashMap = new HashMap<>(); + for (Info info : list) { stringHashMap = info.getValue(); searchMap4Widget(stringHashMap, widgetInfos, ((WidgetInfo) info), str); } return widgetInfos; } - private void searchMap4Widget(HashMap stringHashMap, ArrayList widgetInfos, WidgetInfo info, String str) { - if (stringHashMap.containsKey("name")) { - String name = stringHashMap.get("name"); + private void searchMap4Widget(Map map, List widgetInfos, WidgetInfo info, String str) { + if (map.containsKey(objectNameKey)) { + String name = map.get(objectNameKey); if (!StringUtils.isEmpty(name) && name.contains(str)) { WidgetInfo nameInfo = info.copy(info); nameInfo.getContent().setShowStr(ShowValueUtils.getCommonString(name, str)); - nameInfo.getContent().setOldShowStr(stringHashMap.get("name")); + nameInfo.getContent().setOldShowStr(map.get(objectNameKey)); nameInfo.getContent().setOperatorArray(ShowValueUtils.getStringStartAndEndIndex(name, str)); nameInfo.getContent().setSelected(true); nameInfo.setWaterMarkFlag(false); widgetInfos.add(nameInfo); } } - if (stringHashMap.containsKey("waterMark")) { - String waterMark = stringHashMap.get("waterMark"); + if (map.containsKey(objectWaterMarkKey)) { + String waterMark = map.get(objectWaterMarkKey); if (!StringUtils.isEmpty(waterMark) && waterMark.contains(str)) { WidgetInfo widgetInfo = info.copy(info); widgetInfo.getContent().setShowStr(ShowValueUtils.getCommonString(waterMark, str)); - widgetInfo.getContent().setOldShowStr(stringHashMap.get("waterMark")); - widgetInfo.getContent().setShowObject(widgetInfo.getContent().getShowObject() + "水印"); + widgetInfo.getContent().setOldShowStr(map.get(objectWaterMarkKey)); + widgetInfo.getContent().setShowObject(widgetInfo.getContent().getShowObject() + Toolkit.i18nText("Fine-Design_Form_WaterMark")); widgetInfo.getContent().setOperatorArray(ShowValueUtils.getStringStartAndEndIndex(waterMark, str)); widgetInfo.getContent().setSelected(true); widgetInfo.setWaterMarkFlag(true); @@ -333,27 +340,28 @@ public enum ShowSearchResultAction implements ShowValue { */ FORMULA(Toolkit.i18nText("Fine-Design_Basic_Formula")) { @Override - public ArrayList showSearchValue(JTemplate jTemplate) { - return new SearchFormulaAction(jTemplate).getFormulaInfos(); + public List showSearchValue(JTemplate jTemplate) { + SearchFormulaManager.getInstance().search4Infos(jTemplate); + return SearchFormulaManager.getInstance().getFormulaInfos(); } @Override - public ArrayList addMatchResult(String str, ArrayList arrayList) { - ArrayList formulaInfos = new ArrayList<>(); - HashMap stringHashMap = new HashMap<>(); - for (Info info : arrayList) { + public List addMatchResult(String str, List list) { + List formulaInfos = new ArrayList<>(); + Map stringHashMap = new HashMap<>(); + for (Info info : list) { stringHashMap = info.getValue(); searchMap4Formula(stringHashMap, formulaInfos, ((FormulaInfo) info), str); } return formulaInfos; } - private void searchMap4Formula(HashMap stringHashMap, ArrayList formulaInfos, FormulaInfo info, String str) { - if (stringHashMap.containsKey("content")) { - String name = stringHashMap.get("content"); + private void searchMap4Formula(Map stringHashMap, List formulaInfos, FormulaInfo info, String str) { + if (stringHashMap.containsKey(objectContentKey)) { + String name = stringHashMap.get(objectContentKey); if (name.contains(str)) { info.getContent().setShowStr(ShowValueUtils.getCommonString(name, str)); - info.getContent().setOldShowStr(stringHashMap.get("content")); + info.getContent().setOldShowStr(stringHashMap.get(objectContentKey)); info.getContent().setOperatorArray(ShowValueUtils.getStringStartAndEndIndex(name, str)); info.getContent().setSelected(true); formulaInfos.add(info); @@ -364,6 +372,12 @@ public enum ShowSearchResultAction implements ShowValue { String name; + //存储的对象名称key值 + String objectNameKey = "name"; + //存储的对象内容key值 + String objectContentKey = "content"; + //存储的对象水印Key值 + String objectWaterMarkKey = "waterMark"; ShowSearchResultAction(String name) { this.name = name; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowValue.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowValue.java index 8ee365b2ea..c65cee63fb 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowValue.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowValue.java @@ -4,8 +4,11 @@ import com.fr.design.actions.replace.info.Info; import com.fr.design.mainframe.JTemplate; import java.util.ArrayList; +import java.util.List; /** + * 用于展示结果的处理(获取、过滤) + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-22 @@ -14,17 +17,19 @@ public interface ShowValue { /** * 获取搜索结果 + * * @param jTemplate * @return */ - ArrayList showSearchValue(JTemplate jTemplate); + List showSearchValue(JTemplate jTemplate); /** * 对搜索结果进行过滤 + * * @param str - * @param arrayList + * @param list * @return */ - ArrayList addMatchResult(String str,ArrayList arrayList); + List addMatchResult(String str, List list); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/cell/SearchCellAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/cell/SearchCellAction.java index 12f73a33f4..04b1a6e623 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/cell/SearchCellAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/cell/SearchCellAction.java @@ -4,8 +4,6 @@ import com.fr.chart.chartattr.ChartCollection; import com.fr.design.actions.replace.action.SearchAction; import com.fr.design.actions.replace.action.content.component.SearchComponentAction; import com.fr.design.actions.replace.info.ComponentInfo; -import com.fr.design.actions.replace.info.DealWithInfoValue; -import com.fr.design.actions.replace.info.Info; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; @@ -14,7 +12,7 @@ import com.fr.design.actions.replace.info.CellInfo; import com.fr.form.main.Form; import com.fr.form.ui.ElementCaseEditor; import com.fr.form.ui.Widget; -import com.fr.form.ui.container.*; +import com.fr.form.ui.container.WTitleLayout; import com.fr.form.ui.widget.CRBoundsWidget; import com.fr.general.GeneralUtils; import com.fr.main.impl.WorkBook; @@ -22,74 +20,74 @@ import com.fr.report.cell.CellElement; import com.fr.report.elementcase.ElementCase; import com.fr.report.poly.PolyECBlock; import com.fr.report.report.Report; -import com.fr.stable.AssistUtils; -import javafx.util.Pair; import java.util.ArrayList; -import java.util.HashMap; import java.util.Iterator; +import java.util.List; /** * 获取有内容的单元格相关信息 - * + *

* tips:这边报表分为两块——决策报表(dealForm)和普通报表(dealWorkBook),二者最后都会归于ElementCase - * 决策报表:虽然分为绝对布局和自适应布局,但是单元格可能存在的地方只有report ,二者对它(report)的处理是统一的,都属于WTitleLayout,因此没必要划分两种布局 - * 普通报表:获取elementCase拿到cellIterator遍历即可 + * 决策报表:虽然分为绝对布局和自适应布局,但是单元格可能存在的地方只有report ,二者对它(report)的处理是统一的,都属于WTitleLayout,因此没必要划分两种布局 + * 普通报表:获取elementCase拿到cellIterator遍历即可 * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-11 */ public class SearchCellAction implements SearchAction { - private ArrayList cellInfos; + private List cellInfos; - /** - * 构造时会搜索单元格,设置对应的单元格列表信息 - * @param jTemplate 要搜索的报表对象 - */ - public SearchCellAction(JTemplate jTemplate){ - setCellInfos(search4Infos(jTemplate)); + private SearchCellAction() { } + ; - public ArrayList getCellInfos() { + public List getCellInfos() { return cellInfos; } - public void setCellInfos(ArrayList cellInfos) { + public void setCellInfos(List cellInfos) { this.cellInfos = cellInfos; } /** * 搜索对应的信息 + * * @param jTemplate 要搜索的报表对象 - * @return 返回单元格信息Array */ @Override - public ArrayList search4Infos(JTemplate jTemplate){ - if (jTemplate.getTarget() instanceof Form){ - return dealForm(jTemplate); - - } else if (jTemplate.getTarget() instanceof WorkBook){ - return dealWorkBook(jTemplate); + public void search4Infos(JTemplate jTemplate) { + ITContent content = new ITContent(); + content.setTemplateName(jTemplate.getTemplateName()); + content.addTRL(jTemplate.getTemplateName()); + if (jTemplate.getTarget() instanceof Form) { + setCellInfos(dealForm(jTemplate)); + } else if (jTemplate.getTarget() instanceof WorkBook) { + setCellInfos(dealWorkBook((WorkBook) jTemplate.getTarget(),content)); + } else { + setCellInfos(new ArrayList<>()); } - return new ArrayList<>(); } /** * 处理决策报表 * 流程:dealForm——>getCellInfosFromBoundsWidget——>getCellInfoFromElementCase + * * @param jTemplate 要搜索的报表对象 * @return 返回单元格信息Array */ - private ArrayList dealForm(JTemplate jTemplate) { + private List dealForm(JTemplate jTemplate) { ArrayList result = new ArrayList<>(); - SearchComponentAction searchComponentAction = new SearchComponentAction(jTemplate); - for (ComponentInfo info : searchComponentAction.getComponentInfos()){ - ITContent content = info.getContent().copy(); - getCellInfosFromBoundsWidget(result,content, (Widget) info.getContent().getReplaceObject()); + + SearchComponentAction searchComponentAction = SearchComponentAction.getInstance(); + searchComponentAction.search4Infos(jTemplate); + for (ComponentInfo info : searchComponentAction.getComponentInfos()) { + ITContent content = ITContent.copy(info.getContent()); + getCellInfosFromBoundsWidget(result, content, (Widget) info.getContent().getReplaceObject()); } return result; @@ -97,19 +95,20 @@ public class SearchCellAction implements SearchAction { /** * 从组件信息中获取到的layout中的BoundsWidget中获取真正的报表块,并且将信息添加到列表中 - * @param result 要操作的Array + * + * @param result 要操作的Array * @param content 存储查找替换相关信息的类 - * @param widget 控件和组件的最高层接口 + * @param widget 控件和组件的最高层接口 */ - private void getCellInfosFromBoundsWidget(ArrayList result, ITContent content, Widget widget) { + private void getCellInfosFromBoundsWidget(List result, ITContent content, Widget widget) { //report在两种布局中都属于WTitleLayout - if (widget instanceof WTitleLayout){ - for (int i = 0 ; i < ((WTitleLayout) widget).getWidgetCount() ; i++){ + if (widget instanceof WTitleLayout) { + for (int i = 0; i < ((WTitleLayout) widget).getWidgetCount(); i++) { //这里它又套了一层BoundsWidget - if (((CRBoundsWidget)((WTitleLayout) widget).getWidget(i)).getWidget() instanceof ElementCaseEditor){ - ElementCaseEditor editor = (ElementCaseEditor) ((CRBoundsWidget)((WTitleLayout) widget).getWidget(i)).getWidget(); - ITContent newContent = content.copy(); - getCellInfoFromElementCase((ElementCase) editor.getElementCase(),result,newContent); + if (((CRBoundsWidget) ((WTitleLayout) widget).getWidget(i)).getWidget() instanceof ElementCaseEditor) { + ElementCaseEditor editor = (ElementCaseEditor) ((CRBoundsWidget) ((WTitleLayout) widget).getWidget(i)).getWidget(); + ITContent newContent = ITContent.copy(content); + getCellInfoFromElementCase((ElementCase) editor.getElementCase(), result, newContent); } } } @@ -118,61 +117,59 @@ public class SearchCellAction implements SearchAction { /** * 处理普通报表 - * @param jTemplate 要搜索的报表对象 + * + * @param workBook 要搜索的报表对象 * @return 对应信息Array */ - private ArrayList dealWorkBook(JTemplate jTemplate) { - WorkBook workBook = (WorkBook) jTemplate.getTarget(); + public List dealWorkBook(WorkBook workBook,ITContent workBookContent) { ArrayList result = new ArrayList<>(); - for (int i = 0 ; i < workBook.getReportCount() ; i++){ + for (int i = 0; i < workBook.getReportCount(); i++) { Report report = workBook.getReport(i); - ITContent content = new ITContent(); + ITContent content = ITContent.copy(workBookContent); content.setSheetID(String.valueOf(i)); content.setSheetName(workBook.getReportName(i)); - content.setTemplateName(jTemplate.getTemplateName()); - content.addTRL(jTemplate.getTemplateName()); - getCellInfoFromReport(report,result, content); + getCellInfoFromReport(report, result, content); } return result; } /** * 处理普通报表的sheet - * @param report sheet - * @param result 要操作的信息Array + * + * @param report sheet + * @param result 要操作的信息Array * @param content 存储查找替换相关信息的类 */ - private void getCellInfoFromReport(Report report, ArrayList result,ITContent content){ + private void getCellInfoFromReport(Report report, List result, ITContent content) { - if (report != null){ + if (report != null) { Iterator it = report.iteratorOfElementCase(); - while (it.hasNext()){ - ITContent newContent =content.copy(); + while (it.hasNext()) { + ITContent newContent = ITContent.copy(content); ElementCase elementCase = (ElementCase) it.next(); - getCellInfoFromElementCase(elementCase,result, newContent); + getCellInfoFromElementCase(elementCase, result, newContent); } } } - private void getCellInfoFromElementCase(ElementCase elementCase, ArrayList result,ITContent content){ + private void getCellInfoFromElementCase(ElementCase elementCase, List result, ITContent content) { Iterator cellIterator = elementCase.cellIterator(); - while (cellIterator.hasNext()){ - ITContent newContent = content.copy(); + while (cellIterator.hasNext()) { + ITContent newContent = ITContent.copy(content); CellElement cell = (CellElement) cellIterator.next(); - newContent.getContentObject().setCell(cell); newContent.setReplaceObject(cell); //单元格 - newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Cell") +cell); + newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Cell") + cell); newContent.setShowObject(cell); newContent.addTRL(newContent.getSheetID()); - if (elementCase instanceof PolyECBlock){ - newContent.setBlockName(((PolyECBlock)elementCase).getBlockName()); - newContent.addTRL(((PolyECBlock)elementCase).getBlockName()); + if (elementCase instanceof PolyECBlock) { + newContent.setBlockName(((PolyECBlock) elementCase).getBlockName()); + newContent.addTRL(((PolyECBlock) elementCase).getBlockName()); } newContent.addTRL(GeneralUtils.objectToString(cell)); CellInfo cellInfo = new CellInfo(newContent); - if (cell.getValue() instanceof ChartCollection){ + if (cell.getValue() instanceof ChartCollection) { cellInfo.setChartExist(true); } result.add(cellInfo); @@ -182,11 +179,45 @@ public class SearchCellAction implements SearchAction { /** * 对应的单元格信息列表是否有内容 + * * @return 判断的布尔值 */ - public boolean isCellInfosExist(){ + public boolean isCellInfosExist() { return this.getCellInfos().size() > 0; } + /** + * 对外开放的获取对象的方法 + * + * @return + */ + public static SearchCellAction getInstance() { + return SearchCellAction.SearchCellActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + enum SearchCellActionEnum { + /** + * 单例 + */ + SINGLETON; + + private SearchCellAction instance; + + SearchCellActionEnum() { + instance = new SearchCellAction(); + } + + /** + * 获取对象 + * + * @return + */ + public SearchCellAction getInstance() { + return instance; + } + } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/ComponentType.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/ComponentType.java index 4f63e14023..ed5cab762c 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/ComponentType.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/ComponentType.java @@ -1,11 +1,8 @@ package com.fr.design.actions.replace.action.content.component; -import com.fr.design.actions.replace.action.content.widget.FrmWidgetType; -import com.fr.design.actions.replace.action.content.widget.SearchFrmWidget; import com.fr.design.actions.replace.info.ComponentInfo; import com.fr.design.actions.replace.info.DealWithInfoValue; import com.fr.design.actions.replace.info.Info; -import com.fr.design.actions.replace.info.WidgetInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.actions.replace.utils.ShowValueUtils; import com.fr.form.ui.Widget; @@ -20,19 +17,21 @@ import com.fr.form.ui.container.cardlayout.WCardTitleLayout; import com.fr.form.ui.container.cardlayout.WTabFitLayout; import com.fr.form.ui.widget.CRBoundsWidget; import com.fr.stable.StringUtils; -import javafx.util.Pair; +import com.fr.stable.collections.combination.Pair; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * 决策报表组件类型 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-09-08 */ -public enum ComponentType implements DealWithInfoValue{ +public enum ComponentType implements DealWithInfoValue { /** * WCardMainBorderLayout属于Tab块组件中的最外层——默认命名方式为tablayout0的类型 @@ -40,54 +39,54 @@ public enum ComponentType implements DealWithInfoValue{ * 处理该类型时需要先将该对象加入我们的组件列表中,再对其包含的内容进行递归处理 * TIP:该类型对其设置组件名时直接setWidgetName即可,设计器右侧上方和右侧下方面板中的组件名称会同步更改 */ - W_CARD_MAIN_BORDER_LAYOUT("WCardMainBorderLayout"){ + W_CARD_MAIN_BORDER_LAYOUT("WCardMainBorderLayout") { @Override - public void addComponent2Array(ArrayList componentInfos, ITContent bodyContent, Widget widget) { + public void addComponent2Array(List componentInfos, ITContent bodyContent, Widget widget) { super.addComponent2Array(componentInfos, bodyContent, widget); - ITContent content = bodyContent.copy(); + ITContent content = ITContent.copy(bodyContent); content.addOtherPos(widget.getWidgetName()); - for (int i = 0 ; i < ((WCardMainBorderLayout)widget).getWidgetCount() ; i ++){ - Widget cardLayoutWidget = ((WCardMainBorderLayout)widget).getWidget(i); - if (cardLayoutWidget instanceof WCardTitleLayout){ - for (int j = 0 ; j <((WCardTitleLayout) cardLayoutWidget).getWidgetCount() ; j++){ - if (((WCardTitleLayout) cardLayoutWidget).getWidget(j) instanceof WCardTagLayout){ + for (int i = 0; i < ((WCardMainBorderLayout) widget).getWidgetCount(); i++) { + Widget cardLayoutWidget = ((WCardMainBorderLayout) widget).getWidget(i); + if (cardLayoutWidget instanceof WCardTitleLayout) { + for (int j = 0; j < ((WCardTitleLayout) cardLayoutWidget).getWidgetCount(); j++) { + if (((WCardTitleLayout) cardLayoutWidget).getWidget(j) instanceof WCardTagLayout) { content.addOtherPos(((WCardTitleLayout) cardLayoutWidget).getWidget(j).getWidgetName()); } } } } - searchLayout4Component(componentInfos,content,((WCardMainBorderLayout)widget)); + searchLayout4Component(componentInfos, content, ((WCardMainBorderLayout) widget)); } }, /** * WCardTitleLayout里面两个,一个CardAddButton——不必处理,一个WCardTagLayout——默认命名方式为tabpane0的类型 * 处理该类型时不用对该对象进行处理,直接对其包含的内容进行递归处理即可 */ - W_CARD_TITLE_LAYOUT("WCardTitleLayout"){ + W_CARD_TITLE_LAYOUT("WCardTitleLayout") { @Override - public void addComponent2Array(ArrayList componentInfos, ITContent bodyContent, Widget widget) { - searchLayout4Component(componentInfos,bodyContent,(WCardTitleLayout) widget); + public void addComponent2Array(List componentInfos, ITContent bodyContent, Widget widget) { + searchLayout4Component(componentInfos, bodyContent, (WCardTitleLayout) widget); } }, /** * 对于WCardLayout 里面就是放的WTabFitLayout——tab00、tab10 * 处理该类型时不用对该对象进行处理,直接对其包含的内容进行递归处理即可 */ - W_CARD_LAYOUT("WCardLayout"){ + W_CARD_LAYOUT("WCardLayout") { @Override - public void addComponent2Array(ArrayList componentInfos, ITContent bodyContent, Widget widget) { - searchLayout4Component(componentInfos,bodyContent,(WCardLayout) widget); + public void addComponent2Array(List componentInfos, ITContent bodyContent, Widget widget) { + searchLayout4Component(componentInfos, bodyContent, (WCardLayout) widget); } }, /** * WCardTagLayout——默认命名方式为tabpane0的类型 * TIP:该类型对其设置组件名时直接setWidgetName即可,设计器右侧上方和右侧下方面板中的组件名称会同步更改 */ - W_CARD_TAG_LAYOUT("WCardTagLayout"){ + W_CARD_TAG_LAYOUT("WCardTagLayout") { @Override - public void addComponent2Array(ArrayList componentInfos, ITContent bodyContent, Widget widget) { + public void addComponent2Array(List componentInfos, ITContent bodyContent, Widget widget) { super.addComponent2Array(componentInfos, bodyContent, widget); - searchLayout4Component(componentInfos,bodyContent,(WCardTagLayout) widget); + searchLayout4Component(componentInfos, bodyContent, (WCardTagLayout) widget); } }, /** @@ -95,11 +94,11 @@ public enum ComponentType implements DealWithInfoValue{ * 处理该类型时需要先将该对象加入我们的组件列表中,再对其包含的内容进行递归处理 * TIP:该类型对其设置组件名时直接setWidgetName即可,设计器右侧上方和右侧下方面板中的组件名称会同步更改 */ - W_ABSOLUTE_LAYOUT("WAbsoluteLayout"){ + W_ABSOLUTE_LAYOUT("WAbsoluteLayout") { @Override - public void addComponent2Array(ArrayList componentInfos, ITContent bodyContent, Widget widget) { + public void addComponent2Array(List componentInfos, ITContent bodyContent, Widget widget) { super.addComponent2Array(componentInfos, bodyContent, widget); - serachCRBoundsWidget4Component(componentInfos,bodyContent,(WAbsoluteLayout) widget); + serachCRBoundsWidget4Component(componentInfos, bodyContent, (WAbsoluteLayout) widget); } }, /** @@ -107,27 +106,27 @@ public enum ComponentType implements DealWithInfoValue{ * 处理该类型时需要先将该对象加入我们的组件列表中,再对其包含的内容进行递归处理 * TIP:该类型对其设置组件名时直接setWidgetName即可,设计器右侧上方和右侧下方面板中的组件名称会同步更改 */ - W_TAB_FIT_LAYOUT("WTabFitLayout"){ + W_TAB_FIT_LAYOUT("WTabFitLayout") { @Override - public void addComponent2Array(ArrayList componentInfos, ITContent bodyContent, Widget widget) { + public void addComponent2Array(List componentInfos, ITContent bodyContent, Widget widget) { super.addComponent2Array(componentInfos, bodyContent, widget); - serachCRBoundsWidget4Component(componentInfos,bodyContent,(WTabFitLayout) widget); + serachCRBoundsWidget4Component(componentInfos, bodyContent, (WTabFitLayout) widget); } }, /** * 自适应布局下报表块和图表的存储方式 * TIP:该类型对其设置组件名时需要对内外层进行setWidgetName,设计器右侧上方和右侧下方面板中的组件名称不会同步更改 */ - W_TITLE_LAYOUT("WTitleLayout"){ + W_TITLE_LAYOUT("WTitleLayout") { @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { Object replaceObject = info.getContent().getReplaceObject(); - if (replaceObject instanceof WTitleLayout){ + if (replaceObject instanceof WTitleLayout) { WTitleLayout titleLayout = (WTitleLayout) replaceObject; - info.updateOldStr(titleLayout.getWidgetName(),findStr); - titleLayout.setWidgetName(ShowValueUtils.replaceAll(titleLayout.getWidgetName(),findStr,replaceStr)); - CRBoundsWidget crBoundsWidget = ((CRBoundsWidget)titleLayout.getWidget(0)); - crBoundsWidget.getWidget().setWidgetName(ShowValueUtils.replaceAll(crBoundsWidget.getWidget().getWidgetName(),findStr,replaceStr)); + info.updateOldStr(titleLayout.getWidgetName(), findStr); + titleLayout.setWidgetName(ShowValueUtils.replaceAll(titleLayout.getWidgetName(), findStr, replaceStr)); + CRBoundsWidget crBoundsWidget = ((CRBoundsWidget) titleLayout.getWidget(0)); + crBoundsWidget.getWidget().setWidgetName(ShowValueUtils.replaceAll(crBoundsWidget.getWidget().getWidgetName(), findStr, replaceStr)); } } }, @@ -136,16 +135,16 @@ public enum ComponentType implements DealWithInfoValue{ * 自适应布局下:下拉框控件、下拉复选框控件、日期控件、数字控件、下拉树控件、密码控件都属于该类型 * TIP:该类型对其设置组件名时需要对内外层进行setWidgetName,设计器右侧上方和右侧下方面板中的组件名称不会同步更改 */ - W_SCALE_LAYOUT("WScaleLayout"){ + W_SCALE_LAYOUT("WScaleLayout") { @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { Object replaceObject = info.getContent().getReplaceObject(); - if (replaceObject instanceof WScaleLayout){ + if (replaceObject instanceof WScaleLayout) { WScaleLayout scaleLayout = (WScaleLayout) replaceObject; - info.updateOldStr(scaleLayout.getWidgetName(),findStr); - scaleLayout.setWidgetName(ShowValueUtils.replaceAll(scaleLayout.getWidgetName(),findStr,replaceStr)); - CRBoundsWidget crBoundsWidget = ((CRBoundsWidget)scaleLayout.getWidget(0)); - crBoundsWidget.getWidget().setWidgetName(ShowValueUtils.replaceAll(crBoundsWidget.getWidget().getWidgetName(),findStr,replaceStr)); + info.updateOldStr(scaleLayout.getWidgetName(), findStr); + scaleLayout.setWidgetName(ShowValueUtils.replaceAll(scaleLayout.getWidgetName(), findStr, replaceStr)); + CRBoundsWidget crBoundsWidget = ((CRBoundsWidget) scaleLayout.getWidget(0)); + crBoundsWidget.getWidget().setWidgetName(ShowValueUtils.replaceAll(crBoundsWidget.getWidget().getWidgetName(), findStr, replaceStr)); } } }, @@ -231,30 +230,44 @@ public enum ComponentType implements DealWithInfoValue{ String name; + ComponentType(String name) { this.name = name; } + /** + * 匹配 + * + * @param name + * @return + */ @Nullable - public static ComponentType match(String name){ + public static ComponentType match(String name) { ComponentType[] values = ComponentType.values(); for (ComponentType value : values) { - if(value.name.equals(name)){ + if (value.name.equals(name)) { return value; } } return null; } - public void addComponent2Array(ArrayList componentInfos, ITContent bodyContent, Widget widget) { - componentInfos.add(new ComponentInfo(getComponentContent(bodyContent,widget))); + public void addComponent2Array(List componentInfos, ITContent bodyContent, Widget widget) { + componentInfos.add(new ComponentInfo(getComponentContent(bodyContent, widget))); } - public ITContent getComponentContent(ITContent componentContent,Widget widget){ - ITContent content = componentContent.copy(); + /** + * 处理ITContent + * + * @param componentContent + * @param widget + * @return + */ + public ITContent getComponentContent(ITContent componentContent, Widget widget) { + ITContent content = ITContent.copy(componentContent); content.setReplaceObject(widget); String widgetName = widget.getWidgetName(); - if (!(widget instanceof WCardTagLayout)){ + if (!(widget instanceof WCardTagLayout)) { content.addOtherPos(widgetName); } content.setBlockName(widgetName); @@ -263,50 +276,64 @@ public enum ComponentType implements DealWithInfoValue{ return content; } - public void searchLayout4Component(ArrayList componentInfos, ITContent bodyContent, WLayout layout){ - for (int i = 0 ; i < layout.getWidgetCount() ; i ++){ + /** + * 从Layout里面拿组件 + * + * @param componentInfos + * @param bodyContent + * @param layout + */ + public void searchLayout4Component(List componentInfos, ITContent bodyContent, WLayout layout) { + for (int i = 0; i < layout.getWidgetCount(); i++) { ComponentType componentType = ComponentType.match(layout.getWidget(i).getClass().getSimpleName()); - if (componentType != null){ + if (componentType != null) { componentType.addComponent2Array(componentInfos, bodyContent, layout.getWidget(i)); } } } - public void serachCRBoundsWidget4Component(ArrayList componentInfos, ITContent bodyContent, WLayout layout){ - for (int i = 0 ; i < layout.getWidgetCount() ; i ++){ + /** + * 从CRBoundWidget里面拿组件 + * + * @param componentInfos + * @param bodyContent + * @param layout + */ + public void serachCRBoundsWidget4Component(List componentInfos, ITContent bodyContent, WLayout layout) { + for (int i = 0; i < layout.getWidgetCount(); i++) { //这边会套一层CRBoundsWidget - ComponentType componentType = ComponentType.match(((CRBoundsWidget)(layout.getWidget(i))).getWidget().getClass().getSimpleName()); - if (componentType != null){ - ITContent content = bodyContent.copy(); + ComponentType componentType = ComponentType.match(((CRBoundsWidget) (layout.getWidget(i))).getWidget().getClass().getSimpleName()); + if (componentType != null) { + ITContent content = ITContent.copy(bodyContent); content.addOtherPos(layout.getWidgetName()); - componentType.addComponent2Array(componentInfos, content, ((CRBoundsWidget)(layout.getWidget(i))).getWidget()); + componentType.addComponent2Array(componentInfos, content, ((CRBoundsWidget) (layout.getWidget(i))).getWidget()); } } } @Override - public HashMap getValue(Object... o) { - HashMap hashMap = new HashMap<>(); - if (o != null && o[0] instanceof Widget){ + public Map getValue(Object... o) { + HashMap hashMap = new HashMap<>(); + if (o != null && o[0] instanceof Widget) { hashMap.put("content", ((Widget) o[0]).getWidgetName()); } return hashMap; } @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { Object replaceObject = info.getContent().getReplaceObject(); - if (replaceObject instanceof Widget){ + if (replaceObject instanceof Widget) { Widget widget = ((Widget) replaceObject); - info.updateOldStr(widget.getWidgetName(),findStr); - widget.setWidgetName(widget.getWidgetName().replaceAll(findStr,replaceStr)); + info.updateOldStr(widget.getWidgetName(), findStr); + widget.setWidgetName(widget.getWidgetName().replaceAll(findStr, replaceStr)); } } @Override public String getInfoShowStr(Info info) { - if (info instanceof ComponentInfo && info.getContent().getReplaceObject() instanceof Widget){ + if (info instanceof ComponentInfo && info.getContent().getReplaceObject() instanceof Widget) { return ((Widget) info.getContent().getReplaceObject()).getWidgetName(); } return StringUtils.EMPTY; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java index 70f4ea4195..217980de6f 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java @@ -1,23 +1,17 @@ package com.fr.design.actions.replace.action.content.component; import com.fr.design.actions.replace.action.SearchAction; +import com.fr.design.actions.replace.action.content.cell.SearchCellAction; import com.fr.design.actions.replace.info.ComponentInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.mainframe.JTemplate; import com.fr.form.main.Form; import com.fr.form.ui.Widget; -import com.fr.form.ui.container.WAbsoluteLayout; -import com.fr.form.ui.container.WCardLayout; import com.fr.form.ui.container.WLayout; -import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout; -import com.fr.form.ui.container.cardlayout.WCardTagLayout; -import com.fr.form.ui.container.cardlayout.WCardTitleLayout; -import com.fr.form.ui.container.cardlayout.WTabFitLayout; import com.fr.form.ui.widget.CRBoundsWidget; -import com.fr.stable.StringUtils; -import com.teamdev.jxbrowser.deps.org.checkerframework.checker.units.qual.C; import java.util.ArrayList; +import java.util.List; /** * 获取决策报表组件 @@ -29,33 +23,26 @@ import java.util.ArrayList; */ public class SearchComponentAction implements SearchAction { - private ArrayList componentInfos; + private List componentInfos; - public ArrayList getComponentInfos() { + public List getComponentInfos() { return componentInfos; } - public void setComponentInfos(ArrayList componentInfos) { + public void setComponentInfos(List componentInfos) { this.componentInfos = componentInfos; } - /** - * 构造时会搜索组件,设置对应的组件列表信息 - * @param jTemplate 要搜索的模板 - */ - public SearchComponentAction(JTemplate jTemplate) { - setComponentInfos(search4Infos(jTemplate)); - } /** * 搜索决策报表参数面板以及body面板两个地方的组件 + * * @param jTemplate 要搜索的模板 - * @return 组件信息Array */ @Override - public ArrayList search4Infos(JTemplate jTemplate) { - ArrayList componentInfos = new ArrayList<>(); + public void search4Infos(JTemplate jTemplate) { + List componentInfos = new ArrayList<>(); if (jTemplate.getTarget() instanceof Form) { Form form = (Form) jTemplate.getTarget(); ITContent content = new ITContent(); @@ -67,12 +54,12 @@ public class SearchComponentAction implements SearchAction { //body面板 dealBody(componentInfos, content, form.getBody()); } - return componentInfos; + setComponentInfos(componentInfos); } - private void dealBody(ArrayList componentInfos, ITContent content, Widget body) { + private void dealBody(List componentInfos, ITContent content, Widget body) { if (body instanceof WLayout) { - ITContent bodyContent = content.copy(); + ITContent bodyContent = ITContent.copy(content); bodyContent.addOtherPos(body.getWidgetName()); //单独处理一下body组件 dealBodyContainer(componentInfos, bodyContent, (WLayout) body); @@ -82,28 +69,28 @@ public class SearchComponentAction implements SearchAction { } } - private void searchBodyComponent(ArrayList componentInfos, ITContent bodyContent, Widget body) { - for (int i = 0 ; i < ((WLayout) body).getWidgetCount(); i++){ + private void searchBodyComponent(List componentInfos, ITContent bodyContent, Widget body) { + for (int i = 0; i < ((WLayout) body).getWidgetCount(); i++) { //body下面的每个控件都会有一层BoundsWidget,为了兼容用了CRBoundsWidget,boundsWidget.getWidget()里面才是真正我们需要的widget CRBoundsWidget boundsWidget = (CRBoundsWidget) ((WLayout) body).getWidget(i); ComponentType componentType = ComponentType.match(boundsWidget.getWidget().getClass().getSimpleName()); - if (componentType != null){ - componentType.addComponent2Array(componentInfos,bodyContent,boundsWidget.getWidget()); + if (componentType != null) { + componentType.addComponent2Array(componentInfos, bodyContent, boundsWidget.getWidget()); } } } - private void dealBodyContainer(ArrayList componentInfos, ITContent bodyContent, WLayout body) { - ITContent content = bodyContent.copy(); + private void dealBodyContainer(List componentInfos, ITContent bodyContent, WLayout body) { + ITContent content = ITContent.copy(bodyContent); content.setReplaceObject(body); dealContent(content, body.getWidgetName()); //WParameterLayout componentInfos.add(new ComponentInfo(content)); } - private void dealPara(ArrayList componentInfos, ITContent content, WLayout paraContainer) { + private void dealPara(List componentInfos, ITContent content, WLayout paraContainer) { if (paraContainer != null) { - ITContent paraContent = content.copy(); + ITContent paraContent = ITContent.copy(content); paraContent.addOtherPos(paraContainer.getWidgetName()); //单独处理一下para组件 dealParaContainer(componentInfos, paraContent, paraContainer); @@ -112,9 +99,9 @@ public class SearchComponentAction implements SearchAction { } } - private void searchParaComponent(ArrayList componentInfos, ITContent paraContent, WLayout paraContainer) { + private void searchParaComponent(List componentInfos, ITContent paraContent, WLayout paraContainer) { for (int i = 0; i < paraContainer.getWidgetCount(); i++) { - ITContent content = paraContent.copy(); + ITContent content = ITContent.copy(paraContent); String widgetName = ((CRBoundsWidget) (paraContainer.getWidget(i))).getWidget().getWidgetName(); content.addOtherPos(widgetName); content.setReplaceObject(((CRBoundsWidget) (paraContainer.getWidget(i))).getWidget()); @@ -124,9 +111,15 @@ public class SearchComponentAction implements SearchAction { } } - //单独处理WParameterLayout组件 - private void dealParaContainer(ArrayList componentInfos, ITContent content, WLayout paraContainer) { - ITContent paraContent = content.copy(); + /** + * 单独处理WParameterLayout组件 + * + * @param componentInfos + * @param content + * @param paraContainer + */ + private void dealParaContainer(List componentInfos, ITContent content, WLayout paraContainer) { + ITContent paraContent = ITContent.copy(content); paraContent.setReplaceObject(paraContainer); dealContent(paraContent, paraContainer.getWidgetName()); //WParameterLayout @@ -139,4 +132,21 @@ public class SearchComponentAction implements SearchAction { content.setShowObject(widgetName); content.addTRL(widgetName); } + + public static SearchComponentAction getInstance() { + return SearchComponentAction.SearchComponentActionEnum.SINGLETON.getInstance(); + } + + enum SearchComponentActionEnum { + SINGLETON; + private SearchComponentAction instance; + + SearchComponentActionEnum() { + instance = new SearchComponentAction(); + } + + public SearchComponentAction getInstance() { + return instance; + } + } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/floatelement/SearchFloatAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/floatelement/SearchFloatAction.java index c3bd741e02..4d89c51361 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/floatelement/SearchFloatAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/floatelement/SearchFloatAction.java @@ -2,6 +2,7 @@ package com.fr.design.actions.replace.action.content.floatelement; import com.fr.chart.chartattr.ChartCollection; import com.fr.design.actions.replace.action.SearchAction; +import com.fr.design.actions.replace.action.content.cell.SearchCellAction; import com.fr.design.actions.replace.info.FloatInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; @@ -14,10 +15,11 @@ import com.fr.report.report.Report; import java.util.ArrayList; import java.util.Iterator; +import java.util.List; /** * 查找悬浮元素的信息 - * + *

* 由于决策报表没有悬浮元素,因此不用考虑决策报表,只需要考虑普通报表即可 * * @author Destiny.Lin @@ -25,25 +27,19 @@ import java.util.Iterator; * created by Destiny.Lin on 2022-08-16 */ public class SearchFloatAction implements SearchAction { - private ArrayList floatInfos; - - /** - * 构造时会搜索悬浮元素,设置对应的悬浮元素信息列表 - * @param jTemplate 指定搜索的模板 - */ - public SearchFloatAction(JTemplate jTemplate){ setFloatInfos(search4Infos(jTemplate));} + private List floatInfos; /** * 查找悬浮元素信息,只需要考虑普通报表 + * * @param jTemplate 指定搜索模板 - * @return 悬浮元素信息列表 */ @Override - public ArrayList search4Infos(JTemplate jTemplate) { - ArrayList result = new ArrayList<>(); - if (jTemplate.getTarget() instanceof WorkBook){ + public void search4Infos(JTemplate jTemplate) { + List result = new ArrayList<>(); + if (jTemplate.getTarget() instanceof WorkBook) { WorkBook workBook = (WorkBook) jTemplate.getTarget(); - for (int i = 0 ; i < workBook.getReportCount() ; i++){ + for (int i = 0; i < workBook.getReportCount(); i++) { Report report = workBook.getReport(i); ITContent content = new ITContent(); content.setTemplateName(jTemplate.getTemplateName()); @@ -51,42 +47,41 @@ public class SearchFloatAction implements SearchAction { content.setSheetName(workBook.getReportName(i)); content.addTRL(jTemplate.getTemplateName()); content.addTRL(String.valueOf(i)); - getFloatInfoFromReport(report,result, content); + getFloatInfoFromReport(report, result, content); } } - return result; - } + setFloatInfos(result); + } - private void getFloatInfoFromReport(Report report, ArrayList result, ITContent content) { + private void getFloatInfoFromReport(Report report, List result, ITContent content) { - if (report != null){ + if (report != null) { Iterator it = report.iteratorOfElementCase(); - while (it.hasNext()){ - ITContent newContent = content.copy(); + while (it.hasNext()) { + ITContent newContent = ITContent.copy(content); ElementCase elementCase = (ElementCase) it.next(); - getFloatInfoFromElementCase(elementCase,result, newContent); + getFloatInfoFromElementCase(elementCase, result, newContent); } } } - private void getFloatInfoFromElementCase(ElementCase elementCase, ArrayList result, ITContent content) { + private void getFloatInfoFromElementCase(ElementCase elementCase, List result, ITContent content) { Iterator floatIterator = elementCase.floatIterator(); - while (floatIterator.hasNext()){ - ITContent newContent = content.copy(); + while (floatIterator.hasNext()) { + ITContent newContent = ITContent.copy(content); FloatElement floatElement = (FloatElement) floatIterator.next(); - newContent.getContentObject().setFloatElement(floatElement); newContent.setReplaceObject(floatElement); newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Float_Element")); - if (elementCase instanceof PolyECBlock){ - newContent.setBlockName(((PolyECBlock)elementCase).getBlockName()); - newContent.addTRL(((PolyECBlock)elementCase).getBlockName()); + if (elementCase instanceof PolyECBlock) { + newContent.setBlockName(((PolyECBlock) elementCase).getBlockName()); + newContent.addTRL(((PolyECBlock) elementCase).getBlockName()); } newContent.setShowObject(floatElement.getName()); newContent.addTRL(floatElement.getName()); FloatInfo floatInfo = new FloatInfo(newContent); - if (floatElement.getValue() instanceof ChartCollection){ + if (floatElement.getValue() instanceof ChartCollection) { floatInfo.setChartExist(true); } result.add(floatInfo); @@ -94,11 +89,44 @@ public class SearchFloatAction implements SearchAction { } - public ArrayList getFloatInfos() { + public List getFloatInfos() { return floatInfos; } - public void setFloatInfos(ArrayList floatInfos) { + public void setFloatInfos(List floatInfos) { this.floatInfos = floatInfos; } + + /** + * 对外开放的获取对象的方法 + * + * @return + */ + public static SearchFloatAction getInstance() { + return SearchFloatAction.SearchFloatActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + enum SearchFloatActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchFloatAction instance; + + SearchFloatActionEnum() { + instance = new SearchFloatAction(); + } + + /** + * 获取对象 + * + * @return + */ + public SearchFloatAction getInstance() { + return instance; + } + } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/AbstractSearchFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/AbstractSearchFormulaAction.java deleted file mode 100644 index 9746cc169a..0000000000 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/AbstractSearchFormulaAction.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.fr.design.actions.replace.action.content.formula; - -import com.fr.design.actions.replace.info.FormulaInfo; -import com.fr.design.actions.replace.info.Info; -import com.fr.design.actions.replace.info.base.ITContent; -import com.fr.design.mainframe.JTemplate; - -import java.util.ArrayList; - -/** - * @author Destiny.Lin - * @version 11.0 - * created by Destiny.Lin on 2022-08-19 - */ -public abstract class AbstractSearchFormulaAction implements SearchFormula{ - @Override - public void searchFormula(ArrayList formulaInfos, ITContent content) { - - } - - @Override - public ArrayList search4Infos(JTemplate jTemplate) { - return null; - } -} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java index 2971945689..c2c8a56880 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java @@ -8,10 +8,8 @@ import com.fr.base.iofile.attr.WatermarkAttr; import com.fr.base.present.FormulaPresent; import com.fr.data.condition.FormulaCondition; import com.fr.data.core.Compare; -import com.fr.design.actions.replace.action.ShowValue; import com.fr.design.actions.replace.info.DealWithInfoValue; import com.fr.design.actions.replace.info.Info; -import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.actions.replace.utils.ShowValueUtils; import com.fr.design.file.HistoryTemplateListCache; import com.fr.js.SingleJavaScript; @@ -23,11 +21,12 @@ import com.fr.report.cell.cellattr.core.group.DSColumn; import com.fr.stable.FormulaProvider; import com.fr.stable.ParameterProvider; import com.fr.stable.StringUtils; -import javafx.util.Pair; +import com.fr.stable.collections.combination.Pair; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * @author Destiny.Lin @@ -40,7 +39,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { */ FORMULA("Formula") { @Override - public HashMap getValue(Object... o) { + public Map getValue(Object... o) { HashMap map = new HashMap<>(); if (!StringUtils.isEmpty(((Formula) o[0]).getContent())) { map.put("content", ((Formula) o[0]).getContent()); @@ -49,7 +48,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { } @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { Object replaceObject = info.getContent().getReplaceObject(); info.updateOldStr(((Formula) replaceObject).getContent(), findStr); ((Formula) replaceObject).setContent(ShowValueUtils.replaceAll(((Formula) replaceObject).getContent(), findStr, replaceStr)); @@ -60,7 +59,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { */ FORMULA_CONDITION("FormulaCondition") { @Override - public HashMap getValue(Object... o) { + public Map getValue(Object... o) { HashMap map = new HashMap<>(); if (!StringUtils.isEmpty(((FormulaCondition) o[0]).getFormula())) { map.put("content", ((FormulaCondition) o[0]).getFormula()); @@ -69,7 +68,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { } @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { Object replaceObject = info.getContent().getReplaceObject(); //更新上一次操作的信息 info.updateOldStr(((FormulaCondition) replaceObject).getFormula(), findStr); @@ -83,7 +82,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { */ COMPARE("Compare") { @Override - public HashMap getValue(Object... o) { + public Map getValue(Object... o) { HashMap map = new HashMap<>(); if (!StringUtils.isEmpty(((Formula) ((Compare) o[0]).getValue()).getContent())) { map.put("content", ((Formula) ((Compare) o[0]).getValue()).getContent()); @@ -92,7 +91,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { } @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { Object replaceObject = info.getContent().getReplaceObject(); if (((Compare) replaceObject).getValue() instanceof Formula) { Formula formula = (Formula) ((Compare) replaceObject).getValue(); @@ -108,7 +107,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { */ RICH_TEXT("RichText") { @Override - public HashMap getValue(Object... o) { + public Map getValue(Object... o) { HashMap map = new HashMap<>(); if (!StringUtils.isEmpty(((RichText) ((CellElement) o[0]).getValue()).getContent())) { map.put("content", ((RichText) ((CellElement) o[0]).getValue()).getContent()); @@ -117,7 +116,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { } @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { //todo 富文本公式处理 } @@ -127,7 +126,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { */ KV("KV") { @Override - public HashMap getValue(Object... o) { + public Map getValue(Object... o) { HashMap map = new HashMap<>(); if (!StringUtils.isEmpty(((Formula) ((com.fr.base.core.KV) o[0]).getValue()).getContent())) { map.put("content", ((Formula) ((com.fr.base.core.KV) o[0]).getValue()).getContent()); @@ -136,7 +135,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { } @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { Object replaceObject = info.getContent().getReplaceObject(); info.updateOldStr(((Formula) ((com.fr.base.core.KV) replaceObject).getValue()).getContent(), findStr); @@ -149,7 +148,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { */ CELL_INSERT_POLICY_ATTR("CellInsertPolicyAttr") { @Override - public HashMap getValue(Object... o) { + public Map getValue(Object... o) { HashMap map = new HashMap<>(); if (!StringUtils.isEmpty(((Formula) (((CellInsertPolicyAttr) o[0]).getDefaultInsertValue())).getContent())) { map.put("content", ((Formula) (((CellInsertPolicyAttr) o[0]).getDefaultInsertValue())).getContent()); @@ -158,7 +157,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { } @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { Object replaceObject = info.getContent().getReplaceObject(); info.updateOldStr(((Formula) (((CellInsertPolicyAttr) replaceObject).getDefaultInsertValue())).getContent(), findStr); ((Formula) (((CellInsertPolicyAttr) replaceObject).getDefaultInsertValue())).setContent(ShowValueUtils.replaceAll(((Formula) (((CellInsertPolicyAttr) replaceObject).getDefaultInsertValue())).getContent(), findStr, replaceStr)); @@ -170,7 +169,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { */ PRESENT("Present") { @Override - public HashMap getValue(Object... o) { + public Map getValue(Object... o) { HashMap map = new HashMap<>(); if (!StringUtils.isEmpty(((FormulaPresent) o[0]).getFormulaContent())) { map.put("content", ((FormulaPresent) o[0]).getFormulaContent()); @@ -179,7 +178,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { } @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { Object replaceObject = info.getContent().getReplaceObject(); info.updateOldStr(((FormulaPresent) replaceObject).getFormulaContent(), findStr); @@ -192,7 +191,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { */ SINGLE_JAVA_SCRIPT("SingleJavaScript") { @Override - public HashMap getValue(Object... o) { + public Map getValue(Object... o) { HashMap map = new HashMap<>(); if (!StringUtils.isEmpty(((SingleJavaScript) o[0]).getFileName())) { map.put("content", ((SingleJavaScript) o[0]).getFileName()); @@ -201,7 +200,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { } @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { Object replaceObject = info.getContent().getReplaceObject(); info.updateOldStr(((SingleJavaScript) replaceObject).getFileName(), findStr); @@ -214,7 +213,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { */ PARAMETER_PROVIDER("ParameterProvider") { @Override - public HashMap getValue(Object... o) { + public Map getValue(Object... o) { HashMap map = new HashMap<>(); if (!StringUtils.isEmpty(((Formula) (((ParameterProvider) o[0]).getValue())).getContent())) { map.put("content", ((Formula) (((ParameterProvider) o[0]).getValue())).getContent()); @@ -223,7 +222,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { } @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { Object replaceObject = info.getContent().getReplaceObject(); info.updateOldStr(((Formula) (((ParameterProvider) replaceObject).getValue())).getContent(), findStr); @@ -236,7 +235,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { */ FORMULA_PROVIDER("FormulaProvider") { @Override - public HashMap getValue(Object... o) { + public Map getValue(Object... o) { HashMap map = new HashMap<>(); if (!StringUtils.isEmpty(((FormulaProvider) o[0]).getContent())) { map.put("content", ((FormulaProvider) o[0]).getContent()); @@ -245,7 +244,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { } @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { Object replaceObject = info.getContent().getReplaceObject(); info.updateOldStr(((FormulaProvider) replaceObject).getContent(), findStr); @@ -258,7 +257,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { */ PARAMETER("Parameter") { @Override - public HashMap getValue(Object... o) { + public Map getValue(Object... o) { HashMap map = new HashMap<>(); if (!StringUtils.isEmpty(((Formula) (((Parameter) o[0]).getValue())).getContent())) { map.put("content", ((Formula) (((Parameter) o[0]).getValue())).getContent()); @@ -267,7 +266,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { } @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { Object replaceObject = info.getContent().getReplaceObject(); info.updateOldStr(((Formula) (((Parameter) replaceObject).getValue())).getContent(), findStr); @@ -280,7 +279,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { */ DS_COLUMN("DSColumn") { @Override - public HashMap getValue(Object... o) { + public Map getValue(Object... o) { HashMap map = new HashMap<>(); if (!StringUtils.isEmpty(((DSColumn) o[0]).getResult())) { map.put("content", ((DSColumn) o[0]).getResult()); @@ -289,7 +288,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { } @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { Object replaceObject = info.getContent().getReplaceObject(); info.updateOldStr(((DSColumn) replaceObject).getResult(), findStr); @@ -302,7 +301,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { */ BASE_FORMULA("BaseFormula") { @Override - public HashMap getValue(Object... o) { + public Map getValue(Object... o) { HashMap map = new HashMap<>(); if (!StringUtils.isEmpty(((BaseFormula) o[0]).getContent())) { map.put("content", ((BaseFormula) o[0]).getContent()); @@ -311,7 +310,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { } @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { Object replaceObject = info.getContent().getReplaceObject(); info.updateOldStr(((BaseFormula) replaceObject).getContent(), findStr); @@ -324,7 +323,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { */ STORE_PROCEDURE_PARAMETER("StoreProcedureParameter") { @Override - public HashMap getValue(Object... o) { + public Map getValue(Object... o) { HashMap map = new HashMap<>(); if (!StringUtils.isEmpty(((Formula) ((StoreProcedureParameter) o[0]).getValue()).getContent())) { map.put("content", ((Formula) ((StoreProcedureParameter) o[0]).getValue()).getContent()); @@ -333,7 +332,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { } @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { Object replaceObject = info.getContent().getReplaceObject(); info.updateOldStr(((Formula) ((StoreProcedureParameter) replaceObject).getValue()).getContent(), findStr); @@ -346,7 +345,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { */ WATER_MARK_ATTR("WatermarkAttr") { @Override - public HashMap getValue(Object... o) { + public Map getValue(Object... o) { HashMap map = new HashMap<>(); if (!StringUtils.isEmpty(((WatermarkAttr) o[0]).getText())) { map.put("content", ((WatermarkAttr) o[0]).getText()); @@ -355,7 +354,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { } @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { WorkBook workBook = (WorkBook) HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getTarget(); WatermarkAttr watermarkAttr = (WatermarkAttr) info.getContent().getReplaceObject(); info.updateOldStr(watermarkAttr.getText(), findStr); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormula.java index 49b5b81981..1b6fc2f2c7 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormula.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormula.java @@ -3,9 +3,11 @@ package com.fr.design.actions.replace.action.content.formula; import com.fr.design.actions.replace.action.SearchAction; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.mainframe.JTemplate; import java.util.ArrayList; +import java.util.List; /** * @author Destiny.Lin @@ -19,5 +21,17 @@ public interface SearchFormula extends SearchAction { * @param formulaInfos 存储公式信息的列表 * @param content ITContent的数据结构 */ - void searchFormula(ArrayList formulaInfos, ITContent content); + default void searchFormula(List formulaInfos, ITContent content) { + } + + + /** + * 获取各个地方的公式 + * + * @param jTemplate + * @param formulaInfos + */ + default void searchFormulaFromObject(JTemplate jTemplate, List formulaInfos) { + } + } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormulaAction.java deleted file mode 100644 index 2f5e03137b..0000000000 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormulaAction.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.fr.design.actions.replace.action.content.formula; - -import com.fr.design.actions.replace.action.SearchAction; -import com.fr.design.actions.replace.action.content.formula.cell.SearchCellFormulaAction; -import com.fr.design.actions.replace.action.content.formula.data.SearchDataFormulaAction; -import com.fr.design.actions.replace.action.content.formula.floatelement.SearchFloatFormulaAction; -import com.fr.design.actions.replace.action.content.formula.template.SearchTemplateFormulaAction; -import com.fr.design.actions.replace.action.content.formula.widget.SearchWidgetFormulaAction; -import com.fr.design.actions.replace.info.FormulaInfo; -import com.fr.design.mainframe.JTemplate; -import com.fr.form.main.Form; -import com.fr.main.impl.WorkBook; - -import java.util.ArrayList; - -/** - * @author Destiny.Lin - * @version 11.0 - * created by Destiny.Lin on 2022-08-17 - */ -public class SearchFormulaAction implements SearchAction { - private ArrayList formulaInfos; - - public SearchFormulaAction(JTemplate jTemplate) { - setFormulaInfos(search4Infos(jTemplate)); - } - - @Override - public ArrayList search4Infos(JTemplate jTemplate) { - ArrayList formulaInfos = new ArrayList<>(); - new SearchCellFormulaAction(jTemplate, formulaInfos); - new SearchWidgetFormulaAction(jTemplate, formulaInfos); - new SearchDataFormulaAction(jTemplate, formulaInfos); - new SearchTemplateFormulaAction(jTemplate, formulaInfos); - new SearchFloatFormulaAction(jTemplate, formulaInfos); - return formulaInfos; - } - - public ArrayList getFormulaInfos() { - return formulaInfos; - } - - public void setFormulaInfos(ArrayList formulaInfos) { - this.formulaInfos = formulaInfos; - } -} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormulaManager.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormulaManager.java new file mode 100644 index 0000000000..9ca37b501b --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormulaManager.java @@ -0,0 +1,94 @@ +package com.fr.design.actions.replace.action.content.formula; + +import com.fr.design.actions.replace.action.SearchAction; +import com.fr.design.actions.replace.action.content.formula.cell.SearchCellFormulaAction; +import com.fr.design.actions.replace.action.content.formula.data.SearchDataFormulaAction; +import com.fr.design.actions.replace.action.content.formula.floatelement.SearchFloatFormulaAction; +import com.fr.design.actions.replace.action.content.formula.template.SearchTemplateFormulaAction; +import com.fr.design.actions.replace.action.content.formula.widget.SearchWidgetFormulaAction; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.mainframe.JTemplate; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-17 + */ +public class SearchFormulaManager implements SearchAction { + private List formulaInfos; + private Set formulaProviderSet = new HashSet<>(); + + private SearchFormulaManager() { + registerFormula(SearchCellFormulaAction.getInstance()); + registerFormula(SearchWidgetFormulaAction.getInstance()); + registerFormula(SearchDataFormulaAction.getInstance()); + registerFormula(SearchTemplateFormulaAction.getInstance()); + registerFormula(SearchFloatFormulaAction.getInstance()); + } + + @Override + public void search4Infos(JTemplate jTemplate) { + List formulaInfos = new ArrayList<>(); + for (SearchFormula searchFormula : formulaProviderSet) { + searchFormula.searchFormulaFromObject(jTemplate, formulaInfos); + } + setFormulaInfos(formulaInfos); + } + + /** + * 注册对应的SearchFormula + * + * @param searchFormula + */ + public void registerFormula(SearchFormula searchFormula) { + formulaProviderSet.add(searchFormula); + } + + public List getFormulaInfos() { + return formulaInfos; + } + + public void setFormulaInfos(List formulaInfos) { + this.formulaInfos = formulaInfos; + } + + + /** + * 对外开放的获取单例对象的方法 + * + * @return + */ + public static SearchFormulaManager getInstance() { + return SearchFormulaManagerEnum.SINGLETON.getInstance(); + } + + + /** + * 枚举实现单例 + */ + enum SearchFormulaManagerEnum { + /** + * 单例 + */ + SINGLETON; + private SearchFormulaManager instance; + + SearchFormulaManagerEnum() { + instance = new SearchFormulaManager(); + } + + /** + * 获取单例对象 + * + * @return + */ + public SearchFormulaManager getInstance() { + return instance; + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/AbstractSearchCellFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/AbstractSearchCellFormulaAction.java deleted file mode 100644 index 3156878f3f..0000000000 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/AbstractSearchCellFormulaAction.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.fr.design.actions.replace.action.content.formula.cell; - -import com.fr.design.actions.replace.info.FormulaInfo; -import com.fr.design.actions.replace.info.Info; -import com.fr.design.actions.replace.info.base.ITContent; -import com.fr.design.mainframe.JTemplate; - -import java.util.ArrayList; - -/** - * @author Destiny.Lin - * @version 11.0 - * created by Destiny.Lin on 2022-08-30 - */ -public abstract class AbstractSearchCellFormulaAction implements SearchCellFormula{ - - - @Override - public void searchFormulaFromCell(JTemplate jTemplate, ArrayList formulaInfos) { - - } - - @Override - public void searchFormulaFromCellType(ArrayList formulaInfos, ITContent content) { - - } - - @Override - public void searchFormula(ArrayList formulaInfos, ITContent content) { - - } - - @Override - public ArrayList search4Infos(JTemplate jTemplate) { - return new ArrayList<>(); - } -} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormula.java index 80811f33f5..a865449356 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormula.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormula.java @@ -5,7 +5,7 @@ import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.mainframe.JTemplate; -import java.util.ArrayList; +import java.util.List; /** * 查找单元格中可能存在的公式 @@ -22,7 +22,8 @@ public interface SearchCellFormula extends SearchFormula { * @param jTemplate 指定搜索模板 * @param formulaInfos 要存储对应信息列表的数据结构 */ - void searchFormulaFromCell(JTemplate jTemplate, ArrayList formulaInfos); + default void searchFormulaFromCell(JTemplate jTemplate, List formulaInfos) { + } /** * 查找不同单元格内容类型各自可能存在的公式 @@ -30,5 +31,8 @@ public interface SearchCellFormula extends SearchFormula { * @param formulaInfos * @param content */ - void searchFormulaFromCellType(ArrayList formulaInfos, ITContent content); + default void searchFormulaFromCellType(List formulaInfos, ITContent content) { + } + + } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java index cc27b002ea..f4fc869cd0 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java @@ -1,19 +1,24 @@ package com.fr.design.actions.replace.action.content.formula.cell; import com.fr.base.Formula; +import com.fr.base.present.DictPresent; import com.fr.base.present.FormulaPresent; +import com.fr.chart.chartattr.ChartCollection; +import com.fr.data.impl.DatabaseDictionary; import com.fr.design.actions.replace.action.content.cell.SearchCellAction; -import com.fr.design.actions.replace.action.content.formula.AbstractSearchFormulaAction; -import com.fr.design.actions.replace.action.content.formula.SearchFormula; +import com.fr.design.actions.replace.action.content.formula.chart.SearchChartCollectionFormulaAction; import com.fr.design.actions.replace.action.content.formula.highlight.condition.*; import com.fr.design.actions.replace.action.content.formula.highlight.SearchHighlightFormulaAction; import com.fr.design.actions.replace.action.content.formula.highlight.javascript.SearchJSHighlightAction; +import com.fr.design.actions.replace.action.content.formula.widget.DictionaryType; import com.fr.design.actions.replace.info.CellInfo; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.JTemplate; +import com.fr.form.ui.DictionaryContainer; +import com.fr.general.data.Condition; import com.fr.js.NameJavaScriptGroup; import com.fr.report.cell.CellElement; import com.fr.report.cell.TemplateCellElement; @@ -23,9 +28,11 @@ import com.fr.report.cell.cellattr.highlight.HighlightGroup; import com.fr.report.core.sort.common.CellSortAttr; import com.fr.report.core.sort.sortexpression.FormulaSortExpression; import com.fr.report.core.sort.sortexpression.SortExpression; +import sun.security.krb5.SCDynamicStoreConfig; -import java.util.ArrayList; import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * 搜索单元格中的公式 @@ -34,7 +41,7 @@ import java.util.HashMap; * @version 11.0 * created by Destiny.Lin on 2022-08-17 */ -public class SearchCellFormulaAction extends AbstractSearchCellFormulaAction { +public class SearchCellFormulaAction implements SearchCellFormula { public static HashMap cellType = new HashMap<>(); @@ -54,8 +61,12 @@ public class SearchCellFormulaAction extends AbstractSearchCellFormulaAction { conditionHashMap.put("ListCondition", new SearchListConditionAction()); } - public SearchCellFormulaAction(JTemplate jTemplate, ArrayList fomulaInfos) { - searchFormulaFromCell(jTemplate, fomulaInfos); + private SearchCellFormulaAction() { + } + + @Override + public void searchFormulaFromObject(JTemplate jTemplate, List formulaInfos) { + searchFormulaFromCell(jTemplate, formulaInfos); } /** @@ -65,8 +76,9 @@ public class SearchCellFormulaAction extends AbstractSearchCellFormulaAction { * @param formulaInfos 指定添加信息的数组 */ @Override - public void searchFormulaFromCell(JTemplate jTemplate, ArrayList formulaInfos) { - SearchCellAction searchCellAction = new SearchCellAction(jTemplate); + public void searchFormulaFromCell(JTemplate jTemplate, List formulaInfos) { + SearchCellAction searchCellAction = SearchCellAction.getInstance(); + searchCellAction.search4Infos(jTemplate); if (searchCellAction.isCellInfosExist()) { for (CellInfo cellInfo : searchCellAction.getCellInfos()) { //根据单元格类型的不同来进行不同的操作 @@ -92,39 +104,42 @@ public class SearchCellFormulaAction extends AbstractSearchCellFormulaAction { } - private void searchCellHyperLink4Formula(CellInfo cellInfo, ArrayList formulaInfos) { + private void searchCellHyperLink4Formula(CellInfo cellInfo, List formulaInfos) { NameJavaScriptGroup nameJavaScriptGroup = ((CellElement) cellInfo.getContent().getReplaceObject()).getNameHyperlinkGroup(); if (nameJavaScriptGroup != null) { for (int i = 0; i < nameJavaScriptGroup.size(); i++) { SearchJSHighlightAction action = new SearchJSHighlightAction(); - action.searchJSFormulaFromOther(formulaInfos, cellInfo.getContent(), nameJavaScriptGroup.getNameHyperlink(i).getJavaScript()); + ITContent content = ITContent.copy(cellInfo.getContent()); + content.addOtherPos(nameJavaScriptGroup.getNameHyperlink(i).getName()); + action.searchJSFormulaFromOther(formulaInfos, content, nameJavaScriptGroup.getNameHyperlink(i).getJavaScript()); } } } - private void searchCellHighlightPara4Formula(CellInfo cellInfo, ArrayList formulaInfos) { - if (((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getHighlightGroup() != null) { + private void searchCellHighlightPara4Formula(CellInfo cellInfo, List formulaInfos) { + if (isHighlightGroupEmpty(cellInfo)) { HighlightGroup highlightGroup = ((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getHighlightGroup(); for (int i = 0; i < highlightGroup.size(); i++) { for (int j = 0; j < ((DefaultHighlight) highlightGroup.getHighlight(i)).actionCount(); j++) { HighlightAction highlightAction = ((DefaultHighlight) highlightGroup.getHighlight(i)).getHighlightAction(j); //处理HighlightAction SearchHighlightFormulaAction searchHighlightAction = new SearchHighlightFormulaAction(); - ITContent newContent = cellInfo.getContent().copy(); + ITContent newContent = ITContent.copy(cellInfo.getContent()); searchHighlightAction.dealWithHighlightAction(newContent, formulaInfos, highlightAction); } } } } - private void searchCellConditionPara4Formula(CellInfo cellInfo, ArrayList formulaInfos) { - if (((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getHighlightGroup() != null) { + private void searchCellConditionPara4Formula(CellInfo cellInfo, List formulaInfos) { + if (isHighlightGroupEmpty(cellInfo)) { HighlightGroup highlightGroup = ((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getHighlightGroup(); for (int i = 0; i < highlightGroup.size(); i++) { - if (conditionHashMap.containsKey(((DefaultHighlight) highlightGroup.getHighlight(i)).getCondition().getClass().getSimpleName())) { + DefaultHighlight defaultHighlight = (DefaultHighlight) highlightGroup.getHighlight(i); + if (isConditionKeyExist(defaultHighlight.getCondition())) { SearchConditionFormula searchCondition = conditionHashMap.get(((DefaultHighlight) highlightGroup.getHighlight(i)).getCondition().getClass().getSimpleName()); - ITContent newContent = cellInfo.getContent().copy(); + ITContent newContent = ITContent.copy(cellInfo.getContent()); newContent.addOtherPos( Toolkit.i18nText("Fine-Design_Basic_Condition_Attributes"), Toolkit.i18nText("Fine-Design_Basic_Formula")); @@ -134,22 +149,43 @@ public class SearchCellFormulaAction extends AbstractSearchCellFormulaAction { } } - private void searchCellPresent4Formula(CellInfo cellInfo, ArrayList formulaInfos) { - if (((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getPresent() != null - && ((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getPresent() instanceof FormulaPresent) { - ITContent newContent = cellInfo.getContent().copy(); + private boolean isHighlightGroupEmpty(CellInfo cellInfo) { + return ((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getHighlightGroup() != null; + } + + private boolean isConditionKeyExist(Condition condition) { + return conditionHashMap.containsKey(condition.getClass().getSimpleName()); + } + + + private void searchCellPresent4Formula(CellInfo cellInfo, List formulaInfos) { + if (isFormulaPresentValid(cellInfo)) { + ITContent newContent = ITContent.copy(cellInfo.getContent()); newContent.setReplaceObject((((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getPresent())); newContent.addOtherPos( Toolkit.i18nText("Fine-Design_Basic_Cell_Attributes"), Toolkit.i18nText("Fine-Design_Report_Present")); formulaInfos.add(new FormulaInfo(newContent)); } + if (isDictPresentValid(cellInfo)) { + ITContent dictContent = ITContent.copy(cellInfo.getContent()); + dictContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_Cell_Attributes"), + Toolkit.i18nText("Fine-Design_Report_Present") + ); + DictPresent present = (DictPresent) ((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getPresent(); + if (present.getDictionary() != null) { + DictionaryType type = DictionaryType.match(present.getDictionary().getClass().getSimpleName()); + if (type != null) { + type.searchFormulaFromDictionary(dictContent, formulaInfos, present.getDictionary()); + } + } + } } - private void searchCellInsertPolicy4Formula(CellInfo cellInfo, ArrayList formulaInfos) { - if (((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getCellInsertPolicyAttr() != null - && ((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getCellInsertPolicyAttr().getDefaultInsertValue() instanceof Formula) { - ITContent newContent = cellInfo.getContent().copy(); + private void searchCellInsertPolicy4Formula(CellInfo cellInfo, List formulaInfos) { + if (isInsertPolicyValid(cellInfo)) { + ITContent newContent = ITContent.copy(cellInfo.getContent()); newContent.addOtherPos( Toolkit.i18nText("Fine-Design_Basic_Cell_Attributes"), Toolkit.i18nText("Fine-Design_Report_Other"), @@ -159,14 +195,29 @@ public class SearchCellFormulaAction extends AbstractSearchCellFormulaAction { } } + private boolean isFormulaPresentValid(CellInfo cellInfo) { + return ((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getPresent() != null + && ((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getPresent() instanceof FormulaPresent; + } + + private boolean isDictPresentValid(CellInfo cellInfo) { + return ((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getPresent() != null + && ((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getPresent() instanceof DictPresent; + } - private void searchCellSortAttr4Formula(CellInfo cellInfo, ArrayList formulaInfos) { - if (((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getCellExpandAttr() != null) { + private boolean isInsertPolicyValid(CellInfo cellInfo) { + return ((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getCellInsertPolicyAttr() != null + && ((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getCellInsertPolicyAttr().getDefaultInsertValue() instanceof Formula; + } + + + private void searchCellSortAttr4Formula(CellInfo cellInfo, List formulaInfos) { + if (isSortAttrValid(cellInfo)) { CellSortAttr sortAttr = ((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getCellExpandAttr().getCellSortAttr(); if (isSortAttrExist(sortAttr)) { for (SortExpression sortExpression : sortAttr.getSortExpressions()) { if (sortExpression instanceof FormulaSortExpression) { - ITContent newContent = cellInfo.getContent().copy(); + ITContent newContent = ITContent.copy(cellInfo.getContent()); newContent.addOtherPos( Toolkit.i18nText("Fine-Design_Basic_Cell_Attributes"), Toolkit.i18nText("Fine-Design_Report_Expand"), @@ -185,14 +236,63 @@ public class SearchCellFormulaAction extends AbstractSearchCellFormulaAction { return sortAttr != null && sortAttr.getSortExpressions() != null; } - private void searchFormulaFromCellInfo(CellInfo cellInfo, ArrayList formulaInfos) { - if (((CellElement) (cellInfo.getContent().getReplaceObject())).getValue() != null - && cellType.containsKey(((CellElement) (cellInfo.getContent().getReplaceObject())).getValue().getClass().getSimpleName())) { + private boolean isSortAttrValid(CellInfo cellInfo) { + return ((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getCellExpandAttr() != null; + } + + private void searchFormulaFromCellInfo(CellInfo cellInfo, List formulaInfos) { + if (isCellValueValid(cellInfo)) { SearchCellFormula searchCellFormula = cellType.get(((CellElement) (cellInfo.getContent().getReplaceObject())).getValue().getClass().getSimpleName()); searchCellFormula.searchFormulaFromCellType(formulaInfos, cellInfo.getContent()); - + } else if (isChart(cellInfo)) { + ITContent chartContent = cellInfo.getContent(); + //这边置否的原因是决策报表里面单元格里面放的图表是可以有多个的,每个还是有各自的名字,和普通报表一样处理即可 + chartContent.setFrmFlag(false); + SearchChartCollectionFormulaAction.getInstance().searchChartCollectionFormula(formulaInfos, cellInfo.getContent(), (ChartCollection) ((CellElement) (cellInfo.getContent().getReplaceObject())).getValue()); } } + private boolean isChart(CellInfo cellInfo) { + return ((CellElement) (cellInfo.getContent().getReplaceObject())).getValue() != null + && ((CellElement) (cellInfo.getContent().getReplaceObject())).getValue() instanceof ChartCollection; + } + + private boolean isCellValueValid(CellInfo cellInfo) { + return ((CellElement) (cellInfo.getContent().getReplaceObject())).getValue() != null + && cellType.containsKey(((CellElement) (cellInfo.getContent().getReplaceObject())).getValue().getClass().getSimpleName()); + } + + /** + * 获取单例 + * + * @return + */ + public static SearchCellFormulaAction getInstance() { + return SearchCellFormulaActionEnum.SINGLETON.getInstance(); + } + + /** + * SearchCellFormulaAction 的单例 + */ + enum SearchCellFormulaActionEnum { + /** + * 单例实现 + */ + SINGLETON; + private SearchCellFormulaAction instance; + + SearchCellFormulaActionEnum() { + instance = new SearchCellFormulaAction(); + } + + /** + * 拿到对象 + * + * @return + */ + public SearchCellFormulaAction getInstance() { + return instance; + } + } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaTypeAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaTypeAction.java index 75e2083cf2..d857ecc7ed 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaTypeAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaTypeAction.java @@ -5,7 +5,7 @@ import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; import com.fr.report.cell.CellElement; -import java.util.ArrayList; +import java.util.List; /** * 查找公式时单元格格式如果是公式类型则操作此类 @@ -14,13 +14,13 @@ import java.util.ArrayList; * @version 11.0 * created by Destiny.Lin on 2022-08-18 */ -public class SearchCellFormulaTypeAction extends AbstractSearchCellFormulaAction { +public class SearchCellFormulaTypeAction implements SearchCellFormula { @Override - public void searchFormulaFromCellType(ArrayList formulaInfos, ITContent content) { - ITContent newContent = content.copy(); - newContent.setReplaceObject(((CellElement)(content.getReplaceObject())).getValue()); + public void searchFormulaFromCellType(List formulaInfos, ITContent content) { + ITContent newContent = ITContent.copy(content); + newContent.setReplaceObject(((CellElement) (content.getReplaceObject())).getValue()); newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Formula")); formulaInfos.add(new FormulaInfo(newContent)); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchDSColumnFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchDSColumnFormulaAction.java index baa2e1ec61..aee5e75789 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchDSColumnFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchDSColumnFormulaAction.java @@ -2,7 +2,6 @@ package com.fr.design.actions.replace.action.content.formula.cell; import com.fr.base.Formula; import com.fr.base.Parameter; -import com.fr.design.actions.replace.action.content.formula.AbstractSearchFormulaAction; import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchCommonConditionAction; import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchConditionFormula; import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchFormulaConditionAction; @@ -11,12 +10,14 @@ import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; import com.fr.general.data.Condition; +import com.fr.report.cell.CellElement; import com.fr.report.cell.cellattr.core.group.DSColumn; import com.fr.report.core.sort.sortexpression.FormulaSortExpression; import com.fr.report.core.sort.sortexpression.SortExpression; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; /** * 查找公式时单元格格式如果是数据列型则操作此类 @@ -25,39 +26,41 @@ import java.util.HashMap; * @version 11.0 * created by Destiny.Lin on 2022-08-18 */ -public class SearchDSColumnFormulaAction extends AbstractSearchCellFormulaAction { +public class SearchDSColumnFormulaAction implements SearchCellFormula { public static HashMap conditionHashMap = new HashMap<>(); + static { - conditionHashMap.put("FormulaCondition",new SearchFormulaConditionAction()); - conditionHashMap.put("CommonCondition",new SearchCommonConditionAction()); - conditionHashMap.put("ListCondition",new SearchListConditionAction()); + conditionHashMap.put("FormulaCondition", new SearchFormulaConditionAction()); + conditionHashMap.put("CommonCondition", new SearchCommonConditionAction()); + conditionHashMap.put("ListCondition", new SearchListConditionAction()); } @Override - public void searchFormulaFromCellType(ArrayList formulaInfos, ITContent itContent) { - if (itContent.getContentObject().getCell().getValue() instanceof DSColumn){ - if (((DSColumn) itContent.getContentObject().getCell().getValue()).getCondition() != null){ - ITContent content = itContent.copy(); + public void searchFormulaFromCellType(List formulaInfos, ITContent itContent) { + if (((CellElement) (itContent.getReplaceObject())).getValue() instanceof DSColumn) { + if (((DSColumn) ((CellElement) (itContent.getReplaceObject())).getValue()).getCondition() != null) { + ITContent content = ITContent.copy(itContent); //数据列 content.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_DS_Column")); - DSColumn dsColumn = ((DSColumn) itContent.getContentObject().getCell().getValue()); + DSColumn dsColumn = (DSColumn) ((CellElement) (itContent.getReplaceObject())).getValue(); //过滤条件中的公式 - addFormulaInfos2ArrayFromCondition(content,dsColumn.getCondition(), formulaInfos); + addFormulaInfos2ArrayFromCondition(content, dsColumn.getCondition(), formulaInfos); //动态参数中的公式 - addFormulaInfos2ArrayFromPara(content,dsColumn,formulaInfos); + addFormulaInfos2ArrayFromPara(content, dsColumn, formulaInfos); //高级-排序中的公式 - addFormulaInfos2ArrayFromSortExpression(content,dsColumn,formulaInfos); + addFormulaInfos2ArrayFromSortExpression(content, dsColumn, formulaInfos); //高级-显示值中的公式 - addFormulaInfos2ArrayFromResult(content,dsColumn,formulaInfos); + addFormulaInfos2ArrayFromResult(content, dsColumn, formulaInfos); } } } - private void addFormulaInfos2ArrayFromResult(ITContent content, DSColumn dsColumn, ArrayList formulaInfos) { - if (dsColumn.getResult().length() > 0 && dsColumn.getResult().charAt(0) == '='){ - ITContent newContent =content.copy(); + + private void addFormulaInfos2ArrayFromResult(ITContent content, DSColumn dsColumn, List formulaInfos) { + if (dsColumn.getResult().length() > 0 && dsColumn.getResult().charAt(0) == '=') { + ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(dsColumn); //高级-显示值 newContent.addOtherPos( @@ -69,17 +72,16 @@ public class SearchDSColumnFormulaAction extends AbstractSearchCellFormulaAction } - private void addFormulaInfos2ArrayFromSortExpression(ITContent content, DSColumn dsColumn, ArrayList formulaInfos) { - if (dsColumn.getCellSortAttr() != null && dsColumn.getCellSortAttr().getSortExpressions() != null){ - for (SortExpression sortExpression : dsColumn.getCellSortAttr().getSortExpressions()){ - if (sortExpression instanceof FormulaSortExpression){ - ITContent newContent =content.copy(); + private void addFormulaInfos2ArrayFromSortExpression(ITContent content, DSColumn dsColumn, List formulaInfos) { + if (dsColumn.getCellSortAttr() != null && dsColumn.getCellSortAttr().getSortExpressions() != null) { + for (SortExpression sortExpression : dsColumn.getCellSortAttr().getSortExpressions()) { + if (sortExpression instanceof FormulaSortExpression) { + ITContent newContent = ITContent.copy(content); //高级-排序 newContent.addOtherPos( Toolkit.i18nText("Fine-Design_Basic_Advanced"), Toolkit.i18nText("Fine-Design_Basic_Action_Sort") ); - newContent.getContentObject().setSortExpression((FormulaSortExpression) sortExpression); newContent.setReplaceObject(sortExpression); formulaInfos.add(new FormulaInfo(newContent)); @@ -89,13 +91,12 @@ public class SearchDSColumnFormulaAction extends AbstractSearchCellFormulaAction } } - private void addFormulaInfos2ArrayFromPara(ITContent content, DSColumn dsColumn, ArrayList formulaInfos) { - for (Parameter parameter : dsColumn.getParameters()){ - if (parameter.getValue() instanceof Formula){ - ITContent newContent = content.copy(); + private void addFormulaInfos2ArrayFromPara(ITContent content, DSColumn dsColumn, List formulaInfos) { + for (Parameter parameter : dsColumn.getParameters()) { + if (parameter.getValue() instanceof Formula) { + ITContent newContent = ITContent.copy(content); //动态参数注入 newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Report_TableData_Dynamic_Parameter_Setting")); - newContent.getContentObject().setFormula((Formula) parameter.getValue()); newContent.setReplaceObject(parameter.getValue()); formulaInfos.add(new FormulaInfo(newContent)); } @@ -105,13 +106,13 @@ public class SearchDSColumnFormulaAction extends AbstractSearchCellFormulaAction /** * 数据列过滤条件中的公式 */ - private void addFormulaInfos2ArrayFromCondition(ITContent content, Condition condition, ArrayList formulaInfos){ + private void addFormulaInfos2ArrayFromCondition(ITContent content, Condition condition, List formulaInfos) { //这边condition有三种情况:FormulaCondition、CommonCondition、ListCondition,分别处理 SearchConditionFormula searchCondition = conditionHashMap.get(condition.getClass().getSimpleName()); - ITContent newContent = content.copy(); + ITContent newContent = ITContent.copy(content); //过滤条件 newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Report_Filter_Conditions")); - searchCondition.searchFormulaFromCondition(formulaInfos, newContent,condition); + searchCondition.searchFormulaFromCondition(formulaInfos, newContent, condition); } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchRichFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchRichFormulaAction.java index db1c97923a..80c85158e3 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchRichFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchRichFormulaAction.java @@ -1,31 +1,31 @@ package com.fr.design.actions.replace.action.content.formula.cell; -import com.fr.design.actions.replace.action.content.formula.AbstractSearchFormulaAction; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; import com.fr.report.cell.CellElement; import com.fr.report.cell.cellattr.core.RichText; -import java.util.ArrayList; +import java.util.List; /** * 搜索单元格富文本类型的公式 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-18 */ -public class SearchRichFormulaAction extends AbstractSearchCellFormulaAction { +public class SearchRichFormulaAction implements SearchCellFormula { @Override - public void searchFormulaFromCellType(ArrayList formulaInfos, ITContent content) { + public void searchFormulaFromCellType(List formulaInfos, ITContent content) { //todo 富文本这边直接遍历RichChar来拿公式 - if (((RichText)((CellElement)(content.getReplaceObject())).getValue()).getContent().contains("${")){ - ITContent newContent =content.copy(); - newContent.setReplaceObject(((CellElement)(content.getReplaceObject())).getValue()); + if (((RichText) ((CellElement) (content.getReplaceObject())).getValue()).getContent().contains("${")) { + ITContent newContent = ITContent.copy(content); + newContent.setReplaceObject(((CellElement) (content.getReplaceObject())).getValue()); newContent.addOtherPos( Toolkit.i18nText("Fine-Design_Chart_Rich_Text"), Toolkit.i18nText("Fine-Design_Basic_Formula") - ); + ); formulaInfos.add(new FormulaInfo(newContent)); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchSubReportFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchSubReportFormulaAction.java index 66e9802a0f..758b7a6388 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchSubReportFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchSubReportFormulaAction.java @@ -2,14 +2,13 @@ package com.fr.design.actions.replace.action.content.formula.cell; import com.fr.base.Formula; import com.fr.base.core.KV; -import com.fr.design.actions.replace.action.content.formula.AbstractSearchFormulaAction; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; import com.fr.report.cell.CellElement; import com.fr.report.cell.cellattr.core.SubReport; -import java.util.ArrayList; +import java.util.List; /** * 搜索单元格子报表类型的公式 @@ -18,13 +17,13 @@ import java.util.ArrayList; * @version 11.0 * created by Destiny.Lin on 2022-08-18 */ -public class SearchSubReportFormulaAction extends AbstractSearchCellFormulaAction { +public class SearchSubReportFormulaAction implements SearchCellFormula { @Override - public void searchFormulaFromCellType(ArrayList formulaInfos, ITContent content) { + public void searchFormulaFromCellType(List formulaInfos, ITContent content) { KV[] kvs = ((SubReport) (((CellElement) content.getReplaceObject()).getValue())).getParameterKVS(); for (KV kv : kvs) { if (kv.getValue() instanceof Formula) { - ITContent newContent = content.copy(); + ITContent newContent = ITContent.copy(content); newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Report_Sub_Report_Parameter")); newContent.setReplaceObject(kv); formulaInfos.add(new FormulaInfo(newContent)); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java index 0a30bc39c2..c2157241b9 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java @@ -13,116 +13,128 @@ import com.fr.plugin.chart.attr.axis.VanChartAlertValue; import com.fr.plugin.chart.attr.axis.VanChartAxis; import com.fr.plugin.chart.attr.axis.VanChartValueAxis; -import java.util.ArrayList; -import java.util.Arrays; import java.util.List; /** * 图表类型获取公式汇总 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-09-12 */ public class SearchChartCollectionFormulaAction { - public SearchChartCollectionFormulaAction(ArrayList formulaInfos, ITContent content, ChartCollection chartCollection) { - for (int i = 0 ; i < chartCollection.getChartCount() ;i ++){ - ITContent chartContent =content.copy(); - SearchChartPatternFormula(formulaInfos,chartContent,chartCollection.getChart(i)); + + public SearchChartCollectionFormulaAction() { + } + + /** + * 搜索图表中的公式 + * + * @param formulaInfos + * @param content + * @param chartCollection + */ + public void searchChartCollectionFormula(List formulaInfos, ITContent content, ChartCollection chartCollection) { + for (int i = 0; i < chartCollection.getChartCount(); i++) { + ITContent chartContent = ITContent.copy(content); + searchChartPatternFormula(formulaInfos, chartContent, chartCollection.getChart(i)); //数据-单元格数据-分类名&系列名&值 - SearchChartDataFormula(formulaInfos,content,chartCollection.getChart(i)); + searchChartDataFormula(formulaInfos, content, chartCollection.getChart(i)); } - } - private void SearchChartDataFormula(ArrayList formulaInfos, ITContent content, Chart chart) { - if (chart.defaultChartData() instanceof NormalChartData){ + + private void searchChartDataFormula(List formulaInfos, ITContent content, Chart chart) { + if (chart.defaultChartData() instanceof NormalChartData) { NormalChartData chartData = (NormalChartData) chart.defaultChartData(); //todo } } - private void SearchChartPatternFormula(ArrayList formulaInfos, ITContent chartContent, Chart chart){ + private void searchChartPatternFormula(List formulaInfos, ITContent chartContent, Chart chart) { //样式-标题 - SearchChartPatternFormulaFromTitle(formulaInfos, chartContent, chart); + searchChartPatternFormulaFromTitle(formulaInfos, chartContent, chart); //样式-坐标轴-值定义&样式-坐标轴-轴标题 - SearchChartPatternFormulaFromAxisValue(formulaInfos, chartContent, chart); + searchChartPatternFormulaFromAxisValue(formulaInfos, chartContent, chart); //样式-背景-警戒线 - SearchChartPatternFormulaFromAlertLine(formulaInfos,chartContent,chart); + searchChartPatternFormulaFromAlertLine(formulaInfos, chartContent, chart); } - private void SearchChartPatternFormulaFromAlertLine(ArrayList formulaInfos, ITContent chartContent, Chart chart) { + private void searchChartPatternFormulaFromAlertLine(List formulaInfos, ITContent chartContent, Chart chart) { Axis xAxis = chart.getPlot().getxAxis(); Axis yAxis = chart.getPlot().getyAxis(); - ITContent content = chartContent.copy(); + ITContent content = ITContent.copy(chartContent); content.addOtherPos( Toolkit.i18nText("Fine-Design_Chart_Pattern"), Toolkit.i18nText("Fine-Design_Chart_Background"), Toolkit.i18nText("Fine-Design_Chart_Plot_Region"), Toolkit.i18nText("Fine-Design_Chart_Alert_Line") ); - if (xAxis instanceof VanChartAxis){ + if (xAxis instanceof VanChartAxis) { List list = ((VanChartAxis) xAxis).getAlertValues(); - for (VanChartAlertValue alertValue : list){ + for (VanChartAlertValue alertValue : list) { //警戒线设置 - dealAlertValue(formulaInfos,content,alertValue); + dealAlertValue(formulaInfos, content, alertValue); //提示文字 - dealAlertContent(formulaInfos,content,alertValue); + dealAlertContent(formulaInfos, content, alertValue); } } - if (yAxis instanceof VanChartAxis){ + if (yAxis instanceof VanChartAxis) { List list = ((VanChartAxis) yAxis).getAlertValues(); - for (VanChartAlertValue alertValue : list){ + for (VanChartAlertValue alertValue : list) { //警戒线设置 - dealAlertValue(formulaInfos,content,alertValue); + dealAlertValue(formulaInfos, content, alertValue); //提示文字 - dealAlertContent(formulaInfos,content,alertValue); + dealAlertContent(formulaInfos, content, alertValue); } } } - private void dealAlertContent(ArrayList formulaInfos, ITContent content, VanChartAlertValue alertValue) { - if (alertValue.getAlertContentFormula() != null){ - ITContent alertContent = content.copy(); + private void dealAlertContent(List formulaInfos, ITContent content, VanChartAlertValue alertValue) { + if (alertValue.getAlertContentFormula() != null) { + ITContent alertContent = ITContent.copy(content); alertContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Alert_Text")); alertContent.setReplaceObject(alertValue.getAlertContentFormula()); formulaInfos.add(new FormulaInfo(alertContent)); } } - private void dealAlertValue(ArrayList formulaInfos, ITContent content, VanChartAlertValue alertValue) { - if (alertValue.getAlertValueFormula() != null){ - ITContent valueContent = content.copy(); + private void dealAlertValue(List formulaInfos, ITContent content, VanChartAlertValue alertValue) { + if (alertValue.getAlertValueFormula() != null) { + ITContent valueContent = ITContent.copy(content); valueContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Alert_Set")); valueContent.setReplaceObject(alertValue.getAlertValueFormula()); formulaInfos.add(new FormulaInfo(valueContent)); } } - private void SearchChartPatternFormulaFromAxisValue(ArrayList formulaInfos, ITContent chartContent, Chart chart) { + private void searchChartPatternFormulaFromAxisValue(List formulaInfos, ITContent chartContent, Chart chart) { Axis xAxis = chart.getPlot().getxAxis(); Axis yAxis = chart.getPlot().getyAxis(); //样式-坐标轴-x轴 - if (xAxis!= null){ + if (xAxis != null) { //轴标题 - ITContent xAxisContent = chartContent.copy(); + ITContent xAxisContent = ITContent.copy(chartContent); + if (!chartContent.isFrm()){ + xAxisContent.addOtherPos(chart.getChartName()); + } xAxisContent.addOtherPos( - chart.getChartName(), Toolkit.i18nText("Fine-Design_Chart_Pattern"), Toolkit.i18nText("Fine-Design_Chart_Axis"), Toolkit.i18nText("Fine-Design_Chart_X_Axis") ); - dealTitle(formulaInfos, xAxisContent,xAxis.getTitle()); - dealChartValueDefine(formulaInfos, xAxisContent,xAxis); + dealTitle(formulaInfos, xAxisContent, xAxis.getTitle()); + dealChartValueDefine(formulaInfos, xAxisContent, xAxis); } //样式-坐标轴-y轴-轴标题 - if (yAxis !=null){ - ITContent yAxisContent = chartContent.copy(); + if (yAxis != null) { + ITContent yAxisContent = ITContent.copy(chartContent); yAxisContent.addOtherPos( chart.getChartName(), Toolkit.i18nText("Fine-Design_Chart_Pattern"), @@ -130,30 +142,29 @@ public class SearchChartCollectionFormulaAction { Toolkit.i18nText("Fine-Design_Chart_Y_Axis") ); - dealTitle(formulaInfos,yAxisContent,yAxis.getTitle()); - dealChartValueDefine(formulaInfos,yAxisContent,yAxis); + dealTitle(formulaInfos, yAxisContent, yAxis.getTitle()); + dealChartValueDefine(formulaInfos, yAxisContent, yAxis); } - } - private void dealChartValueDefine(ArrayList formulaInfos, ITContent axisContent, Axis axis) { - ITContent content = axisContent.copy(); + private void dealChartValueDefine(List formulaInfos, ITContent axisContent, Axis axis) { + ITContent content = ITContent.copy(axisContent); content.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Value_Define")); //自定义最大值最小值 - dealChartMaxAndMinValue(formulaInfos,content,axis); + dealChartMaxAndMinValue(formulaInfos, content, axis); //自定义主次刻度 - dealChartMainAndSecUnit(formulaInfos,content,axis); + dealChartMainAndSecUnit(formulaInfos, content, axis); //自定义对数底数 - dealChartLogBase(formulaInfos,content,axis); + dealChartLogBase(formulaInfos, content, axis); } - private void dealChartLogBase(ArrayList formulaInfos, ITContent content, Axis axis) { - if (axis instanceof VanChartValueAxis){ - if (axis.isLog() && ((VanChartValueAxis) axis).getLogBase() != null){ - ITContent logContent =content.copy(); + private void dealChartLogBase(List formulaInfos, ITContent content, Axis axis) { + if (axis instanceof VanChartValueAxis) { + if (axis.isLog() && ((VanChartValueAxis) axis).getLogBase() != null) { + ITContent logContent = ITContent.copy(content); logContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Custom_LogBase_Value")); logContent.setReplaceObject(((VanChartValueAxis) axis).getLogBase()); formulaInfos.add(new FormulaInfo(logContent)); @@ -161,53 +172,88 @@ public class SearchChartCollectionFormulaAction { } } - private void dealChartMainAndSecUnit(ArrayList formulaInfos, ITContent content, Axis axis) { - if (axis.isCustomMainUnit() && axis.getMainUnit() != null){ - ITContent mainContent = content.copy(); + private void dealChartMainAndSecUnit(List formulaInfos, ITContent content, Axis axis) { + if (axis.isCustomMainUnit() && axis.getMainUnit() != null) { + ITContent mainContent = ITContent.copy(content); mainContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Custom_Main_Type")); mainContent.setReplaceObject(axis.getMainUnit()); formulaInfos.add(new FormulaInfo(mainContent)); } - if (axis.isCustomSecUnit() && axis.getSecUnit() != null){ - ITContent secContent = content.copy(); + if (axis.isCustomSecUnit() && axis.getSecUnit() != null) { + ITContent secContent = ITContent.copy(content); secContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Custom_Second_Type")); secContent.setReplaceObject(axis.getSecUnit()); formulaInfos.add(new FormulaInfo(secContent)); } } - private void dealChartMaxAndMinValue(ArrayList formulaInfos, ITContent axisContent, Axis axis) { - if (axis.isCustomMaxValue() && axis.getMaxValue() != null){ - ITContent maxContent = axisContent.copy(); + private void dealChartMaxAndMinValue(List formulaInfos, ITContent axisContent, Axis axis) { + if (axis.isCustomMaxValue() && axis.getMaxValue() != null) { + ITContent maxContent = ITContent.copy(axisContent); maxContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Custom_Max_Value")); maxContent.setReplaceObject(axis.getMaxValue()); formulaInfos.add(new FormulaInfo(maxContent)); } - if (axis.isCustomMinValue() && axis.getMinValue() != null){ - ITContent minContent = axisContent.copy(); + if (axis.isCustomMinValue() && axis.getMinValue() != null) { + ITContent minContent = ITContent.copy(axisContent); minContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Custom_Min_Value")); minContent.setReplaceObject(axis.getMinValue()); formulaInfos.add(new FormulaInfo(minContent)); } } - private void SearchChartPatternFormulaFromTitle(ArrayList formulaInfos, ITContent chartContent, Chart chart){ + private void searchChartPatternFormulaFromTitle(List formulaInfos, ITContent chartContent, Chart chart) { //样式-标题 - ITContent titleContent = chartContent.copy(); + ITContent titleContent = ITContent.copy(chartContent); titleContent.addOtherPos( chart.getChartName(), Toolkit.i18nText("Fine-Design_Chart_Pattern") ); - dealTitle(formulaInfos,titleContent,chart.getTitle()); + dealTitle(formulaInfos, titleContent, chart.getTitle()); } - private void dealTitle(ArrayList formulaInfos, ITContent chartContent, Title title) { - if (title !=null && title.getTextObject() instanceof Formula){ - ITContent content = chartContent.copy(); + private void dealTitle(List formulaInfos, ITContent chartContent, Title title) { + if (title != null && title.getTextObject() instanceof Formula) { + ITContent content = ITContent.copy(chartContent); content.addOtherPos(Toolkit.i18nText("Fine-Design_Form_Title")); content.setReplaceObject(title.getTextObject()); formulaInfos.add(new FormulaInfo(content)); } } + + + /** + * 对外开放获取对象的方法 + * + * @return + */ + public static SearchChartCollectionFormulaAction getInstance() { + return SearchChartCollectionFormulaActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + enum SearchChartCollectionFormulaActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchChartCollectionFormulaAction instance; + + SearchChartCollectionFormulaActionEnum() { + instance = new SearchChartCollectionFormulaAction(); + } + + /** + * 获取单例的方法 + * + * @return + */ + public SearchChartCollectionFormulaAction getInstance() { + return instance; + } + } + } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/AbstractSearchDataFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/AbstractSearchDataFormulaAction.java deleted file mode 100644 index 108b1b66d2..0000000000 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/AbstractSearchDataFormulaAction.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.fr.design.actions.replace.action.content.formula.data; - -import com.fr.design.actions.replace.info.FormulaInfo; -import com.fr.design.actions.replace.info.Info; -import com.fr.design.actions.replace.info.base.ITContent; -import com.fr.design.mainframe.JTemplate; - -import java.util.ArrayList; - -/** - * @author Destiny.Lin - * @version 11.0 - * created by Destiny.Lin on 2022-08-26 - */ -public abstract class AbstractSearchDataFormulaAction implements SearchDataFormula{ - - @Override - public void searchFormulaFromData(JTemplate jTemplate,ArrayList fomulaInfos) { - - } - - @Override - public void searchFormula(ArrayList formulaInfos, ITContent content) { - - } - - @Override - public ArrayList search4Infos(JTemplate jTemplate) { - return null; - } -} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/DataType.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/DataType.java index 3ed0b432dd..f8ea44cd7a 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/DataType.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/DataType.java @@ -11,9 +11,9 @@ import com.fr.stable.ParameterProvider; import com.fr.stable.StringUtils; import java.util.ArrayList; +import java.util.List; /** - * * 分别对不同类型的数据集进行获取公式处理 * 暂不支持ClassTableData(用户自定义数据集)、FileTableData(用户自定义数据集),EmbeddedTableData(无公式) * @@ -21,16 +21,16 @@ import java.util.ArrayList; * @version 11.0 * created by Destiny.Lin on 2022-08-26 */ -public enum DataType { +public enum DataType { /** * 数据库查询 */ - DB_TABLE_DATA("DBTableData"){ + DB_TABLE_DATA("DBTableData") { @Override - public void searchFormula(TableData tableData, ITContent content, ArrayList fomulaInfos) { - if (((DBTableData)tableData).getParameters() != null){ - for (ParameterProvider provider : ((DBTableData)tableData).getParameters()){ - dealProvider(provider,content,fomulaInfos); + public void searchFormula(TableData tableData, ITContent content, List fomulaInfos) { + if (((DBTableData) tableData).getParameters() != null) { + for (ParameterProvider provider : ((DBTableData) tableData).getParameters()) { + dealProvider(provider, content, fomulaInfos); } } } @@ -39,12 +39,12 @@ public enum DataType { /** * 存储过程 */ - STORE_PROCEDURE("StoreProcedure"){ + STORE_PROCEDURE("StoreProcedure") { @Override - public void searchFormula(TableData tableData, ITContent content, ArrayList fomulaInfos) { - if (((StoreProcedure)tableData).getParameters() != null){ - for (ParameterProvider provider : ((StoreProcedure)tableData).getParameters()){ - dealProvider(provider,content,fomulaInfos); + public void searchFormula(TableData tableData, ITContent content, List fomulaInfos) { + if (((StoreProcedure) tableData).getParameters() != null) { + for (ParameterProvider provider : ((StoreProcedure) tableData).getParameters()) { + dealProvider(provider, content, fomulaInfos); } } @@ -53,12 +53,12 @@ public enum DataType { /** * 关联数据集 */ - CONDITION_TABLE_DATA("ConditionTableData"){ + CONDITION_TABLE_DATA("ConditionTableData") { @Override - public void searchFormula(TableData tableData, ITContent content, ArrayList fomulaInfos) { - if (((ConditionTableData)tableData).getDefineParameters() != null){ - for (ParameterProvider provider : ((ConditionTableData)tableData).getDefineParameters()){ - dealProvider(provider,content,fomulaInfos); + public void searchFormula(TableData tableData, ITContent content, List fomulaInfos) { + if (((ConditionTableData) tableData).getDefineParameters() != null) { + for (ParameterProvider provider : ((ConditionTableData) tableData).getDefineParameters()) { + dealProvider(provider, content, fomulaInfos); } } } @@ -66,12 +66,12 @@ public enum DataType { /** * 树数据集 */ - RECURSION_TABLE_DATA("RecursionTableData"){ + RECURSION_TABLE_DATA("RecursionTableData") { @Override - public void searchFormula(TableData tableData, ITContent content, ArrayList fomulaInfos) { - if (((RecursionTableData)tableData).getParameters() != null){ - for (ParameterProvider provider : ((RecursionTableData)tableData).getParameters()){ - dealProvider(provider,content,fomulaInfos); + public void searchFormula(TableData tableData, ITContent content, List fomulaInfos) { + if (((RecursionTableData) tableData).getParameters() != null) { + for (ParameterProvider provider : ((RecursionTableData) tableData).getParameters()) { + dealProvider(provider, content, fomulaInfos); } } } @@ -79,19 +79,21 @@ public enum DataType { String name; + DataType(String name) { this.name = name; } /** * 处理参数 + * * @param provider * @param content * @param formulaInfos */ - public void dealProvider(ParameterProvider provider, ITContent content, ArrayList formulaInfos) { - if (provider .getValue()instanceof Formula && !StringUtils.isEmpty((((Formula) provider.getValue())).getContent() )){ - ITContent newContent = content.copy(); + public void dealProvider(ParameterProvider provider, ITContent content, List formulaInfos) { + if (provider.getValue() instanceof Formula && !StringUtils.isEmpty((((Formula) provider.getValue())).getContent())) { + ITContent newContent = ITContent.copy(content); newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Parameter")); newContent.setReplaceObject(provider); formulaInfos.add(new FormulaInfo(newContent)); @@ -100,13 +102,14 @@ public enum DataType { /** * 匹配 + * * @param name * @return */ - public static DataType match(String name){ + public static DataType match(String name) { DataType[] values = DataType.values(); for (DataType value : values) { - if(value.name.equals(name)){ + if (value.name.equals(name)) { return value; } } @@ -115,10 +118,11 @@ public enum DataType { /** * 从数据集中获取公式 + * * @param tableData * @param content - * @param fomulaInfos + * @param formulaInfos */ - void searchFormula(TableData tableData, ITContent content , ArrayList fomulaInfos){} + abstract void searchFormula(TableData tableData, ITContent content, List formulaInfos); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormula.java deleted file mode 100644 index 4d93f604b3..0000000000 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormula.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.fr.design.actions.replace.action.content.formula.data; - -import com.fr.design.actions.replace.action.content.formula.SearchFormula; -import com.fr.design.actions.replace.info.FormulaInfo; -import com.fr.design.actions.replace.info.base.ITContent; -import com.fr.design.mainframe.JTemplate; - -import java.util.ArrayList; - -/** - * @author Destiny.Lin - * @version 11.0 - * created by Destiny.Lin on 2022-08-26 - */ -public interface SearchDataFormula extends SearchFormula { - /** - * 从数据集类型中去获取公式 - * @param jTemplate - * @param fomulaInfos - */ - void searchFormulaFromData(JTemplate jTemplate, ArrayList fomulaInfos); -} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormulaAction.java index 31f04705e1..bf58d26ed9 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormulaAction.java @@ -2,6 +2,8 @@ package com.fr.design.actions.replace.action.content.formula.data; import com.fr.data.TableDataSource; import com.fr.data.impl.DBTableData; +import com.fr.design.actions.replace.action.content.formula.SearchFormula; +import com.fr.design.actions.replace.action.content.formula.widget.SearchWidgetFormulaAction; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.SQLInfo; import com.fr.design.actions.replace.info.base.ITContent; @@ -13,29 +15,32 @@ import com.fr.main.impl.WorkBook; import java.util.ArrayList; import java.util.Iterator; +import java.util.List; /** + * 搜索数据集中的公式 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-26 */ -public class SearchDataFormulaAction extends AbstractSearchDataFormulaAction{ +public class SearchDataFormulaAction implements SearchFormula { - public SearchDataFormulaAction(JTemplate jTemplate, ArrayList fomulaInfos){ - searchFormulaFromData(jTemplate,fomulaInfos); + + private SearchDataFormulaAction() { } - @Override - public void searchFormulaFromData(JTemplate jTemplate, ArrayList fomulaInfos) { + + @Override + public void searchFormulaFromObject(JTemplate jTemplate, List formulaInfos) { //模板数据集 - dealTemplateData(jTemplate,fomulaInfos); + dealTemplateData(jTemplate, formulaInfos); //服务器数据集 - dealServerData(fomulaInfos); - + dealServerData(formulaInfos); } - private void dealServerData(ArrayList fomulaInfos) { + private void dealServerData(List fomulaInfos) { TableDataConfig tableDataConfig = TableDataConfig.getInstance(); String[] nameArray = TableDataFactory.getSortOfChineseNameOfServerData(tableDataConfig); for (String dataName : nameArray) { @@ -46,17 +51,17 @@ public class SearchDataFormulaAction extends AbstractSearchDataFormulaAction{ ); content.setShowObject(Toolkit.i18nText("Fine-Design_Basic_DS_Server_TableData")); DataType dataType = DataType.match(tableDataConfig.getTableData(dataName).getClass().getSimpleName()); - if (dataType != null){ - dataType.searchFormula(tableDataConfig.getTableData(dataName),content,fomulaInfos); + if (dataType != null) { + dataType.searchFormula(tableDataConfig.getTableData(dataName), content, fomulaInfos); } } } - private void dealTemplateData(JTemplate jTemplate, ArrayList fomulaInfos) { - if (jTemplate.getTarget() instanceof TableDataSource){ + private void dealTemplateData(JTemplate jTemplate, List fomulaInfos) { + if (jTemplate.getTarget() instanceof TableDataSource) { TableDataSource source = (TableDataSource) jTemplate.getTarget(); Iterator dataIterator = source.getTableDataNameIterator(); - while (dataIterator.hasNext()){ + while (dataIterator.hasNext()) { String dataName = (String) dataIterator.next(); ITContent content = new ITContent(); content.setTemplateName(jTemplate.getTemplateName()); @@ -66,10 +71,43 @@ public class SearchDataFormulaAction extends AbstractSearchDataFormulaAction{ ); content.setShowObject(Toolkit.i18nText("Fine-Design_Basic_DS_Report_TableData")); DataType dataType = DataType.match(source.getTableData(dataName).getClass().getSimpleName()); - if (dataType != null){ - dataType.searchFormula(source.getTableData(dataName),content,fomulaInfos); + if (dataType != null) { + dataType.searchFormula(source.getTableData(dataName), content, fomulaInfos); } } } } + + /** + * 对外开放的获取单例对象的方法 + * + * @return + */ + public static SearchDataFormulaAction getInstance() { + return SearchDataFormulaAction.SearchDataFormulaActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + enum SearchDataFormulaActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchDataFormulaAction instance; + + SearchDataFormulaActionEnum() { + instance = new SearchDataFormulaAction(); + } + + /** + * 获取单例对象 + * + * @return + */ + public SearchDataFormulaAction getInstance() { + return instance; + } + } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/AbstractSearchFloatFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/AbstractSearchFloatFormula.java deleted file mode 100644 index f4dff53627..0000000000 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/AbstractSearchFloatFormula.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.fr.design.actions.replace.action.content.formula.floatelement; - -import com.fr.design.actions.replace.info.FormulaInfo; -import com.fr.design.actions.replace.info.Info; -import com.fr.design.actions.replace.info.base.ITContent; -import com.fr.design.mainframe.JTemplate; - -import java.util.ArrayList; - -/** - * @author Destiny.Lin - * @version 11.0 - * created by Destiny.Lin on 2022-09-12 - */ -public abstract class AbstractSearchFloatFormula implements SearchFloatFormula{ - @Override - public void searchFormula(ArrayList formulaInfos, ITContent content) { - } - - @Override - public ArrayList search4Infos(JTemplate jTemplate) { - return new ArrayList<>(); - } - - -} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/SearchFloatFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/SearchFloatFormula.java index 6e5db9feed..f9f31d5a4d 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/SearchFloatFormula.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/SearchFloatFormula.java @@ -7,8 +7,11 @@ import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.mainframe.JTemplate; import java.util.ArrayList; +import java.util.List; /** + * 搜索悬浮元素的公式 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-09-12 @@ -21,7 +24,7 @@ public interface SearchFloatFormula extends SearchFormula { * @param floatInfo FloatInfo信息 * @param formulaInfos 要存储对应信息列表的数据结构 */ - void searchFormulaFromFloat(ArrayList formulaInfos, FloatInfo floatInfo); + void searchFormulaFromCommonFloat(List formulaInfos, FloatInfo floatInfo); /** * 查找不同悬浮元素内容类型各自可能存在的公式 @@ -29,5 +32,5 @@ public interface SearchFloatFormula extends SearchFormula { * @param formulaInfos 要存储对应信息列表的数据结构 * @param floatInfo FloatInfo信息 */ - void searchFormulaFromFloatType(ArrayList formulaInfos, FloatInfo floatInfo); + void searchFormulaFromFloatType(List formulaInfos, FloatInfo floatInfo); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/SearchFloatFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/SearchFloatFormulaAction.java index 331da754a4..6abb748d19 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/SearchFloatFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/SearchFloatFormulaAction.java @@ -3,7 +3,6 @@ package com.fr.design.actions.replace.action.content.formula.floatelement; import com.fr.base.Formula; import com.fr.chart.chartattr.ChartCollection; import com.fr.design.actions.replace.action.content.floatelement.SearchFloatAction; -import com.fr.design.actions.replace.action.content.formula.FormulaReplaceObject; import com.fr.design.actions.replace.action.content.formula.chart.SearchChartCollectionFormulaAction; import com.fr.design.actions.replace.action.content.formula.highlight.javascript.SearchJSHighlightAction; import com.fr.design.actions.replace.info.FloatInfo; @@ -12,29 +11,36 @@ import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.JTemplate; import com.fr.js.NameJavaScriptGroup; -import com.fr.report.cell.CellElement; import com.fr.report.cell.FloatElement; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; +import java.util.List; /** + * 搜索悬浮元素中的公式 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-09-12 */ -public class SearchFloatFormulaAction extends AbstractSearchFloatFormula { +public class SearchFloatFormulaAction implements SearchFloatFormula { - public SearchFloatFormulaAction(JTemplate jTemplate, ArrayList formulaInfos) { - SearchFloatAction searchFloatAction = new SearchFloatAction(jTemplate); + private SearchFloatFormulaAction() { + } + + + @Override + public void searchFormulaFromObject(JTemplate jTemplate, List formulaInfos) { + SearchFloatAction searchFloatAction = SearchFloatAction.getInstance(); + searchFloatAction.search4Infos(jTemplate); for (FloatInfo floatInfo : searchFloatAction.getFloatInfos()) { - searchFormulaFromFloat(formulaInfos, floatInfo); + searchFormulaFromCommonFloat(formulaInfos, floatInfo); searchFormulaFromFloatType(formulaInfos, floatInfo); } } @Override - public void searchFormulaFromFloat(ArrayList formulaInfos, FloatInfo floatInfo) { + public void searchFormulaFromCommonFloat(List formulaInfos, FloatInfo floatInfo) { NameJavaScriptGroup nameJavaScriptGroup = ((FloatElement) floatInfo.getContent().getReplaceObject()).getNameHyperlinkGroup(); if (nameJavaScriptGroup != null) { for (int i = 0; i < nameJavaScriptGroup.size(); i++) { @@ -46,7 +52,7 @@ public class SearchFloatFormulaAction extends AbstractSearchFloatFormula { @Override - public void searchFormulaFromFloatType(ArrayList formulaInfos, FloatInfo floatInfo) { + public void searchFormulaFromFloatType(List formulaInfos, FloatInfo floatInfo) { Object value = ((FloatElement) floatInfo.getContent().getReplaceObject()).getValue(); FloatFormulaType floatFormulaType = FloatFormulaType.match(value.getClass().getSimpleName()); if (floatFormulaType != null) { @@ -63,8 +69,8 @@ public class SearchFloatFormulaAction extends AbstractSearchFloatFormula { */ FORMULA("Formula") { @Override - public void searchFormulaFromFloatElementType(ArrayList formulaInfos, FloatInfo floatInfo) { - ITContent content = floatInfo.getContent().copy(); + public void searchFormulaFromFloatElementType(List formulaInfos, FloatInfo floatInfo) { + ITContent content = ITContent.copy(floatInfo.getContent()); Formula value = (Formula) ((FloatElement) floatInfo.getContent().getReplaceObject()).getValue(); content.setReplaceObject(value); formulaInfos.add(new FormulaInfo(content)); @@ -75,11 +81,11 @@ public class SearchFloatFormulaAction extends AbstractSearchFloatFormula { */ CHART_COLLECTION("ChartCollection") { @Override - public void searchFormulaFromFloatElementType(ArrayList formulaInfos, FloatInfo floatInfo) { - ITContent content = floatInfo.getContent().copy(); + public void searchFormulaFromFloatElementType(List formulaInfos, FloatInfo floatInfo) { + ITContent content = ITContent.copy(floatInfo.getContent()); ChartCollection chartCollection = (ChartCollection) ((FloatElement) floatInfo.getContent().getReplaceObject()).getValue(); content.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Chart")); - new SearchChartCollectionFormulaAction(formulaInfos, content, chartCollection); + SearchChartCollectionFormulaAction.getInstance().searchChartCollectionFormula(formulaInfos, content, chartCollection); } }; String name; @@ -105,7 +111,46 @@ public class SearchFloatFormulaAction extends AbstractSearchFloatFormula { return null; } - public void searchFormulaFromFloatElementType(ArrayList formulaInfos, FloatInfo floatInfo) { + /** + * 从特殊类型的悬浮元素值中获取到所需的公式 + * + * @param formulaInfos + * @param floatInfo + */ + abstract public void searchFormulaFromFloatElementType(List formulaInfos, FloatInfo floatInfo); + } + + + /** + * 对外开放的获取单例对象的方法 + * + * @return + */ + public static SearchFloatFormulaAction getInstance() { + return SearchFloatFormulaAction.SearchFloatFormulaActionEnum.SINGLETON.getInstance(); + } + + /** + * 单例实现枚举 + */ + enum SearchFloatFormulaActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchFloatFormulaAction instance; + + SearchFloatFormulaActionEnum() { + instance = new SearchFloatFormulaAction(); + } + + /** + * 获取单例对象 + * + * @return + */ + public SearchFloatFormulaAction getInstance() { + return instance; } } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/AbstractSearchHighlightAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/AbstractSearchHighlightAction.java deleted file mode 100644 index adb4ce6b1a..0000000000 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/AbstractSearchHighlightAction.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.fr.design.actions.replace.action.content.formula.highlight; - -import com.fr.design.actions.replace.info.FormulaInfo; -import com.fr.design.actions.replace.info.Info; -import com.fr.design.actions.replace.info.base.ITContent; -import com.fr.design.mainframe.JTemplate; -import com.fr.report.cell.cellattr.highlight.HighlightAction; - -import java.util.ArrayList; - -/** - * @author Destiny.Lin - * @version 11.0 - * created by Destiny.Lin on 2022-08-19 - */ -public abstract class AbstractSearchHighlightAction implements SearchHighlightFormula { - @Override - public void dealWithHighlightAction(ITContent content, ArrayList formulaInfos, HighlightAction highlightAction) { - - } - - @Override - public void searchFormula(ArrayList formulaInfos, ITContent content) { - - } - - @Override - public ArrayList search4Infos(JTemplate jTemplate) { - return null; - } -} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormula.java index 7a787901c0..d74da99d5b 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormula.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormula.java @@ -6,8 +6,11 @@ import com.fr.design.actions.replace.info.base.ITContent; import com.fr.report.cell.cellattr.highlight.HighlightAction; import java.util.ArrayList; +import java.util.List; /** + * 从条件属性中搜索公式 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-18 @@ -15,6 +18,9 @@ import java.util.ArrayList; public interface SearchHighlightFormula extends SearchFormula { //处理条件属性中各种属性 - void dealWithHighlightAction(ITContent content, ArrayList formulaInfos, HighlightAction highlightAction); + default void dealWithHighlightAction(ITContent content, List formulaInfos, HighlightAction highlightAction) { + } + + } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaAction.java index 11667b228a..7c83563bf1 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaAction.java @@ -7,6 +7,7 @@ import com.fr.report.cell.cellattr.highlight.HighlightAction; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; /** * 处理条件属性中各种属性的公式(超级链接、控件...) @@ -15,22 +16,23 @@ import java.util.HashMap; * @version 11.0 * created by Destiny.Lin on 2022-08-18 */ -public class SearchHighlightFormulaAction extends AbstractSearchHighlightAction{ +public class SearchHighlightFormulaAction implements SearchHighlightFormula { public static HashMap highlightHashMap = new HashMap<>(); + static { //这边控件类型不做处理,在SearchWidgetFormulaAction统一处理即可 //条件属性-超级链接 - highlightHashMap.put("HyperlinkHighlightAction",new SearchJSHighlightAction()); + highlightHashMap.put("HyperlinkHighlightAction", new SearchJSHighlightAction()); //条件属性-... // TODO: 2022/9/14 条件属性的其他类型 } @Override - public void dealWithHighlightAction(ITContent content, ArrayList formulaInfos, HighlightAction highlightAction) { - if (highlightHashMap.containsKey(highlightAction.getClass().getSimpleName())){ + public void dealWithHighlightAction(ITContent content, List formulaInfos, HighlightAction highlightAction) { + if (highlightHashMap.containsKey(highlightAction.getClass().getSimpleName())) { SearchHighlightFormula searchHighlight = highlightHashMap.get(highlightAction.getClass().getSimpleName()); - searchHighlight.dealWithHighlightAction(content,formulaInfos,highlightAction); + searchHighlight.dealWithHighlightAction(content, formulaInfos, highlightAction); } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchCommonConditionAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchCommonConditionAction.java index d78041f569..8439b27e00 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchCommonConditionAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchCommonConditionAction.java @@ -6,18 +6,20 @@ import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.general.data.Condition; -import java.util.ArrayList; +import java.util.List; /** + * 获取CommonCondition中的公式 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-17 */ public class SearchCommonConditionAction implements SearchConditionFormula { @Override - public void searchFormulaFromCondition(ArrayList formulaInfos, ITContent content, Condition condition) { - if (((CommonCondition)condition).getCompare().getValue() != null && ((CommonCondition)condition).getCompare().getValue() instanceof Formula){ - ITContent newContent =content.copy(); + public void searchFormulaFromCondition(List formulaInfos, ITContent content, Condition condition) { + if (((CommonCondition) condition).getCompare().getValue() != null && ((CommonCondition) condition).getCompare().getValue() instanceof Formula) { + ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(((CommonCondition) condition).getCompare()); formulaInfos.add(new FormulaInfo(newContent)); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchConditionFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchConditionFormula.java index 00f71b75f6..2cc7c595f4 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchConditionFormula.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchConditionFormula.java @@ -6,8 +6,11 @@ import com.fr.design.actions.replace.info.base.ITContent; import com.fr.general.data.Condition; import java.util.ArrayList; +import java.util.List; /** + * 从条件相关对象中拿公式 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-17 @@ -15,9 +18,10 @@ import java.util.ArrayList; public interface SearchConditionFormula { /** * 从条件相关对象中获取公式 + * * @param formulaInfos * @param content * @param condition */ - void searchFormulaFromCondition(ArrayList formulaInfos, ITContent content, Condition condition); + void searchFormulaFromCondition(List formulaInfos, ITContent content, Condition condition); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchFormulaConditionAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchFormulaConditionAction.java index 73a2a14351..b1800d7fa8 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchFormulaConditionAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchFormulaConditionAction.java @@ -6,18 +6,20 @@ import com.fr.design.actions.replace.info.base.ITContent; import com.fr.general.data.Condition; -import java.util.ArrayList; +import java.util.List; /** + * 获取FormulaCondition公式 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-17 */ public class SearchFormulaConditionAction implements SearchConditionFormula { @Override - public void searchFormulaFromCondition(ArrayList formulaInfos, ITContent content, Condition condition) { - if (((FormulaCondition)(condition)).getFormula() != null){ - ITContent newContent = content.copy(); + public void searchFormulaFromCondition(List formulaInfos, ITContent content, Condition condition) { + if (((FormulaCondition) (condition)).getFormula() != null) { + ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(condition); formulaInfos.add(new FormulaInfo(newContent)); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchListConditionAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchListConditionAction.java index 33c52a7da1..bed57a65e1 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchListConditionAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchListConditionAction.java @@ -9,25 +9,27 @@ import com.fr.design.actions.replace.info.base.ITContent; import com.fr.general.data.Condition; -import java.util.ArrayList; +import java.util.List; /** + * 获取ListCondition公式 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-17 */ public class SearchListConditionAction implements SearchConditionFormula { @Override - public void searchFormulaFromCondition(ArrayList formulaInfos, ITContent content, Condition condition) { - for (int i = 0 ;i <((ListCondition)condition).getJoinConditionCount() ;i++){ - Condition joinCondition = ((ListCondition)condition).getJoinCondition(i).getCondition(); - if (joinCondition instanceof CommonCondition){ + public void searchFormulaFromCondition(List formulaInfos, ITContent content, Condition condition) { + for (int i = 0; i < ((ListCondition) condition).getJoinConditionCount(); i++) { + Condition joinCondition = ((ListCondition) condition).getJoinCondition(i).getCondition(); + if (joinCondition instanceof CommonCondition) { SearchCommonConditionAction commonConditionAction = new SearchCommonConditionAction(); commonConditionAction.searchFormulaFromCondition(formulaInfos, content, joinCondition); - } else if (joinCondition instanceof FormulaCondition){ + } else if (joinCondition instanceof FormulaCondition) { SearchFormulaConditionAction formulaConditionAction = new SearchFormulaConditionAction(); formulaConditionAction.searchFormulaFromCondition(formulaInfos, content, joinCondition); - } else if (joinCondition instanceof ObjectCondition){ + } else if (joinCondition instanceof ObjectCondition) { SearchObjectConditionAction objectConditionAction = new SearchObjectConditionAction(); objectConditionAction.searchFormulaFromCondition(formulaInfos, content, joinCondition); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchObjectConditionAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchObjectConditionAction.java index 229512c2f5..51b4c64afb 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchObjectConditionAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchObjectConditionAction.java @@ -6,18 +6,20 @@ import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.general.data.Condition; -import java.util.ArrayList; +import java.util.List; /** + * 获取ObjectCondition类型公式 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-18 */ public class SearchObjectConditionAction implements SearchConditionFormula { @Override - public void searchFormulaFromCondition(ArrayList formulaInfos, ITContent content, Condition condition) { - if (((ObjectCondition)condition).getCompare().getValue() != null && ((ObjectCondition)condition).getCompare().getValue() instanceof Formula){ - ITContent newContent =content.copy(); + public void searchFormulaFromCondition(List formulaInfos, ITContent content, Condition condition) { + if (((ObjectCondition) condition).getCompare().getValue() != null && ((ObjectCondition) condition).getCompare().getValue() instanceof Formula) { + ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(((ObjectCondition) condition).getCompare()); formulaInfos.add(new FormulaInfo(newContent)); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/AbstractSearchJSFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/AbstractSearchJSFormulaAction.java deleted file mode 100644 index c7fd8cebc8..0000000000 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/AbstractSearchJSFormulaAction.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.fr.design.actions.replace.action.content.formula.highlight.javascript; - -import com.fr.design.actions.replace.info.FormulaInfo; -import com.fr.design.actions.replace.info.Info; -import com.fr.design.actions.replace.info.base.ITContent; -import com.fr.design.mainframe.JTemplate; -import com.fr.js.JavaScript; -import com.fr.report.cell.cellattr.highlight.HighlightAction; - -import java.util.ArrayList; - -/** - * @author Destiny.Lin - * @version 11.0 - * created by Destiny.Lin on 2022-08-19 - */ -public abstract class AbstractSearchJSFormulaAction implements SearchJSFormula { - @Override - public void searchJSFormulaFromOther(ArrayList formulaInfos, ITContent content, JavaScript javaScript) { - - } - - @Override - public void dealWithHighlightAction(ITContent content, ArrayList formulaInfos, HighlightAction highlightAction) { - - } - - @Override - public void searchFormula(ArrayList formulaInfos, ITContent content) { - - } - - @Override - public ArrayList search4Infos(JTemplate jTemplate) { - return null; - } - - @Override - public void addFormulaInfosFromJSPara(ArrayList formulaInfos, ITContent content, JavaScript javaScript) { - - } -} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java index aa956c52cc..6020908125 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java @@ -16,80 +16,80 @@ import com.fr.write.config.DMLConfig; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; /** + * 获取提交入库中的公式 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-19 */ -public class SearchCommit2DBJSFormulaAction extends AbstractSearchJSFormulaAction{ +public class SearchCommit2DBJSFormulaAction implements SearchJSFormula { public static HashMap conditionHashMap = new HashMap<>(); + static { - conditionHashMap.put("FormulaCondition",new SearchFormulaConditionAction()); - conditionHashMap.put("CommonCondition",new SearchCommonConditionAction()); - conditionHashMap.put("ListCondition",new SearchListConditionAction()); + conditionHashMap.put("FormulaCondition", new SearchFormulaConditionAction()); + conditionHashMap.put("CommonCondition", new SearchCommonConditionAction()); + conditionHashMap.put("ListCondition", new SearchListConditionAction()); } - @Override - public void searchJSFormulaFromOther(ArrayList formulaInfos, ITContent content, JavaScript javaScript) { - if (!((Commit2DBJavaScript)javaScript).getDBManipulation().isEmpty()){ + @Override + public void searchJSFormulaFromOther(List formulaInfos, ITContent content, JavaScript javaScript) { + if (!((Commit2DBJavaScript) javaScript).getDBManipulation().isEmpty()) { //处理回调函数——这里单独摘出来是因为这边逻辑比较复杂,提交事件会再循环产生一个新的DBManipulation,后续统一处理 - dealWithCallBack(formulaInfos,content,((Commit2DBJavaScript)javaScript)); + dealWithCallBack(formulaInfos, content, ((Commit2DBJavaScript) javaScript)); //处理DBManipulation - for (int i = 0 ; i < ((Commit2DBJavaScript)javaScript).getDBManipulation().size() ; i++){ - dealWithDBManipulation(formulaInfos,content, (DBManipulation) ((Commit2DBJavaScript)javaScript).getDBManipulation().get(i)); + for (int i = 0; i < ((Commit2DBJavaScript) javaScript).getDBManipulation().size(); i++) { + dealWithDBManipulation(formulaInfos, content, (DBManipulation) ((Commit2DBJavaScript) javaScript).getDBManipulation().get(i)); } } } - private void dealWithDBManipulation(ArrayList formulaInfos, ITContent content, DBManipulation dbManipulation) { + private void dealWithDBManipulation(List formulaInfos, ITContent content, DBManipulation dbManipulation) { DMLConfig dmlConfig = dbManipulation.getDmlConfig(); //处理提交条件中的公式 - dealWithCommit2DBCondition(formulaInfos,content,dmlConfig); + dealWithCommit2DBCondition(formulaInfos, content, dmlConfig); //处理DBManipulation - dealWithSubmitJob(formulaInfos,content,dmlConfig); + dealWithSubmitJob(formulaInfos, content, dmlConfig); } - private void dealWithSubmitJob(ArrayList formulaInfos, ITContent content, DMLConfig dmlConfig) { - for (int i = 0 ;i < dmlConfig.getSubmitJobCount() ; i ++){ + private void dealWithSubmitJob(List formulaInfos, ITContent content, DMLConfig dmlConfig) { + for (int i = 0; i < dmlConfig.getSubmitJobCount(); i++) { //这边自定义事件不需要处理,只处理提交事件 - if (dmlConfig.getSubmitJob(i) instanceof DMLConfigJob){ - ITContent newContent = content.copy(); - + if (dmlConfig.getSubmitJob(i) instanceof DMLConfigJob) { + ITContent newContent = ITContent.copy(content); newContent.addOtherPos( - Toolkit.i18nText("Fine-Engine_Report_JavaScript_Commit_To_Database"), Toolkit.i18nText("Fine-Design_Basic_Write_Submit_Event") - ); - dealWithDBManipulation(formulaInfos,newContent,(((DMLConfigJob)dmlConfig.getSubmitJob(i)).getDBManipulation())); + ); + dealWithDBManipulation(formulaInfos, newContent, (((DMLConfigJob) dmlConfig.getSubmitJob(i)).getDBManipulation())); } } } - private void dealWithCallBack(ArrayList formulaInfos, ITContent content, Commit2DBJavaScript javaScript) { - if (javaScript.getCallBack() != null){ + private void dealWithCallBack(List formulaInfos, ITContent content, Commit2DBJavaScript javaScript) { + if (javaScript.getCallBack() != null) { SearchJSHighlightAction SJSA = new SearchJSHighlightAction(); - ITContent newContent = content.copy(); + ITContent newContent = ITContent.copy(content); newContent.addOtherPos( - Toolkit.i18nText("Fine-Engine_Report_JavaScript_Commit_To_Database"), Toolkit.i18nText("Fine-Design_Basic_Set_Callback_Function") - ); - SJSA.searchJSFormulaFromOther(formulaInfos,newContent, javaScript.getCallBack()); + ); + SJSA.searchJSFormulaFromOther(formulaInfos, newContent, javaScript.getCallBack()); } } - private void dealWithCommit2DBCondition(ArrayList formulaInfos, ITContent content, DMLConfig dmlConfig){ - if (dmlConfig.getCondition() != null){ + private void dealWithCommit2DBCondition(List formulaInfos, ITContent content, DMLConfig dmlConfig) { + if (dmlConfig.getCondition() != null) { //这边condition有三种情况:FormulaCondition、CommonCondition、ListCondition,分别处理 Condition condition = dmlConfig.getCondition(); SearchConditionFormula searchCondition = conditionHashMap.get(condition.getClass().getSimpleName()); - ITContent newContent = content.copy(); + ITContent newContent = ITContent.copy(content); newContent.addOtherPos( - Toolkit.i18nText("Fine-Engine_Report_JavaScript_Commit_To_Database"), Toolkit.i18nText("Fine-Design_Basic_Submit_Condition") - ); - searchCondition.searchFormulaFromCondition(formulaInfos, newContent,condition); + ); + searchCondition.searchFormulaFromCondition(formulaInfos, newContent, condition); } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchExportJSFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchExportJSFormulaAction.java index c49496db7a..61e1c14a19 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchExportJSFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchExportJSFormulaAction.java @@ -11,38 +11,40 @@ import java.util.ArrayList; import java.util.List; /** + * 获取导出事件的公式 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-19 */ -public class SearchExportJSFormulaAction extends AbstractSearchJSFormulaAction{ +public class SearchExportJSFormulaAction implements SearchJSFormula { @Override - public void searchJSFormulaFromOther(ArrayList formulaInfos, ITContent content, JavaScript javaScript) { + public void searchJSFormulaFromOther(List formulaInfos, ITContent content, JavaScript javaScript) { //如果导出当前模板,可以存公式的地方就是命名方式-自定义 - if (((ExportJavaScript)javaScript).isCurrentTemplate()){ - dealSingleJavaScript(formulaInfos,content,((ExportJavaScript)javaScript).getCurrentTemplateJavaScript()); + if (((ExportJavaScript) javaScript).isCurrentTemplate()) { + dealSingleJavaScript(formulaInfos, content, ((ExportJavaScript) javaScript).getCurrentTemplateJavaScript()); } else { - List list = ((ExportJavaScript)javaScript).getJsListForOtherTemplates(); - if (isListExist(list)){ - for (SingleJavaScript singleJavaScript : list){ - dealSingleJavaScript(formulaInfos,content,singleJavaScript); + List list = ((ExportJavaScript) javaScript).getJsListForOtherTemplates(); + if (isListExist(list)) { + for (SingleJavaScript singleJavaScript : list) { + dealSingleJavaScript(formulaInfos, content, singleJavaScript); } } } } - public boolean isListExist(List list){ + public boolean isListExist(List list) { return list != null && list.size() > 0; } - private void dealSingleJavaScript(ArrayList formulaInfos, ITContent content, SingleJavaScript javaScript){ - if (!javaScript.isDefaultFileName()){ - ITContent newContent = content.copy(); + private void dealSingleJavaScript(List formulaInfos, ITContent content, SingleJavaScript javaScript) { + if (!javaScript.isDefaultFileName()) { + ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(javaScript); newContent.addOtherPos( Toolkit.i18nText("Fine-Design_Basic_Export_JS_Event"), Toolkit.i18nText("Fine-Design_Basic_Export_JS_Filename") - ); + ); formulaInfos.add(new FormulaInfo(newContent)); } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormula.java index ccbf8d1b75..07f6a019d6 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormula.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormula.java @@ -1,14 +1,16 @@ package com.fr.design.actions.replace.action.content.formula.highlight.javascript; -import com.fr.design.actions.replace.action.content.formula.SearchFormula; import com.fr.design.actions.replace.action.content.formula.highlight.SearchHighlightFormula; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.js.JavaScript; import java.util.ArrayList; +import java.util.List; /** + * 获取各种类型JS的公式 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-18 @@ -17,17 +19,25 @@ public interface SearchJSFormula extends SearchHighlightFormula { /** * 对各种类型的JS分别处理,获取各自其他地方的公式 + * * @param formulaInfos * @param content * @param javaScript */ - void searchJSFormulaFromOther(ArrayList formulaInfos, ITContent content, JavaScript javaScript); + default void searchJSFormulaFromOther(List formulaInfos, ITContent content, JavaScript javaScript) { + } + + ; /** * 从超链中的参数获取公式 + * * @param formulaInfos * @param content * @param javaScript */ - void addFormulaInfosFromJSPara(ArrayList formulaInfos, ITContent content, JavaScript javaScript); + default void addFormulaInfosFromJSPara(List formulaInfos, ITContent content, JavaScript javaScript) { + } + + ; } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSHighlightAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSHighlightAction.java index 36f5c2d9e5..27fef18dd0 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSHighlightAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSHighlightAction.java @@ -14,6 +14,7 @@ import com.fr.stable.ParameterProvider; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; /** * 处理条件属性中各种超级链接内的公式(也包括事件中的各种超链) @@ -22,13 +23,15 @@ import java.util.HashMap; * @version 11.0 * created by Destiny.Lin on 2022-08-18 */ -public class SearchJSHighlightAction extends AbstractSearchJSFormulaAction { +public class SearchJSHighlightAction implements SearchJSFormula { //需要特殊处理的JS类型 public static HashMap javaScriptHashMap = new HashMap<>(); - public static HashMap hashMap = new HashMap<>(); + public static HashMap hashMap = new HashMap<>(); + static { hashMap.put(Commit2DBJavaScript.class, new SearchCommit2DBJSFormulaAction()); } + static { //控件事件里面需要特殊处理的类型 //EmailJavaScript(这个暂时不做处理) @@ -45,41 +48,43 @@ public class SearchJSHighlightAction extends AbstractSearchJSFormulaAction { //ChartHyperPoplink //ChartHyperRelateCellLink //ChartHyperRelateFloatLink - javaScriptHashMap.put("Commit2DBJavaScript",new SearchCommit2DBJSFormulaAction()); - javaScriptHashMap.put("ExportJavaScript",new SearchExportJSFormulaAction()); - javaScriptHashMap.put("MobilePopupHyperlink",new SearchMobileHyperlinkFormulaAction()); + javaScriptHashMap.put("Commit2DBJavaScript", new SearchCommit2DBJSFormulaAction()); + javaScriptHashMap.put("ExportJavaScript", new SearchExportJSFormulaAction()); + javaScriptHashMap.put("MobilePopupHyperlink", new SearchMobileHyperlinkFormulaAction()); } @Override - public void dealWithHighlightAction( ITContent content, ArrayList formulaInfos,HighlightAction highlightAction) { - NameJavaScriptGroup nameJavaScriptGroup = ((HyperlinkHighlightAction)highlightAction).getHperlink(); - if (nameJavaScriptGroup != null){ - for (int i = 0 ; i < nameJavaScriptGroup.size() ; i ++){ + public void dealWithHighlightAction(ITContent content, List formulaInfos, HighlightAction highlightAction) { + NameJavaScriptGroup nameJavaScriptGroup = ((HyperlinkHighlightAction) highlightAction).getHperlink(); + if (nameJavaScriptGroup != null) { + for (int i = 0; i < nameJavaScriptGroup.size(); i++) { //单元格条件属性-属性-超级链接里面参数的公式统一判断获取一下 - ITContent newContent =content.copy(); + ITContent newContent = ITContent.copy(content); newContent.addOtherPos( Toolkit.i18nText("Fine-Design_Basic_Cell"), Toolkit.i18nText("Fine-Design_Basic_Condition_Attributes"), - Toolkit.i18nText("Fine-Design_Report_Hyperlink"), - Toolkit.i18nText("Fine-Design_Basic_Parameters")); - addFormulaInfosFromJSPara(formulaInfos,newContent,nameJavaScriptGroup.getNameHyperlink(i).getJavaScript()); + nameJavaScriptGroup.getNameHyperlink(i).getName() + ); + addFormulaInfosFromJSPara(formulaInfos, newContent, nameJavaScriptGroup.getNameHyperlink(i).getJavaScript()); } } } /** * 仅仅获取JS中的参数中的公式 + * * @param formulaInfos * @param content * @param javaScript */ @Override - public void addFormulaInfosFromJSPara(ArrayList formulaInfos, ITContent content, JavaScript javaScript) { - if (javaScript.getParameters() != null){ - for (ParameterProvider provider : javaScript.getParameters()){ - if (provider.getValue() instanceof Formula){ - ITContent newContent = content.copy(); + public void addFormulaInfosFromJSPara(List formulaInfos, ITContent content, JavaScript javaScript) { + if (javaScript.getParameters() != null) { + for (ParameterProvider provider : javaScript.getParameters()) { + if (provider.getValue() instanceof Formula) { + ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(provider); + newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Parameters")); formulaInfos.add(new FormulaInfo(newContent)); } } @@ -88,18 +93,19 @@ public class SearchJSHighlightAction extends AbstractSearchJSFormulaAction { /** * 对各种类型的JS分别处理,获取公式 + * * @param formulaInfos * @param content * @param javaScript */ @Override - public void searchJSFormulaFromOther(ArrayList formulaInfos, ITContent content, JavaScript javaScript) { + public void searchJSFormulaFromOther(List formulaInfos, ITContent content, JavaScript javaScript) { //获取JS中的参数中的公式 addFormulaInfosFromJSPara(formulaInfos, content, javaScript); //这里面类型比较多,但是一部分不用处理——公式可能存在的地方只有参数,这部分在addFormulaInfosFromJSPara中就已经把公式拿完了 - if (javaScriptHashMap.containsKey(javaScript.getClass().getSimpleName())){ + if (javaScriptHashMap.containsKey(javaScript.getClass().getSimpleName())) { SearchJSFormula javaScriptFormula = javaScriptHashMap.get(javaScript.getClass().getSimpleName()); - javaScriptFormula.searchJSFormulaFromOther(formulaInfos,content,javaScript); + javaScriptFormula.searchJSFormulaFromOther(formulaInfos, content, javaScript); } } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchMobileHyperlinkFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchMobileHyperlinkFormulaAction.java index 3524f6af15..8b2358a089 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchMobileHyperlinkFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchMobileHyperlinkFormulaAction.java @@ -7,19 +7,21 @@ import com.fr.design.i18n.Toolkit; import com.fr.js.JavaScript; import com.fr.js.MobilePopupHyperlink; -import java.util.ArrayList; +import java.util.List; /** + * 获取移动端弹窗相关公式 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-19 */ -public class SearchMobileHyperlinkFormulaAction extends AbstractSearchJSFormulaAction{ +public class SearchMobileHyperlinkFormulaAction implements SearchJSFormula { @Override - public void searchJSFormulaFromOther(ArrayList formulaInfos, ITContent content, JavaScript javaScript) { - if (((MobilePopupHyperlink)javaScript).getPopupText() instanceof Formula){ - ITContent newContent = content.copy(); - newContent.setReplaceObject(((MobilePopupHyperlink)javaScript).getPopupText()); + public void searchJSFormulaFromOther(List formulaInfos, ITContent content, JavaScript javaScript) { + if (((MobilePopupHyperlink) javaScript).getPopupText() instanceof Formula) { + ITContent newContent = ITContent.copy(content); + newContent.setReplaceObject(((MobilePopupHyperlink) javaScript).getPopupText()); newContent.addOtherPos( Toolkit.i18nText("FR-Plugin-Designer_Mobile_Popup"), Toolkit.i18nText("FR-Plugin-Designer_Mobile_Popup_Text") diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/AbstractSearchTemplateFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/AbstractSearchTemplateFormula.java deleted file mode 100644 index 4de0fccc0f..0000000000 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/AbstractSearchTemplateFormula.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.fr.design.actions.replace.action.content.formula.template; - - -import com.fr.design.actions.replace.info.FormulaInfo; -import com.fr.design.actions.replace.info.Info; -import com.fr.design.actions.replace.info.base.ITContent; -import com.fr.design.mainframe.JTemplate; - -import java.util.ArrayList; - -/** - * @author Destiny.Lin - * @version 11.0 - * created by Destiny.Lin on 2022-09-12 - */ -public abstract class AbstractSearchTemplateFormula implements SearchTemplateFormula{ - - @Override - public void searchFormula(ArrayList formulaInfos, ITContent content) { - - } - - @Override - public ArrayList search4Infos(JTemplate jTemplate) { - return null; - } -} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormula.java index 169bc5dc3b..8d9f9190c2 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormula.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormula.java @@ -5,9 +5,11 @@ import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.mainframe.JTemplate; -import java.util.ArrayList; +import java.util.List; /** + * 搜索模板全局内容 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-09-12 @@ -16,17 +18,19 @@ public interface SearchTemplateFormula extends SearchFormula { /** * 搜索全局水印中的公式 + * * @param jTemplate * @param formulaInfos * @param content */ - void searchTemplateWaterMarkFormula(JTemplate jTemplate, ArrayList formulaInfos, ITContent content); + void searchTemplateWaterMarkFormula(JTemplate jTemplate, List formulaInfos, ITContent content); /** * 搜索全局参数中的公式 + * * @param jTemplate * @param formulaInfos * @param content */ - void searchTemplateParaFormula(JTemplate jTemplate, ArrayList formulaInfos, ITContent content); + void searchTemplateParaFormula(JTemplate jTemplate, List formulaInfos, ITContent content); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java index bc89d2d6cf..a500bdb7fb 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java @@ -5,24 +5,32 @@ import com.fr.base.Parameter; import com.fr.base.ParameterConfig; import com.fr.base.io.AttrMark; import com.fr.base.iofile.attr.WatermarkAttr; +import com.fr.design.actions.replace.action.content.formula.data.SearchDataFormulaAction; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.JTemplate; -import com.fr.main.impl.WorkBook; import com.fr.report.core.ReportUtils; -import com.fr.report.core.watermark.WaterMarkFactory; import java.util.ArrayList; +import java.util.List; /** + * 搜索模板的全局相关内容 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-09-12 */ -public class SearchTemplateFormulaAction extends AbstractSearchTemplateFormula { +public class SearchTemplateFormulaAction implements SearchTemplateFormula { - public SearchTemplateFormulaAction(JTemplate jTemplate, ArrayList formulaInfos) { + + private SearchTemplateFormulaAction() { + } + + + @Override + public void searchFormulaFromObject(JTemplate jTemplate, List formulaInfos) { ITContent content = new ITContent(); content.setTemplateName(jTemplate.getTemplateName()); searchTemplateParaFormula(jTemplate, formulaInfos, content); @@ -30,10 +38,10 @@ public class SearchTemplateFormulaAction extends AbstractSearchTemplateFormula { } @Override - public void searchTemplateWaterMarkFormula(JTemplate jTemplate, ArrayList formulaInfos, ITContent content) { + public void searchTemplateWaterMarkFormula(JTemplate jTemplate, List formulaInfos, ITContent content) { WatermarkAttr watermarkAttr = ReportUtils.getWatermarkAttrFromTemplateAndGlobal((AttrMark) jTemplate.getTarget()); if (watermarkAttr != null) { - ITContent waterMarkContent = content.copy(); + ITContent waterMarkContent = ITContent.copy(content); waterMarkContent.addOtherPos(Toolkit.i18nText("Fine-Design_Form_WaterMark")); waterMarkContent.setReplaceObject(watermarkAttr); formulaInfos.add(new FormulaInfo(waterMarkContent)); @@ -41,11 +49,11 @@ public class SearchTemplateFormulaAction extends AbstractSearchTemplateFormula { } @Override - public void searchTemplateParaFormula(JTemplate jTemplate, ArrayList formulaInfos, ITContent content) { + public void searchTemplateParaFormula(JTemplate jTemplate, List formulaInfos, ITContent content) { Parameter[] parameters = jTemplate.getJTemplateParameters(); for (Parameter parameter : parameters) { if (parameter.getValue() instanceof Formula) { - ITContent paraContent = content.copy(); + ITContent paraContent = ITContent.copy(content); paraContent.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Template_Parameter")); paraContent.setReplaceObject(parameter.getValue()); formulaInfos.add(new FormulaInfo(paraContent)); @@ -55,11 +63,44 @@ public class SearchTemplateFormulaAction extends AbstractSearchTemplateFormula { Parameter[] globalParameters = ParameterConfig.getInstance().getGlobalParameters(); for (Parameter parameter : globalParameters) { if (parameter.getValue() instanceof Formula) { - ITContent paraContent = content.copy(); + ITContent paraContent = ITContent.copy(content); paraContent.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Parameter_Source_Type_Server")); paraContent.setReplaceObject(parameter.getValue()); formulaInfos.add(new FormulaInfo(paraContent)); } } } + + /** + * 对外开放的获取单例对象的方法 + * + * @return + */ + public static SearchTemplateFormulaAction getInstance() { + return SearchTemplateFormulaAction.SearchTemplateFormulaActionEnum.SINGLETON.getInstance(); + } + + /** + * 单例实现枚举 + */ + enum SearchTemplateFormulaActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchTemplateFormulaAction instance; + + SearchTemplateFormulaActionEnum() { + instance = new SearchTemplateFormulaAction(); + } + + /** + * 获取单例对象 + * + * @return + */ + public SearchTemplateFormulaAction getInstance() { + return instance; + } + } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/AbstractSearchWidgetFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/AbstractSearchWidgetFormulaAction.java index d27899467d..96a1437af0 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/AbstractSearchWidgetFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/AbstractSearchWidgetFormulaAction.java @@ -3,18 +3,22 @@ package com.fr.design.actions.replace.action.content.formula.widget; import com.fr.base.Formula; import com.fr.design.actions.replace.action.content.formula.highlight.javascript.SearchJSHighlightAction; import com.fr.design.actions.replace.info.FormulaInfo; -import com.fr.design.actions.replace.info.Info; import com.fr.design.actions.replace.info.WidgetInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.JTemplate; import com.fr.form.event.Listener; +import com.fr.form.ui.ComboCheckBox; import com.fr.form.ui.DataControl; import com.fr.form.ui.Widget; +import com.fr.form.ui.container.WScaleLayout; +import com.fr.form.ui.widget.CRBoundsWidget; -import java.util.ArrayList; +import java.util.List; /** + * 处理共有控件内容 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-19 @@ -28,52 +32,45 @@ public abstract class AbstractSearchWidgetFormulaAction implements SearchWidgetF * @param formulaInfos */ @Override - public void searchFormulaFromWidget(ITContent content, ArrayList formulaInfos) { + public void searchFormulaFromWidget(ITContent content, List formulaInfos) { Widget widget = (Widget) content.getReplaceObject(); //控件值中的公式 - searchFormulaFromWidgetValue(content,formulaInfos); - for (int i = 0 ; i < widget.getListenerSize() ;i++){ + searchFormulaFromWidgetValue(content, formulaInfos); + for (int i = 0; i < widget.getListenerSize(); i++) { Listener listener = widget.getListener(i); - ITContent newContent = content.copy(); - newContent.getContentObject().setListener(listener); + ITContent newContent = ITContent.copy(content); //控件的事件可以使用的JS有五种,这边统一交给Highlight那边判断超级链接并进行处理 SearchJSHighlightAction SJSA = new SearchJSHighlightAction(); - newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Report_Event")); - SJSA.searchJSFormulaFromOther(formulaInfos,newContent, listener.getAction()); + newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Report_Event"),listener.getName()); + + SJSA.searchJSFormulaFromOther(formulaInfos, newContent, listener.getAction()); } } /** * 判断一下控件有没有控件值接口,如果有再判断一下控件值是否已经设置并且是公式 + * * @param content * @param formulaInfos */ @Override - public void searchFormulaFromWidgetValue(ITContent content, ArrayList formulaInfos) { - if(content.getReplaceObject() instanceof DataControl){ - if (((DataControl) content.getReplaceObject()).getWidgetValue() != null - && ((DataControl) content.getReplaceObject()).getWidgetValue().getValue() instanceof Formula){ - ITContent newContent = content.copy(); + public void searchFormulaFromWidgetValue(ITContent content, List formulaInfos) { + Widget widget = (Widget) content.getReplaceObject(); + if (widget instanceof WScaleLayout){ + widget = ((CRBoundsWidget)((WScaleLayout)widget).getWidget(0)).getWidget(); + } + if (widget instanceof DataControl) { + if (isWidgetValueValid(((DataControl) widget))) { + ITContent newContent = ITContent.copy(content); newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Report_Widget_Value")); - newContent.setReplaceObject(((DataControl)content.getReplaceObject()).getWidgetValue().getValue()); + newContent.setReplaceObject(((DataControl) widget).getWidgetValue().getValue()); formulaInfos.add(new FormulaInfo(newContent)); } } } - @Override - public void searchFormulaFromWidgetInfos(WidgetInfo widgetInfo, ArrayList formulaInfos) { - } - - - @Override - public void searchFormula(ArrayList formulaInfos, ITContent content) { - - } - - - @Override - public ArrayList search4Infos(JTemplate jTemplate) { - return null; + private boolean isWidgetValueValid(DataControl control){ + return control.getWidgetValue() != null + && control.getWidgetValue().getValue() instanceof Formula; } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/DictionaryAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/DictionaryAction.java index f5a7610b94..7ae47c80ef 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/DictionaryAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/DictionaryAction.java @@ -4,9 +4,11 @@ import com.fr.data.Dictionary; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; -import java.util.ArrayList; +import java.util.List; /** + * 从数据字典中获取信息 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-22 @@ -15,9 +17,10 @@ public interface DictionaryAction { /** * 从数据字典中获取公式 + * * @param content * @param formulaInfos * @param dictionary */ - void searchFormulaFromDictionary(ITContent content, ArrayList formulaInfos, Dictionary dictionary); + void searchFormulaFromDictionary(ITContent content, List formulaInfos, Dictionary dictionary); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/DictionaryType.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/DictionaryType.java index d5ebc70768..be16c095e4 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/DictionaryType.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/DictionaryType.java @@ -9,7 +9,7 @@ import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; +import java.util.List; /** * 数据字典处理 @@ -18,17 +18,17 @@ import java.util.ArrayList; * @version 11.0 * created by Destiny.Lin on 2022-08-22 */ -enum DictionaryType implements DictionaryAction { +public enum DictionaryType implements DictionaryAction { /** * 数据字典——公式 */ FORMULA_DICTIONARY("FormulaDictionary") { @Override - public void searchFormulaFromDictionary(ITContent content, ArrayList formulaInfos, Dictionary dictionary) { + public void searchFormulaFromDictionary(ITContent content, List formulaInfos, Dictionary dictionary) { //显示值 if (((FormulaDictionary) dictionary).getExcuteFormula() != null) { - ITContent excuteContent = content.copy(); + ITContent excuteContent = ITContent.copy(content); excuteContent.setReplaceObject(dictionary); excuteContent.addOtherPos( Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary"), @@ -39,7 +39,7 @@ enum DictionaryType implements DictionaryAction { } //实际值 if (((FormulaDictionary) dictionary).getProduceFormula() != null) { - ITContent produceContent = content.copy(); + ITContent produceContent = ITContent.copy(content); produceContent.setReplaceObject(dictionary); produceContent.addOtherPos( Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary"), @@ -56,9 +56,9 @@ enum DictionaryType implements DictionaryAction { */ TABLE_DATA_DICTIONARY("TableDataDictionary") { @Override - public void searchFormulaFromDictionary(ITContent content, ArrayList formulaInfos, Dictionary dictionary) { + public void searchFormulaFromDictionary(ITContent content, List formulaInfos, Dictionary dictionary) { if (((TableDataDictionary) dictionary).getFormula() != null) { - ITContent newContent = content.copy(); + ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(((TableDataDictionary) dictionary).getFormula()); newContent.addOtherPos( Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary"), @@ -75,9 +75,9 @@ enum DictionaryType implements DictionaryAction { */ DATABASE_DICTIONARY("DatabaseDictionary") { @Override - public void searchFormulaFromDictionary(ITContent content, ArrayList formulaInfos, Dictionary dictionary) { + public void searchFormulaFromDictionary(ITContent content, List formulaInfos, Dictionary dictionary) { if (((DatabaseDictionary) dictionary).getFormula() != null) { - ITContent newContent = content.copy(); + ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(((DatabaseDictionary) dictionary).getFormula()); newContent.addOtherPos( Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary"), diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchCommonWidgetFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchCommonWidgetFormulaAction.java index 84273cc2b2..0c2c0235cb 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchCommonWidgetFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchCommonWidgetFormulaAction.java @@ -3,7 +3,7 @@ package com.fr.design.actions.replace.action.content.formula.widget; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; -import java.util.ArrayList; +import java.util.List; /** * 控件中的公式只会在事件、控件值 @@ -15,7 +15,7 @@ import java.util.ArrayList; public class SearchCommonWidgetFormulaAction extends AbstractSearchWidgetFormulaAction { @Override - public void searchFormulaFromWidget(ITContent content, ArrayList formulaInfos) { + public void searchFormulaFromWidget(ITContent content, List formulaInfos) { //每个事件的事件、控件值两部分的公式获取逻辑是一样的,直接调用即可,各自其他地方的公式就需要特殊处理 super.searchFormulaFromWidget(content, formulaInfos); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java index e2ff6d951c..3c9b8884bd 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java @@ -1,12 +1,14 @@ package com.fr.design.actions.replace.action.content.formula.widget; import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.WidgetInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; import com.fr.form.ui.DateEditor; import org.gradle.internal.impldep.org.apache.commons.lang.StringUtils; import java.util.ArrayList; +import java.util.List; /** * 日期类型控件特殊处理 @@ -16,27 +18,29 @@ import java.util.ArrayList; * created by Destiny.Lin on 2022-08-26 */ public class SearchDateEditorFormulaAction extends AbstractSearchWidgetFormulaAction { + + @Override - public void searchFormulaFromWidget(ITContent content, ArrayList formulaInfos) { + public void searchFormulaFromWidget(ITContent content, List formulaInfos) { super.searchFormulaFromWidget(content, formulaInfos); dealStratDateFormula(content, formulaInfos); dealEndDateFormula(content, formulaInfos); } - private void dealEndDateFormula(ITContent content, ArrayList formulaInfos) { + private void dealEndDateFormula(ITContent content, List formulaInfos) { DateEditor dateEditor = (DateEditor) content.getReplaceObject(); if (dateEditor.getEndDateFM() != null && !StringUtils.isEmpty(dateEditor.getEndDateFM().getContent())) { - ITContent newContent = content.copy(); + ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(dateEditor.getEndDateFM()); newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_End_Time")); formulaInfos.add(new FormulaInfo(newContent)); } } - private void dealStratDateFormula(ITContent content, ArrayList formulaInfos) { + private void dealStratDateFormula(ITContent content, List formulaInfos) { DateEditor dateEditor = (DateEditor) content.getReplaceObject(); if (dateEditor.getStartDateFM() != null && !StringUtils.isEmpty(dateEditor.getStartDateFM().getContent())) { - ITContent newContent = content.copy(); + ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(dateEditor.getStartDateFM()); newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Start_Time")); formulaInfos.add(new FormulaInfo(newContent)); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDictFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDictFormulaAction.java index a0dd7ded3a..abe0ddc5c3 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDictFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDictFormulaAction.java @@ -2,9 +2,11 @@ package com.fr.design.actions.replace.action.content.formula.widget; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.form.ui.ComboCheckBox; import com.fr.form.ui.DictionaryContainer; import java.util.ArrayList; +import java.util.List; /** * 控件中的公式会存在: 控件值、 非树形结构数据字典、 事件 @@ -17,7 +19,7 @@ public class SearchDictFormulaAction extends AbstractSearchWidgetFormulaAction { @Override - public void searchFormulaFromWidget(ITContent content, ArrayList formulaInfos) { + public void searchFormulaFromWidget(ITContent content, List formulaInfos) { //控件值、事件 super.searchFormulaFromWidget(content, formulaInfos); //数据字典 @@ -25,7 +27,7 @@ public class SearchDictFormulaAction extends AbstractSearchWidgetFormulaAction { } - private void searchFormulaFromDict(ITContent content, ArrayList formulaInfos) { + private void searchFormulaFromDict(ITContent content, List formulaInfos) { if (content.getReplaceObject() instanceof DictionaryContainer) { if (((DictionaryContainer) content.getReplaceObject()).getDictionary() != null) { DictionaryType type = DictionaryType.match(((DictionaryContainer) content.getReplaceObject()).getDictionary().getClass().getSimpleName()); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java index 8d231126d1..03ae60b079 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java @@ -1,8 +1,6 @@ package com.fr.design.actions.replace.action.content.formula.widget; -import com.fr.data.impl.DatabaseDictionary; import com.fr.data.impl.FormulaDisplayDictionary; -import com.fr.data.impl.TableDataDictionary; import com.fr.data.impl.TreeNodeAttr; import com.fr.data.impl.TreeNodeWrapper; import com.fr.design.actions.replace.info.FormulaInfo; @@ -13,6 +11,7 @@ import com.fr.form.ui.tree.LayerConfig; import com.fr.stable.StringUtils; import java.util.ArrayList; +import java.util.List; /** * @author Destiny.Lin @@ -21,7 +20,7 @@ import java.util.ArrayList; */ public class SearchTreeEditorFormulaAction extends AbstractSearchWidgetFormulaAction { @Override - public void searchFormulaFromWidget(ITContent content, ArrayList formulaInfos) { + public void searchFormulaFromWidget(ITContent content, List formulaInfos) { //控件值、事件 super.searchFormulaFromWidget(content, formulaInfos); //树形结构数据字典 @@ -29,7 +28,7 @@ public class SearchTreeEditorFormulaAction extends AbstractSearchWidgetFormulaAc } - private void SearchFormulaFromModelConfig(ITContent content, ArrayList formulaInfos) { + private void SearchFormulaFromModelConfig(ITContent content, List formulaInfos) { if (((TreeEditor) content.getReplaceObject()).getBuildModelConfig() != null) { //LayerConfig[] 急速分层构建 //TreeNodeWrapper 普通分层构建 @@ -43,11 +42,11 @@ public class SearchTreeEditorFormulaAction extends AbstractSearchWidgetFormulaAc } } - private void dealWithTreeNodeWrapper(TreeNodeWrapper wrapper, ITContent content, ArrayList formulaInfos) { + private void dealWithTreeNodeWrapper(TreeNodeWrapper wrapper, ITContent content, List formulaInfos) { for (TreeNodeAttr attr : wrapper.getTreeNodeAttrs()) { if (((FormulaDisplayDictionary) attr.getDictionary()).getFormula() != null && !StringUtils.isEmpty(((FormulaDisplayDictionary) attr.getDictionary()).getFormula().getContent())) { - ITContent newContent = content.copy(); + ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(((FormulaDisplayDictionary) attr.getDictionary()).getFormula()); newContent.addOtherPos( Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary"), @@ -58,11 +57,11 @@ public class SearchTreeEditorFormulaAction extends AbstractSearchWidgetFormulaAc } } - private void dealWithLayerConfigs(LayerConfig[] layerConfigs, ITContent content, ArrayList formulaInfos) { + private void dealWithLayerConfigs(LayerConfig[] layerConfigs, ITContent content, List formulaInfos) { for (LayerConfig layerConfig : layerConfigs) { if (layerConfig.getDictionary().getFormula() != null && !StringUtils.isEmpty(layerConfig.getDictionary().getFormula().getContent())) { - ITContent newContent = content.copy(); + ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(layerConfig.getDictionary().getFormula()); newContent.addOtherPos( Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary"), diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormula.java index 1064dee360..355cb0080e 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormula.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormula.java @@ -2,13 +2,15 @@ package com.fr.design.actions.replace.action.content.formula.widget; import com.fr.design.actions.replace.action.content.formula.SearchFormula; import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.Info; import com.fr.design.actions.replace.info.WidgetInfo; import com.fr.design.actions.replace.info.base.ITContent; -import com.fr.form.ui.Widget; -import java.util.ArrayList; +import java.util.List; /** + * 搜索控件中的公式 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-19 @@ -17,11 +19,10 @@ public interface SearchWidgetFormula extends SearchFormula { /** * 从WidgetInfos列表中搜索所有公式 - * - * @param widgetInfo 对应的Info信息列表 + * @param info 对应的Info信息列表 * @param formulaInfos 要存储进去的公式信息列表 */ - void searchFormulaFromWidgetInfos(WidgetInfo widgetInfo, ArrayList formulaInfos); + default void searchFormulaFromWidgetInfos(Info info, List formulaInfos){} /** * 从控件的不同类型中获取公式 @@ -29,7 +30,7 @@ public interface SearchWidgetFormula extends SearchFormula { * @param content 对应的ITContent数据结构 * @param formulaInfos 要存储进去的公式信息列表 */ - void searchFormulaFromWidget(ITContent content, ArrayList formulaInfos); + void searchFormulaFromWidget(ITContent content, List formulaInfos); /** * 从控件值中获取公式 @@ -37,6 +38,6 @@ public interface SearchWidgetFormula extends SearchFormula { * @param content 对应的ITContent数据结构 * @param formulaInfos 要存储进去的公式信息列表 */ - void searchFormulaFromWidgetValue(ITContent content, ArrayList formulaInfos); + void searchFormulaFromWidgetValue(ITContent content, List formulaInfos); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java index 6c262ee98d..28115d1a52 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java @@ -1,14 +1,28 @@ package com.fr.design.actions.replace.action.content.formula.widget; +import com.fr.chart.chartattr.ChartCollection; +import com.fr.design.actions.replace.action.content.component.SearchComponentAction; +import com.fr.design.actions.replace.action.content.formula.chart.SearchChartCollectionFormulaAction; import com.fr.design.actions.replace.action.content.widget.SearchWidgetAction; +import com.fr.design.actions.replace.info.ComponentInfo; import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.Info; import com.fr.design.actions.replace.info.WidgetInfo; import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.actions.replace.utils.ShowValueUtils; import com.fr.design.mainframe.JTemplate; +import com.fr.form.main.Form; +import com.fr.form.ui.ChartEditor; +import com.fr.form.ui.ComboCheckBox; import com.fr.form.ui.Widget; +import com.fr.form.ui.container.WScaleLayout; +import com.fr.form.ui.container.WTitleLayout; +import com.fr.form.ui.widget.CRBoundsWidget; +import com.fr.main.impl.WorkBook; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; /** * 查找控件内的公式 @@ -18,91 +32,135 @@ import java.util.HashMap; * created by Destiny.Lin on 2022-08-19 */ public class SearchWidgetFormulaAction extends AbstractSearchWidgetFormulaAction { - public static HashMap widgetHashMap = new HashMap<>(); + private SearchWidgetFormulaAction() { + } + + public static HashMap widgetHashMap = new HashMap<>(); + static { - //WParameterLayout - //PageFixedRowComboBox - //FormSubmitButton - //TreeEditor - //CheckBox - //Password - //TextArea - //CheckBoxGroup - //RadioGroup - //TreeComboBoxEditor - //NumberEditor - //DateEditor - //ComboCheckBox - //ComboBox - //FreeButton - //Label /** * 可能有控件值、 有事件 */ - widgetHashMap.put("FormSubmitButton",new SearchCommonWidgetFormulaAction()); - widgetHashMap.put("WParameterLayout",new SearchCommonWidgetFormulaAction()); - widgetHashMap.put("TextArea",new SearchCommonWidgetFormulaAction()); - widgetHashMap.put("Password",new SearchCommonWidgetFormulaAction()); - widgetHashMap.put("CheckBox",new SearchCommonWidgetFormulaAction()); - widgetHashMap.put("Label",new SearchCommonWidgetFormulaAction()); - widgetHashMap.put("FreeButton",new SearchCommonWidgetFormulaAction()); - widgetHashMap.put("NumberEditor",new SearchCommonWidgetFormulaAction()); + widgetHashMap.put("FormSubmitButton", new SearchCommonWidgetFormulaAction()); + widgetHashMap.put("WParameterLayout", new SearchCommonWidgetFormulaAction()); + widgetHashMap.put("TextArea", new SearchCommonWidgetFormulaAction()); + widgetHashMap.put("Password", new SearchCommonWidgetFormulaAction()); + widgetHashMap.put("CheckBox", new SearchCommonWidgetFormulaAction()); + widgetHashMap.put("Label", new SearchCommonWidgetFormulaAction()); + widgetHashMap.put("FreeButton", new SearchCommonWidgetFormulaAction()); + widgetHashMap.put("NumberEditor", new SearchCommonWidgetFormulaAction()); + widgetHashMap.put("TextEditor", new SearchCommonWidgetFormulaAction()); /** * 日期类型 */ - widgetHashMap.put("DateEditor",new SearchDateEditorFormulaAction()); + widgetHashMap.put("DateEditor", new SearchDateEditorFormulaAction()); /** * 控件值、事件、非树形数据字典 */ - widgetHashMap.put("ComboBox",new SearchDictFormulaAction()); - widgetHashMap.put("RadioGroup",new SearchDictFormulaAction()); - widgetHashMap.put("CheckBoxGroup",new SearchDictFormulaAction()); - widgetHashMap.put("ComboCheckBox",new SearchDictFormulaAction()); - widgetHashMap.put("PageFixedRowComboBox",new SearchDictFormulaAction()); + widgetHashMap.put("ComboBox", new SearchDictFormulaAction()); + widgetHashMap.put("RadioGroup", new SearchDictFormulaAction()); + widgetHashMap.put("CheckBoxGroup", new SearchDictFormulaAction()); + widgetHashMap.put("ComboCheckBox", new SearchDictFormulaAction()); + widgetHashMap.put("PageFixedRowComboBox", new SearchDictFormulaAction()); /** * 控件值、事件、树形数据字典 */ - widgetHashMap.put("TreeComboBoxEditor",new SearchTreeEditorFormulaAction()); - widgetHashMap.put("TreeEditor",new SearchTreeEditorFormulaAction()); + widgetHashMap.put("TreeComboBoxEditor", new SearchTreeEditorFormulaAction()); + widgetHashMap.put("TreeEditor", new SearchTreeEditorFormulaAction()); } - - public SearchWidgetFormulaAction(JTemplate jTemplate,ArrayList fomulaInfos){ - fomulaInfos.addAll(search4Infos(jTemplate)); - } - @Override - public ArrayList search4Infos(JTemplate jTemplate) { - ArrayList formulaInfos = new ArrayList<>(); - SearchWidgetAction searchWidgetAction = new SearchWidgetAction(jTemplate); - if (!searchWidgetAction.isWidgetInfosEmpty()){ - for (WidgetInfo widgetInfo : searchWidgetAction.getWidgetInfos()){ - //由于控件类型比较多,各种控件也不大相同,可能存放公式的地方也都不一样,这边根据对应的类型进行处理 - searchFormulaFromWidgetInfos(widgetInfo,formulaInfos); + public void searchFormulaFromObject(JTemplate jTemplate, List formulaInfos) { + List result = new ArrayList<>(); + if (jTemplate.getTarget() instanceof WorkBook) { + SearchWidgetAction searchWidgetAction = SearchWidgetAction.getInstance(); + searchWidgetAction.search4Infos(jTemplate); + if (!searchWidgetAction.isWidgetInfosEmpty()) { + for (WidgetInfo widgetInfo : searchWidgetAction.getWidgetInfos()) { + //由于控件类型比较多,各种控件也不大相同,可能存放公式的地方也都不一样,这边根据对应的类型进行处理 + searchFormulaFromWidgetInfos(widgetInfo, result); + } + } + } else if (jTemplate.getTarget() instanceof Form) { + SearchComponentAction searchComponentAction = SearchComponentAction.getInstance(); + searchComponentAction.search4Infos(jTemplate); + if (ShowValueUtils.isNotEmpty(searchComponentAction.getComponentInfos())) { + for (ComponentInfo componentInfo : searchComponentAction.getComponentInfos()) { + searchFormulaFromWidgetInfos(componentInfo, formulaInfos); + } } } - return formulaInfos; + formulaInfos.addAll(result); } + @Override - public void searchFormulaFromWidgetInfos(WidgetInfo widgetInfo, ArrayList formulaInfos) { - if (widgetInfo.isReplaceObjectExist()){ - searchFormulaFromWidgetValue(widgetInfo,formulaInfos); + public void searchFormulaFromWidgetInfos(Info info, List formulaInfos) { + if (isReplaceObjectExist(info)) { + searchFormulaFromWidgetValue(info, formulaInfos); } } - private void searchFormulaFromWidgetValue(WidgetInfo widgetInfo, ArrayList formulaInfos) { - Widget widget = (Widget)widgetInfo.getContent().getReplaceObject(); - if (widgetHashMap.containsKey(widget.getClass().getSimpleName())){ + private void searchFormulaFromWidgetValue(Info info, List formulaInfos) { + Widget widget = (Widget) info.getContent().getReplaceObject(); + if (widget instanceof WScaleLayout) { + widget = ((CRBoundsWidget) ((WScaleLayout) widget).getWidget(0)).getWidget(); + } + if (widget instanceof WTitleLayout) { + widget = ((CRBoundsWidget) ((WTitleLayout) widget).getWidget(0)).getWidget(); + if (widget instanceof ChartEditor && ((ChartEditor) widget).getChartCollection() instanceof ChartCollection) { + SearchChartCollectionFormulaAction.getInstance().searchChartCollectionFormula(formulaInfos, info.getContent(), (ChartCollection) ((ChartEditor) widget).getChartCollection()); + } + } + if (widgetHashMap.containsKey(widget.getClass().getSimpleName())) { SearchWidgetFormula searchWidgetFormula = widgetHashMap.get(widget.getClass().getSimpleName()); - ITContent content = widgetInfo.getContent().copy(); - searchWidgetFormula.searchFormulaFromWidget(content,formulaInfos); + ITContent content = ITContent.copy(info.getContent()); + searchWidgetFormula.searchFormulaFromWidget(content, formulaInfos); } } + + + public boolean isReplaceObjectExist(Info info) { + return info.getContent() != null && info.getContent().getReplaceObject() != null; + } + + /** + * 对外开放的获取对象的方法 + * + * @return + */ + public static SearchWidgetFormulaAction getInstance() { + return SearchWidgetFormulaAction.SearchWidgetFormulaActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + enum SearchWidgetFormulaActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchWidgetFormulaAction instance; + + SearchWidgetFormulaActionEnum() { + instance = new SearchWidgetFormulaAction(); + } + + /** + * 获取对象 + * + * @return + */ + public SearchWidgetFormulaAction getInstance() { + return instance; + } + } + } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchCellJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchCellJSAction.java index 9c066b2eb1..35b09547e0 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchCellJSAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchCellJSAction.java @@ -18,38 +18,39 @@ import com.fr.report.cell.TemplateCellElement; import com.fr.report.cell.cellattr.highlight.DefaultHighlight; import com.fr.report.cell.cellattr.highlight.HighlightAction; import com.fr.report.cell.cellattr.highlight.HyperlinkHighlightAction; -import javafx.util.Pair; +import com.fr.stable.collections.combination.Pair; import java.util.ArrayList; +import java.util.List; /** + * 搜索单元格JS + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-13 */ -public class SearchCellJSAction implements SearchAction { +public class SearchCellJSAction implements SearchJS { - public SearchCellJSAction(JTemplate jTemplate, ArrayList jsInfos) { - jsInfos.addAll(search4Infos(jTemplate)); + private SearchCellJSAction() { } - @Override - public ArrayList search4Infos(JTemplate jTemplate) { - ArrayList jsInfos = new ArrayList<>(); - addJSInfos2ListFromCell(jTemplate, jsInfos); - return jsInfos; + public void searchJSFromObject(JTemplate jTemplate, List jsInfos) { + List CellJSInfos = new ArrayList<>(); + addJSInfos2ListFromCell(jTemplate, CellJSInfos); + jsInfos.addAll(CellJSInfos); } - - private void addJSInfos2ListFromCell(JTemplate jTemplate, ArrayList jsInfos) { - SearchCellAction searchCellAction = new SearchCellAction(jTemplate); + private void addJSInfos2ListFromCell(JTemplate jTemplate, List jsInfos) { + SearchCellAction searchCellAction = SearchCellAction.getInstance(); + searchCellAction.search4Infos(jTemplate); for (CellInfo cellInfo : searchCellAction.getCellInfos()) { CellElement cell = (CellElement) cellInfo.getContent().getReplaceObject(); - ITContent newContent4Cell = cellInfo.getContent().copy(); - ITContent newContent4CellCondition = cellInfo.getContent().copy(); - ITContent newContent4CellWidgetCondition = cellInfo.getContent().copy(); + ITContent newContent4Cell = ITContent.copy(cellInfo.getContent()); + ITContent newContent4CellCondition = ITContent.copy(cellInfo.getContent()); + ITContent newContent4CellWidgetCondition = ITContent.copy(cellInfo.getContent()); //单元格的超级链接里面的JS SearchJSUtils.addJSInfosFromHyperLink(cell, jsInfos, newContent4Cell); @@ -60,26 +61,26 @@ public class SearchCellJSAction implements SearchAction { //单元格如果是图表还需要额外处理 if (cell.getValue() instanceof ChartCollection) { - ArrayList> htmlLabels = SearchJSUtils.getHtmlLabel((ChartCollection) cell.getValue()); - ArrayList nameJavaScripts = SearchJSUtils.getNameJavaScript((ChartCollection) cell.getValue()); - //图表-样式-标签以及图表-特效-条件显示 - ITContent htmlITContent = cellInfo.getContent().copy(); - htmlITContent.getContentObject().setCell(cell); - htmlITContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Chart")); - SearchJSUtils.addJSInfosFromHtmlLabel(htmlITContent, htmlLabels, jsInfos); - //图表-特效-交互属性 - ITContent conditionContent = cellInfo.getContent().copy(); - conditionContent.getContentObject().setCell(cell); - conditionContent.addOtherPos( - Toolkit.i18nText("Fine-Design_Chart_Interactive"), - Toolkit.i18nText("Fine-Design_Report_Hyperlink") - ); - SearchJSUtils.addJSInfosFromNameJS(conditionContent, nameJavaScripts, jsInfos); + SearchChartJSAction.getInstance().searchChartJS((ChartCollection) cell.getValue(),ITContent.copy(cellInfo.getContent()),jsInfos); + //List> htmlLabels = SearchJSUtils.getHtmlLabel((ChartCollection) cell.getValue()); + //List nameJavaScripts = SearchJSUtils.getNameJavaScript((ChartCollection) cell.getValue()); + ////图表-样式-标签以及图表-特效-条件显示 + //ITContent htmlITContent = ITContent.copy(cellInfo.getContent()); + //htmlITContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Chart")); + //SearchJSUtils.addJSInfosFromHtmlLabel(htmlITContent, htmlLabels, jsInfos); + ////图表-特效-交互属性 + //ITContent conditionContent = ITContent.copy(cellInfo.getContent()); + //conditionContent.addOtherPos( + // Toolkit.i18nText("Fine-Design_Chart_Chart"), + // Toolkit.i18nText("Fine-Design_Chart_Animation_Special"), + // Toolkit.i18nText("Fine-Design_Chart_Interactive") + //); + //SearchJSUtils.addJSInfosFromNameJS(conditionContent, nameJavaScripts, jsInfos); } } } - private void searchCellConditionJS(CellElement cell, ArrayList jsInfos, ITContent content) { + private void searchCellConditionJS(CellElement cell, List jsInfos, ITContent content) { if (((TemplateCellElement) cell).getHighlightGroup() != null) { for (int i = 0; i < ((TemplateCellElement) cell).getHighlightGroup().size(); i++) { NameJavaScriptGroup njsg = getJSFromAction(((DefaultHighlight) ((TemplateCellElement) cell).getHighlightGroup().getHighlight(i))); @@ -89,13 +90,11 @@ public class SearchCellJSAction implements SearchAction { } } - private void getAllJSFromNameJavaScriptGroup(CellElement cell, ArrayList jsInfos, NameJavaScriptGroup njsg, ITContent content) { + private void getAllJSFromNameJavaScriptGroup(CellElement cell, List jsInfos, NameJavaScriptGroup njsg, ITContent content) { if (isJSExist(njsg)) { for (int i = 0; i < njsg.size(); i++) { if (njsg.getNameHyperlink(i).getJavaScript() instanceof JavaScriptImpl) { - ITContent newContent = content.copy(); - newContent.getContentObject().setCell(cell); - newContent.getContentObject().setNameJavaScript(njsg.getNameHyperlink(i)); + ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(njsg.getNameHyperlink(i)); SearchJSUtils.addJSInfos(jsInfos, new JSInfo(newContent)); } @@ -120,4 +119,38 @@ public class SearchCellJSAction implements SearchAction { private boolean isHighlightAction(HighlightAction highlightAction) { return highlightAction instanceof HyperlinkHighlightAction; } + + + /** + * 开放对外的方法,用于获取SearchCellJSAction的单例 + * + * @return SearchCellJSAction的单例 + */ + public static SearchCellJSAction getInstance() { + return SearchCellJSActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + enum SearchCellJSActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchCellJSAction instance; + + SearchCellJSActionEnum() { + instance = new SearchCellJSAction(); + } + + /** + * 获取单例对象 + * + * @return + */ + public SearchCellJSAction getInstance() { + return instance; + } + } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java new file mode 100644 index 0000000000..7b1fc1e4ba --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java @@ -0,0 +1,123 @@ +package com.fr.design.actions.replace.action.content.js; + +import com.fr.chart.chartattr.Axis; +import com.fr.chart.chartattr.Chart; +import com.fr.chart.chartattr.ChartCollection; +import com.fr.design.actions.replace.info.JSInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.actions.replace.utils.SearchJSUtils; +import com.fr.design.i18n.Toolkit; +import com.fr.js.NameJavaScript; +import com.fr.plugin.chart.attr.axis.VanChartAlertValue; +import com.fr.plugin.chart.attr.axis.VanChartAxis; +import com.fr.plugin.chart.base.VanChartHtmlLabel; +import com.fr.stable.collections.combination.Pair; + +import java.util.List; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-15 + */ +public class SearchChartJSAction { + + /** + * 寻找图表中的JS + * + * @param chartCollection + * @param content + * @param jsInfos + */ + public void searchChartJS(ChartCollection chartCollection, ITContent content, List jsInfos) { + List> htmlLabels = SearchJSUtils.getHtmlLabel(chartCollection); + List nameJavaScripts = SearchJSUtils.getNameJavaScript(chartCollection); + //图表-样式-标签以及图表-特效-条件显示 + ITContent htmlITContent = ITContent.copy(content); + htmlITContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Chart")); + SearchJSUtils.addJSInfosFromHtmlLabel(htmlITContent, htmlLabels, jsInfos); + //图表-特效-交互属性 + ITContent conditionContent = ITContent.copy(content); + conditionContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Chart_Chart"), + Toolkit.i18nText("Fine-Design_Chart_Animation_Special"), + Toolkit.i18nText("Fine-Design_Chart_Interactive") + ); + SearchJSUtils.addJSInfosFromNameJS(conditionContent, nameJavaScripts, jsInfos); + + for (int i = 0; i < chartCollection.getChartCount(); i++) { + ITContent chartContent = ITContent.copy(content); + searchAxisJS(jsInfos, chartContent, chartCollection.getChart(i)); + } + + } + + private void searchAxisJS(List jsInfos, ITContent chartContent, Chart chart) { + Axis xAxis = chart.getPlot().getxAxis(); + Axis yAxis = chart.getPlot().getyAxis(); + if (xAxis instanceof VanChartAxis) { + ITContent xAxisContent = ITContent.copy(chartContent); + xAxisContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Chart_Axis"), + Toolkit.i18nText("Fine-Design_Chart_X_Axis"), + Toolkit.i18nText("Fine-Design_Chart_Axis_Label_Format") + ); + dealAxisHtmlLabelJS(jsInfos, ((VanChartAxis) xAxis).getHtmlLabel(), xAxisContent); + } + + if (yAxis instanceof VanChartAxis) { + ITContent yAxisContent = ITContent.copy(chartContent); + yAxisContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Chart_Axis"), + Toolkit.i18nText("Fine-Design_Chart_Y_Axis"), + Toolkit.i18nText("Fine-Design_Chart_Axis_Label_Format") + ); + dealAxisHtmlLabelJS(jsInfos, ((VanChartAxis) yAxis).getHtmlLabel(), yAxisContent); + } + } + + private void dealAxisHtmlLabelJS(List jsInfos, VanChartHtmlLabel label, ITContent content) { + if (isHtmlLabelValid(label)) { + ITContent axisContent = ITContent.copy(content); + axisContent.setReplaceObject(label); + jsInfos.add(new JSInfo(axisContent)); + } + } + + private boolean isHtmlLabelValid(VanChartHtmlLabel label) { + return label != null && label.getCustomText() != null; + } + + /** + * 对外开放的获取单例的方法 + * + * @return + */ + public static SearchChartJSAction getInstance() { + return SearchChartJSAction.SearchChartJSActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + enum SearchChartJSActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchChartJSAction instance; + + SearchChartJSActionEnum() { + instance = new SearchChartJSAction(); + } + + /** + * 获取单例对象 + * + * @return + */ + public SearchChartJSAction getInstance() { + return instance; + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchFloatJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchFloatJSAction.java index 7f29a12ea6..7340f3b242 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchFloatJSAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchFloatJSAction.java @@ -11,55 +11,92 @@ import com.fr.design.actions.replace.utils.SearchJSUtils; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.JTemplate; import com.fr.js.NameJavaScript; -import com.fr.main.impl.WorkBook; + import com.fr.plugin.chart.base.VanChartHtmlLabel; import com.fr.report.cell.FloatElement; -import com.fr.report.elementcase.ElementCase; -import com.fr.report.poly.PolyECBlock; -import com.fr.report.report.Report; -import javafx.util.Pair; +import com.fr.stable.collections.combination.Pair; + import java.util.*; /** + * 搜索悬浮元素JS + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-15 */ -public class SearchFloatJSAction implements SearchAction { +public class SearchFloatJSAction implements SearchJS { - public SearchFloatJSAction(JTemplate jTemplate, ArrayList jsInfos) { - jsInfos.addAll(search4Infos(jTemplate)); + private SearchFloatJSAction() { } + @Override - public ArrayList search4Infos(JTemplate jTemplate) { - ArrayList jsInfos = new ArrayList<>(); - addJSInfos2ListFromFloat(jTemplate, jsInfos); - return jsInfos; + public void searchJSFromObject(JTemplate jTemplate, List jsInfos) { + List floatJSInfos = new ArrayList<>(); + addJSInfos2ListFromFloat(jTemplate, floatJSInfos); + jsInfos.addAll(floatJSInfos); } - private void addJSInfos2ListFromFloat(JTemplate jTemplate, ArrayList jsInfos) { - SearchFloatAction searchFloatAction = new SearchFloatAction(jTemplate); + + private void addJSInfos2ListFromFloat(JTemplate jTemplate, List jsInfos) { + SearchFloatAction searchFloatAction = SearchFloatAction.getInstance(); + searchFloatAction.search4Infos(jTemplate); for (FloatInfo floatInfo : searchFloatAction.getFloatInfos()) { FloatElement floatElement = (FloatElement) floatInfo.getContent().getReplaceObject(); - ITContent content = floatInfo.getContent().copy(); + ITContent content = ITContent.copy(floatInfo.getContent()); //从超级链接搜索 SearchJSUtils.addJSInfosFromHyperLink(floatElement, jsInfos, content); if (floatElement.getValue() instanceof ChartCollection) { - ArrayList> htmlLabels = SearchJSUtils.getHtmlLabel((ChartCollection) floatElement.getValue()); - ArrayList nameJavaScripts = SearchJSUtils.getNameJavaScript((ChartCollection) floatElement.getValue()); - //图表-样式-标签以及图表-特效-条件显示 - SearchJSUtils.addJSInfosFromHtmlLabel(content, htmlLabels, jsInfos); - //图表-特效-交互属性 - ITContent newContent = content.copy(); - newContent.addOtherPos( - Toolkit.i18nText("Fine-Design_Chart_Animation_Special"), - Toolkit.i18nText("Fine-Design_Chart_Interactive") - ); - SearchJSUtils.addJSInfosFromNameJS(newContent, nameJavaScripts, jsInfos); + SearchChartJSAction.getInstance().searchChartJS((ChartCollection) floatElement.getValue(),ITContent.copy(floatInfo.getContent()),jsInfos); + //List> htmlLabels = SearchJSUtils.getHtmlLabel((ChartCollection) floatElement.getValue()); + //List nameJavaScripts = SearchJSUtils.getNameJavaScript((ChartCollection) floatElement.getValue()); + ////图表-样式-标签以及图表-特效-条件显示 + //SearchJSUtils.addJSInfosFromHtmlLabel(content, htmlLabels, jsInfos); + ////图表-特效-交互属性 + //ITContent newContent = ITContent.copy(content); + //newContent.addOtherPos( + // Toolkit.i18nText("Fine-Design_Chart_Chart"), + // Toolkit.i18nText("Fine-Design_Chart_Animation_Special"), + // Toolkit.i18nText("Fine-Design_Chart_Interactive") + //); + //SearchJSUtils.addJSInfosFromNameJS(newContent, nameJavaScripts, jsInfos); } } } + + /** + * 对外开放的获取对象的方法 + * + * @return + */ + public static SearchFloatJSAction getInstance() { + return SearchFloatJSActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + enum SearchFloatJSActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchFloatJSAction instance; + + SearchFloatJSActionEnum() { + instance = new SearchFloatJSAction(); + } + + /** + * 获取单例对象 + * + * @return + */ + public SearchFloatJSAction getInstance() { + return instance; + } + } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchJS.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchJS.java new file mode 100644 index 0000000000..d543a4c2ea --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchJS.java @@ -0,0 +1,26 @@ +package com.fr.design.actions.replace.action.content.js; + +import com.fr.design.actions.replace.action.SearchAction; +import com.fr.design.actions.replace.info.JSInfo; +import com.fr.design.mainframe.JTemplate; + +import java.util.List; + +/** + * 搜索JS + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-15 + */ +public interface SearchJS extends SearchAction { + + /** + * 获取各个地方的JS + * + * @param jTemplate + * @param jsInfos + */ + default void searchJSFromObject(JTemplate jTemplate, List jsInfos) { + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchJSAction.java deleted file mode 100644 index a62543d369..0000000000 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchJSAction.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.fr.design.actions.replace.action.content.js; - -import com.fr.design.actions.replace.action.SearchAction; -import com.fr.design.actions.replace.info.JSInfo; - -import com.fr.design.mainframe.JTemplate; - -import java.util.ArrayList; - - -/** - * @author Destiny.Lin - * @version 11.0 - * created by Destiny.Lin on 2022-08-12 - */ -public class SearchJSAction implements SearchAction { - private ArrayList jsInfos; - - public SearchJSAction(JTemplate jTemplate) { - setJsInfos(search4Infos(jTemplate)); - } - - @Override - public ArrayList search4Infos(JTemplate jTemplate) { - ArrayList jsInfos = new ArrayList<>(); - //从单元格获取JS - new SearchCellJSAction(jTemplate, jsInfos); - //从参数面板控件 - new SearchWidgetJSAction(jTemplate, jsInfos); - //从模板Web属性 - new SearchWebJSAction(jTemplate, jsInfos); - //从悬浮元素 - new SearchFloatJSAction(jTemplate, jsInfos); - return jsInfos; - } - - public ArrayList getJsInfos() { - return jsInfos; - } - - public void setJsInfos(ArrayList jsInfos) { - this.jsInfos = jsInfos; - } - - -} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchJSManager.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchJSManager.java new file mode 100644 index 0000000000..2a233a5236 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchJSManager.java @@ -0,0 +1,105 @@ +package com.fr.design.actions.replace.action.content.js; + +import com.fr.design.actions.replace.action.SearchAction; +import com.fr.design.actions.replace.action.content.formula.SearchFormula; +import com.fr.design.actions.replace.info.JSInfo; + +import com.fr.design.actions.replace.utils.ShowValueUtils; +import com.fr.design.mainframe.JTemplate; +import com.fr.form.ui.Widget; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + + +/** + * 管理搜索JS的注册销毁的管理类 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-08-12 + */ +public class SearchJSManager implements SearchAction { + private List jsInfos; + private Set searchJSSet = new HashSet<>(); + + private SearchJSManager() { + //从控件 + registerJS(SearchWidgetJSAction.getInstance()); + //从单元格获取JS + registerJS(SearchCellJSAction.getInstance()); + //从模板Web属性 + registerJS(SearchWebJSAction.getInstance()); + //从悬浮元素 + registerJS(SearchFloatJSAction.getInstance()); + } + + @Override + public void search4Infos(JTemplate jTemplate) { + List jsInfos = new ArrayList<>(); + for (SearchJS searchJS : searchJSSet) { + searchJS.searchJSFromObject(jTemplate, jsInfos); + } + setJsInfos(jsInfos); + } + + public List getJsInfos() { + return jsInfos; + } + + public void setJsInfos(List jsInfos) { + this.jsInfos = jsInfos; + } + + /** + * 注册对象 + * + * @param searchJS + */ + public void registerJS(SearchJS searchJS) { + searchJSSet.add(searchJS); + } + + /** + * 销毁对象 + */ + public void removeJS(SearchJS searchJS) { + searchJSSet.remove(searchJS); + } + + /** + * 对外开放的获取对象的方法 + * + * @return + */ + public static SearchJSManager getInstance() { + return SearchJSActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + enum SearchJSActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchJSManager instance; + + SearchJSActionEnum() { + instance = new SearchJSManager(); + } + + /** + * 获取单例对象 + * + * @return + */ + public SearchJSManager getInstance() { + return instance; + } + } + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java index 6c84d71af5..4805a82b55 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java @@ -20,17 +20,22 @@ import com.fr.web.attr.ReportWebAttr; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; /** + * 搜索模板Web属性里的JS + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-15 */ -public class SearchWebJSAction implements SearchAction { +public class SearchWebJSAction implements SearchJS { private final static HashMap map = new HashMap<>(); - private ArrayList arrayList = new ArrayList<>(); + private List arrayList = new ArrayList<>(); + private SearchWebJSAction() { + } static { map.put("WebPage", Toolkit.i18nText("Fine-Design_Report_Pagination_Setting")); @@ -38,18 +43,17 @@ public class SearchWebJSAction implements SearchAction { map.put("WebView", Toolkit.i18nText("Fine-Design_Report_Data_Analysis_Settings")); } - public SearchWebJSAction(JTemplate jTemplate, ArrayList jsInfos) { - jsInfos.addAll(search4Infos(jTemplate)); - } @Override - public ArrayList search4Infos(JTemplate jTemplate) { - ArrayList jsInfos = new ArrayList<>(); - addJSInfos2ListFromWeb(jTemplate, jsInfos); - return jsInfos; + public void searchJSFromObject(JTemplate jTemplate, List jsInfos) { + arrayList.clear(); + List webJSInfos = new ArrayList<>(); + addJSInfos2ListFromWeb(jTemplate, webJSInfos); + jsInfos.addAll(webJSInfos); } - private void addJSInfos2ListFromWeb(JTemplate jTemplate, ArrayList jsInfos) { + + private void addJSInfos2ListFromWeb(JTemplate jTemplate, List jsInfos) { if (jTemplate.getTarget() instanceof WorkBook) { WorkBook workBook = (WorkBook) jTemplate.getTarget(); ReportWebAttr webAttr = workBook.getReportWebAttr(); @@ -62,8 +66,8 @@ public class SearchWebJSAction implements SearchAction { } } - private void addJSInfos2ListFromArray(ITContent content, ArrayList jsInfos, WebContent webContent) { - ITContent newContent = content.copy(); + private void addJSInfos2ListFromArray(ITContent content, List jsInfos, WebContent webContent) { + ITContent newContent = ITContent.copy(content); if (map.containsKey(webContent.getClass().getSimpleName())) { newContent.addOtherPos(map.get(webContent.getClass().getSimpleName())); } @@ -71,16 +75,16 @@ public class SearchWebJSAction implements SearchAction { addJSInfos2ListFromWebListener(newContent, jsInfos, webContent); } - private void addJSInfos2ListFromWebListener(ITContent content, ArrayList jsInfos, WebContent webContent) { + private void addJSInfos2ListFromWebListener(ITContent content, List jsInfos, WebContent webContent) { for (int i = 0; i < webContent.getListenerSize(); i++) { Listener listener = webContent.getListener(i); - ITContent newContent = content.copy(); + ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(listener); SearchJSUtils.searchJSFromListener(jsInfos, newContent); } } - private void addJSInfos2ListFromWebButton(ITContent content, ArrayList jsInfos, WebContent webContent) { + private void addJSInfos2ListFromWebButton(ITContent content, List jsInfos, WebContent webContent) { if (hasToolBarManagers(webContent.getToolBarManagers())) { for (ToolBarManager toolBarManager : webContent.getToolBarManagers()) { dealWithCustonToolBarButtonImpl(content, jsInfos, toolBarManager); @@ -97,31 +101,29 @@ public class SearchWebJSAction implements SearchAction { } - private void addContent(ArrayList arrayList, WebContent webContent) { + private void addContent(List arrayList, WebContent webContent) { if (webContent != null) { arrayList.add(webContent); } } - private void dealWithCustonToolBarButtonImpl(ITContent content, ArrayList jsInfos, ToolBarManager toolBarManager) { + private void dealWithCustonToolBarButtonImpl(ITContent content, List jsInfos, ToolBarManager toolBarManager) { for (int i = 0; i < toolBarManager.getToolBar().getWidgetSize(); i++) { if (isWidgetIntanceofCustomToolBarButton(toolBarManager.getToolBar().getWidget(i))) { - ITContent newContent = content.copy(); - newContent.getContentObject().setWidget(toolBarManager.getToolBar().getWidget(i)); - addJSInfos2ListFromButtonImpl(newContent, jsInfos); + ITContent newContent = ITContent.copy(content); + addJSInfos2ListFromButtonImpl(newContent, jsInfos, toolBarManager.getToolBar().getWidget(i)); } } } - private void addJSInfos2ListFromButtonImpl(ITContent content, ArrayList jsInfos) { + private void addJSInfos2ListFromButtonImpl(ITContent content, List jsInfos, Widget widget) { - if (((CustomToolBarButton) content.getContentObject().getWidget()).getJSImpl() != null - && ((CustomToolBarButton) content.getContentObject().getWidget()).getJSImpl() instanceof JavaScriptImpl) { - ITContent newContent = content.copy(); + if (((CustomToolBarButton) widget).getJSImpl() != null + && ((CustomToolBarButton) widget).getJSImpl() instanceof JavaScriptImpl) { + ITContent newContent = ITContent.copy(content); newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Report_Custom_Form_Button")); - newContent.getContentObject().setJs(((CustomToolBarButton) content.getContentObject().getWidget()).getJSImpl()); - newContent.setReplaceObject(((CustomToolBarButton) content.getContentObject().getWidget()).getJSImpl()); + newContent.setReplaceObject(((CustomToolBarButton) widget).getJSImpl()); SearchJSUtils.addJSInfos(jsInfos, new JSInfo(newContent)); } @@ -134,4 +136,37 @@ public class SearchWebJSAction implements SearchAction { private boolean isWidgetIntanceofCustomToolBarButton(Widget widget) { return widget instanceof CustomToolBarButton; } + + /** + * 对外开放的获取单例的方法 + * + * @return + */ + public static SearchWebJSAction getInstance() { + return SearchWebJSActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + enum SearchWebJSActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchWebJSAction instance; + + SearchWebJSActionEnum() { + instance = new SearchWebJSAction(); + } + + /** + * 获取单例对象 + * + * @return + */ + public SearchWebJSAction getInstance() { + return instance; + } + } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWidgetJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWidgetJSAction.java index 2881af5c0f..e2379a8de0 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWidgetJSAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWidgetJSAction.java @@ -1,7 +1,5 @@ package com.fr.design.actions.replace.action.content.js; -import com.fr.base.parameter.ParameterUI; -import com.fr.design.actions.replace.action.SearchAction; import com.fr.design.actions.replace.action.content.component.SearchComponentAction; import com.fr.design.actions.replace.action.content.widget.SearchWidgetAction; import com.fr.design.actions.replace.info.ComponentInfo; @@ -13,45 +11,79 @@ import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.actions.replace.utils.SearchJSUtils; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.JTemplate; -import com.fr.form.ui.Widget; import com.fr.main.impl.WorkBook; -import com.fr.main.parameter.ReportParameterAttr; import java.util.ArrayList; +import java.util.List; /** + * 搜索控件的JS + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-13 */ -public class SearchWidgetJSAction implements SearchAction { - public SearchWidgetJSAction(JTemplate jTemplate,ArrayList jsInfos){ - jsInfos.addAll(search4Infos(jTemplate)); - } +public class SearchWidgetJSAction implements SearchJS { + @Override - public ArrayList search4Infos(JTemplate jTemplate) { - ArrayList jsInfos = new ArrayList<>(); - addJSInfos2ListFromWidget(jTemplate,jsInfos); - return jsInfos; + public void searchJSFromObject(JTemplate jTemplate, List jsInfos) { + List widgetJSInfos = new ArrayList<>(); + addJSInfos2ListFromWidget(jTemplate, widgetJSInfos); + jsInfos.addAll(widgetJSInfos); } - private void addJSInfos2ListFromWidget(JTemplate jTemplate, ArrayList jsInfos) { - if (jTemplate.getTarget() instanceof WorkBook){ - SearchWidgetAction searchWidgetAction = new SearchWidgetAction(jTemplate); - for (WidgetInfo widgetInfo : searchWidgetAction.getWidgetInfos()){ - ITContent content = widgetInfo.getContent().copy(); + private void addJSInfos2ListFromWidget(JTemplate jTemplate, List jsInfos) { + if (jTemplate.getTarget() instanceof WorkBook) { + SearchWidgetAction searchWidgetAction = SearchWidgetAction.getInstance(); + searchWidgetAction.search4Infos(jTemplate); + for (WidgetInfo widgetInfo : searchWidgetAction.getWidgetInfos()) { + ITContent content = ITContent.copy(widgetInfo.getContent()); content.addOtherPos(Toolkit.i18nText("Fine-Design_Report_Event")); - SearchJSUtils.selectJSAction(jsInfos,content); + SearchJSUtils.selectJSAction(jsInfos, content); } } else { - SearchComponentAction searchComponentAction = new SearchComponentAction(jTemplate); - for (ComponentInfo componentInfo : searchComponentAction.getComponentInfos()){ - ITContent content = componentInfo.getContent().copy(); + SearchComponentAction searchComponentAction = SearchComponentAction.getInstance(); + searchComponentAction.search4Infos(jTemplate); + for (ComponentInfo componentInfo : searchComponentAction.getComponentInfos()) { + ITContent content = ITContent.copy(componentInfo.getContent()); content.addOtherPos(Toolkit.i18nText("Fine-Design_Report_Event")); - SearchJSUtils.selectJSAction(jsInfos,content); + SearchJSUtils.selectJSAction(jsInfos, content); } } } + /** + * 对外开放获取对象的方法 + * + * @return + */ + public static SearchWidgetJSAction getInstance() { + return SearchWidgetJSActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + enum SearchWidgetJSActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchWidgetJSAction instance; + + SearchWidgetJSActionEnum() { + instance = new SearchWidgetJSAction(); + } + + /** + * 获取单例的方法 + * + * @return + */ + public SearchWidgetJSAction getInstance() { + return instance; + } + } + } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/sql/SearchSQLAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/sql/SearchSQLAction.java index ca30e60d5a..005ae6f3cb 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/sql/SearchSQLAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/sql/SearchSQLAction.java @@ -3,6 +3,7 @@ package com.fr.design.actions.replace.action.content.sql; import com.fr.data.TableDataSource; import com.fr.data.impl.DBTableData; import com.fr.design.actions.replace.action.SearchAction; +import com.fr.design.actions.replace.action.content.floatelement.SearchFloatAction; import com.fr.design.actions.replace.info.SQLInfo; import com.fr.design.actions.replace.info.base.ITContent; @@ -10,54 +11,54 @@ import com.fr.design.data.tabledata.wrapper.TableDataFactory; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.JTemplate; import com.fr.file.TableDataConfig; -import com.fr.form.main.Form; -import com.fr.main.impl.WorkBook; import com.fr.stable.AssistUtils; import java.util.ArrayList; import java.util.Iterator; +import java.util.List; /** + * 搜索SQL + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-16 */ public class SearchSQLAction implements SearchAction { - private ArrayList sqlInfos; + private List sqlInfos; - public SearchSQLAction(JTemplate jTemplate) { - setSqlInfos(search4Infos(jTemplate)); + private SearchSQLAction() { } @Override - public ArrayList search4Infos(JTemplate jTemplate) { - ArrayList sqlInfos = new ArrayList<>(); + public void search4Infos(JTemplate jTemplate) { + List sqlInfos = new ArrayList<>(); ITContent content = new ITContent(); content.setTemplateName(jTemplate.getTemplateName()); addModelDataInfos2Array(jTemplate, content, sqlInfos); addServerDataInfos2Array(content, sqlInfos); - return sqlInfos; + setSqlInfos(sqlInfos); } /** * 服务器数据集 + * * @param content * @param sqlInfos */ - private void addServerDataInfos2Array(ITContent content, ArrayList sqlInfos) { + private void addServerDataInfos2Array(ITContent content, List sqlInfos) { TableDataConfig tableDataConfig = TableDataConfig.getInstance(); String[] nameArray = TableDataFactory.getSortOfChineseNameOfServerData(tableDataConfig); for (String dataName : nameArray) { if (tableDataConfig.getTableData(dataName) instanceof DBTableData) { - ITContent newContent = content.copy(); + ITContent newContent = ITContent.copy(content); newContent.addOtherPos( Toolkit.i18nText("Fine-Design_Basic_DS_Server_TableData"), dataName ); newContent.setShowObject(Toolkit.i18nText("Fine-Design_Basic_DS_Server_TableData")); newContent.setReplaceObject(tableDataConfig.getTableData(dataName)); - newContent.getContentObject().setDbTableData((DBTableData) tableDataConfig.getTableData(dataName)); sqlInfos.add(new SQLInfo(newContent)); } @@ -66,25 +67,25 @@ public class SearchSQLAction implements SearchAction { /** * 模板数据集 + * * @param jTemplate * @param content * @param sqlInfos */ - private void addModelDataInfos2Array(JTemplate jTemplate, ITContent content, ArrayList sqlInfos) { + private void addModelDataInfos2Array(JTemplate jTemplate, ITContent content, List sqlInfos) { if (jTemplate.getTarget() instanceof TableDataSource) { TableDataSource source = (TableDataSource) jTemplate.getTarget(); Iterator dataIterator = source.getTableDataNameIterator(); while (dataIterator.hasNext()) { String dataName = (String) dataIterator.next(); if (source.getTableData(dataName) instanceof DBTableData) { - ITContent newContent = content.copy(); + ITContent newContent = ITContent.copy(content); newContent.addOtherPos( Toolkit.i18nText("Fine-Design_Basic_DS_Report_TableData"), dataName ); newContent.setShowObject(Toolkit.i18nText("Fine-Design_Basic_DS_Report_TableData")); newContent.setReplaceObject(source.getTableData(dataName)); - newContent.getContentObject().setDbTableData(((DBTableData) source.getTableData(dataName))); sqlInfos.add(new SQLInfo(newContent)); } } @@ -92,11 +93,11 @@ public class SearchSQLAction implements SearchAction { } - public ArrayList getSqlInfos() { + public List getSqlInfos() { return sqlInfos; } - public void setSqlInfos(ArrayList sqlInfos) { + public void setSqlInfos(List sqlInfos) { this.sqlInfos = sqlInfos; } @@ -104,4 +105,38 @@ public class SearchSQLAction implements SearchAction { public String toString() { return AssistUtils.toString(this); } + + + /** + * 对外开放的获取单例对象方法 + * + * @return + */ + public static SearchSQLAction getInstance() { + return SearchSQLAction.SearchSQLActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + enum SearchSQLActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchSQLAction instance; + + SearchSQLActionEnum() { + instance = new SearchSQLAction(); + } + + /** + * 获取对象 + * + * @return + */ + public SearchSQLAction getInstance() { + return instance; + } + } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/FrmWidgetType.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/FrmWidgetType.java index e86c5e3e1c..98d2282f5d 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/FrmWidgetType.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/FrmWidgetType.java @@ -10,13 +10,17 @@ import com.fr.form.ui.WaterMark; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WScaleLayout; import com.fr.form.ui.widget.CRBoundsWidget; -import javafx.util.Pair; +import com.fr.stable.collections.combination.Pair; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; +import java.util.Map; /** + * 决策报表控件种类 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-29 @@ -27,7 +31,7 @@ public enum FrmWidgetType implements SearchFrmWidget, DealWithInfoValue { */ W_SCALE_LAYOUT("WScaleLayout") { @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { WScaleLayout widget = (WScaleLayout) info.getContent().getReplaceObject(); if (((WidgetInfo) info).isWaterMark()) { FrmWidgetType frmWidgetType = FrmWidgetType.match(((CRBoundsWidget) widget.getWidget(0)).getWidget().getClass().getSimpleName()); @@ -123,9 +127,9 @@ public enum FrmWidgetType implements SearchFrmWidget, DealWithInfoValue { * @param widget * @return */ - public ArrayList dealAbsoluteWidget(ITContent content, Widget widget) { + public List dealAbsoluteWidget(ITContent content, Widget widget) { ArrayList widgetInfos = new ArrayList<>(); - ITContent newContent = content.copy(); + ITContent newContent = ITContent.copy(content); widgetInfos.add(new WidgetInfo(newContent)); return widgetInfos; } @@ -150,12 +154,12 @@ public enum FrmWidgetType implements SearchFrmWidget, DealWithInfoValue { @Override - public HashMap getValue(Object... o) { + public Map getValue(Object... o) { return new HashMap<>(); } @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { Widget widget = (Widget) info.getContent().getReplaceObject(); if (widget instanceof WScaleLayout) { widget = ((CRBoundsWidget) ((WScaleLayout) widget).getWidget(0)).getWidget(); @@ -179,7 +183,7 @@ public enum FrmWidgetType implements SearchFrmWidget, DealWithInfoValue { } @Override - public ArrayList addFrmWidget2Array(ITContent content, Widget widget) { + public List addFrmWidget2Array(ITContent content, Widget widget) { return dealAbsoluteWidget(content, widget); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchFrmWidget.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchFrmWidget.java index 95aa3c11c0..936d8ce6c8 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchFrmWidget.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchFrmWidget.java @@ -3,11 +3,12 @@ package com.fr.design.actions.replace.action.content.widget; import com.fr.design.actions.replace.info.WidgetInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.form.ui.Widget; -import com.fr.form.ui.container.WLayout; -import java.util.ArrayList; +import java.util.List; /** + * 获取决策报表控件相关 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-29 @@ -16,9 +17,10 @@ public interface SearchFrmWidget { /** * 将决策报表的控件加入数组中 + * * @param content ITContent信息 * @param widget 对应的控件 * @return */ - ArrayList addFrmWidget2Array(ITContent content, Widget widget); + List addFrmWidget2Array(ITContent content, Widget widget); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchWidgetAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchWidgetAction.java index 28ae1cef3a..f2e6d4b930 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchWidgetAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchWidgetAction.java @@ -9,11 +9,10 @@ import com.fr.design.actions.replace.info.ComponentInfo; import com.fr.design.actions.replace.info.WidgetInfo; import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.JTemplate; import com.fr.form.main.Form; import com.fr.form.ui.Widget; -import com.fr.form.ui.container.WLayout; -import com.fr.form.ui.widget.CRBoundsWidget; import com.fr.main.impl.WorkBook; import com.fr.main.parameter.ReportParameterAttr; import com.fr.report.cell.TemplateCellElement; @@ -24,6 +23,7 @@ import com.fr.report.cell.cellattr.highlight.WidgetHighlightAction; import com.fr.stable.StringUtils; import java.util.ArrayList; +import java.util.List; /** * 获取控件 @@ -34,14 +34,11 @@ import java.util.ArrayList; * created by Destiny.Lin on 2022-08-16 */ public class SearchWidgetAction implements SearchAction { - ArrayList widgetInfos; + List widgetInfos; - public SearchWidgetAction(JTemplate jTemplate) { - setWidgetInfos(search4Infos(jTemplate)); - } @Override - public ArrayList search4Infos(JTemplate jTemplate) { + public void search4Infos(JTemplate jTemplate) { ArrayList widgetInfos = new ArrayList<>(); ITContent content = new ITContent(); content.setTemplateName(jTemplate.getTemplateName()); @@ -53,12 +50,12 @@ public class SearchWidgetAction implements SearchAction { } else if (jTemplate.getTarget() instanceof Form) { addFrmWidget2Array(content, widgetInfos, jTemplate); } - - return widgetInfos; + setWidgetInfos(widgetInfos); } private void addFrmWidget2Array(ITContent content, ArrayList widgetInfos, JTemplate jTemplate) { - SearchComponentAction searchComponentAction = new SearchComponentAction(jTemplate); + SearchComponentAction searchComponentAction = SearchComponentAction.getInstance(); + searchComponentAction.search4Infos(jTemplate); for (ComponentInfo componentInfo : searchComponentAction.getComponentInfos()) { FrmWidgetType frmWidgetType = FrmWidgetType.match(componentInfo.getContent().getReplaceObject().getClass().getSimpleName()); if (frmWidgetType != null) { @@ -69,7 +66,8 @@ public class SearchWidgetAction implements SearchAction { } private void addCellWidget2Array(ArrayList widgetInfos, JTemplate jTemplate) { - SearchCellAction searchCellAction = new SearchCellAction(jTemplate); + SearchCellAction searchCellAction = SearchCellAction.getInstance(); + searchCellAction.search4Infos(jTemplate); if (searchCellAction.getCellInfos().size() > 0) { for (CellInfo cellInfo : searchCellAction.getCellInfos()) { //单元格本身的控件 @@ -97,7 +95,7 @@ public class SearchWidgetAction implements SearchAction { HighlightAction highlightAction = ((DefaultHighlight) highlightGroup.getHighlight(i)).getHighlightAction(j); //处理HighlightAction if (isHighlightWidgetExist(highlightAction)) { - ITContent content = cellInfo.getContent().copy(); + ITContent content = ITContent.copy(cellInfo.getContent()); content.addOtherPos("条件属性-超链控件"); content.setReplaceObject(((WidgetHighlightAction) highlightAction).getWidget()); content.setShowObject(cellInfo.getContent().getReplaceObject()); @@ -115,14 +113,13 @@ public class SearchWidgetAction implements SearchAction { if (cellInfo.getContent().getReplaceObject() instanceof TemplateCellElement && ((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getWidget() != null) { // 单元格内有控件 - ITContent newContent = cellInfo.getContent().copy(); + ITContent newContent = ITContent.copy(cellInfo.getContent()); Widget widget = ((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getWidget(); newContent.addOtherPos("控件"); if (!StringUtils.isEmpty(widget.getWidgetName())) { newContent.addOtherPos(widget.getWidgetName()); } - newContent.getContentObject().setWidget(widget); newContent.setReplaceObject(widget); newContent.setShowObject(cellInfo.getContent().getReplaceObject()); widgetInfos.add(new WidgetInfo(newContent)); @@ -137,11 +134,13 @@ public class SearchWidgetAction implements SearchAction { ParameterUI parameterUI = reportParameterAttr.getParameterUI(); Widget[] widgets = parameterUI.getAllWidgets(); for (Widget widget : widgets) { - ITContent newContent = content.copy(); - newContent.addOtherPos("参数面板控件-" + widget.getWidgetName()); + ITContent newContent = ITContent.copy(content); + newContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Parameter_Panel"), + Toolkit.i18nText("Fine-Design_Basic_Widget"), + widget.getWidgetName()); newContent.setReplaceObject(widget); - newContent.getContentObject().setWidget(widget); - newContent.setShowObject("参数面板控件"); + newContent.setShowObject(Toolkit.i18nText("Fine-Design_Parameter_Panel")); widgetInfos.add(new WidgetInfo(newContent)); } } @@ -150,17 +149,51 @@ public class SearchWidgetAction implements SearchAction { /** * 是否为空 + * * @return 为空返回true */ public boolean isWidgetInfosEmpty() { return widgetInfos.isEmpty(); } - public ArrayList getWidgetInfos() { + public List getWidgetInfos() { return widgetInfos; } - public void setWidgetInfos(ArrayList widgetInfos) { + public void setWidgetInfos(List widgetInfos) { this.widgetInfos = widgetInfos; } + + /** + * 对外开放获取对象的方法 + * + * @return + */ + public static SearchWidgetAction getInstance() { + return SearchWidgetAction.SearchWidgetActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + enum SearchWidgetActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchWidgetAction instance; + + SearchWidgetActionEnum() { + instance = new SearchWidgetAction(); + } + + /** + * 获取对象 + * + * @return + */ + public SearchWidgetAction getInstance() { + return instance; + } + } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/CellInfo.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/CellInfo.java index aff0a56fd3..94a8f73ce5 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/CellInfo.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/CellInfo.java @@ -3,20 +3,12 @@ package com.fr.design.actions.replace.info; import com.fr.base.Formula; import com.fr.chart.chartattr.ChartCollection; import com.fr.chart.chartattr.Title; -import com.fr.design.actions.replace.action.ShowValue; -import com.fr.design.actions.replace.action.content.widget.FrmWidgetType; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.actions.replace.utils.ShowValueUtils; -import com.fr.design.write.submit.DBManipulationPane; -import com.fr.form.ui.Widget; import com.fr.general.GeneralUtils; -import com.fr.general.ImageWithSuffix; -import com.fr.general.data.TableDataColumn; -import com.fr.invoke.Reflect; import com.fr.main.impl.LinkWorkBookTemplate; import com.fr.report.cell.CellElement; -import com.fr.report.cell.FloatElement; import com.fr.report.cell.cellattr.core.RichChar; import com.fr.report.cell.cellattr.core.RichText; import com.fr.report.cell.cellattr.core.SubReport; @@ -24,14 +16,16 @@ import com.fr.report.cell.cellattr.core.group.DSColumn; import com.fr.report.cell.painter.BiasTextPainter; import com.fr.stable.AssistUtils; import com.fr.stable.StringUtils; -import javafx.util.Pair; +import com.fr.stable.collections.combination.Pair; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; +import java.util.List; +import java.util.Map; /** + * 存储单元格信息的Info * 返回:查找内容(匹配词高亮)、模板名称、所在sheet、分布组件、单元格位置、操作 * * @author Destiny.Lin @@ -56,6 +50,11 @@ public class CellInfo implements Info { this.content = content; } + /** + * toString + * + * @return + */ @Override public String toString() { return AssistUtils.toString(this); @@ -69,7 +68,7 @@ public class CellInfo implements Info { * @return */ @Override - public HashMap getValue(Object... o) { + public Map getValue(Object... o) { HashMap stringHashMap = new HashMap<>(); CellElement cellElement = (((CellElement) (this.getContent().getReplaceObject()))); if (cellElement.getValue() != null && !this.isChartExist()) { @@ -92,7 +91,7 @@ public class CellInfo implements Info { * @param operatorArray 存储内容类替换所要操作的所有位置(Pair<起始位置,结束位置>) */ @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { CellElement cellElement = (((CellElement) (this.getContent().getReplaceObject()))); if (this.isChartExist() && this.getCellChartIndex() != -1) { ChartCollection chartCollection = (ChartCollection) ((CellElement) this.getContent().getReplaceObject()).getValue(); @@ -125,6 +124,11 @@ public class CellInfo implements Info { this.cellChartIndex = cellChartIndex; } + /** + * 是否是图表 + * + * @return + */ public boolean isChartExist() { return chartExist; } @@ -139,7 +143,7 @@ public class CellInfo implements Info { * @return */ public CellInfo copy() { - ITContent content = this.getContent().copy(); + ITContent content = ITContent.copy(this.getContent()); CellInfo cellInfo = new CellInfo(content); cellInfo.setCellChartIndex(this.getCellChartIndex()); cellInfo.setChartExist(this.isChartExist()); @@ -157,6 +161,11 @@ public class CellInfo implements Info { return this.getContent().getOldShowStr(); } + /** + * 校验值有没有被修改 + * + * @return + */ @Override public Boolean checkValid() { CellElement cellElement = (((CellElement) (this.getContent().getReplaceObject()))); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/ComponentInfo.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ComponentInfo.java index 3bcaf53237..cb84837f48 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/ComponentInfo.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ComponentInfo.java @@ -4,12 +4,16 @@ import com.fr.design.actions.replace.action.content.component.ComponentType; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.form.ui.Widget; import com.fr.stable.StringUtils; -import javafx.util.Pair; +import com.fr.stable.collections.combination.Pair; + -import java.util.ArrayList; import java.util.HashMap; +import java.util.List; +import java.util.Map; /** + * 存储组件的Info + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-29 @@ -26,7 +30,7 @@ public class ComponentInfo implements Info { } @Override - public HashMap getValue(Object... o) { + public Map getValue(Object... o) { HashMap hashMap = new HashMap<>(); if (this.content.getReplaceObject() != null && this.content.getReplaceObject() instanceof Widget) { hashMap.put("content", ((Widget) this.content.getReplaceObject()).getWidgetName()); @@ -49,7 +53,7 @@ public class ComponentInfo implements Info { * @param operatorArray 存储内容类替换所要操作的所有位置(Pair<起始位置,结束位置>) */ @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { ComponentType componentType = ComponentType.match(this.content.getReplaceObject().getClass().getSimpleName()); if (componentType != null) { componentType.setValue(info, findStr, replaceStr, operatorArray); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/DealWithInfoValue.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/DealWithInfoValue.java index ecde8d1852..14a3ff4d1b 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/DealWithInfoValue.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/DealWithInfoValue.java @@ -1,10 +1,13 @@ package com.fr.design.actions.replace.info; import com.fr.design.actions.replace.info.base.ITContent; -import javafx.util.Pair; +import com.fr.stable.collections.combination.Pair; + import java.util.ArrayList; import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * 处理信息 @@ -19,9 +22,9 @@ public interface DealWithInfoValue { * 获取存储的值 * * @param o 用于替换的replaceObject - * @return 返回便于处理的HashMap(不同类型可能会存在多个需要存储的数据,eg:控件名 & 水印) + * @return 返回便于处理的Map(不同类型可能会存在多个需要存储的数据,eg:控件名 & 水印) */ - HashMap getValue(Object... o); + Map getValue(Object... o); /** @@ -32,7 +35,7 @@ public interface DealWithInfoValue { * @param replaceStr 用于替换的字符串 * @param operatorArray 存储内容类替换所要操作的所有位置(Pair<起始位置,结束位置>) */ - void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray); + void setValue(Info info, String findStr, String replaceStr, List> operatorArray); /** diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/FloatInfo.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/FloatInfo.java index 8010fea814..ec8cb28ddc 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/FloatInfo.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/FloatInfo.java @@ -9,13 +9,16 @@ import com.fr.design.actions.replace.utils.ShowValueUtils; import com.fr.general.GeneralUtils; import com.fr.report.cell.FloatElement; import com.fr.stable.AssistUtils; -import com.fr.stable.StringUtils; -import javafx.util.Pair; +import com.fr.stable.collections.combination.Pair; + -import java.util.ArrayList; import java.util.HashMap; +import java.util.List; +import java.util.Map; /** + * 存储悬浮元素的Info + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-15 @@ -38,6 +41,11 @@ public class FloatInfo implements Info { this.content = content; } + /** + * toString + * + * @return + */ @Override public String toString() { return AssistUtils.toString(this); @@ -51,6 +59,11 @@ public class FloatInfo implements Info { this.floatChartIndex = charIndex; } + /** + * 是否是图表 + * + * @return + */ public boolean isChartExist() { return chartExist; } @@ -60,7 +73,7 @@ public class FloatInfo implements Info { } @Override - public HashMap getValue(Object... o) { + public Map getValue(Object... o) { HashMap hashMap = new HashMap<>(); FloatElement floatElement = (((FloatElement) (this.getContent().getReplaceObject()))); if (!this.isChartExist()) { @@ -70,7 +83,7 @@ public class FloatInfo implements Info { } @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { if (this.isChartExist() && this.getFloatChartIndex() != -1) { ChartCollection chartCollection = (ChartCollection) ((FloatElement) this.getContent().getReplaceObject()).getValue(); Title title = chartCollection.getChart(this.getFloatChartIndex()).getTitle(); @@ -102,10 +115,11 @@ public class FloatInfo implements Info { /** * 复制 + * * @return */ public FloatInfo copy() { - ITContent content = this.getContent().copy(); + ITContent content = ITContent.copy(this.getContent()); FloatInfo floatInfo = new FloatInfo(content); floatInfo.setFloatChartIndex(this.getFloatChartIndex()); floatInfo.setChartExist(this.isChartExist()); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/FormulaInfo.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/FormulaInfo.java index f456896551..41779d8cc6 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/FormulaInfo.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/FormulaInfo.java @@ -4,23 +4,28 @@ package com.fr.design.actions.replace.info; import com.fr.data.impl.FormulaDictionary; import com.fr.design.actions.replace.action.content.formula.FormulaReplaceObject; import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; import com.fr.stable.StringUtils; -import javafx.util.Pair; +import com.fr.stable.collections.combination.Pair; -import java.util.ArrayList; import java.util.HashMap; +import java.util.List; +import java.util.Map; /** + * 存储公式类型的Info + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-17 */ -public class FormulaInfo implements Info{ - private ITContent content; +public class FormulaInfo implements Info { + private ITContent content; public FormulaInfo(ITContent content) { this.content = content; } + @Override public ITContent getContent() { return content; @@ -31,41 +36,43 @@ public class FormulaInfo implements Info{ } @Override - public HashMap getValue(Object... o){ - HashMap map = new HashMap<>(); + public Map getValue(Object... o) { + Map map = new HashMap<>(); //这边比较特殊,存的都是FormulaDictionary ,特殊判断一下 - if (this.content.getOtherPos().contains("数据字典-公式类型-显示值")){ - map.put("content",((FormulaDictionary)this.getContent().getReplaceObject()).getExcuteFormula()); - } else if (this.content.getOtherPos().contains("数据字典-公式类型-实际值")){ - map.put("content",((FormulaDictionary)this.getContent().getReplaceObject()).getProduceFormula()); + if (this.content.getOtherPos().contains(Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary") + "-" + Toolkit.i18nText("Fine-Design_Chart_Formula") + "-" + Toolkit.i18nText("Fine-Design_Basic_Display_Value"))) { + map.put("content", ((FormulaDictionary) this.getContent().getReplaceObject()).getExcuteFormula()); + } else if (this.content.getOtherPos().contains(Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary") + "-" + Toolkit.i18nText("Fine-Design_Chart_Formula") + "-" + Toolkit.i18nText("Fine-Design_Basic_Actual_Value"))) { + map.put("content", ((FormulaDictionary) this.getContent().getReplaceObject()).getProduceFormula()); } else { map = getCommonValue(); } return map; } + @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { FormulaReplaceObject formulaReplaceObject = FormulaReplaceObject.match(this.content.getReplaceObject().getClass().getSimpleName()); - if (formulaReplaceObject != null){ - formulaReplaceObject.setValue(this , findStr , replaceStr, operatorArray); + if (formulaReplaceObject != null) { + formulaReplaceObject.setValue(this, findStr, replaceStr, operatorArray); } } @Override public String getInfoShowStr(Info info) { FormulaReplaceObject formulaReplaceObject = FormulaReplaceObject.match(this.content.getReplaceObject().getClass().getSimpleName()); - if (formulaReplaceObject != null){ - return formulaReplaceObject.getInfoShowStr(info); + if (formulaReplaceObject != null) { + return formulaReplaceObject.getInfoShowStr(info); } return StringUtils.EMPTY; } - private HashMap getCommonValue(){ + private Map getCommonValue() { + Map map = new HashMap(); FormulaReplaceObject o = FormulaReplaceObject.match(this.content.getReplaceObject().getClass().getSimpleName()); - if(o != null){ + if (o != null) { return o.getValue(this.content.getReplaceObject()); } - return new HashMap<>(); + return map; } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/Info.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/Info.java index 9b318a2170..3f5a30d860 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/Info.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/Info.java @@ -1,18 +1,20 @@ package com.fr.design.actions.replace.info; import com.fr.design.actions.replace.info.base.ITContent; -import com.fr.stable.StringUtils; /** + * 主要的数据结构 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-17 */ -public interface Info extends DealWithInfoValue{ +public interface Info extends DealWithInfoValue { /** * 获取ITContent + * * @return */ ITContent getContent(); @@ -20,20 +22,24 @@ public interface Info extends DealWithInfoValue{ /** * 更新旧值 + * * @param oldShowStr * @param lastSearchStr */ - default void updateOldStr(String oldShowStr, String lastSearchStr){ + default void updateOldStr(String oldShowStr, String lastSearchStr) { this.getContent().setOldShowStr(oldShowStr); this.getContent().setLastSearchStr(lastSearchStr); } /** * 校验正确性(是否被修改) + * * @return */ - default Boolean checkValid(){ + default Boolean checkValid() { //todo 完善所有类型的校验 return true; - }; + } + + ; } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/JSInfo.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/JSInfo.java index 23e6a9b3b8..b1123c4eb9 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/JSInfo.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/JSInfo.java @@ -4,14 +4,18 @@ package com.fr.design.actions.replace.info; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.stable.AssistUtils; -import com.fr.stable.StringUtils; -import javafx.util.Pair; +import com.fr.stable.collections.combination.Pair; + import java.util.ArrayList; import java.util.HashMap; +import java.util.List; +import java.util.Map; /** + * 存储JS信息的Info + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-11 @@ -34,7 +38,7 @@ public class JSInfo implements Info { } @Override - public HashMap getValue(Object... object) { + public Map getValue(Object... object) { ReplaceObject o = ReplaceObject.match(this.content.getReplaceObject().getClass().getSimpleName()); if (o != null) { return o.getValue(this.content.getReplaceObject()); @@ -43,7 +47,7 @@ public class JSInfo implements Info { } @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { ReplaceObject o = ReplaceObject.match(this.content.getReplaceObject().getClass().getSimpleName()); if (o != null) { o.setValue(this, findStr, replaceStr, this.getContent().getOperatorArray()); @@ -57,18 +61,33 @@ public class JSInfo implements Info { } + /** + * toString + * + * @return + */ @Override public String toString() { return AssistUtils.toString(this); } + /** + * 复制 + * + * @return + */ public JSInfo copy() { - ITContent content = this.getContent().copy(); + ITContent content = ITContent.copy(this.getContent()); JSInfo jsInfo = new JSInfo(content); jsInfo.setContentFlag(this.isContent()); return jsInfo; } + /** + * 是否属于存储内容 + * + * @return + */ public boolean isContent() { return contentFlag; } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java index 9918abec47..ea82c19295 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java @@ -1,18 +1,18 @@ package com.fr.design.actions.replace.info; import com.fr.data.impl.DBTableData; -import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.actions.replace.utils.ShowValueUtils; import com.fr.form.event.Listener; import com.fr.js.JavaScriptImpl; import com.fr.js.NameJavaScript; import com.fr.plugin.chart.base.VanChartHtmlLabel; import com.fr.stable.StringUtils; -import javafx.util.Pair; +import com.fr.stable.collections.combination.Pair; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * 处理所存储的不同类型的对象(除了Formula外的其他对象) @@ -29,19 +29,15 @@ public enum ReplaceObject implements DealWithInfoValue { */ NAME_JAVA_SCRIPT("NameJavaScript") { @Override - public HashMap getValue(Object... o) { + public Map getValue(Object... o) { HashMap map = new HashMap<>(); - if (!StringUtils.isEmpty(((NameJavaScript) o[0]).getName())) { - map.put("name", ((NameJavaScript) o[0]).getName()); - } - if (!StringUtils.isEmpty(((JavaScriptImpl) (((NameJavaScript) o[0]).getJavaScript())).getContent())) { - map.put("content", ((JavaScriptImpl) (((NameJavaScript) o[0]).getJavaScript())).getContent()); - } + addValue2Map(nameKey, ((NameJavaScript) o[0]).getName(), map); + addValue2Map(contentKey, ((JavaScriptImpl) (((NameJavaScript) o[0]).getJavaScript())).getContent(), map); return map; } @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { if (((JSInfo) info).isContent()) { JavaScriptImpl javaScript = (JavaScriptImpl) ((NameJavaScript) (info.getContent().getReplaceObject())).getJavaScript(); info.updateOldStr(javaScript.getContent(), findStr); @@ -69,19 +65,15 @@ public enum ReplaceObject implements DealWithInfoValue { */ LISTENER("Listener") { @Override - public HashMap getValue(Object... o) { + public Map getValue(Object... o) { HashMap map = new HashMap<>(); - if (!StringUtils.isEmpty(((Listener) o[0]).getName())) { - map.put("name", ((Listener) o[0]).getName()); - } - if (!StringUtils.isEmpty(((JavaScriptImpl) (((Listener) o[0]).getAction())).getContent())) { - map.put("content", ((JavaScriptImpl) (((Listener) o[0]).getAction())).getContent()); - } + addValue2Map(nameKey, ((Listener) o[0]).getName(), map); + addValue2Map(contentKey, ((JavaScriptImpl) (((Listener) o[0]).getAction())).getContent(), map); return map; } @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { if (((JSInfo) info).isContent()) { if (operatorArray.size() > 0) { JavaScriptImpl javaScript = (JavaScriptImpl) ((Listener) (info.getContent().getReplaceObject())).getAction(); @@ -111,16 +103,14 @@ public enum ReplaceObject implements DealWithInfoValue { */ VAN_CHART_HTML_LABEL("VanChartHtmlLabel") { @Override - public HashMap getValue(Object... o) { + public Map getValue(Object... o) { HashMap map = new HashMap<>(); - if (!StringUtils.isEmpty(((VanChartHtmlLabel) o[0]).getCustomText())) { - map.put("content", ((VanChartHtmlLabel) o[0]).getCustomText()); - } + addValue2Map(contentKey, ((VanChartHtmlLabel) o[0]).getCustomText(), map); return map; } @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { if (((JSInfo) info).isContent()) { if (operatorArray.size() > 0) { VanChartHtmlLabel htmlLabel = ((VanChartHtmlLabel) (info.getContent().getReplaceObject())); @@ -142,16 +132,14 @@ public enum ReplaceObject implements DealWithInfoValue { */ JAVA_SCRIPT_IMPL("JavaScriptImpl") { @Override - public HashMap getValue(Object... o) { + public Map getValue(Object... o) { HashMap map = new HashMap<>(); - if (!StringUtils.isEmpty(((JavaScriptImpl) o[0]).getContent())) { - map.put("content", ((JavaScriptImpl) o[0]).getContent()); - } + addValue2Map(contentKey, ((JavaScriptImpl) o[0]).getContent(), map); return map; } @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { JavaScriptImpl javaScript = (JavaScriptImpl) (info.getContent().getReplaceObject()); info.updateOldStr(javaScript.getContent(), findStr); javaScript.setContent(ShowValueUtils.replaceAll(javaScript.getContent(), findStr, replaceStr)); @@ -168,16 +156,14 @@ public enum ReplaceObject implements DealWithInfoValue { */ DB_TABLE_DATA("DBTableData") { @Override - public HashMap getValue(Object... o) { + public Map getValue(Object... o) { HashMap map = new HashMap<>(); - if (!StringUtils.isEmpty(((DBTableData) o[0]).getQuery())) { - map.put("content", ((DBTableData) o[0]).getQuery()); - } + addValue2Map(contentKey, ((DBTableData) o[0]).getQuery(), map); return map; } @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { DBTableData dbTableData = (DBTableData) info.getContent().getReplaceObject(); info.updateOldStr(dbTableData.getQuery(), findStr); dbTableData.setQuery(ShowValueUtils.replaceAll(dbTableData.getQuery(), findStr, replaceStr)); @@ -191,6 +177,8 @@ public enum ReplaceObject implements DealWithInfoValue { String name; + String nameKey = "name"; + String contentKey = "content"; ReplaceObject(String name) { this.name = name; @@ -213,5 +201,18 @@ public enum ReplaceObject implements DealWithInfoValue { return null; } + /** + * 将键值放入Map中 + * + * @param flag + * @param content + * @param map + */ + public void addValue2Map(String flag, String content, Map map) { + if (StringUtils.isNotEmpty(content)) { + map.put(flag, content); + } + } + } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/SQLInfo.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/SQLInfo.java index cf40e52ca1..f8700f0ea0 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/SQLInfo.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/SQLInfo.java @@ -3,12 +3,15 @@ package com.fr.design.actions.replace.info; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.stable.AssistUtils; -import javafx.util.Pair; +import com.fr.stable.collections.combination.Pair; -import java.util.ArrayList; import java.util.HashMap; +import java.util.List; +import java.util.Map; /** + * 存储SQL信息的Info + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-16 @@ -30,7 +33,7 @@ public class SQLInfo implements Info { } @Override - public HashMap getValue(Object... objects) { + public Map getValue(Object... objects) { ReplaceObject o = ReplaceObject.match(this.content.getReplaceObject().getClass().getSimpleName()); if (o != null) { return o.getValue(this.content.getReplaceObject()); @@ -39,7 +42,7 @@ public class SQLInfo implements Info { } public SQLInfo copy() { - ITContent content = this.getContent().copy(); + ITContent content = ITContent.copy(this.getContent()); return new SQLInfo(content); } @@ -50,7 +53,7 @@ public class SQLInfo implements Info { @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { ReplaceObject o = ReplaceObject.match(this.content.getReplaceObject().getClass().getSimpleName()); if (o != null) { o.setValue(this, findStr, replaceStr, operatorArray); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/WidgetInfo.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/WidgetInfo.java index 3c313cc467..8f44967a9c 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/WidgetInfo.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/WidgetInfo.java @@ -9,12 +9,16 @@ import com.fr.form.ui.Widget; import com.fr.form.ui.container.WScaleLayout; import com.fr.form.ui.widget.CRBoundsWidget; import com.fr.stable.AssistUtils; -import javafx.util.Pair; +import com.fr.stable.collections.combination.Pair; + -import java.util.ArrayList; import java.util.HashMap; +import java.util.List; +import java.util.Map; /** + * 存储控件信息的Info + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-16 @@ -37,7 +41,7 @@ public class WidgetInfo implements Info, DealWithInfoValue { } @Override - public HashMap getValue(Object... o) { + public Map getValue(Object... o) { HashMap map = new HashMap<>(); Widget widget = (Widget) this.content.getReplaceObject(); if (widget instanceof WScaleLayout) { @@ -53,7 +57,7 @@ public class WidgetInfo implements Info, DealWithInfoValue { } @Override - public void setValue(Info info, String findStr, String replaceStr, ArrayList> operatorArray) { + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { Widget widget = ((Widget) (this.content.getReplaceObject())); if (this.getContent().isFrm()) { FrmWidgetType widgetType = FrmWidgetType.match(widget.getClass().getSimpleName()); @@ -77,11 +81,22 @@ public class WidgetInfo implements Info, DealWithInfoValue { return this.getContent().getOldShowStr(); } + /** + * 复制 + * + * @param widgetInfo + * @return + */ public WidgetInfo copy(WidgetInfo widgetInfo) { - ITContent content = widgetInfo.getContent().copy(); + ITContent content = ITContent.copy(widgetInfo.getContent()); return new WidgetInfo(content); } + /** + * 是否存储水印 + * + * @return + */ public boolean isWaterMark() { return waterMarkFlag; } @@ -90,10 +105,20 @@ public class WidgetInfo implements Info, DealWithInfoValue { this.waterMarkFlag = waterMarkFlag; } + /** + * ReplaceObject是否存在 + * + * @return + */ public boolean isReplaceObjectExist() { return content != null && content.getReplaceObject() != null; } + /** + * toString + * + * @return + */ @Override public String toString() { return AssistUtils.toString(this); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ContentObject.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ContentObject.java deleted file mode 100644 index 74adc8e013..0000000000 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ContentObject.java +++ /dev/null @@ -1,232 +0,0 @@ -package com.fr.design.actions.replace.info.base; - -import com.fr.base.Formula; -import com.fr.chartx.constant.ChartKeyCst; -import com.fr.data.impl.DBTableData; -import com.fr.form.event.Listener; -import com.fr.form.ui.Widget; -import com.fr.general.data.Condition; -import com.fr.js.JavaScript; -import com.fr.js.NameJavaScript; -import com.fr.plugin.chart.base.VanChartHtmlLabel; -import com.fr.report.cell.CellElement; -import com.fr.report.cell.FloatElement; -import com.fr.report.core.sort.sortexpression.FormulaSortExpression; -import com.fr.report.core.sort.sortexpression.SortExpression; -import com.fr.stable.AssistUtils; -import com.teamdev.jxbrowser.deps.org.checkerframework.checker.units.qual.C; - -/** - * 存储用于定位内容的对象(便于定位) - * - * @author Destiny.Lin - * @version 11.0 - * created by Destiny.Lin on 2022-08-16 - */ -public class ContentObject { - //todo 可能没用,考虑废除掉 - private CellElement cell; - private JavaScript js; - private NameJavaScript nameJavaScript; - private VanChartHtmlLabel htmlLabel; - private Widget widget; - private Listener listener; - private FloatElement floatElement; - private Formula formula; - private Condition condition; - private FormulaSortExpression sortExpression; - private DBTableData dbTableData; - - public ContentObject() { - this.cell = null; - this.js = null; - this.nameJavaScript = null; - this.htmlLabel = null; - this.widget = null; - this.listener = null; - this.floatElement = null; - this.formula = null; - this.condition = null; - this.sortExpression = null; - this.dbTableData = null; - } - - public ContentObject newContentObject(ContentObject contentObject) { - ContentObject newContent = new ContentObject(); - newContent.copyCellElement(contentObject); - newContent.copyFloatElement(contentObject); - newContent.copyHtmlLabel(contentObject); - newContent.copyJavaScript(contentObject); - newContent.copyListener(contentObject); - newContent.copyNameJavaScript(contentObject); - newContent.copyWidget(contentObject); - newContent.copyFormula(contentObject); - newContent.copyCondition(contentObject); - newContent.copySortExpression(contentObject); - newContent.copyDBTableData(contentObject); - return newContent; - } - - public void copyCellElement(ContentObject contentObject) { - if (contentObject.getCell() != null) { - this.setCell(contentObject.getCell()); - } - } - - public void copyJavaScript(ContentObject contentObject) { - if (contentObject.getJs() != null) { - this.setJs(contentObject.getJs()); - } - } - - public void copyNameJavaScript(ContentObject contentObject) { - if (contentObject.getNameJavaScript() != null) { - this.setNameJavaScript(contentObject.getNameJavaScript()); - } - } - - public void copyHtmlLabel(ContentObject contentObject) { - if (contentObject.getHtmlLabel() != null) { - this.setHtmlLabel(contentObject.getHtmlLabel()); - } - } - - public void copyListener(ContentObject contentObject) { - if (contentObject.getListener() != null) { - this.setListener(contentObject.getListener()); - } - } - - public void copyFloatElement(ContentObject contentObject) { - if (contentObject.getFloatElement() != null) { - this.setFloatElement(contentObject.getFloatElement()); - } - } - - public void copyWidget(ContentObject contentObject) { - if (contentObject.getWidget() != null) { - this.setWidget(contentObject.getWidget()); - } - } - - public void copyFormula(ContentObject contentObject) { - if (contentObject.getFormula() != null) { - this.setFormula(contentObject.getFormula()); - } - } - - public void copyCondition(ContentObject contentObject) { - if (contentObject.getCondition() != null) { - this.setCondition(contentObject.getCondition()); - } - } - - public void copySortExpression(ContentObject contentObject) { - if (contentObject.getSortExpression() != null) { - this.setSortExpression(contentObject.getSortExpression()); - } - } - - public void copyDBTableData(ContentObject contentObject) { - if (contentObject.getDbTableData() != null) { - this.setDbTableData(contentObject.getDbTableData()); - } - } - - public DBTableData getDbTableData() { - return dbTableData; - } - - public void setDbTableData(DBTableData dbTableData) { - this.dbTableData = dbTableData; - } - - public FormulaSortExpression getSortExpression() { - return sortExpression; - } - - public void setSortExpression(FormulaSortExpression sortExpression) { - this.sortExpression = sortExpression; - } - - public Condition getCondition() { - return condition; - } - - public void setCondition(Condition condition) { - this.condition = condition; - } - - public Formula getFormula() { - return formula; - } - - public void setFormula(Formula formula) { - this.formula = formula; - } - - public CellElement getCell() { - return cell; - } - - public void setCell(CellElement cell) { - this.cell = cell; - } - - public JavaScript getJs() { - return js; - } - - public void setJs(JavaScript js) { - this.js = js; - } - - public NameJavaScript getNameJavaScript() { - return nameJavaScript; - } - - public void setNameJavaScript(NameJavaScript nameJavaScript) { - this.nameJavaScript = nameJavaScript; - } - - public VanChartHtmlLabel getHtmlLabel() { - return htmlLabel; - } - - public void setHtmlLabel(VanChartHtmlLabel htmlLabel) { - this.htmlLabel = htmlLabel; - } - - public Widget getWidget() { - return widget; - } - - public void setWidget(Widget widget) { - this.widget = widget; - } - - public Listener getListener() { - return listener; - } - - public void setListener(Listener listener) { - this.listener = listener; - } - - public FloatElement getFloatElement() { - return floatElement; - } - - public void setFloatElement(FloatElement floatElement) { - this.floatElement = floatElement; - } - - @Override - public String toString() { - return AssistUtils.toString(this); - } - - public boolean isNameJSExist() { - return this.nameJavaScript != null; - } -} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java index 79b7c91994..9a6a026671 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java @@ -1,12 +1,12 @@ package com.fr.design.actions.replace.info.base; -import com.fr.design.actions.replace.info.DealWithInfoValue; + import com.fr.stable.AssistUtils; import com.fr.stable.StringUtils; -import javafx.util.Pair; +import com.fr.stable.collections.combination.Pair; import java.util.ArrayList; -import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -21,27 +21,45 @@ public class ITContent implements Cloneable { private String sheetName; private String templateName; private String blockName; - //一些不好定位的位置先用字符串展示出来就好 + /** + * 一些不好定位的位置先用字符串展示出来就好 + */ private String otherPos; - //用于后续跳转相关的对象信息 - private ContentObject contentObject; - //用于操作替换相关的对象(通过此属性获取所需的对象) + /** + * 用于操作替换相关的对象(通过此属性获取所需的对象) + */ private Object replaceObject; - //用于展示给用户的位置 + /** + * 用于展示给用户的位置 + */ private Object showObject; - //用于展示内容 + /** + * 用于展示内容 + */ private String showStr; - //存储展示前的旧值 + /** + * 存储展示前的旧值 + */ private String oldShowStr; - //存储上一次搜索的string + /** + * 存储上一次搜索的string + */ private String lastSearchStr; - //由于我们TRL是一次性的,这边存字符串到时候new一个即可 + /** + * 由于我们TRL是一次性的,这边存字符串到时候new一个即可 + */ private String trlString; - //为操作字符串提供操作位置的定位信息,Pair中存储的是开始操作的索引以及结束操作的索引 - private ArrayList> operatorArray; - //是否是决策报表——用于判断一些决策报表的特殊操作(比如决策报表控件在设置值时要多设置几个地方,一层套一层) + /** + * 为操作字符串提供操作位置的定位信息,Pair中存储的是开始操作的索引以及结束操作的索引 + */ + private List> operatorArray; + /** + * 是否是决策报表——用于判断一些决策报表的特殊操作(比如决策报表控件在设置值时要多设置几个地方,一层套一层) + */ private boolean frmFlag = false; - //是否被选中 + /** + * 是否被选中 + */ private boolean selected = true; @@ -52,7 +70,6 @@ public class ITContent implements Cloneable { this.templateName = StringUtils.EMPTY; this.otherPos = StringUtils.EMPTY; this.replaceObject = StringUtils.EMPTY; - this.contentObject = new ContentObject(); this.showObject = StringUtils.EMPTY; this.showStr = StringUtils.EMPTY; this.oldShowStr = StringUtils.EMPTY; @@ -64,35 +81,27 @@ public class ITContent implements Cloneable { /** * 复制 + * * @return */ - public ITContent copy() { + public static ITContent copy(ITContent content) { ITContent result = new ITContent(); - result.setSheetID(this.getSheetID()); - result.setSheetName(this.getSheetName()); - result.setTemplateName(this.getTemplateName()); - result.setBlockName(this.getBlockName()); - result.addOtherPos(this.getOtherPos()); - result.setReplaceObject(this.getReplaceObject()); - result.setContentObject(this.getContentObject().newContentObject(getContentObject())); - result.setShowObject(this.getShowObject()); - result.setTrlString(this.getTrlString()); - result.setShowStr(this.getShowStr()); - result.setOldShowStr(this.getOldShowStr()); - result.setLastSearchStr(this.getLastSearchStr()); - result.setOperatorArray(this.getOperatorArray()); - result.setFrmFlag(this.isFrm()); + result.setSheetID(content.getSheetID()); + result.setSheetName(content.getSheetName()); + result.setTemplateName(content.getTemplateName()); + result.setBlockName(content.getBlockName()); + result.addOtherPos(content.getOtherPos()); + result.setReplaceObject(content.getReplaceObject()); + result.setShowObject(content.getShowObject()); + result.setTrlString(content.getTrlString()); + result.setShowStr(content.getShowStr()); + result.setOldShowStr(content.getOldShowStr()); + result.setLastSearchStr(content.getLastSearchStr()); + result.setOperatorArray(content.getOperatorArray()); + result.setFrmFlag(content.isFrm()); return result; } - public ContentObject getContentObject() { - return contentObject; - } - - public void setContentObject(ContentObject contentObject) { - this.contentObject = contentObject; - } - public Object getReplaceObject() { return replaceObject; } @@ -163,6 +172,7 @@ public class ITContent implements Cloneable { /** * 添加位置信息 + * * @param otherPoses */ public void addOtherPos(String... otherPoses) { @@ -177,11 +187,12 @@ public class ITContent implements Cloneable { /** * 添加跳转路径 + * * @param trlString */ public void addTRL(String trlString) { if (!StringUtils.isEmpty(trlString)) { - if (this.trlString != null && !StringUtils.isEmpty(this.trlString)) { + if (StringUtils.isNotEmpty(this.trlString)) { this.trlString = this.trlString + ":" + trlString; } else { this.trlString = trlString; @@ -190,11 +201,11 @@ public class ITContent implements Cloneable { } - public ArrayList> getOperatorArray() { + public List> getOperatorArray() { return operatorArray; } - public void setOperatorArray(ArrayList> operatorArray) { + public void setOperatorArray(List> operatorArray) { this.operatorArray = operatorArray; } @@ -202,14 +213,29 @@ public class ITContent implements Cloneable { this.otherPos = otherPos; } + /** + * 是否选中 + * + * @return + */ public boolean isSelected() { return selected; } + /** + * 设置选中 + * + * @param selected + */ public void setSelected(boolean selected) { this.selected = selected; } + /** + * 是否是决策报表 + * + * @return + */ public boolean isFrm() { return frmFlag; } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITComboBoxEditor.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITComboBoxEditor.java index 93a6f28945..cb0d343e82 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITComboBoxEditor.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITComboBoxEditor.java @@ -6,13 +6,15 @@ import com.fr.stable.Constants; import com.fr.stable.StringUtils; import javax.swing.plaf.basic.BasicComboBoxEditor; -import java.awt.*; +import java.awt.Component; +import java.awt.Insets; import java.awt.event.ActionListener; import java.lang.reflect.Method; /** * 渲染带有默认值的ComboBox * UIComboBox中设置默认值会整体上移,需要自己重新实现一个 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-09-02 @@ -25,7 +27,7 @@ public class ITComboBoxEditor extends BasicComboBoxEditor { * 构造时重新设置一下TextField的上边距 */ public ITComboBoxEditor() { - textField = new UITextField(){ + textField = new UITextField() { @Override public Insets getInsets() { return new Insets(4, 4, 0, 4); @@ -41,6 +43,7 @@ public class ITComboBoxEditor extends BasicComboBoxEditor { /** * 设置选项 + * * @param anObject 选项 */ @Override @@ -57,8 +60,8 @@ public class ITComboBoxEditor extends BasicComboBoxEditor { /** * 获取选项 - * @return 选项 * + * @return 选项 */ @Override public Object getItem() { @@ -66,7 +69,7 @@ public class ITComboBoxEditor extends BasicComboBoxEditor { if (oldValue != null && !(oldValue instanceof String)) { // The original value is not a string. Should return the value in it's // original type. - if(ComparatorUtils.equals(newValue,oldValue.toString())) { + if (ComparatorUtils.equals(newValue, oldValue.toString())) { return oldValue; } else { // Must take the value from the textField and get the value and cast it to the new type. @@ -74,7 +77,7 @@ public class ITComboBoxEditor extends BasicComboBoxEditor { try { Method method = cls.getMethod("valueOf", new Class[]{String.class}); newValue = method.invoke(oldValue, new Object[]{textField.getText()}); - } catch (Exception ex) { + } catch (Exception ignored) { // Fail silently and return the newValue (a String object) } } @@ -94,6 +97,7 @@ public class ITComboBoxEditor extends BasicComboBoxEditor { /** * 添加监听 + * * @param l 监听 */ @Override @@ -103,6 +107,7 @@ public class ITComboBoxEditor extends BasicComboBoxEditor { /** * 移除监听 + * * @param l 监听 */ @Override diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java index d5fccede4f..188d5f101d 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java @@ -3,13 +3,11 @@ package com.fr.design.actions.replace.ui; import com.fr.design.actions.replace.action.ShowSearchResultAction; -import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.action.content.formula.SearchFormulaManager; import com.fr.design.actions.replace.info.Info; -import com.fr.design.actions.replace.info.JSInfo; -import com.fr.design.actions.replace.info.WidgetInfo; + import com.fr.design.actions.replace.utils.ShowValueUtils; -import com.fr.design.data.DesignTableDataManager; -import com.fr.design.data.datapane.TableDataPaneListPane; + import com.fr.design.dialog.FineJOptionPane; import com.fr.design.dialog.UIDialog; import com.fr.design.file.HistoryTemplateListCache; @@ -17,16 +15,22 @@ import com.fr.design.gui.itextfield.UITextField; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.JTemplate; -import com.fr.file.TableDataConfig; + import com.fr.general.GeneralUtils; -import com.fr.main.impl.WorkBook; + import com.fr.stable.StringUtils; -import javax.swing.*; -import java.awt.*; -import java.awt.event.*; + +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.Point; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.util.ArrayList; -import java.util.HashMap; + +import java.util.List; /** * 主面板 @@ -36,14 +40,15 @@ import java.util.HashMap; * created by Destiny.Lin on 2022-08-10 */ public class ITReplaceMainDialog extends UIDialog { - ArrayList searchResultList = new ArrayList<>(); + List searchResultList = new ArrayList<>(); private static boolean ITReplaceFlag = false; private static volatile ITReplaceMainDialog instance = null; private static String templateID; - private static int selectCount; private ITReplaceNorthPanel northPane; private ITReplaceSouthPanel southPanel; private ITReplaceWestPanel westPanel; + private boolean searchFlag; + private String searchStr; private ITReplaceMainDialog() { super(DesignerContext.getDesignerFrame()); @@ -129,13 +134,29 @@ public class ITReplaceMainDialog extends UIDialog { } } }); - ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).addActionListener(new ActionListener() { + + northPane.getSearchButton().addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - replace(); + search(); + String searchStr = ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).getText(); + if (!StringUtils.isEmpty(searchStr)) { + ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).setEditable(true); + northPane.getReplaceInputCombobox().setEditable(true); + } else { + ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).setEditable(false); + northPane.getReplaceInputCombobox().setEditable(false); + } } + }); - + northPane.getReplaceButton().addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (isSearchFlag()) { + replace(); + } + } }); center.add(northPane.getUpPanel(), BorderLayout.NORTH); center.add(southPanel.getTableEditorPane(), BorderLayout.CENTER); @@ -164,10 +185,10 @@ public class ITReplaceMainDialog extends UIDialog { northPane.refreshReplaceInputComboBoxItems(); ITTableEditorPane.getEditTable().repaint(); HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().fireTargetModified(true); - + setSearchFlag(false); } else { - Object[] options = new Object[]{Toolkit.i18nText("Fine-Design_Replace_Search_Again"), Toolkit.i18nText("Fine-Engine_Basic_Cancel")}; + Object[] options = new Object[]{Toolkit.i18nText("Fine-Design_Replace_Search_Again"), Toolkit.i18nText("Fine-Design_Basic_Cancel")}; int optionSelected = FineJOptionPane.showOptionDialog( ITReplaceMainDialog.this, Toolkit.i18nText("Fine-Design_Replace_Message"), @@ -175,7 +196,8 @@ public class ITReplaceMainDialog extends UIDialog { JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE, null, - options, // 如果传null, 则按钮为 optionType 类型所表示的按钮(也就是确认对话框) + // 如果传null, 则按钮为 optionType 类型所表示的按钮(也就是确认对话框) + options, options[0] ); //如果选择了重新查找,则再查找一遍 @@ -185,7 +207,7 @@ public class ITReplaceMainDialog extends UIDialog { } } - private Boolean checkTemplateChanged(ArrayList searchResultList) { + private Boolean checkTemplateChanged(List searchResultList) { for (Info info : searchResultList) { if (!info.checkValid()) { return false; @@ -207,10 +229,42 @@ public class ITReplaceMainDialog extends UIDialog { } + + /** + * 是否选择过 + * + * @return + */ + public boolean isSearchFlag() { + return searchFlag; + } + + public void setSearchFlag(boolean searchFlag) { + this.searchFlag = searchFlag; + } + + public String getSearchStr() { + return searchStr; + } + + public void setSearchStr(String searchStr) { + this.searchStr = searchStr; + } + + /** + * 设置标签 + * + * @param ITReplaceFlag + */ public static void setITReplaceFlag(boolean ITReplaceFlag) { ITReplaceMainDialog.ITReplaceFlag = ITReplaceFlag; } + /** + * 定位执行标签 + * + * @return + */ public static boolean isITReplaceFlag() { return ITReplaceFlag; } @@ -232,6 +286,7 @@ public class ITReplaceMainDialog extends UIDialog { } itTableEditor.fireTableDataChanged(); northPane.refreshFindInputComboBoxItems(); + setSearchFlag(true); } else { //todo } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java index 781b053f76..ed66571c69 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java @@ -2,8 +2,6 @@ package com.fr.design.actions.replace.ui; import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.gui.ibutton.UIButton; -import com.fr.design.gui.ibutton.UIRadioButton; -import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; @@ -40,17 +38,21 @@ public class ITReplaceNorthPanel { private UIButton replaceButton; private UIButton searchButton; - private static int FIND_LABEL_X, FIND_LABEL_Y, FIND_LABEL_WIDTH, FIND_LABEL_HEIGHT; - private static int FIND_COMBOBOX_X, FIND_COMBOBOX_Y, FIND_COMBOBOX_WIDTH, FIND_COMBOBOX_HEIGHT; - private static int RANGE_LABEL_X, RANGE_LABEL_Y, RANGE_LABEL_WIDTH, RANGE_LABEL_HEIGHT; - private static int RANGE_COMBOBOX_X, RANGE_COMBOBOX_Y, RANGE_COMBOBOX_WIDTH, RANGE_COMBOBOX_HEIGHT; - private static int MATCH_X, MATCH_Y, MATCH_WIDTH, MATCH_HEIGHT; - private static int RESULT_LABEL_X, RESULT_LABEL_Y, RESULT_LABEL_WIDTH, RESULT_LABEL_HEIGHT; - private static int FIND_INPUT_COMBOBOX_X, FIND_INPUT_COMBOBOX_Y, FIND_INPUT_COMBOBOX_WIDTH, FIND_INPUT_COMBOBOX_HEIGHT; - private static int REPLACE_INPUT_COMBOBOX_X, REPLACE_INPUT_COMBOBOX_Y, REPLACE_INPUT_COMBOBOX_WIDTH, REPLACE_INPUT_COMBOBOX_HEIGHT; - private static int REPLACE_BUTTON_X, REPLACE_BUTTON_Y, REPLACE_BUTTON_WIDTH, REPLACE_BUTTON_HEIGHT; - private static int SEARCH_BUTTON_X, SEARCH_BUTTON_Y, SEARCH_BUTTON_WIDTH, SEARCH_BUTTON_HEIGHT; - private static int BUTTON_GAP; + //存储的5次最近输入 + private int maxItemCount = 5; + + + private int FIND_LABEL_X, FIND_LABEL_Y, FIND_LABEL_WIDTH, FIND_LABEL_HEIGHT; + private int FIND_COMBOBOX_X, FIND_COMBOBOX_Y, FIND_COMBOBOX_WIDTH, FIND_COMBOBOX_HEIGHT; + private int RANGE_LABEL_X, RANGE_LABEL_Y, RANGE_LABEL_WIDTH, RANGE_LABEL_HEIGHT; + private int RANGE_COMBOBOX_X, RANGE_COMBOBOX_Y, RANGE_COMBOBOX_WIDTH, RANGE_COMBOBOX_HEIGHT; + private int MATCH_X, MATCH_Y, MATCH_WIDTH, MATCH_HEIGHT; + private int RESULT_LABEL_X, RESULT_LABEL_Y, RESULT_LABEL_WIDTH, RESULT_LABEL_HEIGHT; + private int FIND_INPUT_COMBOBOX_X, FIND_INPUT_COMBOBOX_Y, FIND_INPUT_COMBOBOX_WIDTH, FIND_INPUT_COMBOBOX_HEIGHT; + private int REPLACE_INPUT_COMBOBOX_X, REPLACE_INPUT_COMBOBOX_Y, REPLACE_INPUT_COMBOBOX_WIDTH, REPLACE_INPUT_COMBOBOX_HEIGHT; + private int REPLACE_BUTTON_X, REPLACE_BUTTON_Y, REPLACE_BUTTON_WIDTH, REPLACE_BUTTON_HEIGHT; + private int SEARCH_BUTTON_X, SEARCH_BUTTON_Y, SEARCH_BUTTON_WIDTH, SEARCH_BUTTON_HEIGHT; + private int BUTTON_GAP; public static ArrayList findItems = new ArrayList<>(); public static ArrayList findInputItems = new ArrayList<>(); @@ -150,12 +152,12 @@ public class ITReplaceNorthPanel { */ public void refreshFindInputComboBoxItems() { String text = ((UITextField) (this.getFindInputCombobox().getEditor().getEditorComponent())).getText(); - if(!StringUtils.isEmpty(text)){ + if (!StringUtils.isEmpty(text)) { if (findInputItems.contains(text)) { Collections.swap(findInputItems, 0, findInputItems.indexOf(text)); } else { - if (findInputItems.size() >= 5) { - findInputItems.remove(4); + if (findInputItems.size() >= maxItemCount) { + findInputItems.remove(maxItemCount - 1); findInputItems.add(0, text); } else { findInputItems.add(0, text); @@ -169,20 +171,20 @@ public class ITReplaceNorthPanel { /** * 刷新替换框 */ - public void refreshReplaceInputComboBoxItems(){ + public void refreshReplaceInputComboBoxItems() { String text = ((UITextField) (this.getReplaceInputCombobox().getEditor().getEditorComponent())).getText(); - if(!StringUtils.isEmpty(text)){ + if (!StringUtils.isEmpty(text)) { if (replaceInputItems.contains(text)) { Collections.swap(replaceInputItems, 0, replaceInputItems.indexOf(text)); } else { - if (replaceInputItems.size() >= 5) { - replaceInputItems.remove(4); + if (replaceInputItems.size() >= maxItemCount) { + replaceInputItems.remove(maxItemCount - 1); replaceInputItems.add(0, text); } else { replaceInputItems.add(0, text); } } - this.getFindInputCombobox().refreshBoxItems(ITReplaceNorthPanel.replaceInputItems); + this.getReplaceInputCombobox().refreshBoxItems(ITReplaceNorthPanel.replaceInputItems); ((UITextField) (this.getReplaceInputCombobox().getEditor().getEditorComponent())).setText(text); } } @@ -348,5 +350,19 @@ public class ITReplaceNorthPanel { this.replaceInputCombobox = replaceInputCombobox; } + public UIButton getReplaceButton() { + return replaceButton; + } + + public void setReplaceButton(UIButton replaceButton) { + this.replaceButton = replaceButton; + } + + public UIButton getSearchButton() { + return searchButton; + } + public void setSearchButton(UIButton searchButton) { + this.searchButton = searchButton; + } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceSouthPanel.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceSouthPanel.java index 0d31bfc351..7db6b52850 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceSouthPanel.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceSouthPanel.java @@ -3,7 +3,6 @@ package com.fr.design.actions.replace.ui; import javax.swing.RowSorter; import javax.swing.table.TableRowSorter; import java.awt.Color; -import java.awt.Dimension; /** * 下面板 diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceWestPanel.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceWestPanel.java index 8fc69f0439..e9ff2286c0 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceWestPanel.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceWestPanel.java @@ -30,7 +30,9 @@ public class ITReplaceWestPanel { leftJpanel.add(contentButton); leftJpanel.setBorder(BorderFactory.createMatteBorder(0, 0, 0, 1, new Color(218, 218, 221))); leftJpanel.add(settingButton); - for (int i = 0; i < 13; i++) { + //由于要砍掉设置项这部分,这边先暂时填充一下 + int labelNum = 13; + for (int i = 0; i < labelNum; i++) { leftJpanel.add(new UILabel("")); } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java index 45ebc651bc..248a7353ae 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java @@ -4,25 +4,17 @@ import com.fr.base.TRL; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.gui.ibutton.UIButton; -import com.fr.design.gui.icheckbox.UICheckBox; -import com.fr.design.gui.icombobox.UIComboBox; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.mainframe.JTemplate; +import com.fr.design.i18n.Toolkit; import com.fr.general.GeneralUtils; import com.fr.stable.StringUtils; -import org.omg.Messaging.SYNC_WITH_TRANSPORT; -import javax.swing.*; +import javax.swing.AbstractCellEditor; +import javax.swing.JTable; import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; -import java.awt.*; +import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.util.ArrayList; import static com.fr.design.actions.replace.ui.ITTableEditorPane.getEditTable; @@ -38,7 +30,7 @@ public class ITTableButton extends AbstractCellEditor implements TableCellEditor private UIButton paraButton; public ITTableButton() { - paraButton = new UIButton("定位 "); + paraButton = new UIButton("" + Toolkit.i18nText("Fine-Design_Chart_Location") + " "); paraButton.setVisible(true); paraButton.setBorderPainted(false); paraButton.addActionListener(new ActionListener() { diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditor.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditor.java index babbc81ce4..8097ad9174 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditor.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditor.java @@ -1,21 +1,22 @@ package com.fr.design.actions.replace.ui; import com.fr.design.actions.replace.info.Info; -import com.fr.design.actions.replace.info.ReplaceObject; import com.fr.design.actions.replace.info.base.ITContent; -import com.fr.design.gui.icheckbox.UICheckBox; + import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itableeditorpane.UITableEditAction; import com.fr.design.gui.itableeditorpane.UITableModelAdapter; import com.fr.design.i18n.Toolkit; -import com.fr.form.ui.CheckBox; -import com.fr.function.INDEX; + +import com.fr.stable.StringUtils; import org.jetbrains.annotations.Nullable; -import javax.swing.*; -import java.util.ArrayList; + +import java.util.List; /** + * 表格的Editor,对应每列放的内容,用来处理表格的model + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-22 @@ -25,7 +26,7 @@ public class ITTableEditor extends UITableModelAdapter { public ITTableEditor() { super(new String[]{ - " ", + StringUtils.BLANK, Toolkit.i18nText("Fine-Design_Replace_Search_Content"), Toolkit.i18nText("Fine-Design_Replace_Template_Name"), Toolkit.i18nText("Fine-Design_Replace_Sheet_Name"), @@ -35,7 +36,6 @@ public class ITTableEditor extends UITableModelAdapter { Toolkit.i18nText("Fine-Design_Replace_Operator"), }); - //this.createTable().getColumnModel().getColumn(4).setMaxWidth(60); this.setColumnClass(new Class[]{ Boolean.class, UILabel.class, @@ -99,10 +99,10 @@ public class ITTableEditor extends UITableModelAdapter { /** * 添加数据 * - * @param arrayList + * @param list */ - public void add(ArrayList arrayList) { - for (Info info : arrayList) { + public void add(List list) { + for (Info info : list) { addRow(info.getContent()); fireTableDataChanged(); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java index 90d5c3f2b5..1acb5e2ba6 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java @@ -4,7 +4,7 @@ import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.border.UIRoundedBorder; import com.fr.design.constants.UIConstants; import com.fr.design.dialog.BasicPane; -import com.fr.design.gui.icheckbox.UICheckBox; + import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itableeditorpane.UITableEditAction; @@ -13,14 +13,27 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.share.ui.base.MouseClickListener; import com.fr.stable.StringUtils; -import javax.swing.*; -import javax.swing.table.*; -import java.awt.*; + +import javax.swing.JCheckBox; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTable; +import javax.swing.SwingConstants; +import javax.swing.UIManager; +import javax.swing.table.JTableHeader; +import javax.swing.table.TableCellRenderer; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.List; /** + * 表格面板 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-22 @@ -35,7 +48,6 @@ public class ITTableEditorPane extends BasicPane { public ITTableEditorPane(UITableModelAdapter model) { this.tableModel = model; this.initComponent(model.createAction()); - //((DefaultCellEditor) editTable.getCellEditor()).setClickCountToStart(1); editTable.setGridColor(new Color(218, 218, 221)); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java index 1acfbce880..729f1e6a8b 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java @@ -18,11 +18,16 @@ import com.fr.plugin.chart.base.AttrTooltip; import com.fr.plugin.chart.base.VanChartHtmlLabel; import com.fr.plugin.chart.vanchart.VanChart; import com.fr.report.cell.Elem; -import javafx.util.Pair; +import com.fr.stable.StringUtils; +import com.fr.stable.collections.combination.Pair; + import java.util.ArrayList; +import java.util.List; /** + * 用来获取JS相关的工具类 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-11 @@ -32,11 +37,11 @@ public class SearchJSUtils { /** * 从Listener中获取JS */ - public static void searchJSFromListener(ArrayList jsInfos, ITContent content) { + public static void searchJSFromListener(List jsInfos, ITContent content) { JavaScript javaScript = ((Listener) (content.getReplaceObject())).getAction(); if (javaScript instanceof JavaScriptImpl) { - ITContent newContent = content.copy(); - newContent.getContentObject().setJs(javaScript); + ITContent newContent = ITContent.copy(content); + newContent.setReplaceObject(javaScript); SearchJSUtils.addJSInfos(jsInfos, new JSInfo(newContent)); } } @@ -47,7 +52,7 @@ public class SearchJSUtils { * @param collection * @return */ - public static ArrayList> getHtmlLabel(ChartCollection collection) { + public static List> getHtmlLabel(ChartCollection collection) { ArrayList> arrayList = new ArrayList<>(); addHtmlLabel2Array(arrayList, collection); return arrayList; @@ -59,7 +64,7 @@ public class SearchJSUtils { * @param arrayList * @param collection */ - private static void addHtmlLabel2Array(ArrayList> arrayList, ChartCollection collection) { + private static void addHtmlLabel2Array(List> arrayList, ChartCollection collection) { for (int i = 0; i < collection.getChartCount(); i++) { VanChart chart = ((VanChart) collection.getChart(i)); int size = chart.getPlot().getConditionCollection().getConditionAttrSize(); @@ -77,7 +82,7 @@ public class SearchJSUtils { * @param chart * @param arrayList */ - private static void addAttrLabelHtmlLabel(VanChart chart, ArrayList> arrayList) { + private static void addAttrLabelHtmlLabel(VanChart chart, List> arrayList) { VanChartPlot plot = chart.getPlot(); addAttrToolTipCondition2Array(plot, arrayList); if (isAttrLabelExist(plot)) { @@ -88,28 +93,36 @@ public class SearchJSUtils { } - private static void addAttrToolTipCondition2Array(VanChartPlot plot, ArrayList> arrayList) { - if (plot.getAttrTooltipFromConditionCollection() != null && ((AttrTooltip) plot.getAttrTooltipFromConditionCollection()).isEnable() && plot.getAttrTooltipFromConditionCollection() instanceof AttrTooltip) { + private static void addAttrToolTipCondition2Array(VanChartPlot plot, List> arrayList) { + if (isToolTipValid(plot)) { arrayList.add(new Pair<>(((AttrTooltip) plot.getAttrTooltipFromConditionCollection()).getContent().getHtmlLabel(), Toolkit.i18nText("Fine-Design_Chart_Tooltip") + "-" + Toolkit.i18nText("Fine-Design_Basic_Custom"))); } } - - private static void addAttrLabelDetail2Array(VanChartPlot plot, ArrayList> arrayList) { - if (plot.getAttrLabelFromConditionCollection() != null - && plot.getAttrLabelFromConditionCollection().getAttrLabelDetail() != null - && plot.getAttrLabelFromConditionCollection().getAttrLabelDetail().getContent().getHtmlLabel() != null) { + private static boolean isToolTipValid(VanChartPlot plot){ + return plot.getAttrTooltipFromConditionCollection() != null && ((AttrTooltip) plot.getAttrTooltipFromConditionCollection()).isEnable() && plot.getAttrTooltipFromConditionCollection() instanceof AttrTooltip; + } + private static void addAttrLabelDetail2Array(VanChartPlot plot, List> arrayList) { + if (isLabelDetailValid(plot)) { arrayList.add(new Pair<>(plot.getAttrLabelFromConditionCollection().getAttrLabelDetail().getContent().getHtmlLabel(), Toolkit.i18nText("Fine-Design_Chart_Value_Label"))); } } + private static boolean isLabelDetailValid(VanChartPlot plot){ + return plot.getAttrLabelFromConditionCollection() != null + && plot.getAttrLabelFromConditionCollection().getAttrLabelDetail() != null + && plot.getAttrLabelFromConditionCollection().getAttrLabelDetail().getContent().getHtmlLabel() != null; + } - private static void addAttrSecondLabelDetail2Array(VanChartPlot plot, ArrayList> arrayList) { - if (plot.getAttrLabelFromConditionCollection() != null - && plot.getAttrLabelFromConditionCollection().getSecondLabelDetail() != null - && plot.getAttrLabelFromConditionCollection().getSecondLabelDetail().getContent().getHtmlLabel() != null) { + private static void addAttrSecondLabelDetail2Array(VanChartPlot plot, List> arrayList) { + if (isSecondLabelDetailValid(plot)) { arrayList.add(new Pair<>(plot.getAttrLabelFromConditionCollection().getSecondLabelDetail().getContent().getHtmlLabel(), Toolkit.i18nText("Fine-Design_Chart_Category_Label"))); } } + private static boolean isSecondLabelDetailValid(VanChartPlot plot){ + return plot.getAttrLabelFromConditionCollection() != null + && plot.getAttrLabelFromConditionCollection().getSecondLabelDetail() != null + && plot.getAttrLabelFromConditionCollection().getSecondLabelDetail().getContent().getHtmlLabel() != null; + } private static boolean isAttrLabelExist(VanChartPlot plot) { return plot.getAttrLabelFromConditionCollection() != null && plot.getAttrLabelFromConditionCollection().isEnable(); @@ -121,7 +134,7 @@ public class SearchJSUtils { * @param arrayList * @param conditionAttr */ - private static void searchConditionCollection(ArrayList> arrayList, ConditionAttr conditionAttr) { + private static void searchConditionCollection(List> arrayList, ConditionAttr conditionAttr) { int conditionSize = conditionAttr.getDataSeriesConditionCount(); for (int t = 0; t < conditionSize; t++) { if (conditionAttr.getDataSeriesCondition(t) instanceof AttrTooltip) { @@ -138,7 +151,7 @@ public class SearchJSUtils { * @param chartCollection * @return */ - public static ArrayList getNameJavaScript(ChartCollection chartCollection) { + public static List getNameJavaScript(ChartCollection chartCollection) { ArrayList nameJavaScriptArrayList = new ArrayList<>(); for (int i = 0; i < chartCollection.getChartCount(); i++) { VanChart chart = ((VanChart) chartCollection.getChart(i)); @@ -149,7 +162,7 @@ public class SearchJSUtils { return nameJavaScriptArrayList; } - private static void addNameJavaScript2Array(ArrayList nameJavaScriptArrayList, NameJavaScriptGroup nameJavaScriptGroup) { + private static void addNameJavaScript2Array(List nameJavaScriptArrayList, NameJavaScriptGroup nameJavaScriptGroup) { if (isNameJavaScriptGroupExist(nameJavaScriptGroup)) { for (int j = 0; j < nameJavaScriptGroup.size(); j++) { if (nameJavaScriptGroup.getNameHyperlink(j).getJavaScript() instanceof JavaScriptImpl) { @@ -169,8 +182,8 @@ public class SearchJSUtils { * @param jsInfos * @param jsInfo */ - public static void addJSInfos(ArrayList jsInfos, JSInfo jsInfo) { - jsInfo.setContent(jsInfo.getContent().copy()); + public static void addJSInfos(List jsInfos, JSInfo jsInfo) { + jsInfo.setContent(ITContent.copy(jsInfo.getContent())); jsInfos.add(jsInfo); } @@ -183,13 +196,12 @@ public class SearchJSUtils { * @param htmlLabels * @param jsInfos */ - public static void addJSInfosFromHtmlLabel(ITContent content, ArrayList> htmlLabels, ArrayList jsInfos) { - if (!htmlLabels.isEmpty()) { + public static void addJSInfosFromHtmlLabel(ITContent content, List> htmlLabels, List jsInfos) { + if (ShowValueUtils.isNotEmpty(htmlLabels)) { for (Pair pair : htmlLabels) { - ITContent newContent = content.copy(); - newContent.getContentObject().setHtmlLabel((VanChartHtmlLabel) pair.getKey()); - newContent.addOtherPos(GeneralUtils.objectToString(pair.getValue())); - newContent.setReplaceObject(pair.getKey()); + ITContent newContent = ITContent.copy(content); + newContent.addOtherPos(GeneralUtils.objectToString(pair.getSecond())); + newContent.setReplaceObject(pair.getFirst()); SearchJSUtils.addJSInfos(jsInfos, new JSInfo(newContent)); } } @@ -202,11 +214,10 @@ public class SearchJSUtils { * @param nameJavaScripts * @param jsInfos */ - public static void addJSInfosFromNameJS(ITContent content, ArrayList nameJavaScripts, ArrayList jsInfos) { - if (!nameJavaScripts.isEmpty()) { + public static void addJSInfosFromNameJS(ITContent content, List nameJavaScripts, List jsInfos) { + if (ShowValueUtils.isNotEmpty(nameJavaScripts)) { for (NameJavaScript nameJS : nameJavaScripts) { - ITContent newContent = content.copy(); - newContent.getContentObject().setNameJavaScript(nameJS); + ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(nameJS); newContent.addOtherPos(nameJS.getName()); SearchJSUtils.addJSInfos(jsInfos, new JSInfo(newContent)); @@ -222,12 +233,11 @@ public class SearchJSUtils { * @param jsInfos * @param content */ - public static void addJSInfosFromHyperLink(Elem elem, ArrayList jsInfos, ITContent content) { + public static void addJSInfosFromHyperLink(Elem elem, List jsInfos, ITContent content) { if (elem.getNameHyperlinkGroup() != null) { for (int j = 0; j < elem.getNameHyperlinkGroup().size(); j++) { if ((elem.getNameHyperlinkGroup().getNameHyperlink(j).getJavaScript()) instanceof JavaScriptImpl) { - ITContent newContent = content.copy(); - newContent.getContentObject().setNameJavaScript(elem.getNameHyperlinkGroup().getNameHyperlink(j)); + ITContent newContent = ITContent.copy(content); newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Report_Hyperlink")); newContent.setReplaceObject(elem.getNameHyperlinkGroup().getNameHyperlink(j)); newContent.addOtherPos(elem.getNameHyperlinkGroup().getNameHyperlink(j).getName()); @@ -243,11 +253,10 @@ public class SearchJSUtils { * @param jsInfos * @param content */ - public static void selectJSAction(ArrayList jsInfos, ITContent content) { + public static void selectJSAction(List jsInfos, ITContent content) { for (int i = 0; i < ((Widget) (content.getReplaceObject())).getListenerSize(); i++) { Listener listener = ((Widget) (content.getReplaceObject())).getListener(i); - ITContent newContent = content.copy(); - newContent.getContentObject().setListener(listener); + ITContent newContent = ITContent.copy(content); newContent.addOtherPos(listener.getName()); newContent.setReplaceObject(listener); SearchJSUtils.searchJSFromListener(jsInfos, newContent); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java index 91d2473a65..6342c7e72e 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java @@ -1,14 +1,15 @@ package com.fr.design.actions.replace.utils; -import com.fr.design.actions.replace.info.DealWithInfoValue; import com.fr.design.actions.replace.info.Info; -import com.fr.design.actions.replace.info.JSInfo; -import com.fr.third.org.apache.poi.hssf.record.formula.functions.Int; -import javafx.util.Pair; + +import com.fr.stable.collections.combination.Pair; + import org.gradle.internal.impldep.org.apache.commons.lang.StringUtils; import java.util.ArrayList; +import java.util.Collection; +import java.util.List; import java.util.regex.Pattern; /** @@ -57,18 +58,22 @@ public class ShowValueUtils { * @param find 要查找的内容 * @return 存储匹配的字符串的位置的列表 */ - public static ArrayList> getStringStartAndEndIndex(String str, String find) { - ArrayList> pairs = new ArrayList<>(); - int frontLength = 0;//定义该变量用于记录匹配元素前面的长度 + public static List> getStringStartAndEndIndex(String str, String find) { + List> pairs = new ArrayList<>(); + //定义该变量用于记录匹配元素前面的长度 + int frontLength = 0; StringBuffer result = new StringBuffer(); if (StringUtils.isEmpty(find)) { return pairs; } - while (str.contains(find)) {//只要该str字符串中有匹配的元素,才进行以下操作 - int index = str.indexOf(find);//定义该变量用于记录匹配的元素在当前字符串的位置 + //只要该str字符串中有匹配的元素,才进行以下操作 + while (str.contains(find)) { + //定义该变量用于记录匹配的元素在当前字符串的位置 + int index = str.indexOf(find); pairs.add(new Pair<>(index + frontLength, index + frontLength + find.length())); frontLength += (index + find.length()); - str = str.substring(index + find.length());//将字符串中匹配元素的前面部分及其本身截取,留下后面的部分 + //将字符串中匹配元素的前面部分及其本身截取,留下后面的部分 + str = str.substring(index + find.length()); } return pairs; @@ -88,4 +93,15 @@ public class ShowValueUtils { ); } + + + /** + * 集合是否不为空 + * + * @param collection + * @return + */ + public static boolean isNotEmpty(Collection collection) { + return collection != null && collection.size() > 0; + } } From 7c846cb18756924966c7a224c87cfaa043b3b3d6 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Fri, 16 Sep 2022 11:26:18 +0800 Subject: [PATCH 16/93] =?UTF-8?q?REPORT-75998=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/ShowSearchResultAction.java | 8 ++--- .../content/component/ComponentType.java | 7 +++++ .../component/SearchComponentAction.java | 16 ++++++++++ .../content/formula/FormulaReplaceObject.java | 30 +++++++++---------- .../action/content/formula/SearchFormula.java | 2 ++ .../content/formula/SearchFormulaManager.java | 12 ++++++++ .../cell/SearchDSColumnFormulaAction.java | 3 +- .../formula/cell/SearchRichFormulaAction.java | 4 ++- .../action/content/formula/data/DataType.java | 2 +- .../highlight/SearchHighlightFormula.java | 9 ++++-- .../widget/SearchDateEditorFormulaAction.java | 4 +-- .../widget/SearchTreeEditorFormulaAction.java | 6 ++-- .../content/js/SearchChartJSAction.java | 2 ++ .../action/content/js/SearchWebJSAction.java | 14 ++++----- .../content/widget/SearchWidgetAction.java | 4 +-- .../actions/replace/info/FormulaInfo.java | 7 +++-- .../design/actions/replace/info/SQLInfo.java | 4 +++ .../actions/replace/info/base/ITContent.java | 4 +-- .../replace/ui/ITReplaceMainDialog.java | 8 +++-- .../replace/ui/ITReplaceNorthPanel.java | 4 +-- 20 files changed, 103 insertions(+), 47 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java index 06520f52bf..6c3abb5756 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java @@ -103,7 +103,7 @@ public enum ShowSearchResultAction implements ShowValue { for (Info info : list) { stringHashMap = info.getValue(); if (StringUtils.isEmpty(str)) { - if (!StringUtils.isEmpty(stringHashMap.getOrDefault(objectContentKey, StringUtils.EMPTY))) { + if (StringUtils.isNotEmpty(stringHashMap.getOrDefault(objectContentKey, StringUtils.EMPTY))) { JSInfo contentJSInfo = ((JSInfo) info).copy(); contentJSInfo.getContent().setShowStr(stringHashMap.get(objectContentKey)); contentJSInfo.getContent().setOldShowStr(stringHashMap.get(objectContentKey)); @@ -111,7 +111,7 @@ public enum ShowSearchResultAction implements ShowValue { contentJSInfo.setContentFlag(true); jsInfos.add(contentJSInfo); } - if (!StringUtils.isEmpty(stringHashMap.getOrDefault(objectNameKey, StringUtils.EMPTY))) { + if (StringUtils.isNotEmpty(stringHashMap.getOrDefault(objectNameKey, StringUtils.EMPTY))) { JSInfo nameJSInfo = ((JSInfo) info).copy(); nameJSInfo.getContent().setShowStr(stringHashMap.get(objectNameKey)); nameJSInfo.getContent().setOldShowStr(stringHashMap.get(objectNameKey)); @@ -310,7 +310,7 @@ public enum ShowSearchResultAction implements ShowValue { private void searchMap4Widget(Map map, List widgetInfos, WidgetInfo info, String str) { if (map.containsKey(objectNameKey)) { String name = map.get(objectNameKey); - if (!StringUtils.isEmpty(name) && name.contains(str)) { + if (StringUtils.isNotEmpty(name) && name.contains(str)) { WidgetInfo nameInfo = info.copy(info); nameInfo.getContent().setShowStr(ShowValueUtils.getCommonString(name, str)); nameInfo.getContent().setOldShowStr(map.get(objectNameKey)); @@ -322,7 +322,7 @@ public enum ShowSearchResultAction implements ShowValue { } if (map.containsKey(objectWaterMarkKey)) { String waterMark = map.get(objectWaterMarkKey); - if (!StringUtils.isEmpty(waterMark) && waterMark.contains(str)) { + if (StringUtils.isNotEmpty(waterMark) && waterMark.contains(str)) { WidgetInfo widgetInfo = info.copy(info); widgetInfo.getContent().setShowStr(ShowValueUtils.getCommonString(waterMark, str)); widgetInfo.getContent().setOldShowStr(map.get(objectWaterMarkKey)); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/ComponentType.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/ComponentType.java index ed5cab762c..db7c63f17a 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/ComponentType.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/ComponentType.java @@ -252,6 +252,13 @@ public enum ComponentType implements DealWithInfoValue { return null; } + /** + * 添加组件到数组中 + * + * @param componentInfos + * @param bodyContent + * @param widget + */ public void addComponent2Array(List componentInfos, ITContent bodyContent, Widget widget) { componentInfos.add(new ComponentInfo(getComponentContent(bodyContent, widget))); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java index 217980de6f..2d328ae8a2 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java @@ -133,11 +133,22 @@ public class SearchComponentAction implements SearchAction { content.addTRL(widgetName); } + /** + * 对外开放的获取对象的方法 + * + * @return + */ public static SearchComponentAction getInstance() { return SearchComponentAction.SearchComponentActionEnum.SINGLETON.getInstance(); } + /** + * 枚举实现单例 + */ enum SearchComponentActionEnum { + /** + * 单例 + */ SINGLETON; private SearchComponentAction instance; @@ -145,6 +156,11 @@ public class SearchComponentAction implements SearchAction { instance = new SearchComponentAction(); } + /** + * 获取对象 + * + * @return + */ public SearchComponentAction getInstance() { return instance; } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java index c2c8a56880..aa9dbfa681 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java @@ -41,7 +41,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { @Override public Map getValue(Object... o) { HashMap map = new HashMap<>(); - if (!StringUtils.isEmpty(((Formula) o[0]).getContent())) { + if (StringUtils.isNotEmpty(((Formula) o[0]).getContent())) { map.put("content", ((Formula) o[0]).getContent()); } return map; @@ -61,7 +61,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { @Override public Map getValue(Object... o) { HashMap map = new HashMap<>(); - if (!StringUtils.isEmpty(((FormulaCondition) o[0]).getFormula())) { + if (StringUtils.isNotEmpty(((FormulaCondition) o[0]).getFormula())) { map.put("content", ((FormulaCondition) o[0]).getFormula()); } return map; @@ -84,7 +84,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { @Override public Map getValue(Object... o) { HashMap map = new HashMap<>(); - if (!StringUtils.isEmpty(((Formula) ((Compare) o[0]).getValue()).getContent())) { + if (StringUtils.isNotEmpty(((Formula) ((Compare) o[0]).getValue()).getContent())) { map.put("content", ((Formula) ((Compare) o[0]).getValue()).getContent()); } return map; @@ -109,7 +109,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { @Override public Map getValue(Object... o) { HashMap map = new HashMap<>(); - if (!StringUtils.isEmpty(((RichText) ((CellElement) o[0]).getValue()).getContent())) { + if (StringUtils.isNotEmpty(((RichText) ((CellElement) o[0]).getValue()).getContent())) { map.put("content", ((RichText) ((CellElement) o[0]).getValue()).getContent()); } return map; @@ -128,7 +128,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { @Override public Map getValue(Object... o) { HashMap map = new HashMap<>(); - if (!StringUtils.isEmpty(((Formula) ((com.fr.base.core.KV) o[0]).getValue()).getContent())) { + if (StringUtils.isNotEmpty(((Formula) ((com.fr.base.core.KV) o[0]).getValue()).getContent())) { map.put("content", ((Formula) ((com.fr.base.core.KV) o[0]).getValue()).getContent()); } return map; @@ -150,7 +150,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { @Override public Map getValue(Object... o) { HashMap map = new HashMap<>(); - if (!StringUtils.isEmpty(((Formula) (((CellInsertPolicyAttr) o[0]).getDefaultInsertValue())).getContent())) { + if (StringUtils.isNotEmpty(((Formula) (((CellInsertPolicyAttr) o[0]).getDefaultInsertValue())).getContent())) { map.put("content", ((Formula) (((CellInsertPolicyAttr) o[0]).getDefaultInsertValue())).getContent()); } return map; @@ -171,7 +171,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { @Override public Map getValue(Object... o) { HashMap map = new HashMap<>(); - if (!StringUtils.isEmpty(((FormulaPresent) o[0]).getFormulaContent())) { + if (StringUtils.isNotEmpty(((FormulaPresent) o[0]).getFormulaContent())) { map.put("content", ((FormulaPresent) o[0]).getFormulaContent()); } return map; @@ -193,7 +193,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { @Override public Map getValue(Object... o) { HashMap map = new HashMap<>(); - if (!StringUtils.isEmpty(((SingleJavaScript) o[0]).getFileName())) { + if (StringUtils.isNotEmpty(((SingleJavaScript) o[0]).getFileName())) { map.put("content", ((SingleJavaScript) o[0]).getFileName()); } return map; @@ -215,7 +215,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { @Override public Map getValue(Object... o) { HashMap map = new HashMap<>(); - if (!StringUtils.isEmpty(((Formula) (((ParameterProvider) o[0]).getValue())).getContent())) { + if (StringUtils.isNotEmpty(((Formula) (((ParameterProvider) o[0]).getValue())).getContent())) { map.put("content", ((Formula) (((ParameterProvider) o[0]).getValue())).getContent()); } return map; @@ -237,7 +237,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { @Override public Map getValue(Object... o) { HashMap map = new HashMap<>(); - if (!StringUtils.isEmpty(((FormulaProvider) o[0]).getContent())) { + if (StringUtils.isNotEmpty(((FormulaProvider) o[0]).getContent())) { map.put("content", ((FormulaProvider) o[0]).getContent()); } return map; @@ -259,7 +259,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { @Override public Map getValue(Object... o) { HashMap map = new HashMap<>(); - if (!StringUtils.isEmpty(((Formula) (((Parameter) o[0]).getValue())).getContent())) { + if (StringUtils.isNotEmpty(((Formula) (((Parameter) o[0]).getValue())).getContent())) { map.put("content", ((Formula) (((Parameter) o[0]).getValue())).getContent()); } return map; @@ -281,7 +281,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { @Override public Map getValue(Object... o) { HashMap map = new HashMap<>(); - if (!StringUtils.isEmpty(((DSColumn) o[0]).getResult())) { + if (StringUtils.isNotEmpty(((DSColumn) o[0]).getResult())) { map.put("content", ((DSColumn) o[0]).getResult()); } return map; @@ -303,7 +303,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { @Override public Map getValue(Object... o) { HashMap map = new HashMap<>(); - if (!StringUtils.isEmpty(((BaseFormula) o[0]).getContent())) { + if (StringUtils.isNotEmpty(((BaseFormula) o[0]).getContent())) { map.put("content", ((BaseFormula) o[0]).getContent()); } return map; @@ -325,7 +325,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { @Override public Map getValue(Object... o) { HashMap map = new HashMap<>(); - if (!StringUtils.isEmpty(((Formula) ((StoreProcedureParameter) o[0]).getValue()).getContent())) { + if (StringUtils.isNotEmpty(((Formula) ((StoreProcedureParameter) o[0]).getValue()).getContent())) { map.put("content", ((Formula) ((StoreProcedureParameter) o[0]).getValue()).getContent()); } return map; @@ -347,7 +347,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { @Override public Map getValue(Object... o) { HashMap map = new HashMap<>(); - if (!StringUtils.isEmpty(((WatermarkAttr) o[0]).getText())) { + if (StringUtils.isNotEmpty(((WatermarkAttr) o[0]).getText())) { map.put("content", ((WatermarkAttr) o[0]).getText()); } return map; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormula.java index 1b6fc2f2c7..82a2db3275 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormula.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormula.java @@ -10,6 +10,8 @@ import java.util.ArrayList; import java.util.List; /** + * 获取公式 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-18 diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormulaManager.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormulaManager.java index 9ca37b501b..5a3644a403 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormulaManager.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormulaManager.java @@ -15,6 +15,8 @@ import java.util.List; import java.util.Set; /** + * 管理公式类型搜索的注册 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-17 @@ -49,6 +51,16 @@ public class SearchFormulaManager implements SearchAction { formulaProviderSet.add(searchFormula); } + /** + * 注销对应的SearchFormula + * + * @param searchFormula + */ + public void removeFormula(SearchFormula searchFormula) { + formulaProviderSet.remove(searchFormula); + } + + public List getFormulaInfos() { return formulaInfos; } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchDSColumnFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchDSColumnFormulaAction.java index aee5e75789..a2d9afea84 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchDSColumnFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchDSColumnFormulaAction.java @@ -59,7 +59,8 @@ public class SearchDSColumnFormulaAction implements SearchCellFormula { } private void addFormulaInfos2ArrayFromResult(ITContent content, DSColumn dsColumn, List formulaInfos) { - if (dsColumn.getResult().length() > 0 && dsColumn.getResult().charAt(0) == '=') { + char formulaLabel = '='; + if (dsColumn.getResult().length() > 0 && dsColumn.getResult().charAt(0) == formulaLabel) { ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(dsColumn); //高级-显示值 diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchRichFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchRichFormulaAction.java index 80c85158e3..c80c7a610f 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchRichFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchRichFormulaAction.java @@ -16,10 +16,12 @@ import java.util.List; * created by Destiny.Lin on 2022-08-18 */ public class SearchRichFormulaAction implements SearchCellFormula { + @Override public void searchFormulaFromCellType(List formulaInfos, ITContent content) { //todo 富文本这边直接遍历RichChar来拿公式 - if (((RichText) ((CellElement) (content.getReplaceObject())).getValue()).getContent().contains("${")) { + String contain = "${"; + if (((RichText) ((CellElement) (content.getReplaceObject())).getValue()).getContent().contains(contain)) { ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(((CellElement) (content.getReplaceObject())).getValue()); newContent.addOtherPos( diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/DataType.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/DataType.java index f8ea44cd7a..a794ab1df3 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/DataType.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/DataType.java @@ -92,7 +92,7 @@ public enum DataType { * @param formulaInfos */ public void dealProvider(ParameterProvider provider, ITContent content, List formulaInfos) { - if (provider.getValue() instanceof Formula && !StringUtils.isEmpty((((Formula) provider.getValue())).getContent())) { + if (provider.getValue() instanceof Formula && StringUtils.isNotEmpty((((Formula) provider.getValue())).getContent())) { ITContent newContent = ITContent.copy(content); newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Parameter")); newContent.setReplaceObject(provider); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormula.java index d74da99d5b..2758a42685 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormula.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormula.java @@ -17,10 +17,15 @@ import java.util.List; */ public interface SearchHighlightFormula extends SearchFormula { - //处理条件属性中各种属性 + /** + * 处理条件属性中各种属性 + * + * @param content + * @param formulaInfos + * @param highlightAction + */ default void dealWithHighlightAction(ITContent content, List formulaInfos, HighlightAction highlightAction) { } - } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java index 3c9b8884bd..00c739e8ed 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java @@ -29,7 +29,7 @@ public class SearchDateEditorFormulaAction extends AbstractSearchWidgetFormulaAc private void dealEndDateFormula(ITContent content, List formulaInfos) { DateEditor dateEditor = (DateEditor) content.getReplaceObject(); - if (dateEditor.getEndDateFM() != null && !StringUtils.isEmpty(dateEditor.getEndDateFM().getContent())) { + if (dateEditor.getEndDateFM() != null && StringUtils.isNotEmpty(dateEditor.getEndDateFM().getContent())) { ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(dateEditor.getEndDateFM()); newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_End_Time")); @@ -39,7 +39,7 @@ public class SearchDateEditorFormulaAction extends AbstractSearchWidgetFormulaAc private void dealStratDateFormula(ITContent content, List formulaInfos) { DateEditor dateEditor = (DateEditor) content.getReplaceObject(); - if (dateEditor.getStartDateFM() != null && !StringUtils.isEmpty(dateEditor.getStartDateFM().getContent())) { + if (dateEditor.getStartDateFM() != null && StringUtils.isNotEmpty(dateEditor.getStartDateFM().getContent())) { ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(dateEditor.getStartDateFM()); newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Start_Time")); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java index 03ae60b079..1e9e79cd0c 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java @@ -14,6 +14,8 @@ import java.util.ArrayList; import java.util.List; /** + * 搜索树形结构数据字典的公式 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-22 @@ -45,7 +47,7 @@ public class SearchTreeEditorFormulaAction extends AbstractSearchWidgetFormulaAc private void dealWithTreeNodeWrapper(TreeNodeWrapper wrapper, ITContent content, List formulaInfos) { for (TreeNodeAttr attr : wrapper.getTreeNodeAttrs()) { if (((FormulaDisplayDictionary) attr.getDictionary()).getFormula() != null - && !StringUtils.isEmpty(((FormulaDisplayDictionary) attr.getDictionary()).getFormula().getContent())) { + && StringUtils.isNotEmpty(((FormulaDisplayDictionary) attr.getDictionary()).getFormula().getContent())) { ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(((FormulaDisplayDictionary) attr.getDictionary()).getFormula()); newContent.addOtherPos( @@ -60,7 +62,7 @@ public class SearchTreeEditorFormulaAction extends AbstractSearchWidgetFormulaAc private void dealWithLayerConfigs(LayerConfig[] layerConfigs, ITContent content, List formulaInfos) { for (LayerConfig layerConfig : layerConfigs) { if (layerConfig.getDictionary().getFormula() != null - && !StringUtils.isEmpty(layerConfig.getDictionary().getFormula().getContent())) { + && StringUtils.isNotEmpty(layerConfig.getDictionary().getFormula().getContent())) { ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(layerConfig.getDictionary().getFormula()); newContent.addOtherPos( diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java index 7b1fc1e4ba..b02f3ff783 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java @@ -16,6 +16,8 @@ import com.fr.stable.collections.combination.Pair; import java.util.List; /** + * 获取图表的JS + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-09-15 diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java index 4805a82b55..cd41f58b84 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java @@ -1,6 +1,5 @@ package com.fr.design.actions.replace.action.content.js; -import com.fr.design.actions.replace.action.SearchAction; import com.fr.design.actions.replace.info.JSInfo; import com.fr.design.actions.replace.info.base.ITContent; @@ -21,6 +20,7 @@ import com.fr.web.attr.ReportWebAttr; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 搜索模板Web属性里的JS @@ -31,16 +31,16 @@ import java.util.List; */ public class SearchWebJSAction implements SearchJS { - private final static HashMap map = new HashMap<>(); + private final static Map MAP = new HashMap<>(); private List arrayList = new ArrayList<>(); private SearchWebJSAction() { } static { - map.put("WebPage", Toolkit.i18nText("Fine-Design_Report_Pagination_Setting")); - map.put("WebWrite", Toolkit.i18nText("Fine-Design_Report_Write_Setting")); - map.put("WebView", Toolkit.i18nText("Fine-Design_Report_Data_Analysis_Settings")); + MAP.put("WebPage", Toolkit.i18nText("Fine-Design_Report_Pagination_Setting")); + MAP.put("WebWrite", Toolkit.i18nText("Fine-Design_Report_Write_Setting")); + MAP.put("WebView", Toolkit.i18nText("Fine-Design_Report_Data_Analysis_Settings")); } @@ -68,8 +68,8 @@ public class SearchWebJSAction implements SearchJS { private void addJSInfos2ListFromArray(ITContent content, List jsInfos, WebContent webContent) { ITContent newContent = ITContent.copy(content); - if (map.containsKey(webContent.getClass().getSimpleName())) { - newContent.addOtherPos(map.get(webContent.getClass().getSimpleName())); + if (MAP.containsKey(webContent.getClass().getSimpleName())) { + newContent.addOtherPos(MAP.get(webContent.getClass().getSimpleName())); } addJSInfos2ListFromWebButton(newContent, jsInfos, webContent); addJSInfos2ListFromWebListener(newContent, jsInfos, webContent); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchWidgetAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchWidgetAction.java index f2e6d4b930..19514ff343 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchWidgetAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchWidgetAction.java @@ -116,8 +116,8 @@ public class SearchWidgetAction implements SearchAction { ITContent newContent = ITContent.copy(cellInfo.getContent()); Widget widget = ((TemplateCellElement) cellInfo.getContent().getReplaceObject()).getWidget(); - newContent.addOtherPos("控件"); - if (!StringUtils.isEmpty(widget.getWidgetName())) { + newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Widget")); + if (StringUtils.isNotEmpty(widget.getWidgetName())) { newContent.addOtherPos(widget.getWidgetName()); } newContent.setReplaceObject(widget); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/FormulaInfo.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/FormulaInfo.java index 41779d8cc6..dab9128182 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/FormulaInfo.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/FormulaInfo.java @@ -21,7 +21,8 @@ import java.util.Map; */ public class FormulaInfo implements Info { private ITContent content; - + private static final String DISPLAY = Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary") + "-" + Toolkit.i18nText("Fine-Design_Chart_Formula") + "-" + Toolkit.i18nText("Fine-Design_Basic_Display_Value"); + private static final String ACTUAL = Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary") + "-" + Toolkit.i18nText("Fine-Design_Chart_Formula") + "-" + Toolkit.i18nText("Fine-Design_Basic_Actual_Value"); public FormulaInfo(ITContent content) { this.content = content; } @@ -39,9 +40,9 @@ public class FormulaInfo implements Info { public Map getValue(Object... o) { Map map = new HashMap<>(); //这边比较特殊,存的都是FormulaDictionary ,特殊判断一下 - if (this.content.getOtherPos().contains(Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary") + "-" + Toolkit.i18nText("Fine-Design_Chart_Formula") + "-" + Toolkit.i18nText("Fine-Design_Basic_Display_Value"))) { + if (this.content.getOtherPos().contains(DISPLAY)) { map.put("content", ((FormulaDictionary) this.getContent().getReplaceObject()).getExcuteFormula()); - } else if (this.content.getOtherPos().contains(Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary") + "-" + Toolkit.i18nText("Fine-Design_Chart_Formula") + "-" + Toolkit.i18nText("Fine-Design_Basic_Actual_Value"))) { + } else if (this.content.getOtherPos().contains(ACTUAL)) { map.put("content", ((FormulaDictionary) this.getContent().getReplaceObject()).getProduceFormula()); } else { map = getCommonValue(); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/SQLInfo.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/SQLInfo.java index f8700f0ea0..6006c83754 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/SQLInfo.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/SQLInfo.java @@ -41,6 +41,10 @@ public class SQLInfo implements Info { return new HashMap<>(); } + /** + * 复制 + * @return + */ public SQLInfo copy() { ITContent content = ITContent.copy(this.getContent()); return new SQLInfo(content); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java index 9a6a026671..cc3ac6fee7 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java @@ -177,7 +177,7 @@ public class ITContent implements Cloneable { */ public void addOtherPos(String... otherPoses) { for (String otherPos : otherPoses) { - if (this.otherPos != null && !StringUtils.isEmpty(this.otherPos)) { + if (StringUtils.isNotEmpty(this.otherPos)) { this.otherPos = this.otherPos + "-" + otherPos; } else { this.otherPos = otherPos; @@ -191,7 +191,7 @@ public class ITContent implements Cloneable { * @param trlString */ public void addTRL(String trlString) { - if (!StringUtils.isEmpty(trlString)) { + if (StringUtils.isNotEmpty(trlString)) { if (StringUtils.isNotEmpty(this.trlString)) { this.trlString = this.trlString + ":" + trlString; } else { diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java index 188d5f101d..0c01a2ec87 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java @@ -125,7 +125,7 @@ public class ITReplaceMainDialog extends UIDialog { public void actionPerformed(ActionEvent e) { search(); String searchStr = ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).getText(); - if (!StringUtils.isEmpty(searchStr)) { + if (StringUtils.isNotEmpty(searchStr)) { ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).setEditable(true); northPane.getReplaceInputCombobox().setEditable(true); } else { @@ -140,7 +140,7 @@ public class ITReplaceMainDialog extends UIDialog { public void actionPerformed(ActionEvent e) { search(); String searchStr = ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).getText(); - if (!StringUtils.isEmpty(searchStr)) { + if (StringUtils.isNotEmpty(searchStr)) { ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).setEditable(true); northPane.getReplaceInputCombobox().setEditable(true); } else { @@ -225,7 +225,9 @@ public class ITReplaceMainDialog extends UIDialog { public boolean isITReplaceValid() { if (JTemplate.isValid(HistoryTemplateListCache.getInstance().getCurrentEditingTemplate())) { return StringUtils.equals(HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getTarget().getTemplateID(), templateID); - } else return false; + } else { + return false; + } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java index ed66571c69..d4ca276729 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java @@ -152,7 +152,7 @@ public class ITReplaceNorthPanel { */ public void refreshFindInputComboBoxItems() { String text = ((UITextField) (this.getFindInputCombobox().getEditor().getEditorComponent())).getText(); - if (!StringUtils.isEmpty(text)) { + if (StringUtils.isNotEmpty(text)) { if (findInputItems.contains(text)) { Collections.swap(findInputItems, 0, findInputItems.indexOf(text)); } else { @@ -173,7 +173,7 @@ public class ITReplaceNorthPanel { */ public void refreshReplaceInputComboBoxItems() { String text = ((UITextField) (this.getReplaceInputCombobox().getEditor().getEditorComponent())).getText(); - if (!StringUtils.isEmpty(text)) { + if (StringUtils.isNotEmpty(text)) { if (replaceInputItems.contains(text)) { Collections.swap(replaceInputItems, 0, replaceInputItems.indexOf(text)); } else { From c504308490df7c7bf4118401b91d217c27fa5991 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Fri, 16 Sep 2022 11:26:45 +0800 Subject: [PATCH 17/93] =?UTF-8?q?REPORT-75998=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/module/DesignModuleFactory.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java b/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java index ab751296d3..baed29be47 100644 --- a/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java +++ b/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java @@ -70,7 +70,7 @@ public class DesignModuleFactory { @NotNull public static NameableCreator[] getCreators4Hyperlink() { - return instance.creators4Hyperlink == null? new NameableCreator[0]:instance.creators4Hyperlink; + return instance.creators4Hyperlink == null ? new NameableCreator[0] : instance.creators4Hyperlink; } public static void registerExtraWidgetOptions(WidgetOption[] options) { @@ -117,10 +117,17 @@ public class DesignModuleFactory { public static Class getNewFormAction() { return instance.newFormAction; } - public static void registerReplaceActionClass(Class r){ + + /** + * 注册一下查找替换 + * + * @param r + */ + public static void registerReplaceActionClass(Class r) { instance.ITReplaceAction = r; } - public static Class getITReplaceAction(){ + + public static Class getITReplaceAction() { return instance.ITReplaceAction; } From 581db160ff2f18c8d31b470b8df36cd1f6621a89 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Fri, 16 Sep 2022 12:06:45 +0800 Subject: [PATCH 18/93] =?UTF-8?q?REPORT-75998=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=EF=BC=8C=E4=BF=AE=E6=94=B9=E4=B8=8D=E5=90=88?= =?UTF-8?q?=E9=80=82=E7=9A=84API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../replace/action/content/formula/FormulaReplaceObject.java | 2 ++ .../java/com/fr/design/actions/replace/ui/ITTableButton.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java index aa9dbfa681..6c0a01d66d 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java @@ -29,6 +29,8 @@ import java.util.List; import java.util.Map; /** + * 公式可能存在的形式 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-08-25 diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java index 248a7353ae..c754c2c434 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java @@ -37,7 +37,7 @@ public class ITTableButton extends AbstractCellEditor implements TableCellEditor @Override public void actionPerformed(ActionEvent e) { ITContent content = (ITContent) getEditTable().getValueAt(getEditTable().getEditingRow(), 7); - if (!StringUtils.isEmpty(GeneralUtils.objectToString(content.getTrlString()))) { + if (StringUtils.isNotEmpty(GeneralUtils.objectToString(content.getTrlString()))) { ITReplaceMainDialog.setITReplaceFlag(true); HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().navigate(new TRL(GeneralUtils.objectToString(content.getTrlString()))); } From bc8ad762b10dca482300013e4b4df640c4be9ddb Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Sat, 17 Sep 2022 14:54:09 +0800 Subject: [PATCH 19/93] =?UTF-8?q?REPORT-75998=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=E6=B3=A8=E9=94=80=E7=9A=84=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=B1=BB=E4=B8=8E=E7=AE=A1=E7=90=86=E4=B8=AD=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../actions/replace/action/SearchManager.java | 30 +++ .../replace/action/SearchManagerCenter.java | 214 ++++++++++++++++++ .../action/ShowSearchResultAction.java | 13 +- .../action/content/cell/SearchCellAction.java | 12 +- .../component/SearchComponentAction.java | 7 +- .../content/formula/FormulaReplaceObject.java | 18 +- .../content/formula/SearchFormulaManager.java | 17 +- .../formula/cell/SearchCellFormulaAction.java | 37 +-- .../cell/SearchCellFormulaManager.java | 110 +++++++++ .../cell/SearchCellFormulaTypeAction.java | 35 +++ .../cell/SearchDSColumnFormulaAction.java | 92 +++++--- .../formula/cell/SearchRichFormulaAction.java | 64 +++++- .../cell/SearchSubReportFormulaAction.java | 35 +++ .../SearchChartCollectionFormulaAction.java | 4 +- .../action/content/formula/data/DataType.java | 2 + .../formula/data/SearchDataFormulaAction.java | 2 +- .../SearchFloatFormulaAction.java | 4 +- .../SearchHighlightFormulaAction.java | 50 +++- .../SearchHighlightFormulaManager.java | 105 +++++++++ .../SearchCommonConditionAction.java | 41 +++- .../condition/SearchConditionManager.java | 103 +++++++++ .../SearchFormulaConditionAction.java | 39 ++++ .../condition/SearchListConditionAction.java | 44 +++- .../SearchObjectConditionAction.java | 38 ++++ .../SearchCommit2DBJSFormulaAction.java | 67 ++++-- .../SearchExportJSFormulaAction.java | 37 +++ .../highlight/javascript/SearchJSFormula.java | 4 +- .../javascript/SearchJSFormulaManager.java | 116 ++++++++++ .../javascript/SearchJSHighlightAction.java | 69 +++--- .../SearchMobileHyperlinkFormulaAction.java | 37 +++ .../AbstractSearchWidgetFormulaAction.java | 7 +- .../formula/widget/DictionaryType.java | 47 ++-- .../SearchCommonWidgetFormulaAction.java | 38 ++++ .../widget/SearchDateEditorFormulaAction.java | 37 +++ .../widget/SearchDictFormulaAction.java | 37 +++ .../widget/SearchTreeEditorFormulaAction.java | 38 ++++ .../widget/SearchWidgetFormulaAction.java | 47 +--- .../widget/SearchWidgetFormulaManager.java | 146 ++++++++++++ .../action/content/js/SearchCellJSAction.java | 4 +- .../content/js/SearchChartJSAction.java | 6 +- .../content/js/SearchFloatJSAction.java | 16 +- .../action/content/js/SearchJSManager.java | 36 ++- .../action/content/js/SearchWebJSAction.java | 2 +- .../content/js/SearchWidgetJSAction.java | 5 +- .../action/content/sql/SearchSQLAction.java | 2 +- .../content/widget/SearchWidgetAction.java | 10 +- .../actions/replace/info/FormulaInfo.java | 3 +- .../actions/replace/info/base/ITContent.java | 16 ++ .../replace/ui/ITReplaceNorthPanel.java | 114 +++++----- .../actions/replace/ui/ITTableButton.java | 4 + 50 files changed, 1743 insertions(+), 318 deletions(-) create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/SearchManager.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/SearchManagerCenter.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaManager.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaManager.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchConditionManager.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormulaManager.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaManager.java diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/SearchManager.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/SearchManager.java new file mode 100644 index 0000000000..c5acd2ec79 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/SearchManager.java @@ -0,0 +1,30 @@ +package com.fr.design.actions.replace.action; + +/** + * 管理搜索元素的注册与注销 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-16 + */ +public interface SearchManager { + + /** + * 注册搜索行为 + * @param tag + * @param searchAction + */ + void registerAction(String tag , SearchAction searchAction); + + /** + * 根据tag注销搜索行为 + * @param tag + */ + default void removeAction(String tag){}; + + /** + * 根据行为注销指定的搜索行为 + * @param searchAction + */ + default void removeAction(SearchAction searchAction){}; +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/SearchManagerCenter.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/SearchManagerCenter.java new file mode 100644 index 0000000000..d1c7054b5b --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/SearchManagerCenter.java @@ -0,0 +1,214 @@ +package com.fr.design.actions.replace.action; + +import com.fr.design.actions.replace.action.content.formula.cell.SearchCellFormulaManager; +import com.fr.design.actions.replace.action.content.formula.highlight.SearchHighlightFormulaManager; +import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchConditionManager; +import com.fr.design.actions.replace.action.content.formula.highlight.javascript.SearchJSFormulaManager; +import com.fr.design.actions.replace.action.content.formula.widget.SearchWidgetFormulaManager; +import com.fr.design.actions.replace.action.content.js.SearchCellJSAction; +import com.fr.design.actions.replace.action.content.js.SearchJS; +import com.fr.design.actions.replace.action.content.js.SearchJSManager; +import com.fr.design.actions.replace.action.content.js.SearchWebJSAction; +import com.fr.design.actions.replace.action.content.js.SearchWidgetJSAction; +import com.fr.third.v2.org.apache.poi.ss.formula.functions.T; +import org.jetbrains.annotations.Nullable; + +/** + * 管理各个管理类的注入的管理中心 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-16 + */ +public class SearchManagerCenter { + public static final int CELL_FORMULA = 0; + public static final int CONDITION_FORMULA = 1; + public static final int JS_FORMULA = 2; + public static final int HIGHLIGHT_FORMULA = 3; + public static final int WIDGET_FORMULA = 4; + public static final int JS = 5; + + private SearchManagerCenter() { + } + + /** + * 注册 + * + * @param index 指定类型编号 + * @param tag 类名称 + * @param searchAction 对应搜索行为 + */ + public void register(int index, String tag, SearchAction searchAction) { + ManagerType managerType = ManagerType.match(index); + if (managerType != null) { + managerType.registerAction(tag, searchAction); + } + } + + /** + * 注销 + * + * @param index 指定类型编号 + * @param tag 类名称 + */ + public void remove(int index, String tag) { + ManagerType managerType = ManagerType.match(index); + if (managerType != null) { + managerType.removeAction(tag); + } + } + + + /** + * 管理类的类型 + */ + public enum ManagerType implements SearchManager { + /** + * 注册单元格不同值类型中自己特有的公式(数据列、子报表、公式、富文本,可自己添加) + */ + CELL_FORMULA(0) { + @Override + public void registerAction(String tag, SearchAction searchAction) { + SearchCellFormulaManager.getInstance().registerAction(tag, searchAction); + } + + @Override + public void removeAction(String tag) { + SearchCellFormulaManager.getInstance().removeAction(tag); + } + }, + /** + * 注册条件属性中的公式(公式类型的条件属性、包装了一个比较器作为条件的条件对象、组合条件,用多个AND或者OR连接起来的条件组成的对象、简单比较的条件、可自己添加) + */ + CONDITION_FORMULA(1) { + @Override + public void registerAction(String tag, SearchAction searchAction) { + SearchConditionManager.getInstance().registerAction(tag, searchAction); + } + + @Override + public void removeAction(String tag) { + SearchConditionManager.getInstance().removeAction(tag); + } + }, + /** + * 注冊超链类型中的自己特有的公式(提交入库、导出事件、移动端弹窗、可自己添加) + * 其他类型的超链都只有参数部分会存在公式,属于公有,统一处理 + */ + JS_FORMULA(2) { + @Override + public void registerAction(String tag, SearchAction searchAction) { + SearchJSFormulaManager.getInstance().registerAction(tag, searchAction); + } + + @Override + public void removeAction(String tag) { + SearchJSFormulaManager.getInstance().removeAction(tag); + } + }, + /** + * 注册条件属性中自己特有的公式(超级链接、控件、... 可自己添加) + */ + HIGHLIGHT_FORMULA(3) { + @Override + public void registerAction(String tag, SearchAction searchAction) { + SearchHighlightFormulaManager.getInstance().registerAction(tag, searchAction); + } + + @Override + public void removeAction(String tag) { + SearchHighlightFormulaManager.getInstance().removeAction(tag); + } + }, + + /** + * 注册不同控件中的公式(非树形数据字典、树形数据字典、无数据字典、可自己添加) + */ + WIDGET_FORMULA(4) { + @Override + public void registerAction(String tag, SearchAction searchAction) { + SearchWidgetFormulaManager.getInstance().registerAction(tag, searchAction); + } + + @Override + public void removeAction(String tag) { + SearchWidgetFormulaManager.getInstance().removeAction(tag); + } + }, + /** + * 注册获取JS的场景(当前:控件、单元格、模板Web属性、悬浮元素、可自行添加) + */ + JS(5) { + @Override + public void registerAction(String tag, SearchAction searchAction) { + SearchJSManager.getInstance().registerAction(tag, searchAction); + } + + @Override + public void removeAction(SearchAction searchAction) { + SearchJSManager.getInstance().removeAction(searchAction); + } + }; + + + int index; + + ManagerType(int index) { + this.index = index; + } + + /** + * 匹配 + * + * @param index + * @return + */ + @Nullable + public static ManagerType match(int index) { + ManagerType[] values = ManagerType.values(); + for (ManagerType value : values) { + if (value.index == index) { + return value; + } + } + return null; + } + + } + + + /** + * 对外开放的获取单例对象的方法 + * + * @return + */ + public static SearchManagerCenter getInstance() { + return SearchManagerCenterEnum.SINGLETON.getInstance(); + } + + + /** + * 枚举实现单例 + */ + private enum SearchManagerCenterEnum { + /** + * 单例 + */ + SINGLETON; + private SearchManagerCenter instance; + + SearchManagerCenterEnum() { + instance = new SearchManagerCenter(); + } + + /** + * 获取单例对象 + * + * @return + */ + public SearchManagerCenter getInstance() { + return instance; + } + } + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java index 6c3abb5756..1cfc978f90 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java @@ -9,15 +9,22 @@ import com.fr.design.actions.replace.action.content.formula.SearchFormulaManager import com.fr.design.actions.replace.action.content.js.SearchJSManager; import com.fr.design.actions.replace.action.content.sql.SearchSQLAction; import com.fr.design.actions.replace.action.content.widget.SearchWidgetAction; -import com.fr.design.actions.replace.info.*; +import com.fr.design.actions.replace.info.CellInfo; +import com.fr.design.actions.replace.info.ComponentInfo; +import com.fr.design.actions.replace.info.FloatInfo; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.Info; +import com.fr.design.actions.replace.info.JSInfo; +import com.fr.design.actions.replace.info.SQLInfo; +import com.fr.design.actions.replace.info.WidgetInfo; import com.fr.design.actions.replace.utils.ShowValueUtils; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.JTemplate; import com.fr.general.GeneralUtils; import com.fr.report.cell.CellElement; import com.fr.report.cell.FloatElement; +import com.fr.stable.StringUtils; import com.fr.stable.collections.combination.Pair; -import org.gradle.internal.impldep.org.apache.commons.lang.StringUtils; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; @@ -197,7 +204,7 @@ public enum ShowSearchResultAction implements ShowValue { } } - private void updateOperaotrArray(int index, int preLength, int strLength, SQLInfo sqlInfo) { + private void updateOperatorArray(int index, int preLength, int strLength, SQLInfo sqlInfo) { ArrayList> pairs = new ArrayList<>(); pairs.add(new Pair<>(index + preLength, index + preLength + strLength)); sqlInfo.getContent().setOperatorArray(pairs); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/cell/SearchCellAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/cell/SearchCellAction.java index 04b1a6e623..826b247e0c 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/cell/SearchCellAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/cell/SearchCellAction.java @@ -42,8 +42,6 @@ public class SearchCellAction implements SearchAction { private SearchCellAction() { } - ; - public List getCellInfos() { return cellInfos; } @@ -60,13 +58,13 @@ public class SearchCellAction implements SearchAction { */ @Override public void search4Infos(JTemplate jTemplate) { - ITContent content = new ITContent(); + ITContent content = new ITContent(); content.setTemplateName(jTemplate.getTemplateName()); content.addTRL(jTemplate.getTemplateName()); if (jTemplate.getTarget() instanceof Form) { setCellInfos(dealForm(jTemplate)); } else if (jTemplate.getTarget() instanceof WorkBook) { - setCellInfos(dealWorkBook((WorkBook) jTemplate.getTarget(),content)); + setCellInfos(dealWorkBook((WorkBook) jTemplate.getTarget(), content)); } else { setCellInfos(new ArrayList<>()); } @@ -118,10 +116,10 @@ public class SearchCellAction implements SearchAction { /** * 处理普通报表 * - * @param workBook 要搜索的报表对象 + * @param workBook 要搜索的报表对象 * @return 对应信息Array */ - public List dealWorkBook(WorkBook workBook,ITContent workBookContent) { + public List dealWorkBook(WorkBook workBook, ITContent workBookContent) { ArrayList result = new ArrayList<>(); for (int i = 0; i < workBook.getReportCount(); i++) { Report report = workBook.getReport(i); @@ -198,7 +196,7 @@ public class SearchCellAction implements SearchAction { /** * 枚举实现单例 */ - enum SearchCellActionEnum { + private enum SearchCellActionEnum { /** * 单例 */ diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java index 2d328ae8a2..775d03f5c2 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java @@ -23,6 +23,9 @@ import java.util.List; */ public class SearchComponentAction implements SearchAction { + private SearchComponentAction() { + } + private List componentInfos; @@ -83,6 +86,7 @@ public class SearchComponentAction implements SearchAction { private void dealBodyContainer(List componentInfos, ITContent bodyContent, WLayout body) { ITContent content = ITContent.copy(bodyContent); content.setReplaceObject(body); + content.setJumpAble(false); dealContent(content, body.getWidgetName()); //WParameterLayout componentInfos.add(new ComponentInfo(content)); @@ -92,6 +96,7 @@ public class SearchComponentAction implements SearchAction { if (paraContainer != null) { ITContent paraContent = ITContent.copy(content); paraContent.addOtherPos(paraContainer.getWidgetName()); + paraContent.setJumpAble(false); //单独处理一下para组件 dealParaContainer(componentInfos, paraContent, paraContainer); //处理para的子组件 @@ -145,7 +150,7 @@ public class SearchComponentAction implements SearchAction { /** * 枚举实现单例 */ - enum SearchComponentActionEnum { + private enum SearchComponentActionEnum { /** * 单例 */ diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java index 6c0a01d66d..7a1c199af9 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java @@ -14,9 +14,8 @@ import com.fr.design.actions.replace.utils.ShowValueUtils; import com.fr.design.file.HistoryTemplateListCache; import com.fr.js.SingleJavaScript; import com.fr.main.impl.WorkBook; -import com.fr.report.cell.CellElement; import com.fr.report.cell.cellattr.CellInsertPolicyAttr; -import com.fr.report.cell.cellattr.core.RichText; +import com.fr.report.cell.cellattr.core.RichChar; import com.fr.report.cell.cellattr.core.group.DSColumn; import com.fr.stable.FormulaProvider; import com.fr.stable.ParameterProvider; @@ -107,19 +106,26 @@ public enum FormulaReplaceObject implements DealWithInfoValue { /** * 富文本 */ - RICH_TEXT("RichText") { + RICH_CHAR("RichChar") { @Override public Map getValue(Object... o) { HashMap map = new HashMap<>(); - if (StringUtils.isNotEmpty(((RichText) ((CellElement) o[0]).getValue()).getContent())) { - map.put("content", ((RichText) ((CellElement) o[0]).getValue()).getContent()); + if (o[0] instanceof RichChar) { + if (StringUtils.isNotEmpty(((RichChar) o[0]).getText())) { + map.put("content", (((RichChar) o[0]).getText())); + } } return map; } @Override public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { - //todo 富文本公式处理 + Object replaceObject = info.getContent().getReplaceObject(); + if (replaceObject instanceof RichChar) { + RichChar richChar = (RichChar) replaceObject; + info.updateOldStr(richChar.getText(), findStr); + richChar.setText(ShowValueUtils.replaceAll(richChar.getText(), findStr, replaceStr)); + } } }, diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormulaManager.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormulaManager.java index 5a3644a403..51c61ef6ae 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormulaManager.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormulaManager.java @@ -1,6 +1,7 @@ package com.fr.design.actions.replace.action.content.formula; import com.fr.design.actions.replace.action.SearchAction; +import com.fr.design.actions.replace.action.SearchManager; import com.fr.design.actions.replace.action.content.formula.cell.SearchCellFormulaAction; import com.fr.design.actions.replace.action.content.formula.data.SearchDataFormulaAction; import com.fr.design.actions.replace.action.content.formula.floatelement.SearchFloatFormulaAction; @@ -26,11 +27,11 @@ public class SearchFormulaManager implements SearchAction { private Set formulaProviderSet = new HashSet<>(); private SearchFormulaManager() { - registerFormula(SearchCellFormulaAction.getInstance()); - registerFormula(SearchWidgetFormulaAction.getInstance()); - registerFormula(SearchDataFormulaAction.getInstance()); - registerFormula(SearchTemplateFormulaAction.getInstance()); - registerFormula(SearchFloatFormulaAction.getInstance()); + register(SearchCellFormulaAction.getInstance()); + register(SearchWidgetFormulaAction.getInstance()); + register(SearchDataFormulaAction.getInstance()); + register(SearchTemplateFormulaAction.getInstance()); + register(SearchFloatFormulaAction.getInstance()); } @Override @@ -47,7 +48,7 @@ public class SearchFormulaManager implements SearchAction { * * @param searchFormula */ - public void registerFormula(SearchFormula searchFormula) { + public void register(SearchFormula searchFormula) { formulaProviderSet.add(searchFormula); } @@ -56,7 +57,7 @@ public class SearchFormulaManager implements SearchAction { * * @param searchFormula */ - public void removeFormula(SearchFormula searchFormula) { + public void remove(SearchFormula searchFormula) { formulaProviderSet.remove(searchFormula); } @@ -83,7 +84,7 @@ public class SearchFormulaManager implements SearchAction { /** * 枚举实现单例 */ - enum SearchFormulaManagerEnum { + private enum SearchFormulaManagerEnum { /** * 单例 */ diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java index f4fc869cd0..3882d7721e 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java @@ -4,7 +4,6 @@ import com.fr.base.Formula; import com.fr.base.present.DictPresent; import com.fr.base.present.FormulaPresent; import com.fr.chart.chartattr.ChartCollection; -import com.fr.data.impl.DatabaseDictionary; import com.fr.design.actions.replace.action.content.cell.SearchCellAction; import com.fr.design.actions.replace.action.content.formula.chart.SearchChartCollectionFormulaAction; import com.fr.design.actions.replace.action.content.formula.highlight.condition.*; @@ -17,7 +16,6 @@ import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.JTemplate; -import com.fr.form.ui.DictionaryContainer; import com.fr.general.data.Condition; import com.fr.js.NameJavaScriptGroup; import com.fr.report.cell.CellElement; @@ -28,7 +26,6 @@ import com.fr.report.cell.cellattr.highlight.HighlightGroup; import com.fr.report.core.sort.common.CellSortAttr; import com.fr.report.core.sort.sortexpression.FormulaSortExpression; import com.fr.report.core.sort.sortexpression.SortExpression; -import sun.security.krb5.SCDynamicStoreConfig; import java.util.HashMap; import java.util.List; @@ -44,23 +41,6 @@ import java.util.Map; public class SearchCellFormulaAction implements SearchCellFormula { - public static HashMap cellType = new HashMap<>(); - - static { - cellType.put("DSColumn", new SearchDSColumnFormulaAction()); - cellType.put("Formula", new SearchCellFormulaTypeAction()); - cellType.put("RichText", new SearchRichFormulaAction()); - cellType.put("SubReport", new SearchSubReportFormulaAction()); - } - - public static HashMap conditionHashMap = new HashMap<>(); - - static { - conditionHashMap.put("FormulaCondition", new SearchFormulaConditionAction()); - conditionHashMap.put("ObjectCondition", new SearchObjectConditionAction()); - conditionHashMap.put("ListCondition", new SearchListConditionAction()); - } - private SearchCellFormulaAction() { } @@ -108,7 +88,7 @@ public class SearchCellFormulaAction implements SearchCellFormula { NameJavaScriptGroup nameJavaScriptGroup = ((CellElement) cellInfo.getContent().getReplaceObject()).getNameHyperlinkGroup(); if (nameJavaScriptGroup != null) { for (int i = 0; i < nameJavaScriptGroup.size(); i++) { - SearchJSHighlightAction action = new SearchJSHighlightAction(); + SearchJSHighlightAction action = SearchJSHighlightAction.getInstance(); ITContent content = ITContent.copy(cellInfo.getContent()); content.addOtherPos(nameJavaScriptGroup.getNameHyperlink(i).getName()); action.searchJSFormulaFromOther(formulaInfos, content, nameJavaScriptGroup.getNameHyperlink(i).getJavaScript()); @@ -124,7 +104,7 @@ public class SearchCellFormulaAction implements SearchCellFormula { for (int j = 0; j < ((DefaultHighlight) highlightGroup.getHighlight(i)).actionCount(); j++) { HighlightAction highlightAction = ((DefaultHighlight) highlightGroup.getHighlight(i)).getHighlightAction(j); //处理HighlightAction - SearchHighlightFormulaAction searchHighlightAction = new SearchHighlightFormulaAction(); + SearchHighlightFormulaAction searchHighlightAction = SearchHighlightFormulaAction.getInstance(); ITContent newContent = ITContent.copy(cellInfo.getContent()); searchHighlightAction.dealWithHighlightAction(newContent, formulaInfos, highlightAction); } @@ -138,7 +118,8 @@ public class SearchCellFormulaAction implements SearchCellFormula { for (int i = 0; i < highlightGroup.size(); i++) { DefaultHighlight defaultHighlight = (DefaultHighlight) highlightGroup.getHighlight(i); if (isConditionKeyExist(defaultHighlight.getCondition())) { - SearchConditionFormula searchCondition = conditionHashMap.get(((DefaultHighlight) highlightGroup.getHighlight(i)).getCondition().getClass().getSimpleName()); + Map conditionType = SearchConditionManager.getInstance().getConditionType(); + SearchConditionFormula searchCondition = conditionType.get(((DefaultHighlight) highlightGroup.getHighlight(i)).getCondition().getClass().getSimpleName()); ITContent newContent = ITContent.copy(cellInfo.getContent()); newContent.addOtherPos( Toolkit.i18nText("Fine-Design_Basic_Condition_Attributes"), @@ -154,7 +135,8 @@ public class SearchCellFormulaAction implements SearchCellFormula { } private boolean isConditionKeyExist(Condition condition) { - return conditionHashMap.containsKey(condition.getClass().getSimpleName()); + + return SearchConditionManager.getInstance().getConditionType().containsKey(condition.getClass().getSimpleName()); } @@ -241,14 +223,16 @@ public class SearchCellFormulaAction implements SearchCellFormula { } private void searchFormulaFromCellInfo(CellInfo cellInfo, List formulaInfos) { + Map cellType = SearchCellFormulaManager.getInstance().getCellType(); + CellElement cellElement = ((CellElement) (cellInfo.getContent().getReplaceObject())); if (isCellValueValid(cellInfo)) { - SearchCellFormula searchCellFormula = cellType.get(((CellElement) (cellInfo.getContent().getReplaceObject())).getValue().getClass().getSimpleName()); + SearchCellFormula searchCellFormula = cellType.get(cellElement.getValue().getClass().getSimpleName()); searchCellFormula.searchFormulaFromCellType(formulaInfos, cellInfo.getContent()); } else if (isChart(cellInfo)) { ITContent chartContent = cellInfo.getContent(); //这边置否的原因是决策报表里面单元格里面放的图表是可以有多个的,每个还是有各自的名字,和普通报表一样处理即可 chartContent.setFrmFlag(false); - SearchChartCollectionFormulaAction.getInstance().searchChartCollectionFormula(formulaInfos, cellInfo.getContent(), (ChartCollection) ((CellElement) (cellInfo.getContent().getReplaceObject())).getValue()); + SearchChartCollectionFormulaAction.getInstance().searchChartCollectionFormula(formulaInfos, cellInfo.getContent(), (ChartCollection) cellElement.getValue()); } } @@ -258,6 +242,7 @@ public class SearchCellFormulaAction implements SearchCellFormula { } private boolean isCellValueValid(CellInfo cellInfo) { + Map cellType = SearchCellFormulaManager.getInstance().getCellType(); return ((CellElement) (cellInfo.getContent().getReplaceObject())).getValue() != null && cellType.containsKey(((CellElement) (cellInfo.getContent().getReplaceObject())).getValue().getClass().getSimpleName()); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaManager.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaManager.java new file mode 100644 index 0000000000..eee99bf203 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaManager.java @@ -0,0 +1,110 @@ +package com.fr.design.actions.replace.action.content.formula.cell; + +import com.fr.design.actions.replace.action.SearchAction; +import com.fr.design.actions.replace.action.SearchManager; + +import java.util.HashMap; +import java.util.Map; + +/** + * 管理要搜索的单元格类型(公式) + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-16 + */ +public class SearchCellFormulaManager implements SearchManager { + private Map cellType = new HashMap<>(); + public static final String DS_COLUMN = "DSColumn"; + public static final String FORMULA = "Formula"; + public static final String RICH_TEXT = "RichText"; + public static final String SUB_REPORT = "SubReport"; + + private SearchCellFormulaManager() { + //数据列 + register(DS_COLUMN, SearchDSColumnFormulaAction.getInstance()); + //公式 + register(FORMULA, SearchCellFormulaTypeAction.getInstance()); + //富文本 + register(RICH_TEXT, SearchRichFormulaAction.getInstance()); + //子报表 + register(SUB_REPORT, SearchSubReportFormulaAction.getInstance()); + + } + + @Override + public void registerAction(String tag, SearchAction searchAction) { + if (searchAction instanceof SearchCellFormula){ + register(tag, (SearchCellFormula) searchAction); + } + + } + + @Override + public void removeAction(String tag) { + remove(tag); + } + + /** + * 注册 + * + * @param tag 用于匹配的类型tag + * @param searchCellFormula 对应的实现类 + */ + private void register(String tag, SearchCellFormula searchCellFormula) { + cellType.put(tag, searchCellFormula); + } + + /** + * 注销 + * + * @param tag 用于匹配的tag + */ + private void remove(String tag) { + cellType.remove(tag); + } + + /** + * 获取单元格类型 + * + * @return + */ + public Map getCellType() { + return cellType; + } + + /** + * 对外开放的获取单例对象的方法 + * + * @return + */ + public static SearchCellFormulaManager getInstance() { + return SearchCellFormulaManagerEnum.SINGLETON.getInstance(); + } + + + + /** + * 枚举实现单例 + */ + private enum SearchCellFormulaManagerEnum { + /** + * 单例 + */ + SINGLETON; + private SearchCellFormulaManager instance; + + SearchCellFormulaManagerEnum() { + instance = new SearchCellFormulaManager(); + } + + /** + * 获取单例对象 + * + * @return + */ + public SearchCellFormulaManager getInstance() { + return instance; + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaTypeAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaTypeAction.java index d857ecc7ed..aed99da757 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaTypeAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaTypeAction.java @@ -17,6 +17,8 @@ import java.util.List; public class SearchCellFormulaTypeAction implements SearchCellFormula { + private SearchCellFormulaTypeAction(){} + @Override public void searchFormulaFromCellType(List formulaInfos, ITContent content) { ITContent newContent = ITContent.copy(content); @@ -24,4 +26,37 @@ public class SearchCellFormulaTypeAction implements SearchCellFormula { newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Formula")); formulaInfos.add(new FormulaInfo(newContent)); } + + /** + * 获取单例 + * + * @return + */ + public static SearchCellFormulaTypeAction getInstance() { + return SearchCellFormulaTypeActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchCellFormulaTypeActionEnum { + /** + * 单例实现 + */ + SINGLETON; + private SearchCellFormulaTypeAction instance; + + SearchCellFormulaTypeActionEnum() { + instance = new SearchCellFormulaTypeAction(); + } + + /** + * 拿到对象 + * + * @return + */ + public SearchCellFormulaTypeAction getInstance() { + return instance; + } + } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchDSColumnFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchDSColumnFormulaAction.java index a2d9afea84..0048c84563 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchDSColumnFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchDSColumnFormulaAction.java @@ -4,6 +4,7 @@ import com.fr.base.Formula; import com.fr.base.Parameter; import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchCommonConditionAction; import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchConditionFormula; +import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchConditionManager; import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchFormulaConditionAction; import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchListConditionAction; import com.fr.design.actions.replace.info.FormulaInfo; @@ -18,6 +19,7 @@ import com.fr.report.core.sort.sortexpression.SortExpression; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 查找公式时单元格格式如果是数据列型则操作此类 @@ -27,35 +29,35 @@ import java.util.List; * created by Destiny.Lin on 2022-08-18 */ public class SearchDSColumnFormulaAction implements SearchCellFormula { - public static HashMap conditionHashMap = new HashMap<>(); - static { - conditionHashMap.put("FormulaCondition", new SearchFormulaConditionAction()); - conditionHashMap.put("CommonCondition", new SearchCommonConditionAction()); - conditionHashMap.put("ListCondition", new SearchListConditionAction()); - } + private SearchDSColumnFormulaAction(){} + @Override public void searchFormulaFromCellType(List formulaInfos, ITContent itContent) { - if (((CellElement) (itContent.getReplaceObject())).getValue() instanceof DSColumn) { - if (((DSColumn) ((CellElement) (itContent.getReplaceObject())).getValue()).getCondition() != null) { - ITContent content = ITContent.copy(itContent); - //数据列 - content.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_DS_Column")); - DSColumn dsColumn = (DSColumn) ((CellElement) (itContent.getReplaceObject())).getValue(); - //过滤条件中的公式 - addFormulaInfos2ArrayFromCondition(content, dsColumn.getCondition(), formulaInfos); - //动态参数中的公式 - addFormulaInfos2ArrayFromPara(content, dsColumn, formulaInfos); - //高级-排序中的公式 - addFormulaInfos2ArrayFromSortExpression(content, dsColumn, formulaInfos); - //高级-显示值中的公式 - addFormulaInfos2ArrayFromResult(content, dsColumn, formulaInfos); + if (itContent.getReplaceObject() instanceof CellElement){ + CellElement cellElement = (CellElement) itContent.getReplaceObject(); + if (cellElement.getValue() instanceof DSColumn) { + if (((DSColumn) cellElement.getValue()).getCondition() != null) { + ITContent content = ITContent.copy(itContent); + //数据列 + content.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_DS_Column")); + DSColumn dsColumn = (DSColumn) ((CellElement) (itContent.getReplaceObject())).getValue(); + //过滤条件中的公式 + addFormulaInfos2ArrayFromCondition(content, dsColumn.getCondition(), formulaInfos); + //动态参数中的公式 + addFormulaInfos2ArrayFromPara(content, dsColumn, formulaInfos); + //高级-排序中的公式 + addFormulaInfos2ArrayFromSortExpression(content, dsColumn, formulaInfos); + //高级-显示值中的公式 + addFormulaInfos2ArrayFromResult(content, dsColumn, formulaInfos); - } + } + } } + } private void addFormulaInfos2ArrayFromResult(ITContent content, DSColumn dsColumn, List formulaInfos) { @@ -109,11 +111,49 @@ public class SearchDSColumnFormulaAction implements SearchCellFormula { */ private void addFormulaInfos2ArrayFromCondition(ITContent content, Condition condition, List formulaInfos) { //这边condition有三种情况:FormulaCondition、CommonCondition、ListCondition,分别处理 - SearchConditionFormula searchCondition = conditionHashMap.get(condition.getClass().getSimpleName()); - ITContent newContent = ITContent.copy(content); - //过滤条件 - newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Report_Filter_Conditions")); - searchCondition.searchFormulaFromCondition(formulaInfos, newContent, condition); + Map conditionType = SearchConditionManager.getInstance().getConditionType(); + if (conditionType.containsKey(condition.getClass().getSimpleName())){ + SearchConditionFormula searchCondition = conditionType.get(condition.getClass().getSimpleName()); + ITContent newContent = ITContent.copy(content); + //过滤条件 + newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Report_Filter_Conditions")); + searchCondition.searchFormulaFromCondition(formulaInfos, newContent, condition); + } + + + } + + /** + * 获取单例 + * + * @return + */ + public static SearchDSColumnFormulaAction getInstance() { + return SearchDSColumnFormulaActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchDSColumnFormulaActionEnum { + /** + * 单例实现 + */ + SINGLETON; + private SearchDSColumnFormulaAction instance; + + SearchDSColumnFormulaActionEnum() { + instance = new SearchDSColumnFormulaAction(); + } + + /** + * 拿到对象 + * + * @return + */ + public SearchDSColumnFormulaAction getInstance() { + return instance; + } } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchRichFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchRichFormulaAction.java index c80c7a610f..c6a63e9bdc 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchRichFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchRichFormulaAction.java @@ -2,10 +2,13 @@ package com.fr.design.actions.replace.action.content.formula.cell; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.actions.replace.utils.ShowValueUtils; import com.fr.design.i18n.Toolkit; import com.fr.report.cell.CellElement; +import com.fr.report.cell.cellattr.core.RichChar; import com.fr.report.cell.cellattr.core.RichText; +import java.util.Iterator; import java.util.List; /** @@ -17,20 +20,61 @@ import java.util.List; */ public class SearchRichFormulaAction implements SearchCellFormula { + private SearchRichFormulaAction() { + } + + @Override public void searchFormulaFromCellType(List formulaInfos, ITContent content) { - //todo 富文本这边直接遍历RichChar来拿公式 - String contain = "${"; - if (((RichText) ((CellElement) (content.getReplaceObject())).getValue()).getContent().contains(contain)) { - ITContent newContent = ITContent.copy(content); - newContent.setReplaceObject(((CellElement) (content.getReplaceObject())).getValue()); - newContent.addOtherPos( - Toolkit.i18nText("Fine-Design_Chart_Rich_Text"), - Toolkit.i18nText("Fine-Design_Basic_Formula") - ); - formulaInfos.add(new FormulaInfo(newContent)); + RichText richText = ((RichText) ((CellElement) (content.getReplaceObject())).getValue()); + Iterator it = richText.charIterator(); + while (it.hasNext()) { + RichChar richChar = it.next(); + if (richChar.isFormula()) { + ITContent newContent = ITContent.copy(content); + newContent.setReplaceObject(richChar); + newContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Chart_Rich_Text"), + Toolkit.i18nText("Fine-Design_Basic_Formula") + ); + formulaInfos.add(new FormulaInfo(newContent)); + } } + } + + + /** + * 获取单例 + * + * @return + */ + public static SearchRichFormulaAction getInstance() { + return SearchRichFormulaActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchRichFormulaActionEnum { + /** + * 单例实现 + */ + SINGLETON; + private SearchRichFormulaAction instance; + SearchRichFormulaActionEnum() { + instance = new SearchRichFormulaAction(); + } + /** + * 拿到对象 + * + * @return + */ + public SearchRichFormulaAction getInstance() { + return instance; + } } + + } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchSubReportFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchSubReportFormulaAction.java index 758b7a6388..36c86b29ac 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchSubReportFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchSubReportFormulaAction.java @@ -18,6 +18,10 @@ import java.util.List; * created by Destiny.Lin on 2022-08-18 */ public class SearchSubReportFormulaAction implements SearchCellFormula { + + private SearchSubReportFormulaAction() { + } + @Override public void searchFormulaFromCellType(List formulaInfos, ITContent content) { KV[] kvs = ((SubReport) (((CellElement) content.getReplaceObject()).getValue())).getParameterKVS(); @@ -28,8 +32,39 @@ public class SearchSubReportFormulaAction implements SearchCellFormula { newContent.setReplaceObject(kv); formulaInfos.add(new FormulaInfo(newContent)); } + } + } + /** + * 对外开放的获取单例对象的方法 + * + * @return + */ + public static SearchSubReportFormulaAction getInstance() { + return SearchSubReportFormulaActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchSubReportFormulaActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchSubReportFormulaAction instance; + + SearchSubReportFormulaActionEnum() { + instance = new SearchSubReportFormulaAction(); } + /** + * 获取单例对象 + * + * @return + */ + public SearchSubReportFormulaAction getInstance() { + return instance; + } } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java index c2157241b9..15da2cd842 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java @@ -25,7 +25,7 @@ import java.util.List; public class SearchChartCollectionFormulaAction { - public SearchChartCollectionFormulaAction() { + private SearchChartCollectionFormulaAction() { } /** @@ -235,7 +235,7 @@ public class SearchChartCollectionFormulaAction { /** * 枚举实现单例 */ - enum SearchChartCollectionFormulaActionEnum { + private enum SearchChartCollectionFormulaActionEnum { /** * 单例 */ diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/DataType.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/DataType.java index a794ab1df3..bece3ef101 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/DataType.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/DataType.java @@ -9,6 +9,7 @@ import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; import com.fr.stable.ParameterProvider; import com.fr.stable.StringUtils; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; @@ -106,6 +107,7 @@ public enum DataType { * @param name * @return */ + @Nullable public static DataType match(String name) { DataType[] values = DataType.values(); for (DataType value : values) { diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormulaAction.java index bf58d26ed9..5cc7acc229 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormulaAction.java @@ -90,7 +90,7 @@ public class SearchDataFormulaAction implements SearchFormula { /** * 枚举实现单例 */ - enum SearchDataFormulaActionEnum { + private enum SearchDataFormulaActionEnum { /** * 单例 */ diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/SearchFloatFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/SearchFloatFormulaAction.java index 6abb748d19..e71fad6889 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/SearchFloatFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/SearchFloatFormulaAction.java @@ -44,7 +44,7 @@ public class SearchFloatFormulaAction implements SearchFloatFormula { NameJavaScriptGroup nameJavaScriptGroup = ((FloatElement) floatInfo.getContent().getReplaceObject()).getNameHyperlinkGroup(); if (nameJavaScriptGroup != null) { for (int i = 0; i < nameJavaScriptGroup.size(); i++) { - SearchJSHighlightAction action = new SearchJSHighlightAction(); + SearchJSHighlightAction action = SearchJSHighlightAction.getInstance(); action.searchJSFormulaFromOther(formulaInfos, floatInfo.getContent(), nameJavaScriptGroup.getNameHyperlink(i).getJavaScript()); } } @@ -133,7 +133,7 @@ public class SearchFloatFormulaAction implements SearchFloatFormula { /** * 单例实现枚举 */ - enum SearchFloatFormulaActionEnum { + private enum SearchFloatFormulaActionEnum { /** * 单例 */ diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaAction.java index 7c83563bf1..0ce61c0a9d 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaAction.java @@ -8,6 +8,7 @@ import com.fr.report.cell.cellattr.highlight.HighlightAction; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 处理条件属性中各种属性的公式(超级链接、控件...) @@ -17,23 +18,50 @@ import java.util.List; * created by Destiny.Lin on 2022-08-18 */ public class SearchHighlightFormulaAction implements SearchHighlightFormula { - public static HashMap highlightHashMap = new HashMap<>(); - - static { - //这边控件类型不做处理,在SearchWidgetFormulaAction统一处理即可 - //条件属性-超级链接 - highlightHashMap.put("HyperlinkHighlightAction", new SearchJSHighlightAction()); - //条件属性-... - // TODO: 2022/9/14 条件属性的其他类型 - } + private SearchHighlightFormulaAction() { + } @Override public void dealWithHighlightAction(ITContent content, List formulaInfos, HighlightAction highlightAction) { - if (highlightHashMap.containsKey(highlightAction.getClass().getSimpleName())) { - SearchHighlightFormula searchHighlight = highlightHashMap.get(highlightAction.getClass().getSimpleName()); + Map highlightType = SearchHighlightFormulaManager.getInstance().getHighlightType(); + if (highlightType.containsKey(highlightAction.getClass().getSimpleName())) { + SearchHighlightFormula searchHighlight = highlightType.get(highlightAction.getClass().getSimpleName()); searchHighlight.dealWithHighlightAction(content, formulaInfos, highlightAction); } } + + /** + * 对外开放的获取单例对象的方法 + * + * @return + */ + public static SearchHighlightFormulaAction getInstance() { + return SearchHighlightFormulaActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchHighlightFormulaActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchHighlightFormulaAction instance; + + SearchHighlightFormulaActionEnum() { + instance = new SearchHighlightFormulaAction(); + } + + /** + * 获取单例对象 + * + * @return + */ + public SearchHighlightFormulaAction getInstance() { + return instance; + } + } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaManager.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaManager.java new file mode 100644 index 0000000000..bf05d46066 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaManager.java @@ -0,0 +1,105 @@ +package com.fr.design.actions.replace.action.content.formula.highlight; + +import com.fr.design.actions.replace.action.SearchAction; +import com.fr.design.actions.replace.action.SearchManager; +import com.fr.design.actions.replace.action.content.formula.cell.SearchCellFormula; +import com.fr.design.actions.replace.action.content.formula.cell.SearchCellFormulaManager; +import com.fr.design.actions.replace.action.content.formula.highlight.javascript.SearchJSHighlightAction; + +import java.util.HashMap; +import java.util.Map; + +/** + * 管理要搜索的条件属性类型(公式) + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-16 + */ +public class SearchHighlightFormulaManager implements SearchManager { + private Map highlightType = new HashMap<>(); + public static final String HYPERLINK_HIGHLIGHT_ACTION = "HyperlinkHighlightAction"; + private SearchHighlightFormulaManager() { + //这边控件类型不做处理,在SearchWidgetFormulaAction统一处理即可 + //条件属性-超级链接 + register(HYPERLINK_HIGHLIGHT_ACTION, SearchJSHighlightAction.getInstance()); + //条件属性-... + // TODO: 2022/9/14 条件属性的其他类型 + } + + + + @Override + public void registerAction(String tag, SearchAction searchAction) { + if (searchAction instanceof SearchHighlightFormula){ + register(tag, (SearchHighlightFormula) searchAction); + } + } + + @Override + public void removeAction(String tag) { + remove(tag); + } + + /** + * 注册 + * + * @param tag 用于匹配的类型tag + * @param searchHighlightFormula 对应的实现类 + */ + private void register(String tag, SearchHighlightFormula searchHighlightFormula) { + highlightType.put(tag, searchHighlightFormula); + } + + /** + * 注销 + * + * @param tag 用于匹配的tag + */ + private void remove(String tag) { + highlightType.remove(tag); + } + + /** + * 获取单元格类型 + * + * @return + */ + public Map getHighlightType() { + return highlightType; + } + + /** + * 对外开放的获取单例对象的方法 + * + * @return + */ + public static SearchHighlightFormulaManager getInstance() { + return SearchHighlightFormulaManagerEnum.SINGLETON.getInstance(); + } + + + /** + * 枚举实现单例 + */ + private enum SearchHighlightFormulaManagerEnum { + /** + * 单例 + */ + SINGLETON; + private SearchHighlightFormulaManager instance; + + SearchHighlightFormulaManagerEnum() { + instance = new SearchHighlightFormulaManager(); + } + + /** + * 获取单例对象 + * + * @return + */ + public SearchHighlightFormulaManager getInstance() { + return instance; + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchCommonConditionAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchCommonConditionAction.java index 8439b27e00..ddcda65b02 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchCommonConditionAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchCommonConditionAction.java @@ -16,12 +16,51 @@ import java.util.List; * created by Destiny.Lin on 2022-08-17 */ public class SearchCommonConditionAction implements SearchConditionFormula { + + private SearchCommonConditionAction() { + } + @Override public void searchFormulaFromCondition(List formulaInfos, ITContent content, Condition condition) { - if (((CommonCondition) condition).getCompare().getValue() != null && ((CommonCondition) condition).getCompare().getValue() instanceof Formula) { + if (((CommonCondition) condition).getCompare().getValue() instanceof Formula) { ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(((CommonCondition) condition).getCompare()); formulaInfos.add(new FormulaInfo(newContent)); } } + + + + /** + * 获取单例 + * + * @return + */ + public static SearchCommonConditionAction getInstance() { + return SearchCommonConditionActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchCommonConditionActionEnum { + /** + * 单例实现 + */ + SINGLETON; + private SearchCommonConditionAction instance; + + SearchCommonConditionActionEnum() { + instance = new SearchCommonConditionAction(); + } + + /** + * 拿到对象 + * + * @return + */ + public SearchCommonConditionAction getInstance() { + return instance; + } + } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchConditionManager.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchConditionManager.java new file mode 100644 index 0000000000..e886f26c8d --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchConditionManager.java @@ -0,0 +1,103 @@ +package com.fr.design.actions.replace.action.content.formula.highlight.condition; + + +import com.fr.design.actions.replace.action.SearchAction; +import com.fr.design.actions.replace.action.SearchManager; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-16 + */ +public class SearchConditionManager implements SearchManager { + private Map conditionType = new HashMap<>(); + public static final String FORMULA_CONDITION = "FormulaCondition"; + public static final String OBJECT_CONDITION = "ObjectCondition"; + public static final String LIST_CONDITION = "ListCondition"; + public static final String COMMON_CONDITION = "CommonCondition"; + + private SearchConditionManager() { + register(FORMULA_CONDITION, SearchFormulaConditionAction.getInstance()); + register(OBJECT_CONDITION, SearchObjectConditionAction.getInstance()); + register(LIST_CONDITION, SearchListConditionAction.getInstance()); + register(COMMON_CONDITION, SearchCommonConditionAction.getInstance()); + } + + @Override + public void registerAction(String tag, SearchAction searchAction) { + if (searchAction instanceof SearchConditionFormula){ + register(tag, (SearchConditionFormula) searchAction); + } + } + + @Override + public void removeAction(String tag) { + remove(tag); + } + + + /** + * 注册 + * + * @param tag 用于匹配的类型tag + * @param searchConditionFormula 对应的实现类 + */ + private void register(String tag, SearchConditionFormula searchConditionFormula) { + conditionType.put(tag, searchConditionFormula); + } + + /** + * 注销 + * + * @param tag 用于匹配的tag + */ + private void remove(String tag) { + conditionType.remove(tag); + } + + /** + * 获取类型 + * @return + */ + public Map getConditionType(){ + return conditionType; + } + + /** + * 对外开放的获取单例对象的方法 + * + * @return + */ + public static SearchConditionManager getInstance() { + return SearchConditionManagerEnum.SINGLETON.getInstance(); + } + + + /** + * 枚举实现单例 + */ + private enum SearchConditionManagerEnum { + /** + * 单例 + */ + SINGLETON; + private SearchConditionManager instance; + + SearchConditionManagerEnum() { + instance = new SearchConditionManager(); + } + + /** + * 获取单例对象 + * + * @return + */ + public SearchConditionManager getInstance() { + return instance; + } + } + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchFormulaConditionAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchFormulaConditionAction.java index b1800d7fa8..c668ea7679 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchFormulaConditionAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchFormulaConditionAction.java @@ -1,6 +1,7 @@ package com.fr.design.actions.replace.action.content.formula.highlight.condition; import com.fr.data.condition.FormulaCondition; +import com.fr.design.actions.replace.action.content.formula.cell.SearchCellFormulaTypeAction; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; @@ -16,6 +17,12 @@ import java.util.List; * created by Destiny.Lin on 2022-08-17 */ public class SearchFormulaConditionAction implements SearchConditionFormula { + + private SearchFormulaConditionAction() { + } + + + @Override public void searchFormulaFromCondition(List formulaInfos, ITContent content, Condition condition) { if (((FormulaCondition) (condition)).getFormula() != null) { @@ -23,6 +30,38 @@ public class SearchFormulaConditionAction implements SearchConditionFormula { newContent.setReplaceObject(condition); formulaInfos.add(new FormulaInfo(newContent)); } + } + + /** + * 获取单例 + * + * @return + */ + public static SearchFormulaConditionAction getInstance() { + return SearchFormulaConditionActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchFormulaConditionActionEnum { + /** + * 单例实现 + */ + SINGLETON; + private SearchFormulaConditionAction instance; + + SearchFormulaConditionActionEnum() { + instance = new SearchFormulaConditionAction(); + } + /** + * 拿到对象 + * + * @return + */ + public SearchFormulaConditionAction getInstance() { + return instance; + } } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchListConditionAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchListConditionAction.java index bed57a65e1..374062c452 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchListConditionAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchListConditionAction.java @@ -19,20 +19,58 @@ import java.util.List; * created by Destiny.Lin on 2022-08-17 */ public class SearchListConditionAction implements SearchConditionFormula { + + private SearchListConditionAction() { + } + @Override public void searchFormulaFromCondition(List formulaInfos, ITContent content, Condition condition) { for (int i = 0; i < ((ListCondition) condition).getJoinConditionCount(); i++) { Condition joinCondition = ((ListCondition) condition).getJoinCondition(i).getCondition(); if (joinCondition instanceof CommonCondition) { - SearchCommonConditionAction commonConditionAction = new SearchCommonConditionAction(); + SearchCommonConditionAction commonConditionAction = SearchCommonConditionAction.getInstance(); commonConditionAction.searchFormulaFromCondition(formulaInfos, content, joinCondition); } else if (joinCondition instanceof FormulaCondition) { - SearchFormulaConditionAction formulaConditionAction = new SearchFormulaConditionAction(); + SearchFormulaConditionAction formulaConditionAction = SearchFormulaConditionAction.getInstance(); formulaConditionAction.searchFormulaFromCondition(formulaInfos, content, joinCondition); } else if (joinCondition instanceof ObjectCondition) { - SearchObjectConditionAction objectConditionAction = new SearchObjectConditionAction(); + SearchObjectConditionAction objectConditionAction = SearchObjectConditionAction.getInstance(); objectConditionAction.searchFormulaFromCondition(formulaInfos, content, joinCondition); } } } + + + /** + * 获取单例 + * + * @return + */ + public static SearchListConditionAction getInstance() { + return SearchListConditionActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchListConditionActionEnum { + /** + * 单例实现 + */ + SINGLETON; + private SearchListConditionAction instance; + + SearchListConditionActionEnum() { + instance = new SearchListConditionAction(); + } + + /** + * 拿到对象 + * + * @return + */ + public SearchListConditionAction getInstance() { + return instance; + } + } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchObjectConditionAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchObjectConditionAction.java index 51b4c64afb..3d9752ef5b 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchObjectConditionAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchObjectConditionAction.java @@ -16,6 +16,11 @@ import java.util.List; * created by Destiny.Lin on 2022-08-18 */ public class SearchObjectConditionAction implements SearchConditionFormula { + + + private SearchObjectConditionAction() { + } + @Override public void searchFormulaFromCondition(List formulaInfos, ITContent content, Condition condition) { if (((ObjectCondition) condition).getCompare().getValue() != null && ((ObjectCondition) condition).getCompare().getValue() instanceof Formula) { @@ -24,4 +29,37 @@ public class SearchObjectConditionAction implements SearchConditionFormula { formulaInfos.add(new FormulaInfo(newContent)); } } + + /** + * 获取单例 + * + * @return + */ + public static SearchObjectConditionAction getInstance() { + return SearchObjectConditionActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchObjectConditionActionEnum { + /** + * 单例实现 + */ + SINGLETON; + private SearchObjectConditionAction instance; + + SearchObjectConditionActionEnum() { + instance = new SearchObjectConditionAction(); + } + + /** + * 拿到对象 + * + * @return + */ + public SearchObjectConditionAction getInstance() { + return instance; + } + } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java index 6020908125..76ad5ee2bb 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java @@ -1,9 +1,7 @@ package com.fr.design.actions.replace.action.content.formula.highlight.javascript; -import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchCommonConditionAction; import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchConditionFormula; -import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchFormulaConditionAction; -import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchListConditionAction; +import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchConditionManager; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; @@ -14,9 +12,8 @@ import com.fr.write.DBManipulation; import com.fr.write.DMLConfigJob; import com.fr.write.config.DMLConfig; -import java.util.ArrayList; -import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 获取提交入库中的公式 @@ -27,12 +24,7 @@ import java.util.List; */ public class SearchCommit2DBJSFormulaAction implements SearchJSFormula { - public static HashMap conditionHashMap = new HashMap<>(); - - static { - conditionHashMap.put("FormulaCondition", new SearchFormulaConditionAction()); - conditionHashMap.put("CommonCondition", new SearchCommonConditionAction()); - conditionHashMap.put("ListCondition", new SearchListConditionAction()); + private SearchCommit2DBJSFormulaAction() { } @Override @@ -70,12 +62,12 @@ public class SearchCommit2DBJSFormulaAction implements SearchJSFormula { private void dealWithCallBack(List formulaInfos, ITContent content, Commit2DBJavaScript javaScript) { if (javaScript.getCallBack() != null) { - SearchJSHighlightAction SJSA = new SearchJSHighlightAction(); + SearchJSHighlightAction jsHighlightAction = SearchJSHighlightAction.getInstance(); ITContent newContent = ITContent.copy(content); newContent.addOtherPos( Toolkit.i18nText("Fine-Design_Basic_Set_Callback_Function") ); - SJSA.searchJSFormulaFromOther(formulaInfos, newContent, javaScript.getCallBack()); + jsHighlightAction.searchJSFormulaFromOther(formulaInfos, newContent, javaScript.getCallBack()); } } @@ -84,14 +76,51 @@ public class SearchCommit2DBJSFormulaAction implements SearchJSFormula { if (dmlConfig.getCondition() != null) { //这边condition有三种情况:FormulaCondition、CommonCondition、ListCondition,分别处理 Condition condition = dmlConfig.getCondition(); - SearchConditionFormula searchCondition = conditionHashMap.get(condition.getClass().getSimpleName()); - ITContent newContent = ITContent.copy(content); - newContent.addOtherPos( - Toolkit.i18nText("Fine-Design_Basic_Submit_Condition") - ); - searchCondition.searchFormulaFromCondition(formulaInfos, newContent, condition); + Map conditionType = SearchConditionManager.getInstance().getConditionType(); + if (conditionType.containsKey(condition.getClass().getSimpleName())) { + SearchConditionFormula searchCondition = conditionType.get(condition.getClass().getSimpleName()); + ITContent newContent = ITContent.copy(content); + newContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_Submit_Condition") + ); + searchCondition.searchFormulaFromCondition(formulaInfos, newContent, condition); + } + } } + /** + * 获取单例 + * + * @return + */ + public static SearchCommit2DBJSFormulaAction getInstance() { + return SearchCommit2DBJSFormulaActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchCommit2DBJSFormulaActionEnum { + /** + * 单例实现 + */ + SINGLETON; + private SearchCommit2DBJSFormulaAction instance; + + SearchCommit2DBJSFormulaActionEnum() { + instance = new SearchCommit2DBJSFormulaAction(); + } + + /** + * 拿到对象 + * + * @return + */ + public SearchCommit2DBJSFormulaAction getInstance() { + return instance; + } + } + } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchExportJSFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchExportJSFormulaAction.java index 61e1c14a19..44750feec9 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchExportJSFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchExportJSFormulaAction.java @@ -18,6 +18,10 @@ import java.util.List; * created by Destiny.Lin on 2022-08-19 */ public class SearchExportJSFormulaAction implements SearchJSFormula { + + private SearchExportJSFormulaAction() { + } + @Override public void searchJSFormulaFromOther(List formulaInfos, ITContent content, JavaScript javaScript) { //如果导出当前模板,可以存公式的地方就是命名方式-自定义 @@ -48,4 +52,37 @@ public class SearchExportJSFormulaAction implements SearchJSFormula { formulaInfos.add(new FormulaInfo(newContent)); } } + + /** + * 获取单例 + * + * @return + */ + public static SearchExportJSFormulaAction getInstance() { + return SearchExportJSFormulaActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchExportJSFormulaActionEnum { + /** + * 单例实现 + */ + SINGLETON; + private SearchExportJSFormulaAction instance; + + SearchExportJSFormulaActionEnum() { + instance = new SearchExportJSFormulaAction(); + } + + /** + * 拿到对象 + * + * @return + */ + public SearchExportJSFormulaAction getInstance() { + return instance; + } + } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormula.java index 07f6a019d6..780a982bb7 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormula.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormula.java @@ -27,7 +27,7 @@ public interface SearchJSFormula extends SearchHighlightFormula { default void searchJSFormulaFromOther(List formulaInfos, ITContent content, JavaScript javaScript) { } - ; + /** * 从超链中的参数获取公式 @@ -39,5 +39,5 @@ public interface SearchJSFormula extends SearchHighlightFormula { default void addFormulaInfosFromJSPara(List formulaInfos, ITContent content, JavaScript javaScript) { } - ; + } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormulaManager.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormulaManager.java new file mode 100644 index 0000000000..413f3c24f8 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormulaManager.java @@ -0,0 +1,116 @@ +package com.fr.design.actions.replace.action.content.formula.highlight.javascript; + +import com.fr.design.actions.replace.action.SearchAction; +import com.fr.design.actions.replace.action.SearchManager; +import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchCommonConditionAction; +import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchConditionFormula; +import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchConditionManager; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-16 + */ +public class SearchJSFormulaManager implements SearchManager { + private static Map javaScriptType = new HashMap<>(); + + public static final String COMMIT_2_DB_JAVASCRIPT = "Commit2DBJavaScript"; + public static final String EXPORT_JAVASCRIPT = "ExportJavaScript"; + public static final String MOBILE_POPUP_HYPERLINK = "MobilePopupHyperlink"; + private SearchJSFormulaManager() { + //控件事件里面需要特殊处理的类型 + //EmailJavaScript(这个暂时不做处理) + //ExportJavaScript + //MobilePopupHyperlink + //Commit2DBJavaScript + //单元格条件属性里面需要处理的类型 + //WebHyperlink——只有参数可以放公式,不需要特殊处理 + //ReportletHyperlink——只有参数可以放公式,不需要特殊处理 + //EmailJavaScript(这个暂时不做处理) + //ParameterJavaScript——只有参数可以放公式,不需要特殊处理 + //JavaScriptImpl——只有参数可以放公式,不需要特殊处理 + //MobilePopupHyperlink + //ChartHyperPoplink + //ChartHyperRelateCellLink + //ChartHyperRelateFloatLink + register(COMMIT_2_DB_JAVASCRIPT, SearchCommit2DBJSFormulaAction.getInstance()); + register(EXPORT_JAVASCRIPT, SearchExportJSFormulaAction.getInstance()); + register(MOBILE_POPUP_HYPERLINK, SearchMobileHyperlinkFormulaAction.getInstance()); + } + + @Override + public void registerAction(String tag, SearchAction searchAction) { + if (searchAction instanceof SearchJSFormula){ + register(tag, (SearchJSFormula) searchAction); + } + } + + @Override + public void removeAction(String tag) { + remove(tag); + } + /** + * 注册 + * + * @param tag 用于匹配的类型tag + * @param searchJSFormula 对应的实现类 + */ + private void register(String tag, SearchJSFormula searchJSFormula) { + javaScriptType.put(tag, searchJSFormula); + } + + /** + * 注销 + * + * @param tag 用于匹配的tag + */ + private void remove(String tag) { + javaScriptType.remove(tag); + } + + /** + * 获取类型 + * @return + */ + public Map getJSType(){ + return javaScriptType; + } + + /** + * 对外开放的获取单例对象的方法 + * + * @return + */ + public static SearchJSFormulaManager getInstance() { + return SearchJSFormulaManagerEnum.SINGLETON.getInstance(); + } + + + /** + * 枚举实现单例 + */ + private enum SearchJSFormulaManagerEnum { + /** + * 单例 + */ + SINGLETON; + private SearchJSFormulaManager instance; + + SearchJSFormulaManagerEnum() { + instance = new SearchJSFormulaManager(); + } + + /** + * 获取单例对象 + * + * @return + */ + public SearchJSFormulaManager getInstance() { + return instance; + } + } + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSHighlightAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSHighlightAction.java index 27fef18dd0..4d2bd573b8 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSHighlightAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSHighlightAction.java @@ -5,16 +5,14 @@ import com.fr.base.Formula; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; -import com.fr.js.Commit2DBJavaScript; import com.fr.js.JavaScript; import com.fr.js.NameJavaScriptGroup; import com.fr.report.cell.cellattr.highlight.HighlightAction; import com.fr.report.cell.cellattr.highlight.HyperlinkHighlightAction; import com.fr.stable.ParameterProvider; -import java.util.ArrayList; -import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 处理条件属性中各种超级链接内的公式(也包括事件中的各种超链) @@ -24,33 +22,9 @@ import java.util.List; * created by Destiny.Lin on 2022-08-18 */ public class SearchJSHighlightAction implements SearchJSFormula { - //需要特殊处理的JS类型 - public static HashMap javaScriptHashMap = new HashMap<>(); - public static HashMap hashMap = new HashMap<>(); - static { - hashMap.put(Commit2DBJavaScript.class, new SearchCommit2DBJSFormulaAction()); - } - static { - //控件事件里面需要特殊处理的类型 - //EmailJavaScript(这个暂时不做处理) - //ExportJavaScript - //MobilePopupHyperlink - //Commit2DBJavaScript - //单元格条件属性里面需要处理的类型 - //WebHyperlink——只有参数可以放公式,不需要特殊处理 - //ReportletHyperlink——只有参数可以放公式,不需要特殊处理 - //EmailJavaScript(这个暂时不做处理) - //ParameterJavaScript——只有参数可以放公式,不需要特殊处理 - //JavaScriptImpl——只有参数可以放公式,不需要特殊处理 - //MobilePopupHyperlink - //ChartHyperPoplink - //ChartHyperRelateCellLink - //ChartHyperRelateFloatLink - javaScriptHashMap.put("Commit2DBJavaScript", new SearchCommit2DBJSFormulaAction()); - javaScriptHashMap.put("ExportJavaScript", new SearchExportJSFormulaAction()); - javaScriptHashMap.put("MobilePopupHyperlink", new SearchMobileHyperlinkFormulaAction()); + private SearchJSHighlightAction() { } @Override @@ -102,10 +76,45 @@ public class SearchJSHighlightAction implements SearchJSFormula { public void searchJSFormulaFromOther(List formulaInfos, ITContent content, JavaScript javaScript) { //获取JS中的参数中的公式 addFormulaInfosFromJSPara(formulaInfos, content, javaScript); + Map javaScriptType = SearchJSFormulaManager.getInstance().getJSType(); //这里面类型比较多,但是一部分不用处理——公式可能存在的地方只有参数,这部分在addFormulaInfosFromJSPara中就已经把公式拿完了 - if (javaScriptHashMap.containsKey(javaScript.getClass().getSimpleName())) { - SearchJSFormula javaScriptFormula = javaScriptHashMap.get(javaScript.getClass().getSimpleName()); + if (javaScriptType.containsKey(javaScript.getClass().getSimpleName())) { + SearchJSFormula javaScriptFormula = javaScriptType.get(javaScript.getClass().getSimpleName()); javaScriptFormula.searchJSFormulaFromOther(formulaInfos, content, javaScript); } } + + + /** + * 获取单例 + * + * @return + */ + public static SearchJSHighlightAction getInstance() { + return SearchJSHighlightActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchJSHighlightActionEnum { + /** + * 单例实现 + */ + SINGLETON; + private SearchJSHighlightAction instance; + + SearchJSHighlightActionEnum() { + instance = new SearchJSHighlightAction(); + } + + /** + * 拿到对象 + * + * @return + */ + public SearchJSHighlightAction getInstance() { + return instance; + } + } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchMobileHyperlinkFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchMobileHyperlinkFormulaAction.java index 8b2358a089..f30c1a7b08 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchMobileHyperlinkFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchMobileHyperlinkFormulaAction.java @@ -17,6 +17,10 @@ import java.util.List; * created by Destiny.Lin on 2022-08-19 */ public class SearchMobileHyperlinkFormulaAction implements SearchJSFormula { + + private SearchMobileHyperlinkFormulaAction() { + } + @Override public void searchJSFormulaFromOther(List formulaInfos, ITContent content, JavaScript javaScript) { if (((MobilePopupHyperlink) javaScript).getPopupText() instanceof Formula) { @@ -29,4 +33,37 @@ public class SearchMobileHyperlinkFormulaAction implements SearchJSFormula { formulaInfos.add(new FormulaInfo(newContent)); } } + + /** + * 获取单例 + * + * @return + */ + public static SearchMobileHyperlinkFormulaAction getInstance() { + return SearchMobileHyperlinkFormulaActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchMobileHyperlinkFormulaActionEnum { + /** + * 单例实现 + */ + SINGLETON; + private SearchMobileHyperlinkFormulaAction instance; + + SearchMobileHyperlinkFormulaActionEnum() { + instance = new SearchMobileHyperlinkFormulaAction(); + } + + /** + * 拿到对象 + * + * @return + */ + public SearchMobileHyperlinkFormulaAction getInstance() { + return instance; + } + } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/AbstractSearchWidgetFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/AbstractSearchWidgetFormulaAction.java index 96a1437af0..d8ff30f79e 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/AbstractSearchWidgetFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/AbstractSearchWidgetFormulaAction.java @@ -3,12 +3,9 @@ package com.fr.design.actions.replace.action.content.formula.widget; import com.fr.base.Formula; import com.fr.design.actions.replace.action.content.formula.highlight.javascript.SearchJSHighlightAction; import com.fr.design.actions.replace.info.FormulaInfo; -import com.fr.design.actions.replace.info.WidgetInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; -import com.fr.design.mainframe.JTemplate; import com.fr.form.event.Listener; -import com.fr.form.ui.ComboCheckBox; import com.fr.form.ui.DataControl; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WScaleLayout; @@ -40,10 +37,10 @@ public abstract class AbstractSearchWidgetFormulaAction implements SearchWidgetF Listener listener = widget.getListener(i); ITContent newContent = ITContent.copy(content); //控件的事件可以使用的JS有五种,这边统一交给Highlight那边判断超级链接并进行处理 - SearchJSHighlightAction SJSA = new SearchJSHighlightAction(); + SearchJSHighlightAction jsHighlightAction = SearchJSHighlightAction.getInstance(); newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Report_Event"),listener.getName()); - SJSA.searchJSFormulaFromOther(formulaInfos, newContent, listener.getAction()); + jsHighlightAction.searchJSFormulaFromOther(formulaInfos, newContent, listener.getAction()); } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/DictionaryType.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/DictionaryType.java index be16c095e4..22d4cb3959 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/DictionaryType.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/DictionaryType.java @@ -26,29 +26,32 @@ public enum DictionaryType implements DictionaryAction { FORMULA_DICTIONARY("FormulaDictionary") { @Override public void searchFormulaFromDictionary(ITContent content, List formulaInfos, Dictionary dictionary) { - //显示值 - if (((FormulaDictionary) dictionary).getExcuteFormula() != null) { - ITContent excuteContent = ITContent.copy(content); - excuteContent.setReplaceObject(dictionary); - excuteContent.addOtherPos( - Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary"), - Toolkit.i18nText("Fine-Design_Basic_Formula"), - Toolkit.i18nText("Fine-Design_Basic_Display_Value") - ); - formulaInfos.add(new FormulaInfo(excuteContent)); - } - //实际值 - if (((FormulaDictionary) dictionary).getProduceFormula() != null) { - ITContent produceContent = ITContent.copy(content); - produceContent.setReplaceObject(dictionary); - produceContent.addOtherPos( - Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary"), - Toolkit.i18nText("Fine-Design_Basic_Formula"), - Toolkit.i18nText("Fine-Design_Basic_Actual_Value") - ); - formulaInfos.add(new FormulaInfo(produceContent)); - } + if (dictionary instanceof FormulaDictionary) { + FormulaDictionary formulaDictionary = (FormulaDictionary) dictionary; + //显示值 + if (formulaDictionary.getExcuteFormula() != null) { + ITContent excuteContent = ITContent.copy(content); + excuteContent.setReplaceObject(dictionary); + excuteContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary"), + Toolkit.i18nText("Fine-Design_Basic_Formula"), + Toolkit.i18nText("Fine-Design_Basic_Display_Value") + ); + formulaInfos.add(new FormulaInfo(excuteContent)); + } + //实际值 + if (formulaDictionary.getProduceFormula() != null) { + ITContent produceContent = ITContent.copy(content); + produceContent.setReplaceObject(dictionary); + produceContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary"), + Toolkit.i18nText("Fine-Design_Basic_Formula"), + Toolkit.i18nText("Fine-Design_Basic_Actual_Value") + ); + formulaInfos.add(new FormulaInfo(produceContent)); + } + } } }, /** diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchCommonWidgetFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchCommonWidgetFormulaAction.java index 0c2c0235cb..27d921a622 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchCommonWidgetFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchCommonWidgetFormulaAction.java @@ -14,9 +14,47 @@ import java.util.List; */ public class SearchCommonWidgetFormulaAction extends AbstractSearchWidgetFormulaAction { + + private SearchCommonWidgetFormulaAction() { + } + @Override public void searchFormulaFromWidget(ITContent content, List formulaInfos) { //每个事件的事件、控件值两部分的公式获取逻辑是一样的,直接调用即可,各自其他地方的公式就需要特殊处理 super.searchFormulaFromWidget(content, formulaInfos); } + + + /** + * 对外开放的获取单例对象的方法 + * + * @return + */ + public static SearchCommonWidgetFormulaAction getInstance() { + return SearchCommonWidgetFormulaActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchCommonWidgetFormulaActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchCommonWidgetFormulaAction instance; + + SearchCommonWidgetFormulaActionEnum() { + instance = new SearchCommonWidgetFormulaAction(); + } + + /** + * 获取单例对象 + * + * @return + */ + public SearchCommonWidgetFormulaAction getInstance() { + return instance; + } + } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java index 00c739e8ed..a4221c1b92 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java @@ -20,6 +20,9 @@ import java.util.List; public class SearchDateEditorFormulaAction extends AbstractSearchWidgetFormulaAction { + private SearchDateEditorFormulaAction() { + } + @Override public void searchFormulaFromWidget(ITContent content, List formulaInfos) { super.searchFormulaFromWidget(content, formulaInfos); @@ -47,4 +50,38 @@ public class SearchDateEditorFormulaAction extends AbstractSearchWidgetFormulaAc } } + + /** + * 对外开放的获取单例对象的方法 + * + * @return + */ + public static SearchDateEditorFormulaAction getInstance() { + return SearchDateEditorFormulaActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchDateEditorFormulaActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchDateEditorFormulaAction instance; + + SearchDateEditorFormulaActionEnum() { + instance = new SearchDateEditorFormulaAction(); + } + + /** + * 获取单例对象 + * + * @return + */ + public SearchDateEditorFormulaAction getInstance() { + return instance; + } + } + } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDictFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDictFormulaAction.java index abe0ddc5c3..2f9072751e 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDictFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDictFormulaAction.java @@ -17,6 +17,8 @@ import java.util.List; */ public class SearchDictFormulaAction extends AbstractSearchWidgetFormulaAction { + private SearchDictFormulaAction() { + } @Override public void searchFormulaFromWidget(ITContent content, List formulaInfos) { @@ -36,6 +38,41 @@ public class SearchDictFormulaAction extends AbstractSearchWidgetFormulaAction { } } } + } + + + /** + * 对外开放的获取单例对象的方法 + * + * @return + */ + public static SearchDictFormulaAction getInstance() { + return SearchDictFormulaActionEnum.SINGLETON.getInstance(); } + + /** + * 枚举实现单例 + */ + private enum SearchDictFormulaActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchDictFormulaAction instance; + + SearchDictFormulaActionEnum() { + instance = new SearchDictFormulaAction(); + } + + /** + * 获取单例对象 + * + * @return + */ + public SearchDictFormulaAction getInstance() { + return instance; + } + } + } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java index 1e9e79cd0c..88722fc8f2 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java @@ -21,6 +21,9 @@ import java.util.List; * created by Destiny.Lin on 2022-08-22 */ public class SearchTreeEditorFormulaAction extends AbstractSearchWidgetFormulaAction { + private SearchTreeEditorFormulaAction() { + } + @Override public void searchFormulaFromWidget(ITContent content, List formulaInfos) { //控件值、事件 @@ -73,4 +76,39 @@ public class SearchTreeEditorFormulaAction extends AbstractSearchWidgetFormulaAc } } } + + + /** + * 对外开放的获取单例对象的方法 + * + * @return + */ + public static SearchTreeEditorFormulaAction getInstance() { + return SearchTreeEditorFormulaActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchTreeEditorFormulaActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchTreeEditorFormulaAction instance; + + SearchTreeEditorFormulaActionEnum() { + instance = new SearchTreeEditorFormulaAction(); + } + + /** + * 获取单例对象 + * + * @return + */ + public SearchTreeEditorFormulaAction getInstance() { + return instance; + } + } + } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java index 28115d1a52..61b139f053 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java @@ -23,6 +23,7 @@ import com.fr.main.impl.WorkBook; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 查找控件内的公式 @@ -35,45 +36,6 @@ public class SearchWidgetFormulaAction extends AbstractSearchWidgetFormulaAction private SearchWidgetFormulaAction() { } - public static HashMap widgetHashMap = new HashMap<>(); - - static { - /** - * 可能有控件值、 有事件 - */ - widgetHashMap.put("FormSubmitButton", new SearchCommonWidgetFormulaAction()); - widgetHashMap.put("WParameterLayout", new SearchCommonWidgetFormulaAction()); - widgetHashMap.put("TextArea", new SearchCommonWidgetFormulaAction()); - widgetHashMap.put("Password", new SearchCommonWidgetFormulaAction()); - widgetHashMap.put("CheckBox", new SearchCommonWidgetFormulaAction()); - widgetHashMap.put("Label", new SearchCommonWidgetFormulaAction()); - widgetHashMap.put("FreeButton", new SearchCommonWidgetFormulaAction()); - widgetHashMap.put("NumberEditor", new SearchCommonWidgetFormulaAction()); - widgetHashMap.put("TextEditor", new SearchCommonWidgetFormulaAction()); - - /** - * 日期类型 - */ - widgetHashMap.put("DateEditor", new SearchDateEditorFormulaAction()); - - /** - * 控件值、事件、非树形数据字典 - */ - widgetHashMap.put("ComboBox", new SearchDictFormulaAction()); - widgetHashMap.put("RadioGroup", new SearchDictFormulaAction()); - widgetHashMap.put("CheckBoxGroup", new SearchDictFormulaAction()); - widgetHashMap.put("ComboCheckBox", new SearchDictFormulaAction()); - widgetHashMap.put("PageFixedRowComboBox", new SearchDictFormulaAction()); - - /** - * 控件值、事件、树形数据字典 - */ - widgetHashMap.put("TreeComboBoxEditor", new SearchTreeEditorFormulaAction()); - widgetHashMap.put("TreeEditor", new SearchTreeEditorFormulaAction()); - - - } - @Override public void searchFormulaFromObject(JTemplate jTemplate, List formulaInfos) { List result = new ArrayList<>(); @@ -117,8 +79,9 @@ public class SearchWidgetFormulaAction extends AbstractSearchWidgetFormulaAction SearchChartCollectionFormulaAction.getInstance().searchChartCollectionFormula(formulaInfos, info.getContent(), (ChartCollection) ((ChartEditor) widget).getChartCollection()); } } - if (widgetHashMap.containsKey(widget.getClass().getSimpleName())) { - SearchWidgetFormula searchWidgetFormula = widgetHashMap.get(widget.getClass().getSimpleName()); + Map widgetType = SearchWidgetFormulaManager.getInstance().getWidgetType(); + if (widgetType.containsKey(widget.getClass().getSimpleName())) { + SearchWidgetFormula searchWidgetFormula = widgetType.get(widget.getClass().getSimpleName()); ITContent content = ITContent.copy(info.getContent()); searchWidgetFormula.searchFormulaFromWidget(content, formulaInfos); } @@ -142,7 +105,7 @@ public class SearchWidgetFormulaAction extends AbstractSearchWidgetFormulaAction /** * 枚举实现单例 */ - enum SearchWidgetFormulaActionEnum { + private enum SearchWidgetFormulaActionEnum { /** * 单例 */ diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaManager.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaManager.java new file mode 100644 index 0000000000..08e0ea3942 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaManager.java @@ -0,0 +1,146 @@ +package com.fr.design.actions.replace.action.content.formula.widget; + +import com.fr.design.actions.replace.action.SearchAction; +import com.fr.design.actions.replace.action.SearchManager; +import com.fr.design.actions.replace.action.content.formula.highlight.SearchHighlightFormula; +import com.fr.design.actions.replace.action.content.formula.highlight.SearchHighlightFormulaManager; + +import java.util.HashMap; +import java.util.Map; + +/** + * 管理要搜索的控件类型(公式) + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-16 + */ +public class SearchWidgetFormulaManager implements SearchManager { + private Map widgetType = new HashMap<>(); + private static final String FORM_SUBMIT_BUTTON = "FormSubmitButton"; + private static final String W_PARAMETER_LAYOUT = "WParameterLayout"; + private static final String TEXT_AREA = "TextArea"; + private static final String PASSWORD = "Password"; + private static final String CHECK_BOX = "CheckBox"; + private static final String LABEL = "Label"; + private static final String FREE_BUTTON = "FreeButton"; + private static final String NUMBER_EDITOR = "NumberEditor"; + private static final String TEXT_EDITOR = "TextEditor"; + private static final String DATE_EDITOR = "DateEditor"; + private static final String COMBO_BOX = "ComboBox"; + private static final String RADIO_GROUP = "RadioGroup"; + private static final String CHECK_BOX_GROUP = "CheckBoxGroup"; + private static final String COMBO_CHECK_BOX = "ComboCheckBox"; + private static final String PAGE_FIXED_ROW_COMBOBOX = "PageFixedRowComboBox"; + private static final String TREE_COMBO_BOX_EDITOR = "TreeComboBoxEditor"; + private static final String TREE_EDITOR = "TreeEditor"; + + private SearchWidgetFormulaManager() { + /** + * 可能有控件值、 有事件 + */ + register(FORM_SUBMIT_BUTTON, SearchCommonWidgetFormulaAction.getInstance()); + register(W_PARAMETER_LAYOUT, SearchCommonWidgetFormulaAction.getInstance()); + register(TEXT_AREA, SearchCommonWidgetFormulaAction.getInstance()); + register(PASSWORD, SearchCommonWidgetFormulaAction.getInstance()); + register(CHECK_BOX, SearchCommonWidgetFormulaAction.getInstance()); + register(LABEL, SearchCommonWidgetFormulaAction.getInstance()); + register(FREE_BUTTON, SearchCommonWidgetFormulaAction.getInstance()); + register(NUMBER_EDITOR, SearchCommonWidgetFormulaAction.getInstance()); + register(TEXT_EDITOR, SearchCommonWidgetFormulaAction.getInstance()); + + /** + * 日期类型 + */ + register(DATE_EDITOR, SearchDateEditorFormulaAction.getInstance()); + + /** + * 控件值、事件、非树形数据字典 + */ + register(COMBO_BOX, SearchDictFormulaAction.getInstance()); + register(RADIO_GROUP, SearchDictFormulaAction.getInstance()); + register(CHECK_BOX_GROUP, SearchDictFormulaAction.getInstance()); + register(COMBO_CHECK_BOX, SearchDictFormulaAction.getInstance()); + register(PAGE_FIXED_ROW_COMBOBOX, SearchDictFormulaAction.getInstance()); + + /** + * 控件值、事件、树形数据字典 + */ + register(TREE_COMBO_BOX_EDITOR, SearchTreeEditorFormulaAction.getInstance()); + register(TREE_EDITOR, SearchTreeEditorFormulaAction.getInstance()); + } + + + @Override + public void registerAction(String tag, SearchAction searchAction) { + if (searchAction instanceof SearchWidgetFormula) { + register(tag, (SearchWidgetFormula) searchAction); + } + } + + @Override + public void removeAction(String tag) { + remove(tag); + } + + /** + * 注册 + * + * @param tag 用于匹配的类型tag + * @param searchWidgetFormula 对应的实现类 + */ + private void register(String tag, SearchWidgetFormula searchWidgetFormula) { + widgetType.put(tag, searchWidgetFormula); + } + + /** + * 注销 + * + * @param tag 用于匹配的tag + */ + private void remove(String tag) { + widgetType.remove(tag); + } + + /** + * 获取单元格类型 + * + * @return + */ + public Map getWidgetType() { + return widgetType; + } + + /** + * 对外开放的获取单例对象的方法 + * + * @return + */ + public static SearchWidgetFormulaManager getInstance() { + return SearchWidgetFormulaManagerEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchWidgetFormulaManagerEnum { + /** + * 单例 + */ + SINGLETON; + private SearchWidgetFormulaManager instance; + + SearchWidgetFormulaManagerEnum() { + instance = new SearchWidgetFormulaManager(); + } + + /** + * 获取单例对象 + * + * @return + */ + public SearchWidgetFormulaManager getInstance() { + return instance; + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchCellJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchCellJSAction.java index 35b09547e0..bbce689967 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchCellJSAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchCellJSAction.java @@ -61,7 +61,7 @@ public class SearchCellJSAction implements SearchJS { //单元格如果是图表还需要额外处理 if (cell.getValue() instanceof ChartCollection) { - SearchChartJSAction.getInstance().searchChartJS((ChartCollection) cell.getValue(),ITContent.copy(cellInfo.getContent()),jsInfos); + SearchChartJSAction.getInstance().searchChartJS((ChartCollection) cell.getValue(), ITContent.copy(cellInfo.getContent()), jsInfos); //List> htmlLabels = SearchJSUtils.getHtmlLabel((ChartCollection) cell.getValue()); //List nameJavaScripts = SearchJSUtils.getNameJavaScript((ChartCollection) cell.getValue()); ////图表-样式-标签以及图表-特效-条件显示 @@ -133,7 +133,7 @@ public class SearchCellJSAction implements SearchJS { /** * 枚举实现单例 */ - enum SearchCellJSActionEnum { + private enum SearchCellJSActionEnum { /** * 单例 */ diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java index b02f3ff783..fa2f716f0e 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java @@ -24,6 +24,10 @@ import java.util.List; */ public class SearchChartJSAction { + + private SearchChartJSAction() { + } + /** * 寻找图表中的JS * @@ -102,7 +106,7 @@ public class SearchChartJSAction { /** * 枚举实现单例 */ - enum SearchChartJSActionEnum { + private enum SearchChartJSActionEnum { /** * 单例 */ diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchFloatJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchFloatJSAction.java index 7340f3b242..b64a934243 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchFloatJSAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchFloatJSAction.java @@ -49,19 +49,7 @@ public class SearchFloatJSAction implements SearchJS { //从超级链接搜索 SearchJSUtils.addJSInfosFromHyperLink(floatElement, jsInfos, content); if (floatElement.getValue() instanceof ChartCollection) { - SearchChartJSAction.getInstance().searchChartJS((ChartCollection) floatElement.getValue(),ITContent.copy(floatInfo.getContent()),jsInfos); - //List> htmlLabels = SearchJSUtils.getHtmlLabel((ChartCollection) floatElement.getValue()); - //List nameJavaScripts = SearchJSUtils.getNameJavaScript((ChartCollection) floatElement.getValue()); - ////图表-样式-标签以及图表-特效-条件显示 - //SearchJSUtils.addJSInfosFromHtmlLabel(content, htmlLabels, jsInfos); - ////图表-特效-交互属性 - //ITContent newContent = ITContent.copy(content); - //newContent.addOtherPos( - // Toolkit.i18nText("Fine-Design_Chart_Chart"), - // Toolkit.i18nText("Fine-Design_Chart_Animation_Special"), - // Toolkit.i18nText("Fine-Design_Chart_Interactive") - //); - //SearchJSUtils.addJSInfosFromNameJS(newContent, nameJavaScripts, jsInfos); + SearchChartJSAction.getInstance().searchChartJS((ChartCollection) floatElement.getValue(), ITContent.copy(floatInfo.getContent()), jsInfos); } } } @@ -79,7 +67,7 @@ public class SearchFloatJSAction implements SearchJS { /** * 枚举实现单例 */ - enum SearchFloatJSActionEnum { + private enum SearchFloatJSActionEnum { /** * 单例 */ diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchJSManager.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchJSManager.java index 2a233a5236..01e12dbd8e 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchJSManager.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchJSManager.java @@ -1,12 +1,10 @@ package com.fr.design.actions.replace.action.content.js; import com.fr.design.actions.replace.action.SearchAction; -import com.fr.design.actions.replace.action.content.formula.SearchFormula; +import com.fr.design.actions.replace.action.SearchManager; import com.fr.design.actions.replace.info.JSInfo; -import com.fr.design.actions.replace.utils.ShowValueUtils; import com.fr.design.mainframe.JTemplate; -import com.fr.form.ui.Widget; import java.util.ArrayList; import java.util.HashSet; @@ -21,19 +19,19 @@ import java.util.Set; * @version 11.0 * created by Destiny.Lin on 2022-08-12 */ -public class SearchJSManager implements SearchAction { +public class SearchJSManager implements SearchAction, SearchManager { private List jsInfos; private Set searchJSSet = new HashSet<>(); private SearchJSManager() { //从控件 - registerJS(SearchWidgetJSAction.getInstance()); + register(SearchWidgetJSAction.getInstance()); //从单元格获取JS - registerJS(SearchCellJSAction.getInstance()); + register(SearchCellJSAction.getInstance()); //从模板Web属性 - registerJS(SearchWebJSAction.getInstance()); + register(SearchWebJSAction.getInstance()); //从悬浮元素 - registerJS(SearchFloatJSAction.getInstance()); + register(SearchFloatJSAction.getInstance()); } @Override @@ -53,19 +51,33 @@ public class SearchJSManager implements SearchAction { this.jsInfos = jsInfos; } + @Override + public void registerAction(String tag, SearchAction searchAction) { + if (searchAction instanceof SearchJS){ + register((SearchJS) searchAction); + } + } + + @Override + public void removeAction(SearchAction searchAction) { + if (searchAction instanceof SearchJS){ + remove((SearchJS) searchAction); + } + } + /** * 注册对象 * * @param searchJS */ - public void registerJS(SearchJS searchJS) { + private void register(SearchJS searchJS) { searchJSSet.add(searchJS); } /** * 销毁对象 */ - public void removeJS(SearchJS searchJS) { + private void remove(SearchJS searchJS) { searchJSSet.remove(searchJS); } @@ -78,10 +90,12 @@ public class SearchJSManager implements SearchAction { return SearchJSActionEnum.SINGLETON.getInstance(); } + + /** * 枚举实现单例 */ - enum SearchJSActionEnum { + private enum SearchJSActionEnum { /** * 单例 */ diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java index cd41f58b84..137d84b377 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java @@ -149,7 +149,7 @@ public class SearchWebJSAction implements SearchJS { /** * 枚举实现单例 */ - enum SearchWebJSActionEnum { + private enum SearchWebJSActionEnum { /** * 单例 */ diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWidgetJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWidgetJSAction.java index e2379a8de0..967cf178c9 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWidgetJSAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWidgetJSAction.java @@ -25,6 +25,9 @@ import java.util.List; */ public class SearchWidgetJSAction implements SearchJS { + private SearchWidgetJSAction() { + } + @Override public void searchJSFromObject(JTemplate jTemplate, List jsInfos) { List widgetJSInfos = new ArrayList<>(); @@ -65,7 +68,7 @@ public class SearchWidgetJSAction implements SearchJS { /** * 枚举实现单例 */ - enum SearchWidgetJSActionEnum { + private enum SearchWidgetJSActionEnum { /** * 单例 */ diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/sql/SearchSQLAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/sql/SearchSQLAction.java index 005ae6f3cb..10fdd28659 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/sql/SearchSQLAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/sql/SearchSQLAction.java @@ -119,7 +119,7 @@ public class SearchSQLAction implements SearchAction { /** * 枚举实现单例 */ - enum SearchSQLActionEnum { + private enum SearchSQLActionEnum { /** * 单例 */ diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchWidgetAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchWidgetAction.java index 19514ff343..66ca91dd15 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchWidgetAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchWidgetAction.java @@ -36,6 +36,8 @@ import java.util.List; public class SearchWidgetAction implements SearchAction { List widgetInfos; + private SearchWidgetAction() { + } @Override public void search4Infos(JTemplate jTemplate) { @@ -96,7 +98,10 @@ public class SearchWidgetAction implements SearchAction { //处理HighlightAction if (isHighlightWidgetExist(highlightAction)) { ITContent content = ITContent.copy(cellInfo.getContent()); - content.addOtherPos("条件属性-超链控件"); + content.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_Condition_Attributes"), + Toolkit.i18nText("Fine-Design_Report_Hyperlink"), + Toolkit.i18nText("Fine-Design_Basic_Widget")); content.setReplaceObject(((WidgetHighlightAction) highlightAction).getWidget()); content.setShowObject(cellInfo.getContent().getReplaceObject()); widgetInfos.add(new WidgetInfo(content)); @@ -140,6 +145,7 @@ public class SearchWidgetAction implements SearchAction { Toolkit.i18nText("Fine-Design_Basic_Widget"), widget.getWidgetName()); newContent.setReplaceObject(widget); + newContent.setJumpAble(false); newContent.setShowObject(Toolkit.i18nText("Fine-Design_Parameter_Panel")); widgetInfos.add(new WidgetInfo(newContent)); } @@ -176,7 +182,7 @@ public class SearchWidgetAction implements SearchAction { /** * 枚举实现单例 */ - enum SearchWidgetActionEnum { + private enum SearchWidgetActionEnum { /** * 单例 */ diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/FormulaInfo.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/FormulaInfo.java index dab9128182..8dae97110f 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/FormulaInfo.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/FormulaInfo.java @@ -23,6 +23,7 @@ public class FormulaInfo implements Info { private ITContent content; private static final String DISPLAY = Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary") + "-" + Toolkit.i18nText("Fine-Design_Chart_Formula") + "-" + Toolkit.i18nText("Fine-Design_Basic_Display_Value"); private static final String ACTUAL = Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary") + "-" + Toolkit.i18nText("Fine-Design_Chart_Formula") + "-" + Toolkit.i18nText("Fine-Design_Basic_Actual_Value"); + public FormulaInfo(ITContent content) { this.content = content; } @@ -68,7 +69,7 @@ public class FormulaInfo implements Info { } private Map getCommonValue() { - Map map = new HashMap(); + Map map = new HashMap(); FormulaReplaceObject o = FormulaReplaceObject.match(this.content.getReplaceObject().getClass().getSimpleName()); if (o != null) { return o.getValue(this.content.getReplaceObject()); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java index cc3ac6fee7..239f4a92fc 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java @@ -62,6 +62,10 @@ public class ITContent implements Cloneable { */ private boolean selected = true; + /** + * 是否可跳转 + */ + private boolean jumpAble = true; public ITContent() { this.sheetID = StringUtils.EMPTY; @@ -99,6 +103,7 @@ public class ITContent implements Cloneable { result.setLastSearchStr(content.getLastSearchStr()); result.setOperatorArray(content.getOperatorArray()); result.setFrmFlag(content.isFrm()); + result.setJumpAble(content.isJumpAble()); return result; } @@ -260,6 +265,17 @@ public class ITContent implements Cloneable { this.lastSearchStr = lastSearchStr; } + public boolean isJumpAble() { + return jumpAble; + } + + public void setJumpAble(boolean jumpAble) { + this.jumpAble = jumpAble; + } + + public boolean isFrmFlag() { + return frmFlag; + } @Override public String toString() { diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java index d4ca276729..a110f6c4a4 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java @@ -42,17 +42,17 @@ public class ITReplaceNorthPanel { private int maxItemCount = 5; - private int FIND_LABEL_X, FIND_LABEL_Y, FIND_LABEL_WIDTH, FIND_LABEL_HEIGHT; - private int FIND_COMBOBOX_X, FIND_COMBOBOX_Y, FIND_COMBOBOX_WIDTH, FIND_COMBOBOX_HEIGHT; - private int RANGE_LABEL_X, RANGE_LABEL_Y, RANGE_LABEL_WIDTH, RANGE_LABEL_HEIGHT; - private int RANGE_COMBOBOX_X, RANGE_COMBOBOX_Y, RANGE_COMBOBOX_WIDTH, RANGE_COMBOBOX_HEIGHT; - private int MATCH_X, MATCH_Y, MATCH_WIDTH, MATCH_HEIGHT; - private int RESULT_LABEL_X, RESULT_LABEL_Y, RESULT_LABEL_WIDTH, RESULT_LABEL_HEIGHT; - private int FIND_INPUT_COMBOBOX_X, FIND_INPUT_COMBOBOX_Y, FIND_INPUT_COMBOBOX_WIDTH, FIND_INPUT_COMBOBOX_HEIGHT; + private int findLabelX, findLabelY, findLabelWidth, findLabelHeight; + private int findComboBoxX, findComboBoxY, findComboBoxWidth, findComboBoxHeight; + private int rangeLabelX, rangeLabelY, rangeLabelWidth, rangeLabelHeight; + private int rangeComboBoxX, rangeComboBoxY, rangeComboBoxWidth, rangeComboBoxHeight; + private int matchX, matchY, matchWidth, matchHeight; + private int resultLabelX, resultLabelY, resultLabelWidth, resultLabelHeight; + private int findInputComboBoxX, findInputComboBoxY, findInputComboBoxWidth, findInputComboBoxHeight; private int REPLACE_INPUT_COMBOBOX_X, REPLACE_INPUT_COMBOBOX_Y, REPLACE_INPUT_COMBOBOX_WIDTH, REPLACE_INPUT_COMBOBOX_HEIGHT; - private int REPLACE_BUTTON_X, REPLACE_BUTTON_Y, REPLACE_BUTTON_WIDTH, REPLACE_BUTTON_HEIGHT; - private int SEARCH_BUTTON_X, SEARCH_BUTTON_Y, SEARCH_BUTTON_WIDTH, SEARCH_BUTTON_HEIGHT; - private int BUTTON_GAP; + private int replaceButtonX, replaceButtonY, replaceButtonWidth, replaceButtonHeight; + private int searchButtonX, searchButtonY, searchButtonWidth, searchButtonHeight; + private int buttonGap; public static ArrayList findItems = new ArrayList<>(); public static ArrayList findInputItems = new ArrayList<>(); @@ -191,22 +191,22 @@ public class ITReplaceNorthPanel { private void setSearchButtonBounds(int x, int y, int templateWidth) { - BUTTON_GAP = templateWidth / 90; - SEARCH_BUTTON_WIDTH = templateWidth / 30; + buttonGap = templateWidth / 90; + searchButtonWidth = templateWidth / 30; - SEARCH_BUTTON_HEIGHT = 25; - SEARCH_BUTTON_Y = RESULT_LABEL_Y; - SEARCH_BUTTON_X = REPLACE_INPUT_COMBOBOX_X + REPLACE_INPUT_COMBOBOX_WIDTH - REPLACE_BUTTON_WIDTH * 2 - BUTTON_GAP; - searchButton.setBounds(SEARCH_BUTTON_X, SEARCH_BUTTON_Y, SEARCH_BUTTON_WIDTH, SEARCH_BUTTON_HEIGHT); + searchButtonHeight = 25; + searchButtonY = resultLabelY; + searchButtonX = REPLACE_INPUT_COMBOBOX_X + REPLACE_INPUT_COMBOBOX_WIDTH - replaceButtonWidth * 2 - buttonGap; + searchButton.setBounds(searchButtonX, searchButtonY, searchButtonWidth, searchButtonHeight); } private void setReplaceButtonBounds(int x, int y, int templateWidth) { - BUTTON_GAP = templateWidth / 90; - REPLACE_BUTTON_WIDTH = templateWidth / 30; - REPLACE_BUTTON_HEIGHT = 25; - REPLACE_BUTTON_Y = RESULT_LABEL_Y; - REPLACE_BUTTON_X = REPLACE_INPUT_COMBOBOX_X + REPLACE_INPUT_COMBOBOX_WIDTH - REPLACE_BUTTON_WIDTH; - replaceButton.setBounds(REPLACE_BUTTON_X, REPLACE_BUTTON_Y, REPLACE_BUTTON_WIDTH, REPLACE_BUTTON_HEIGHT); + buttonGap = templateWidth / 90; + replaceButtonWidth = templateWidth / 30; + replaceButtonHeight = 25; + replaceButtonY = resultLabelY; + replaceButtonX = REPLACE_INPUT_COMBOBOX_X + REPLACE_INPUT_COMBOBOX_WIDTH - replaceButtonWidth; + replaceButton.setBounds(replaceButtonX, replaceButtonY, replaceButtonWidth, replaceButtonHeight); } private void setReplaceInputComboboxBounds(int x, int y, int templateWidth) { @@ -218,64 +218,64 @@ public class ITReplaceNorthPanel { } private void setFindInputComboboxBounds(int x, int y, int templateWidth) { - FIND_INPUT_COMBOBOX_X = x + templateWidth / 60; - FIND_INPUT_COMBOBOX_Y = y + 55; - FIND_INPUT_COMBOBOX_WIDTH = templateWidth / 3 + templateWidth / 30 * 2; - FIND_INPUT_COMBOBOX_HEIGHT = 25; - findInputCombobox.setBounds(FIND_INPUT_COMBOBOX_X, FIND_INPUT_COMBOBOX_Y, FIND_INPUT_COMBOBOX_WIDTH, FIND_INPUT_COMBOBOX_HEIGHT); + findInputComboBoxX = x + templateWidth / 60; + findInputComboBoxY = y + 55; + findInputComboBoxWidth = templateWidth / 3 + templateWidth / 30 * 2; + findInputComboBoxHeight = 25; + findInputCombobox.setBounds(findInputComboBoxX, findInputComboBoxY, findInputComboBoxWidth, findInputComboBoxHeight); } private void setUIRadioButtonBounds(int x, int y, int templateWidth) { - MATCH_X = x + templateWidth / 60; - MATCH_Y = y + 90; - MATCH_WIDTH = templateWidth; - MATCH_HEIGHT = 25; - matchRadioButton.setBounds(MATCH_X, MATCH_Y, MATCH_WIDTH, MATCH_HEIGHT); + matchX = x + templateWidth / 60; + matchY = y + 90; + matchWidth = templateWidth; + matchHeight = 25; + matchRadioButton.setBounds(matchX, matchY, matchWidth, matchHeight); } private void setRangeComboboxBounds(int x, int y, int templateWidth) { - RANGE_COMBOBOX_X = x + templateWidth / 2 + templateWidth / 15 + templateWidth / 60; - RANGE_COMBOBOX_Y = y + 20; - RANGE_COMBOBOX_WIDTH = templateWidth / 3 + templateWidth / 60; - RANGE_COMBOBOX_HEIGHT = 25; - rangeCombobox.setBounds(RANGE_COMBOBOX_X, RANGE_COMBOBOX_Y, RANGE_COMBOBOX_WIDTH, RANGE_COMBOBOX_HEIGHT); + rangeComboBoxX = x + templateWidth / 2 + templateWidth / 15 + templateWidth / 60; + rangeComboBoxY = y + 20; + rangeComboBoxWidth = templateWidth / 3 + templateWidth / 60; + rangeComboBoxHeight = 25; + rangeCombobox.setBounds(rangeComboBoxX, rangeComboBoxY, rangeComboBoxWidth, rangeComboBoxHeight); } private void setFindComboboxBounds(int x, int y, int templateWidth) { - FIND_COMBOBOX_X = x + templateWidth / 30 * 2; - FIND_COMBOBOX_Y = y + 20; - FIND_COMBOBOX_WIDTH = templateWidth / 3 + templateWidth / 60; - FIND_COMBOBOX_HEIGHT = 25; - findCombobox.setBounds(FIND_COMBOBOX_X, FIND_COMBOBOX_Y, FIND_COMBOBOX_WIDTH, FIND_COMBOBOX_HEIGHT); + findComboBoxX = x + templateWidth / 30 * 2; + findComboBoxY = y + 20; + findComboBoxWidth = templateWidth / 3 + templateWidth / 60; + findComboBoxHeight = 25; + findCombobox.setBounds(findComboBoxX, findComboBoxY, findComboBoxWidth, findComboBoxHeight); } private void setResultLabelBounds(int x, int y, int templateWidth) { - RESULT_LABEL_X = FIND_LABEL_X; - RESULT_LABEL_Y = y + 125; - RESULT_LABEL_WIDTH = templateWidth; - RESULT_LABEL_HEIGHT = 25; - resultLabel.setBounds(RESULT_LABEL_X, RESULT_LABEL_Y, RESULT_LABEL_WIDTH, RESULT_LABEL_HEIGHT); + resultLabelX = findLabelX; + resultLabelY = y + 125; + resultLabelWidth = templateWidth; + resultLabelHeight = 25; + resultLabel.setBounds(resultLabelX, resultLabelY, resultLabelWidth, resultLabelHeight); } private void setRangeLabelBounds(int x, int y, int templateWidth) { - RANGE_LABEL_X = x + templateWidth / 2 + templateWidth / 30; - RANGE_LABEL_Y = y + 20; - RANGE_LABEL_WIDTH = FIND_LABEL_WIDTH; - RANGE_LABEL_HEIGHT = 25; - rangeLabel.setBounds(RANGE_LABEL_X, RANGE_LABEL_Y, RANGE_LABEL_WIDTH, RANGE_LABEL_HEIGHT); + rangeLabelX = x + templateWidth / 2 + templateWidth / 30; + rangeLabelY = y + 20; + rangeLabelWidth = findLabelWidth; + rangeLabelHeight = 25; + rangeLabel.setBounds(rangeLabelX, rangeLabelY, rangeLabelWidth, rangeLabelHeight); } private void setFindLabelBounds(int x, int y, int templateWidth) { - FIND_LABEL_X = x + templateWidth / 60; - FIND_LABEL_Y = y + 20; - FIND_LABEL_WIDTH = templateWidth / 20; - FIND_LABEL_HEIGHT = 25; - findLabel.setBounds(FIND_LABEL_X, FIND_LABEL_Y, FIND_LABEL_WIDTH, FIND_LABEL_HEIGHT); + findLabelX = x + templateWidth / 60; + findLabelY = y + 20; + findLabelWidth = templateWidth / 20; + findLabelHeight = 25; + findLabel.setBounds(findLabelX, findLabelY, findLabelWidth, findLabelHeight); } public JPanel getUpPanel() { diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java index c754c2c434..a0d2f7e017 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java @@ -60,6 +60,8 @@ public class ITTableButton extends AbstractCellEditor implements TableCellEditor */ @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { + ITContent content = (ITContent) table.getValueAt(row, 7); + paraButton.setEnabled(content.isJumpAble()); return paraButton; } @@ -76,6 +78,8 @@ public class ITTableButton extends AbstractCellEditor implements TableCellEditor */ @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { + ITContent content = (ITContent) table.getValueAt(row, 7); + paraButton.setEnabled(content.isJumpAble()); return paraButton; } From c4fc5636ef5a0ad700f534659493150e0f597251 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Sat, 17 Sep 2022 15:04:06 +0800 Subject: [PATCH 20/93] =?UTF-8?q?REPORT-75998=20=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E4=B8=8D=E5=90=88=E7=90=86=E7=9A=84import?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../actions/replace/action/SearchManagerCenter.java | 7 ++----- .../com/fr/design/actions/replace/action/ShowValue.java | 1 - .../action/content/component/SearchComponentAction.java | 2 +- .../action/content/floatelement/SearchFloatAction.java | 2 +- .../replace/action/content/formula/SearchFormula.java | 1 - .../action/content/formula/SearchFormulaManager.java | 1 - .../content/formula/cell/SearchCellFormulaAction.java | 2 +- .../content/formula/cell/SearchDSColumnFormulaAction.java | 7 ++----- .../content/formula/cell/SearchRichFormulaAction.java | 1 - .../replace/action/content/formula/data/DataType.java | 6 ++++-- .../content/formula/data/SearchDataFormulaAction.java | 5 ----- .../content/formula/floatelement/SearchFloatFormula.java | 3 --- .../content/formula/highlight/SearchHighlightFormula.java | 1 - .../formula/highlight/SearchHighlightFormulaAction.java | 4 +--- .../formula/highlight/SearchHighlightFormulaManager.java | 2 -- .../highlight/condition/SearchConditionFormula.java | 1 - .../highlight/condition/SearchFormulaConditionAction.java | 1 - .../highlight/javascript/SearchExportJSFormulaAction.java | 2 +- .../formula/highlight/javascript/SearchJSFormula.java | 2 +- .../highlight/javascript/SearchJSFormulaManager.java | 4 +--- .../formula/template/SearchTemplateFormulaAction.java | 3 +-- .../formula/widget/SearchDateEditorFormulaAction.java | 3 +-- .../content/formula/widget/SearchDictFormulaAction.java | 3 +-- .../formula/widget/SearchTreeEditorFormulaAction.java | 1 - .../content/formula/widget/SearchWidgetFormula.java | 1 - .../content/formula/widget/SearchWidgetFormulaAction.java | 3 +-- .../formula/widget/SearchWidgetFormulaManager.java | 2 -- .../replace/action/content/js/SearchCellJSAction.java | 7 +++---- .../replace/action/content/js/SearchChartJSAction.java | 2 +- .../replace/action/content/js/SearchFloatJSAction.java | 8 +++----- .../replace/action/content/sql/SearchSQLAction.java | 1 - .../fr/design/actions/replace/info/DealWithInfoValue.java | 5 ++--- .../java/com/fr/design/actions/replace/info/JSInfo.java | 1 - .../fr/design/actions/replace/info/base/ITContent.java | 1 - .../fr/design/actions/replace/ui/ITReplaceMainDialog.java | 1 - 35 files changed, 28 insertions(+), 69 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/SearchManagerCenter.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/SearchManagerCenter.java index d1c7054b5b..211ab41d66 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/SearchManagerCenter.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/SearchManagerCenter.java @@ -5,12 +5,9 @@ import com.fr.design.actions.replace.action.content.formula.highlight.SearchHigh import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchConditionManager; import com.fr.design.actions.replace.action.content.formula.highlight.javascript.SearchJSFormulaManager; import com.fr.design.actions.replace.action.content.formula.widget.SearchWidgetFormulaManager; -import com.fr.design.actions.replace.action.content.js.SearchCellJSAction; -import com.fr.design.actions.replace.action.content.js.SearchJS; + import com.fr.design.actions.replace.action.content.js.SearchJSManager; -import com.fr.design.actions.replace.action.content.js.SearchWebJSAction; -import com.fr.design.actions.replace.action.content.js.SearchWidgetJSAction; -import com.fr.third.v2.org.apache.poi.ss.formula.functions.T; + import org.jetbrains.annotations.Nullable; /** diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowValue.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowValue.java index c65cee63fb..02ded341eb 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowValue.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowValue.java @@ -3,7 +3,6 @@ package com.fr.design.actions.replace.action; import com.fr.design.actions.replace.info.Info; import com.fr.design.mainframe.JTemplate; -import java.util.ArrayList; import java.util.List; /** diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java index 775d03f5c2..4326f62287 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java @@ -1,7 +1,7 @@ package com.fr.design.actions.replace.action.content.component; import com.fr.design.actions.replace.action.SearchAction; -import com.fr.design.actions.replace.action.content.cell.SearchCellAction; + import com.fr.design.actions.replace.info.ComponentInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.mainframe.JTemplate; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/floatelement/SearchFloatAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/floatelement/SearchFloatAction.java index 4d89c51361..6f0a338b90 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/floatelement/SearchFloatAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/floatelement/SearchFloatAction.java @@ -2,7 +2,7 @@ package com.fr.design.actions.replace.action.content.floatelement; import com.fr.chart.chartattr.ChartCollection; import com.fr.design.actions.replace.action.SearchAction; -import com.fr.design.actions.replace.action.content.cell.SearchCellAction; + import com.fr.design.actions.replace.info.FloatInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormula.java index 82a2db3275..67bc2e4b1f 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormula.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormula.java @@ -6,7 +6,6 @@ import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.mainframe.JTemplate; -import java.util.ArrayList; import java.util.List; /** diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormulaManager.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormulaManager.java index 51c61ef6ae..296123405e 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormulaManager.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/SearchFormulaManager.java @@ -1,7 +1,6 @@ package com.fr.design.actions.replace.action.content.formula; import com.fr.design.actions.replace.action.SearchAction; -import com.fr.design.actions.replace.action.SearchManager; import com.fr.design.actions.replace.action.content.formula.cell.SearchCellFormulaAction; import com.fr.design.actions.replace.action.content.formula.data.SearchDataFormulaAction; import com.fr.design.actions.replace.action.content.formula.floatelement.SearchFloatFormulaAction; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java index 3882d7721e..9cfdd43433 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java @@ -27,7 +27,7 @@ import com.fr.report.core.sort.common.CellSortAttr; import com.fr.report.core.sort.sortexpression.FormulaSortExpression; import com.fr.report.core.sort.sortexpression.SortExpression; -import java.util.HashMap; + import java.util.List; import java.util.Map; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchDSColumnFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchDSColumnFormulaAction.java index 0048c84563..cc2c1988e4 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchDSColumnFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchDSColumnFormulaAction.java @@ -2,11 +2,9 @@ package com.fr.design.actions.replace.action.content.formula.cell; import com.fr.base.Formula; import com.fr.base.Parameter; -import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchCommonConditionAction; import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchConditionFormula; import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchConditionManager; -import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchFormulaConditionAction; -import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchListConditionAction; + import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; @@ -16,8 +14,7 @@ import com.fr.report.cell.cellattr.core.group.DSColumn; import com.fr.report.core.sort.sortexpression.FormulaSortExpression; import com.fr.report.core.sort.sortexpression.SortExpression; -import java.util.ArrayList; -import java.util.HashMap; + import java.util.List; import java.util.Map; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchRichFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchRichFormulaAction.java index c6a63e9bdc..5e60e17fff 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchRichFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchRichFormulaAction.java @@ -2,7 +2,6 @@ package com.fr.design.actions.replace.action.content.formula.cell; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; -import com.fr.design.actions.replace.utils.ShowValueUtils; import com.fr.design.i18n.Toolkit; import com.fr.report.cell.CellElement; import com.fr.report.cell.cellattr.core.RichChar; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/DataType.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/DataType.java index bece3ef101..2c8fd93165 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/DataType.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/DataType.java @@ -2,7 +2,9 @@ package com.fr.design.actions.replace.action.content.formula.data; import com.fr.base.Formula; import com.fr.base.TableData; -import com.fr.data.impl.*; +import com.fr.data.impl.ConditionTableData; +import com.fr.data.impl.DBTableData; +import com.fr.data.impl.RecursionTableData; import com.fr.data.impl.storeproc.StoreProcedure; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; @@ -11,7 +13,7 @@ import com.fr.stable.ParameterProvider; import com.fr.stable.StringUtils; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; + import java.util.List; /** diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormulaAction.java index 5cc7acc229..472819d6ad 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormulaAction.java @@ -1,19 +1,14 @@ package com.fr.design.actions.replace.action.content.formula.data; import com.fr.data.TableDataSource; -import com.fr.data.impl.DBTableData; import com.fr.design.actions.replace.action.content.formula.SearchFormula; -import com.fr.design.actions.replace.action.content.formula.widget.SearchWidgetFormulaAction; import com.fr.design.actions.replace.info.FormulaInfo; -import com.fr.design.actions.replace.info.SQLInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.data.tabledata.wrapper.TableDataFactory; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.JTemplate; import com.fr.file.TableDataConfig; -import com.fr.main.impl.WorkBook; -import java.util.ArrayList; import java.util.Iterator; import java.util.List; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/SearchFloatFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/SearchFloatFormula.java index f9f31d5a4d..4a74e46b8f 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/SearchFloatFormula.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/floatelement/SearchFloatFormula.java @@ -3,10 +3,7 @@ package com.fr.design.actions.replace.action.content.formula.floatelement; import com.fr.design.actions.replace.action.content.formula.SearchFormula; import com.fr.design.actions.replace.info.FloatInfo; import com.fr.design.actions.replace.info.FormulaInfo; -import com.fr.design.actions.replace.info.base.ITContent; -import com.fr.design.mainframe.JTemplate; -import java.util.ArrayList; import java.util.List; /** diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormula.java index 2758a42685..d9dc0b5e31 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormula.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormula.java @@ -5,7 +5,6 @@ import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.report.cell.cellattr.highlight.HighlightAction; -import java.util.ArrayList; import java.util.List; /** diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaAction.java index 0ce61c0a9d..28e6cacb8b 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaAction.java @@ -1,12 +1,10 @@ package com.fr.design.actions.replace.action.content.formula.highlight; -import com.fr.design.actions.replace.action.content.formula.highlight.javascript.SearchJSHighlightAction; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.report.cell.cellattr.highlight.HighlightAction; -import java.util.ArrayList; -import java.util.HashMap; + import java.util.List; import java.util.Map; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaManager.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaManager.java index bf05d46066..28a5b752a9 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaManager.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaManager.java @@ -2,8 +2,6 @@ package com.fr.design.actions.replace.action.content.formula.highlight; import com.fr.design.actions.replace.action.SearchAction; import com.fr.design.actions.replace.action.SearchManager; -import com.fr.design.actions.replace.action.content.formula.cell.SearchCellFormula; -import com.fr.design.actions.replace.action.content.formula.cell.SearchCellFormulaManager; import com.fr.design.actions.replace.action.content.formula.highlight.javascript.SearchJSHighlightAction; import java.util.HashMap; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchConditionFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchConditionFormula.java index 2cc7c595f4..85f5a67dbb 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchConditionFormula.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchConditionFormula.java @@ -5,7 +5,6 @@ import com.fr.design.actions.replace.info.base.ITContent; import com.fr.general.data.Condition; -import java.util.ArrayList; import java.util.List; /** diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchFormulaConditionAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchFormulaConditionAction.java index c668ea7679..c6b8533219 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchFormulaConditionAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchFormulaConditionAction.java @@ -1,7 +1,6 @@ package com.fr.design.actions.replace.action.content.formula.highlight.condition; import com.fr.data.condition.FormulaCondition; -import com.fr.design.actions.replace.action.content.formula.cell.SearchCellFormulaTypeAction; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchExportJSFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchExportJSFormulaAction.java index 44750feec9..716c2d908f 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchExportJSFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchExportJSFormulaAction.java @@ -7,7 +7,7 @@ import com.fr.js.ExportJavaScript; import com.fr.js.JavaScript; import com.fr.js.SingleJavaScript; -import java.util.ArrayList; + import java.util.List; /** diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormula.java index 780a982bb7..553c55ba5c 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormula.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormula.java @@ -5,7 +5,7 @@ import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.js.JavaScript; -import java.util.ArrayList; + import java.util.List; /** diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormulaManager.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormulaManager.java index 413f3c24f8..dafc79d586 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormulaManager.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormulaManager.java @@ -2,9 +2,7 @@ package com.fr.design.actions.replace.action.content.formula.highlight.javascrip import com.fr.design.actions.replace.action.SearchAction; import com.fr.design.actions.replace.action.SearchManager; -import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchCommonConditionAction; -import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchConditionFormula; -import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchConditionManager; + import java.util.HashMap; import java.util.Map; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java index a500bdb7fb..977de5a333 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java @@ -5,14 +5,13 @@ import com.fr.base.Parameter; import com.fr.base.ParameterConfig; import com.fr.base.io.AttrMark; import com.fr.base.iofile.attr.WatermarkAttr; -import com.fr.design.actions.replace.action.content.formula.data.SearchDataFormulaAction; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.JTemplate; import com.fr.report.core.ReportUtils; -import java.util.ArrayList; + import java.util.List; /** diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java index a4221c1b92..d7e81a1d6e 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java @@ -1,13 +1,12 @@ package com.fr.design.actions.replace.action.content.formula.widget; import com.fr.design.actions.replace.info.FormulaInfo; -import com.fr.design.actions.replace.info.WidgetInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; import com.fr.form.ui.DateEditor; import org.gradle.internal.impldep.org.apache.commons.lang.StringUtils; -import java.util.ArrayList; + import java.util.List; /** diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDictFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDictFormulaAction.java index 2f9072751e..a89e5118e1 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDictFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDictFormulaAction.java @@ -2,10 +2,9 @@ package com.fr.design.actions.replace.action.content.formula.widget; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; -import com.fr.form.ui.ComboCheckBox; import com.fr.form.ui.DictionaryContainer; -import java.util.ArrayList; + import java.util.List; /** diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java index 88722fc8f2..81987a1db4 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java @@ -10,7 +10,6 @@ import com.fr.form.ui.TreeEditor; import com.fr.form.ui.tree.LayerConfig; import com.fr.stable.StringUtils; -import java.util.ArrayList; import java.util.List; /** diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormula.java index 355cb0080e..166fd215ef 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormula.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormula.java @@ -3,7 +3,6 @@ package com.fr.design.actions.replace.action.content.formula.widget; import com.fr.design.actions.replace.action.content.formula.SearchFormula; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.Info; -import com.fr.design.actions.replace.info.WidgetInfo; import com.fr.design.actions.replace.info.base.ITContent; import java.util.List; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java index 61b139f053..f1f214f648 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java @@ -13,7 +13,7 @@ import com.fr.design.actions.replace.utils.ShowValueUtils; import com.fr.design.mainframe.JTemplate; import com.fr.form.main.Form; import com.fr.form.ui.ChartEditor; -import com.fr.form.ui.ComboCheckBox; + import com.fr.form.ui.Widget; import com.fr.form.ui.container.WScaleLayout; import com.fr.form.ui.container.WTitleLayout; @@ -21,7 +21,6 @@ import com.fr.form.ui.widget.CRBoundsWidget; import com.fr.main.impl.WorkBook; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaManager.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaManager.java index 08e0ea3942..6ddb7eae72 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaManager.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaManager.java @@ -2,8 +2,6 @@ package com.fr.design.actions.replace.action.content.formula.widget; import com.fr.design.actions.replace.action.SearchAction; import com.fr.design.actions.replace.action.SearchManager; -import com.fr.design.actions.replace.action.content.formula.highlight.SearchHighlightFormula; -import com.fr.design.actions.replace.action.content.formula.highlight.SearchHighlightFormulaManager; import java.util.HashMap; import java.util.Map; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchCellJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchCellJSAction.java index bbce689967..d0a00644eb 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchCellJSAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchCellJSAction.java @@ -1,7 +1,7 @@ package com.fr.design.actions.replace.action.content.js; import com.fr.chart.chartattr.ChartCollection; -import com.fr.design.actions.replace.action.SearchAction; + import com.fr.design.actions.replace.action.content.cell.SearchCellAction; import com.fr.design.actions.replace.info.CellInfo; import com.fr.design.actions.replace.info.JSInfo; @@ -10,15 +10,14 @@ import com.fr.design.actions.replace.utils.SearchJSUtils; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.JTemplate; import com.fr.js.JavaScriptImpl; -import com.fr.js.NameJavaScript; + import com.fr.js.NameJavaScriptGroup; -import com.fr.plugin.chart.base.VanChartHtmlLabel; + import com.fr.report.cell.CellElement; import com.fr.report.cell.TemplateCellElement; import com.fr.report.cell.cellattr.highlight.DefaultHighlight; import com.fr.report.cell.cellattr.highlight.HighlightAction; import com.fr.report.cell.cellattr.highlight.HyperlinkHighlightAction; -import com.fr.stable.collections.combination.Pair; import java.util.ArrayList; import java.util.List; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java index fa2f716f0e..768972c679 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java @@ -8,7 +8,7 @@ import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.actions.replace.utils.SearchJSUtils; import com.fr.design.i18n.Toolkit; import com.fr.js.NameJavaScript; -import com.fr.plugin.chart.attr.axis.VanChartAlertValue; + import com.fr.plugin.chart.attr.axis.VanChartAxis; import com.fr.plugin.chart.base.VanChartHtmlLabel; import com.fr.stable.collections.combination.Pair; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchFloatJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchFloatJSAction.java index b64a934243..4270d5bbca 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchFloatJSAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchFloatJSAction.java @@ -1,20 +1,18 @@ package com.fr.design.actions.replace.action.content.js; import com.fr.chart.chartattr.ChartCollection; -import com.fr.design.actions.replace.action.SearchAction; + import com.fr.design.actions.replace.action.content.floatelement.SearchFloatAction; import com.fr.design.actions.replace.info.FloatInfo; import com.fr.design.actions.replace.info.JSInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.actions.replace.utils.SearchJSUtils; -import com.fr.design.i18n.Toolkit; + import com.fr.design.mainframe.JTemplate; -import com.fr.js.NameJavaScript; -import com.fr.plugin.chart.base.VanChartHtmlLabel; import com.fr.report.cell.FloatElement; -import com.fr.stable.collections.combination.Pair; + import java.util.*; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/sql/SearchSQLAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/sql/SearchSQLAction.java index 10fdd28659..10ae238056 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/sql/SearchSQLAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/sql/SearchSQLAction.java @@ -3,7 +3,6 @@ package com.fr.design.actions.replace.action.content.sql; import com.fr.data.TableDataSource; import com.fr.data.impl.DBTableData; import com.fr.design.actions.replace.action.SearchAction; -import com.fr.design.actions.replace.action.content.floatelement.SearchFloatAction; import com.fr.design.actions.replace.info.SQLInfo; import com.fr.design.actions.replace.info.base.ITContent; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/DealWithInfoValue.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/DealWithInfoValue.java index 14a3ff4d1b..feb5cc1a78 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/DealWithInfoValue.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/DealWithInfoValue.java @@ -1,11 +1,10 @@ package com.fr.design.actions.replace.info; -import com.fr.design.actions.replace.info.base.ITContent; + import com.fr.stable.collections.combination.Pair; -import java.util.ArrayList; -import java.util.HashMap; + import java.util.List; import java.util.Map; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/JSInfo.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/JSInfo.java index b1123c4eb9..4cf9de1fd8 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/JSInfo.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/JSInfo.java @@ -7,7 +7,6 @@ import com.fr.stable.AssistUtils; import com.fr.stable.collections.combination.Pair; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java index 239f4a92fc..de736cb27f 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java @@ -7,7 +7,6 @@ import com.fr.stable.collections.combination.Pair; import java.util.ArrayList; import java.util.List; -import java.util.Map; /** * 主要的存储信息的数据结构 diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java index 0c01a2ec87..b59499c7d5 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java @@ -3,7 +3,6 @@ package com.fr.design.actions.replace.ui; import com.fr.design.actions.replace.action.ShowSearchResultAction; -import com.fr.design.actions.replace.action.content.formula.SearchFormulaManager; import com.fr.design.actions.replace.info.Info; import com.fr.design.actions.replace.utils.ShowValueUtils; From b4a29f1a5f3e100bad53ee7fe1850e3866569154 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Sat, 17 Sep 2022 15:16:50 +0800 Subject: [PATCH 21/93] =?UTF-8?q?REPORT-75998=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../replace/action/ShowSearchResultAction.java | 6 +++--- .../condition/SearchConditionManager.java | 9 ++++++--- .../javascript/SearchJSFormulaManager.java | 11 ++++++++--- .../actions/replace/ui/ITReplaceNorthPanel.java | 16 ++++++++-------- 4 files changed, 25 insertions(+), 17 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java index 1cfc978f90..0ec4377a41 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java @@ -74,7 +74,7 @@ public enum ShowSearchResultAction implements ShowValue { } else { Map stringHashMap = info.getValue(); String content = stringHashMap.getOrDefault(objectContentKey, StringUtils.EMPTY); - if (content.contains(str) && !StringUtils.isEmpty(content)) { + if (content.contains(str) && StringUtils.isNotEmpty(content)) { info.getContent().setShowStr(ShowValueUtils.getCommonString(content, str)); info.getContent().setOldShowStr(content); info.getContent().setOperatorArray(ShowValueUtils.getStringStartAndEndIndex(content, str)); @@ -147,7 +147,7 @@ public enum ShowSearchResultAction implements ShowValue { jsInfos.add(nameJSInfo); } } - if (map.containsKey(objectContentKey) && !StringUtils.isEmpty(map.get(objectContentKey))) { + if (map.containsKey(objectContentKey) && StringUtils.isNotEmpty(map.get(objectContentKey))) { String content = map.get(objectContentKey); if (content.contains(str)) { JSInfo contentJSInfo = info.copy(); @@ -191,7 +191,7 @@ public enum ShowSearchResultAction implements ShowValue { } private void searchMap4SQLContent(Map map, List sqlInfos, SQLInfo info, String str) { - if (map.containsKey(objectContentKey) && !StringUtils.isEmpty(map.get(objectContentKey))) { + if (map.containsKey(objectContentKey) && StringUtils.isNotEmpty(map.get(objectContentKey))) { String content = map.get(objectContentKey); if (content.contains(str)) { SQLInfo contentJSInfo = info.copy(); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchConditionManager.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchConditionManager.java index e886f26c8d..6cebe52e76 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchConditionManager.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchConditionManager.java @@ -8,6 +8,8 @@ import java.util.HashMap; import java.util.Map; /** + * 管理条件类型的注册 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-09-16 @@ -28,7 +30,7 @@ public class SearchConditionManager implements SearchManager { @Override public void registerAction(String tag, SearchAction searchAction) { - if (searchAction instanceof SearchConditionFormula){ + if (searchAction instanceof SearchConditionFormula) { register(tag, (SearchConditionFormula) searchAction); } } @@ -42,7 +44,7 @@ public class SearchConditionManager implements SearchManager { /** * 注册 * - * @param tag 用于匹配的类型tag + * @param tag 用于匹配的类型tag * @param searchConditionFormula 对应的实现类 */ private void register(String tag, SearchConditionFormula searchConditionFormula) { @@ -60,9 +62,10 @@ public class SearchConditionManager implements SearchManager { /** * 获取类型 + * * @return */ - public Map getConditionType(){ + public Map getConditionType() { return conditionType; } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormulaManager.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormulaManager.java index dafc79d586..df797a36fa 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormulaManager.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormulaManager.java @@ -8,6 +8,8 @@ import java.util.HashMap; import java.util.Map; /** + * 管理JS公式的注册 + * * @author Destiny.Lin * @version 11.0 * created by Destiny.Lin on 2022-09-16 @@ -18,6 +20,7 @@ public class SearchJSFormulaManager implements SearchManager { public static final String COMMIT_2_DB_JAVASCRIPT = "Commit2DBJavaScript"; public static final String EXPORT_JAVASCRIPT = "ExportJavaScript"; public static final String MOBILE_POPUP_HYPERLINK = "MobilePopupHyperlink"; + private SearchJSFormulaManager() { //控件事件里面需要特殊处理的类型 //EmailJavaScript(这个暂时不做处理) @@ -41,7 +44,7 @@ public class SearchJSFormulaManager implements SearchManager { @Override public void registerAction(String tag, SearchAction searchAction) { - if (searchAction instanceof SearchJSFormula){ + if (searchAction instanceof SearchJSFormula) { register(tag, (SearchJSFormula) searchAction); } } @@ -50,10 +53,11 @@ public class SearchJSFormulaManager implements SearchManager { public void removeAction(String tag) { remove(tag); } + /** * 注册 * - * @param tag 用于匹配的类型tag + * @param tag 用于匹配的类型tag * @param searchJSFormula 对应的实现类 */ private void register(String tag, SearchJSFormula searchJSFormula) { @@ -71,9 +75,10 @@ public class SearchJSFormulaManager implements SearchManager { /** * 获取类型 + * * @return */ - public Map getJSType(){ + public Map getJSType() { return javaScriptType; } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java index a110f6c4a4..c35160954e 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java @@ -49,7 +49,7 @@ public class ITReplaceNorthPanel { private int matchX, matchY, matchWidth, matchHeight; private int resultLabelX, resultLabelY, resultLabelWidth, resultLabelHeight; private int findInputComboBoxX, findInputComboBoxY, findInputComboBoxWidth, findInputComboBoxHeight; - private int REPLACE_INPUT_COMBOBOX_X, REPLACE_INPUT_COMBOBOX_Y, REPLACE_INPUT_COMBOBOX_WIDTH, REPLACE_INPUT_COMBOBOX_HEIGHT; + private int replaceInputComboBoxX, replaceInputComboBoxY, replaceInputComboBoxWidth, replaceInputComboBoxHeight; private int replaceButtonX, replaceButtonY, replaceButtonWidth, replaceButtonHeight; private int searchButtonX, searchButtonY, searchButtonWidth, searchButtonHeight; private int buttonGap; @@ -196,7 +196,7 @@ public class ITReplaceNorthPanel { searchButtonHeight = 25; searchButtonY = resultLabelY; - searchButtonX = REPLACE_INPUT_COMBOBOX_X + REPLACE_INPUT_COMBOBOX_WIDTH - replaceButtonWidth * 2 - buttonGap; + searchButtonX = replaceInputComboBoxX + replaceInputComboBoxWidth - replaceButtonWidth * 2 - buttonGap; searchButton.setBounds(searchButtonX, searchButtonY, searchButtonWidth, searchButtonHeight); } @@ -205,16 +205,16 @@ public class ITReplaceNorthPanel { replaceButtonWidth = templateWidth / 30; replaceButtonHeight = 25; replaceButtonY = resultLabelY; - replaceButtonX = REPLACE_INPUT_COMBOBOX_X + REPLACE_INPUT_COMBOBOX_WIDTH - replaceButtonWidth; + replaceButtonX = replaceInputComboBoxX + replaceInputComboBoxWidth - replaceButtonWidth; replaceButton.setBounds(replaceButtonX, replaceButtonY, replaceButtonWidth, replaceButtonHeight); } private void setReplaceInputComboboxBounds(int x, int y, int templateWidth) { - REPLACE_INPUT_COMBOBOX_X = x + templateWidth / 2 + templateWidth / 30; - REPLACE_INPUT_COMBOBOX_Y = y + 55; - REPLACE_INPUT_COMBOBOX_WIDTH = templateWidth / 3 + templateWidth / 30 * 2; - REPLACE_INPUT_COMBOBOX_HEIGHT = 25; - replaceInputCombobox.setBounds(REPLACE_INPUT_COMBOBOX_X, REPLACE_INPUT_COMBOBOX_Y, REPLACE_INPUT_COMBOBOX_WIDTH, REPLACE_INPUT_COMBOBOX_HEIGHT); + replaceInputComboBoxX = x + templateWidth / 2 + templateWidth / 30; + replaceInputComboBoxY = y + 55; + replaceInputComboBoxWidth = templateWidth / 3 + templateWidth / 30 * 2; + replaceInputComboBoxHeight = 25; + replaceInputCombobox.setBounds(replaceInputComboBoxX, replaceInputComboBoxY, replaceInputComboBoxWidth, replaceInputComboBoxHeight); } private void setFindInputComboboxBounds(int x, int y, int templateWidth) { From e30b3eed360ea5649470a4cc25ebb537203b1589 Mon Sep 17 00:00:00 2001 From: "Bruce.Deng" Date: Sat, 17 Sep 2022 15:34:01 +0800 Subject: [PATCH 22/93] =?UTF-8?q?REPORT-75084=20=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E5=AE=89=E5=85=A8/=E6=9D=83=E9=99=90=EF=BC=9A=E5=AF=BC?= =?UTF-8?q?=E5=87=BAexcel=E3=80=81word=E6=94=AF=E6=8C=81=E6=B0=B4=E5=8D=B0?= =?UTF-8?q?=E3=80=81=E5=8F=AA=E8=AF=BB=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/report/ExcelExportPane.java | 181 +++++++++++++----- .../com/fr/design/report/ImageExportPane.java | 16 +- .../com/fr/design/report/PDFExportPane.java | 39 ++-- .../com/fr/design/report/WordExportPane.java | 166 +++++++++++++--- 4 files changed, 294 insertions(+), 108 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/report/ExcelExportPane.java b/designer-realize/src/main/java/com/fr/design/report/ExcelExportPane.java index f829616c7a..e00b5e22a4 100644 --- a/designer-realize/src/main/java/com/fr/design/report/ExcelExportPane.java +++ b/designer-realize/src/main/java/com/fr/design/report/ExcelExportPane.java @@ -1,29 +1,47 @@ package com.fr.design.report; +import com.fr.design.constants.UIConstants; import com.fr.design.dialog.BasicPane; +import com.fr.design.gui.ibutton.UIRadioButton; 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.gui.itextfield.UITextField; +import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.io.attr.ExcelExportAttr; import com.fr.stable.StringUtils; +import javax.swing.AbstractButton; import javax.swing.BorderFactory; +import javax.swing.ButtonGroup; import javax.swing.JPanel; +import java.awt.Color; +import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class ExcelExportPane extends BasicPane { private UICheckBox isExportHidedRow; private UICheckBox isExportHidenColumn; - private UICheckBox isNeedPassword; + // 文件密码 private UITextField passwordField; - private UICheckBox protectedWord; + // 工作表密码 private UITextField protectedField; + // 文件保护 + private UICheckBox fileProtect; + // 编辑保护 + private UICheckBox writeProtect; + // 工作表密码 + private UIRadioButton workbookPassword; + // 仅限预览 + private UIRadioButton onlyForPreview; + // 导出水印 + private UICheckBox exportWaterMark; private JPanel passwordWritePane; - private JPanel wordPane; + private JPanel writeProtectPane; public ExcelExportPane() { this.initComponents(); @@ -32,33 +50,35 @@ public class ExcelExportPane extends BasicPane { protected void initComponents() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); this.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); - JPanel outnorthPane =FRGUIPaneFactory.createTitledBorderPane("Excel" + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_ReportD_Excel_Export")); - JPanel northPane=FRGUIPaneFactory.createY_AXISBoxInnerContainer_M_Pane(); - this.add(outnorthPane); - outnorthPane.add(northPane); - JPanel rowAndColumnPane =FRGUIPaneFactory.createNormalFlowInnerContainer_M_Pane(); - northPane.add(rowAndColumnPane); + JPanel outPane = FRGUIPaneFactory.createTopVerticalTitledBorderPane("Excel" + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_ReportD_Excel_Export")); + JPanel outNorthPane = FRGUIPaneFactory.createTopVerticalTitledBorderPane(Toolkit.i18nText("Fine-Design_Report_Export_Setting")); + outNorthPane.setPreferredSize(new Dimension(580, 85)); + this.add(outPane); + outPane.add(outNorthPane); isExportHidedRow = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_ReportD_Export_Hided_Row")); isExportHidedRow.setSelected(false); - rowAndColumnPane.add(isExportHidedRow); + outNorthPane.add(isExportHidedRow); isExportHidenColumn = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_ReportD_Export_Hided_Column")); isExportHidenColumn.setSelected(false); - rowAndColumnPane.add(isExportHidenColumn); - - JPanel passwordPane =FRGUIPaneFactory.createNormalFlowInnerContainer_M_Pane(); - isNeedPassword = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_IS_Need_Password"), false); - passwordPane.add(isNeedPassword); - northPane.add(passwordPane); - passwordWritePane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); - passwordPane.add(passwordWritePane); - UILabel passwordLabel = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_File_Password") + ":"); - passwordWritePane.add(passwordLabel); + outNorthPane.add(isExportHidenColumn); + // 内容保护 + JPanel outSouthPane = FRGUIPaneFactory.createTopVerticalTitledBorderPane(Toolkit.i18nText("Fine-Design_Report_Export_Content_Protect")); + outSouthPane.setPreferredSize(new Dimension(580, 280)); + outPane.add(outSouthPane); + // 文件保护 + fileProtect = new UICheckBox(Toolkit.i18nText("Fine-Design_Report_Export_File_Protect"), false); + outSouthPane.add(fileProtect); + // 文件密码和密码框 + passwordWritePane = FRGUIPaneFactory.createVerticalFlowLayout_S_Pane(true); + JPanel passwordWriteFlowPane = FRGUIPaneFactory.createNormalFlowInnerContainer_M_Pane(); + UILabel filePassword = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_File_Password")); + passwordWriteFlowPane.add(filePassword); passwordField = new UITextField(11); - passwordWritePane.add(passwordField); -// UIButton displayPasswordButton = new UIButton("..."); - isNeedPassword.addActionListener(new ActionListener() { + passwordWriteFlowPane.add(passwordField); + passwordWritePane.add(passwordWriteFlowPane); + fileProtect.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - if (isNeedPassword.isSelected()) { + if (fileProtect.isSelected()) { passwordWritePane.setVisible(true); } else { passwordWritePane.setVisible(false); @@ -66,28 +86,57 @@ public class ExcelExportPane extends BasicPane { } }); - - + outSouthPane.add(passwordWritePane); + // 编辑保护 + writeProtect = new UICheckBox(Toolkit.i18nText("Fine-Design_Report_Export_Write_Protect"), false); + outSouthPane.add(writeProtect); + // 编辑保护勾选后展示的内容 + writeProtectPane = FRGUIPaneFactory.createVerticalFlowLayout_S_Pane(true); + outSouthPane.add(writeProtectPane); + // 工作表密码 + workbookPassword = new UIRadioButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Sheet_Password"), true); JPanel protectedWordPane =FRGUIPaneFactory.createNormalFlowInnerContainer_M_Pane(); - protectedWord = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Protected_Password")); - wordPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); - wordPane.add(new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Sheet_Password") + ":")); protectedField = new UITextField(11); - wordPane.add(protectedField); - protectedWordPane.add(protectedWord); - protectedWordPane.add(wordPane); - northPane.add(protectedWordPane); - protectedWord.addActionListener(new ActionListener() { + protectedWordPane.add(workbookPassword); + protectedWordPane.add(protectedField); + // 仅限预览 + onlyForPreview = new UIRadioButton(Toolkit.i18nText("Fine-Design_Report_Export_Only_For_Preview")); + JPanel onlyForPreviewPane =FRGUIPaneFactory.createNormalFlowInnerContainer_M_Pane(); + onlyForPreviewPane.add(onlyForPreview); + wrapButtonsInButtonGroup(workbookPassword, onlyForPreview); + writeProtectPane.add(protectedWordPane); + writeProtectPane.add(onlyForPreviewPane); + writeProtect.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - if (protectedWord.isSelected()) { - wordPane.setVisible(true); + if (writeProtect.isSelected()) { + writeProtectPane.setVisible(true); } else { - wordPane.setVisible(false); - protectedField.setText(null); + writeProtectPane.setVisible(false); } } }); + // 导出水印 + exportWaterMark = new UICheckBox(Toolkit.i18nText("Fine-Design_Report_Export_WaterMark"), false); + outSouthPane.add(exportWaterMark); + + JPanel tips = FRGUIPaneFactory.createBoxFlowInnerContainer_S_Pane(5, 5, 0); + UILabel uiLabel = new UILabel(Toolkit.i18nText("Fine-Design_Report_Export_WaterMark_Tips")); + uiLabel.setForeground(Color.GRAY); + ActionLabel actionLabel = new ActionLabel(Toolkit.i18nText("Fine-Design_Report_Export_WaterMark_Use"), UIConstants.FLESH_BLUE); + actionLabel.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + writeProtect.setSelected(true); + writeProtectPane.setVisible(true); + onlyForPreview.setSelected(true); + exportWaterMark.setSelected(true); + } + }); + tips.add(uiLabel); + tips.add(actionLabel); + outSouthPane.add(tips); + } @Override @@ -102,20 +151,33 @@ public class ExcelExportPane extends BasicPane { isExportHidedRow.setSelected(excelExportAttr.isExportHidedRow()); isExportHidenColumn.setSelected(excelExportAttr.isExportHidedColumn()); if (StringUtils.isEmpty(excelExportAttr.getPassword())) { - isNeedPassword.setSelected(false); + fileProtect.setSelected(false); passwordWritePane.setVisible(false); } else { - isNeedPassword.setSelected(true); - passwordField.setText(excelExportAttr.getPassword()); + fileProtect.setSelected(true); passwordWritePane.setVisible(true); + passwordField.setText(excelExportAttr.getPassword()); } - if (StringUtils.isEmpty(excelExportAttr.getProtectedWord())) { - this.protectedWord.setSelected(false); - this.wordPane.setVisible(false); + if (excelExportAttr.isWriteProtect()) { + if (excelExportAttr.isUseProtectedWord() && StringUtils.isNotEmpty(excelExportAttr.getProtectedWord())) { + writeProtect.setSelected(true); + writeProtectPane.setVisible(true); + workbookPassword.setSelected(true); + protectedField.setText(excelExportAttr.getProtectedWord()); + } else if (!excelExportAttr.isUseProtectedWord()) { + writeProtect.setSelected(true); + writeProtectPane.setVisible(true); + onlyForPreview.setSelected(true); + } else { + this.writeProtect.setSelected(false); + this.writeProtectPane.setVisible(false); + } } else { - this.protectedWord.setSelected(true); - this.wordPane.setVisible(true); - this.protectedField.setText(excelExportAttr.getProtectedWord()); + this.writeProtect.setSelected(false); + this.writeProtectPane.setVisible(false); + } + if (excelExportAttr.isExportWaterMark()) { + this.exportWaterMark.setSelected(true); } } @@ -125,11 +187,28 @@ public class ExcelExportPane extends BasicPane { excelExportAttr.setExportHidedColumn(isExportHidenColumn.isSelected()); excelExportAttr.setExportHidedRow(isExportHidedRow.isSelected()); - if (!isNeedPassword.isSelected()) { - passwordField.setText(null); + if (fileProtect.isSelected()) { + excelExportAttr.setPassword(passwordField.getText()); + } + if (writeProtect.isSelected()) { + excelExportAttr.setWriteProtect(true); + if (workbookPassword.isSelected()) { + excelExportAttr.setProtectedWord(protectedField.getText()); + } + excelExportAttr.setUseProtectedWord(workbookPassword.isSelected()); + } + if (exportWaterMark.isSelected()) { + excelExportAttr.setExportWaterMark(true); } - excelExportAttr.setPassword(passwordField.getText()); - excelExportAttr.setProtectedWord(this.protectedField.getText()); return excelExportAttr; } + + private void wrapButtonsInButtonGroup(AbstractButton... buttons) { + if (buttons != null) { + ButtonGroup buttonGroup = new ButtonGroup(); + for (AbstractButton button : buttons) { + buttonGroup.add(button); + } + } + } } diff --git a/designer-realize/src/main/java/com/fr/design/report/ImageExportPane.java b/designer-realize/src/main/java/com/fr/design/report/ImageExportPane.java index b8d6167335..08d1a213c3 100644 --- a/designer-realize/src/main/java/com/fr/design/report/ImageExportPane.java +++ b/designer-realize/src/main/java/com/fr/design/report/ImageExportPane.java @@ -10,13 +10,14 @@ import com.fr.design.layout.TableLayoutHelper; import com.fr.io.attr.ImageExportAttr; import com.fr.io.attr.ReportExportAttr; -import java.awt.Color; import javax.swing.AbstractButton; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.JComponent; import javax.swing.JPanel; import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; /** * 导出图片配置 @@ -51,11 +52,16 @@ public class ImageExportPane extends AbstractExportPane { this.setLayout(FRGUIPaneFactory.createBorderLayout()); this.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); JPanel globalTitlePane = FRGUIPaneFactory.createTitledBorderPane(GLOBAL_CONF); - JPanel tipsTitlePane = FRGUIPaneFactory.createTitledBorderPane(Toolkit.i18nText("Fine-Design_Report_Advice")); + JPanel outNorthPane = FRGUIPaneFactory.createTitledBorderPane(Toolkit.i18nText("Fine-Design_Report_Export_Setting")); + outNorthPane.setPreferredSize(new Dimension(580, 230)); UILabel tipLabel = new UILabel(Toolkit.i18nText("Fine-Design_Image_Export_Tips")); - tipLabel.setForeground(Color.RED); + tipLabel.setForeground(Color.GRAY); + JPanel tipsTitlePane = new JPanel(); + tipsTitlePane.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); + tipsTitlePane.setLayout(FRGUIPaneFactory.createBorderLayout()); tipsTitlePane.add(tipLabel); - this.add(globalTitlePane, BorderLayout.NORTH); + this.add(globalTitlePane); + globalTitlePane.add(outNorthPane); initGlobalSettings(); JPanel centerPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); @@ -73,7 +79,7 @@ public class ImageExportPane extends AbstractExportPane { GAP), BorderLayout.CENTER); centerPane.add(tipsTitlePane,BorderLayout.SOUTH); - globalTitlePane.add(centerPane, BorderLayout.CENTER); + outNorthPane.add(centerPane, BorderLayout.CENTER); } diff --git a/designer-realize/src/main/java/com/fr/design/report/PDFExportPane.java b/designer-realize/src/main/java/com/fr/design/report/PDFExportPane.java index 7fa71fe950..f8e5767478 100644 --- a/designer-realize/src/main/java/com/fr/design/report/PDFExportPane.java +++ b/designer-realize/src/main/java/com/fr/design/report/PDFExportPane.java @@ -1,20 +1,20 @@ package com.fr.design.report; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.*; - +import com.fr.design.dialog.BasicPane; import com.fr.design.gui.icheckbox.UICheckBox; -import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; +import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.dialog.BasicPane; - import com.fr.io.attr.PDFExportAttr; import com.fr.stable.StringUtils; +import javax.swing.BorderFactory; +import javax.swing.JPanel; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + public class PDFExportPane extends BasicPane { private UICheckBox isNeedPassword; private UITextField passwordField; @@ -27,21 +27,18 @@ public class PDFExportPane extends BasicPane { protected void initComponents() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); this.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); - JPanel outnorthPane =FRGUIPaneFactory.createTitledBorderPane("PDF" + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_ReportD_Excel_Export")); - JPanel northPane=FRGUIPaneFactory.createY_AXISBoxInnerContainer_M_Pane(); - this.add(outnorthPane); - outnorthPane.add(northPane); - JPanel rowAndColumnPane =FRGUIPaneFactory.createNormalFlowInnerContainer_M_Pane(); - northPane.add(rowAndColumnPane); - - JPanel passwordPane =FRGUIPaneFactory.createNormalFlowInnerContainer_M_Pane(); - isNeedPassword = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_IS_Need_Password"), false); + JPanel outPane =FRGUIPaneFactory.createTopVerticalTitledBorderPane("PDF" + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_ReportD_Excel_Export")); + this.add(outPane); + // 内容保护 + JPanel outNorthPane = FRGUIPaneFactory.createTopVerticalTitledBorderPane(Toolkit.i18nText("Fine-Design_Report_Export_Content_Protect")); + outNorthPane.setPreferredSize(new Dimension(580, 100)); + outPane.add(outNorthPane); + + isNeedPassword = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_File_Password"), false); + JPanel passwordPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); passwordPane.add(isNeedPassword); - northPane.add(passwordPane); passwordWritePane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); passwordPane.add(passwordWritePane); - UILabel passwordLabel = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_File_Password") + ":"); - passwordWritePane.add(passwordLabel); passwordField = new UITextField(11); passwordWritePane.add(passwordField); isNeedPassword.addActionListener(new ActionListener() { @@ -49,7 +46,7 @@ public class PDFExportPane extends BasicPane { passwordWritePane.setVisible(isNeedPassword.isSelected()); } }); - + outNorthPane.add(passwordPane); } @Override diff --git a/designer-realize/src/main/java/com/fr/design/report/WordExportPane.java b/designer-realize/src/main/java/com/fr/design/report/WordExportPane.java index df808c1bcb..c252a4e627 100644 --- a/designer-realize/src/main/java/com/fr/design/report/WordExportPane.java +++ b/designer-realize/src/main/java/com/fr/design/report/WordExportPane.java @@ -1,21 +1,42 @@ package com.fr.design.report; -import java.awt.Color; -import java.awt.Dimension; - -import javax.swing.*; - +import com.fr.design.constants.UIConstants; +import com.fr.design.dialog.BasicPane; +import com.fr.design.gui.ibutton.UIRadioButton; import com.fr.design.gui.icheckbox.UICheckBox; +import com.fr.design.gui.ilable.ActionLabel; import com.fr.design.gui.ilable.MultilineLabel; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.itextfield.UITextField; +import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.dialog.BasicPane; - import com.fr.io.attr.WordExportAttr; +import com.fr.stable.StringUtils; + +import javax.swing.AbstractButton; +import javax.swing.BorderFactory; +import javax.swing.ButtonGroup; +import javax.swing.JPanel; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; public class WordExportPane extends BasicPane { private UICheckBox isExportAsTable; - private JPanel southPane; + // 编辑保护 + private UICheckBox writeProtect; + // 工作表密码 + private UITextField protectedField; + // 工作表密码 + private UIRadioButton workbookPassword; + // 仅限预览 + private UIRadioButton onlyForPreview; + // 导出水印 + private UICheckBox exportWaterMark; + + private JPanel writeProtectPane; public WordExportPane() { this.initComponents(); @@ -24,31 +45,74 @@ public class WordExportPane extends BasicPane { protected void initComponents() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); this.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); - JPanel outnorthPane =FRGUIPaneFactory.createTitledBorderPane("Word" + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_ReportD_Excel_Export")); - this.add(outnorthPane); - - JPanel northPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_M_Pane(); - outnorthPane.add(northPane); - - JPanel checkBoxPane =FRGUIPaneFactory.createNormalFlowInnerContainer_M_Pane(); + JPanel outPane = FRGUIPaneFactory.createTopVerticalTitledBorderPane("Word" + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_ReportD_Excel_Export")); + JPanel outNorthPane =FRGUIPaneFactory.createTopVerticalTitledBorderPane(Toolkit.i18nText("Fine-Design_Report_Export_Setting")); + outNorthPane.setPreferredSize(new Dimension(580, 110)); + this.add(outPane); + outPane.add(outNorthPane); + isExportAsTable = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Is_Need_Word_Adjust"), false); - checkBoxPane.add(isExportAsTable); - - southPane = FRGUIPaneFactory.createNormalFlowInnerContainer_M_Pane(); - JPanel innerAlertBorderPane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Attention")); - JPanel alertPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_M_Pane(); - - MultilineLabel wordLineLabel = new MultilineLabel(); - wordLineLabel.setPreferredSize(new Dimension(250, 100)); + + MultilineLabel wordLineLabel = new MultilineLabel(); + wordLineLabel.setPreferredSize(new Dimension(560, 50)); wordLineLabel.setText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Alert_Word")); - wordLineLabel.setForeground(Color.RED); - alertPane.add(wordLineLabel); - - southPane.add(innerAlertBorderPane); - innerAlertBorderPane.add(alertPane); - - northPane.add(checkBoxPane); - northPane.add(southPane); + wordLineLabel.setForeground(Color.GRAY); + + outNorthPane.add(isExportAsTable); + outNorthPane.add(wordLineLabel); + // 内容保护 + JPanel outSouthPane = FRGUIPaneFactory.createTopVerticalTitledBorderPane(Toolkit.i18nText("Fine-Design_Report_Export_Content_Protect")); + outSouthPane.setPreferredSize(new Dimension(580, 250)); + outPane.add(outSouthPane); + // 编辑保护 + writeProtect = new UICheckBox(Toolkit.i18nText("Fine-Design_Report_Export_Write_Protect"), false); + outSouthPane.add(writeProtect); + // 编辑保护勾选后展示的内容 + writeProtectPane = FRGUIPaneFactory.createVerticalFlowLayout_S_Pane(true); + outSouthPane.add(writeProtectPane); + // 工作表密码 + workbookPassword = new UIRadioButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Sheet_Password"), true); + JPanel protectedWordPane =FRGUIPaneFactory.createNormalFlowInnerContainer_M_Pane(); + protectedField = new UITextField(11); + protectedWordPane.add(workbookPassword); + protectedWordPane.add(protectedField); + // 仅限预览 + onlyForPreview = new UIRadioButton(Toolkit.i18nText("Fine-Design_Report_Export_Only_For_Preview")); + JPanel onlyForPreviewPane =FRGUIPaneFactory.createNormalFlowInnerContainer_M_Pane(); + onlyForPreviewPane.add(onlyForPreview); + wrapButtonsInButtonGroup(workbookPassword, onlyForPreview); + writeProtectPane.add(protectedWordPane); + writeProtectPane.add(onlyForPreviewPane); + writeProtect.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + if (writeProtect.isSelected()) { + writeProtectPane.setVisible(true); + } else { + writeProtectPane.setVisible(false); + } + } + + }); + // 导出水印 + exportWaterMark = new UICheckBox(Toolkit.i18nText("Fine-Design_Report_Export_WaterMark"), false); + outSouthPane.add(exportWaterMark); + + JPanel tips = FRGUIPaneFactory.createBoxFlowInnerContainer_S_Pane(5, 5, 0); + UILabel uiLabel = new UILabel(Toolkit.i18nText("Fine-Design_Report_Export_WaterMark_Tips")); + uiLabel.setForeground(Color.GRAY); + ActionLabel actionLabel = new ActionLabel(Toolkit.i18nText("Fine-Design_Report_Export_WaterMark_Use"), UIConstants.FLESH_BLUE); + actionLabel.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + writeProtect.setSelected(true); + writeProtectPane.setVisible(true); + onlyForPreview.setSelected(true); + exportWaterMark.setSelected(true); + } + }); + tips.add(uiLabel); + tips.add(actionLabel); + outSouthPane.add(tips); } @Override @@ -65,11 +129,51 @@ public class WordExportPane extends BasicPane { isExportAsTable.setSelected(true); // southPane.setVisible(true); } + if (wordExportAttr.isWriteProtect()) { + if (wordExportAttr.isUseProtectedWord() && StringUtils.isNotEmpty(wordExportAttr.getProtectedWord())) { + writeProtect.setSelected(true); + writeProtectPane.setVisible(true); + workbookPassword.setSelected(true); + protectedField.setText(wordExportAttr.getProtectedWord()); + } else if (!wordExportAttr.isUseProtectedWord()) { + writeProtect.setSelected(true); + writeProtectPane.setVisible(true); + onlyForPreview.setSelected(true); + } else { + this.writeProtect.setSelected(false); + this.writeProtectPane.setVisible(false); + } + } else { + this.writeProtect.setSelected(false); + this.writeProtectPane.setVisible(false); + } + if (wordExportAttr.isExportWaterMark()) { + this.exportWaterMark.setSelected(true); + } } public WordExportAttr update() { WordExportAttr wordExportAttr = new WordExportAttr(); wordExportAttr.setExportAsTable(isExportAsTable.isSelected()); + if (writeProtect.isSelected()) { + wordExportAttr.setWriteProtect(true); + if (workbookPassword.isSelected()) { + wordExportAttr.setProtectedWord(protectedField.getText()); + } + wordExportAttr.setUseProtectedWord(workbookPassword.isSelected()); + } + if (exportWaterMark.isSelected()) { + wordExportAttr.setExportWaterMark(true); + } return wordExportAttr; } + + private void wrapButtonsInButtonGroup(AbstractButton... buttons) { + if (buttons != null) { + ButtonGroup buttonGroup = new ButtonGroup(); + for (AbstractButton button : buttons) { + buttonGroup.add(button); + } + } + } } From bec418373a2450ccfc331103ac6c5a79d71b100f Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Mon, 19 Sep 2022 14:28:08 +0800 Subject: [PATCH 23/93] =?UTF-8?q?REPORT-79093=20=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=EF=BC=88=E9=81=97?= =?UTF-8?q?=E7=95=99=EF=BC=89=201=E3=80=81=E6=B7=BB=E5=8A=A0=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=EF=BC=8C=E6=88=91=E7=9A=84=E6=A8=A1=E6=9D=BF=EF=BC=8C?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E7=9A=84=E9=BB=98=E8=AE=A4=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=202=E3=80=81=E6=B7=BB=E5=8A=A0tab=E9=A1=B5?= =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E6=8E=92=E5=BA=8F=203=E3=80=81?= =?UTF-8?q?=E4=BF=AE=E5=A4=8Dfvs=E6=89=93=E4=B8=8D=E5=BC=80=E9=97=AE?= =?UTF-8?q?=E9=A2=98=204=E3=80=81=E4=B8=80=E4=BA=9B=E5=B0=8F=E7=BB=86?= =?UTF-8?q?=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alphafine/AlphaFineConfigManager.java | 44 ++++- .../help/alphafine/AlphaFineConfigPane.java | 97 +++++++++- .../help}/alphafine/AlphaFineConstants.java | 19 +- .../alphafine/component/CustomSortPane.java | 174 ++++++++++++++++++ .../help/alphafine/component/MenuLabel.java | 95 ++++++++++ .../alphafine/component/MenuLabelPane.java | 33 ++++ .../com/fr/startup/ui/StartupPageWindow.java | 1 + .../mainframe/alphafine/AlphaFineUtil.java | 1 + .../alphafine/action/StartUseAction.java | 8 +- .../alphafine/cell/model/BottomModel.java | 2 +- .../alphafine/cell/model/DocumentModel.java | 2 +- .../alphafine/cell/model/PluginModel.java | 2 +- .../alphafine/cell/model/RobotModel.java | 2 +- .../cell/render/BottomCellRender.java | 2 +- .../cell/render/ContentCellRender.java | 2 +- .../cell/render/TitleCellRender.java | 2 +- .../alphafine/component/AlphaFineDialog.java | 2 +- .../alphafine/component/AlphaFineFrame.java | 58 +++--- .../alphafine/component/AlphaFineList.java | 5 +- .../component/AlphaFineTextField.java | 2 +- .../AlphaFineToolTipContentCellRender.java | 11 +- .../component/AlphaFineToolTipList.java | 5 +- .../component/AlphaSearchTooltipPane.java | 8 +- .../ProductNewsContentCellRender.java | 11 +- .../alphafine/component/ProductNewsList.java | 2 +- .../ProductNewsSearchResultPane.java | 7 +- .../component/RecommendSearchLabel.java | 53 ++++++ .../component/RecommendSearchPane.java | 37 +--- .../alphafine/component/SearchHintPane.java | 76 ++++++++ .../SearchResultContentCellRender.java | 11 +- .../alphafine/component/SearchResultPane.java | 5 +- .../alphafine/component/SelectedLabel.java | 2 +- .../component/TemplateResourcePanel.java | 28 ++- .../download/FineMarketConstants.java | 1 + .../download/FineMarketDownloadManager.java | 10 +- .../alphafine/model/TemplateResource.java | 14 ++ .../alphafine/preview/DefaultContentPane.java | 48 +++++ .../preview/DefaultPluginContentPane.java | 80 ++++++++ .../preview/DefaultProductNewsPane.java | 9 +- .../preview/DocumentPreviewPane.java | 2 +- .../alphafine/preview/FilePreviewPane.java | 2 +- .../preview/HelpDocumentNoResultPane.java | 14 +- .../preview/LoadingRightSearchResultPane.java | 11 +- .../alphafine/preview/NetWorkFailedPane.java | 2 +- .../alphafine/preview/NoResultPane.java | 5 +- .../preview/NoResultWithLinkPane.java | 7 +- .../alphafine/preview/PluginPreviewPane.java | 2 +- .../alphafine/preview/RobotPreviewPane.java | 2 +- .../alphafine/preview/SearchLoadingPane.java | 7 +- .../preview/SimpleRightSearchResultPane.java | 5 +- .../preview/TemplateResourceDetailPane.java | 6 +- .../alphafine/preview/TemplateShopPane.java | 2 +- .../ProductNewsSearchWorkerManager.java | 13 +- .../alphafine/search/SearchManager.java | 9 +- .../alphafine/search/SearchTextBean.java | 2 + .../alphafine/search/SearchWorkerManager.java | 25 ++- .../TemplateResourceSearchWorkerManager.java | 8 +- .../manager/SearchProviderRegistry.java | 34 ++++ .../manager/fun/AlphaFineSearchProvider.java | 6 + .../manager/impl/ActionSearchManager.java | 22 ++- .../manager/impl/ComplementAdviceManager.java | 2 +- .../manager/impl/DocumentSearchManager.java | 2 +- .../manager/impl/FileSearchManager.java | 19 +- .../search/manager/impl/HotIssuesManager.java | 5 +- .../manager/impl/PluginSearchManager.java | 73 +++++++- .../impl/ProductNewsSearchManager.java | 2 +- .../manager/impl/RecentSearchManager.java | 2 +- .../manager/impl/RecommendSearchManager.java | 2 +- .../manager/impl/SegmentationManager.java | 2 +- .../manager/impl/SimilarSearchManager.java | 2 +- .../impl/TemplateResourceSearchManager.java | 22 ++- .../alphafine/images/search_hint.svg | 37 ++++ .../alphafine/cell/model/ModelTest.java | 2 +- 73 files changed, 1146 insertions(+), 183 deletions(-) rename {designer-realize/src/main/java/com/fr/design/mainframe => designer-base/src/main/java/com/fr/design/actions/help}/alphafine/AlphaFineConstants.java (91%) create mode 100644 designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java create mode 100644 designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabel.java create mode 100644 designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabelPane.java create mode 100644 designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/RecommendSearchLabel.java create mode 100644 designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchHintPane.java create mode 100644 designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultContentPane.java create mode 100644 designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultPluginContentPane.java create mode 100644 designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/SearchProviderRegistry.java create mode 100644 designer-realize/src/main/resources/com/fr/design/mainframe/alphafine/images/search_hint.svg diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigManager.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigManager.java index b7df52c30f..8661324bd6 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigManager.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigManager.java @@ -102,6 +102,14 @@ public class AlphaFineConfigManager implements XMLable { * */ private boolean showTemplateShop = true; + + /** + * tab页排序 + * 默认排序:动态,模板商城,帮助文档,插件中心,功能,我的模板 + * */ + private String[] tabOrder; + public static final String COMMA = ","; + private Map actionSearchTextCache = new HashMap<>(8); private String cacheBuildNO; @@ -158,6 +166,7 @@ public class AlphaFineConfigManager implements XMLable { this.setShortcuts(reader.getAttrAsString("shortcuts", getDefaultShortCuts())); this.setNeedRemind(reader.getAttrAsBoolean("isNeedRemind", true)); this.setOperateCount(reader.getAttrAsInt("operateCount", 0)); + this.setTabOrder(reader.getAttrAsString("tabOrder", getDefaultTabOrder()).split(",")); } else if (reader.isChildNode()) { if (ComparatorUtils.equals(reader.getTagName(), "ActionSearchTextCache")) { readActionSearchTextCacheXML(reader); @@ -254,7 +263,8 @@ public class AlphaFineConfigManager implements XMLable { .attr("operateCount", this.getOperateCount()) .attr("needSegmentationCheckbox", this.isNeedSegmentationCheckbox()) .attr("needIntelligentCustomerService", this.isNeedIntelligentCustomerService()) - .attr("productDynamics", this.isProductDynamics()); + .attr("productDynamics", this.isProductDynamics()) + .attr("tabOrder", this.getTabOrderString()); writeActionSearchTextCacheXML(writer); writeSearchHistory(writer); writeReadSet(writer); @@ -317,6 +327,13 @@ public class AlphaFineConfigManager implements XMLable { return OperatingSystem.isMacOS() ? "meta + D" : "ctrl + D"; } + /** + * 返回默认排序 + * */ + private String getDefaultTabOrder() { + return AlphaFineConstants.PRODUCT_NEWS + COMMA + AlphaFineConstants.TEMPLATE_SHOP + COMMA + AlphaFineConstants.HELP + COMMA + AlphaFineConstants.PLUGIN + COMMA + AlphaFineConstants.FUNCTION + COMMA + AlphaFineConstants.MY_TEMPLATES; + } + public boolean isContainAction() { return containAction; } @@ -472,4 +489,29 @@ public class AlphaFineConfigManager implements XMLable { public void setProductDynamics(boolean productDynamics) { this.productDynamics = productDynamics; } + + /** + * 返回tab显示顺序 + * */ + public String[] getTabOrder() { + if (tabOrder == null) { + tabOrder = getDefaultTabOrder().split(COMMA); + } + return tabOrder; + } + + /** + * getTabOrder的tostring + * */ + public String getTabOrderString() { + StringBuilder sb = new StringBuilder(); + for (String s : getTabOrder()) { + sb.append(s + COMMA); + } + return sb.toString(); + } + + public void setTabOrder(String[] tabOrder) { + this.tabOrder = tabOrder; + } } diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigPane.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigPane.java index fa0f4a8f0a..7919465f4c 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigPane.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigPane.java @@ -3,8 +3,11 @@ package com.fr.design.actions.help.alphafine; import com.fr.base.FRContext; import com.fr.base.svg.IconUtils; import com.fr.design.DesignerEnvManager; +import com.fr.design.actions.help.alphafine.component.CustomSortPane; +import com.fr.design.constants.UIConstants; import com.fr.design.dialog.BasicPane; 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.gui.imenu.UIPopupMenu; import com.fr.design.gui.itextfield.UITextField; @@ -17,6 +20,7 @@ import com.fr.log.FineLoggerFactory; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JPanel; +import javax.swing.JPopupMenu; import javax.swing.KeyStroke; import java.awt.BorderLayout; import java.awt.Color; @@ -30,6 +34,8 @@ import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.util.ArrayList; +import java.util.List; /** * Created by XiaXiang on 2017/4/6. @@ -39,14 +45,24 @@ public class AlphaFineConfigPane extends BasicPane { private static final String DISPLAY_TYPE = "+"; private static final Color LABEL_TEXT = new Color(0x919193); + private static final int SEARCH_CONFIG_PANE_HEIGHT = 70; + private static final int SEARCH_CONFIG_PANE_WIDTH = 87; private static final double COLUMN_WIDTH = 150; private static final double ROW_HEIGHT = 25; private KeyStroke shortCutKeyStore = null; private UICheckBox enabledCheckbox, searchOnlineCheckbox, needSegmentationCheckbox; private UICheckBox productDynamicsCheckbox, containTemplateShopCheckbox, containDocumentCheckbox, containPluginCheckbox, containActionCheckbox, containMyTemplateCheckbox; + // 自定义排序按钮 + private ActionLabel customSortLabel; private UITextField shortcutsField; + + + // 当前tab排序。点击确定后会保存到配置文件中 + private String[] currentOrder; + + // 搜索范围-我的模板,相关组件 private JPanel containMyTemplatePane; private JButton myTemplateSearchConfigButton; @@ -79,7 +95,8 @@ public class AlphaFineConfigPane extends BasicPane { double[] rowSize = {ROW_HEIGHT, ROW_HEIGHT, ROW_HEIGHT}; double[] columnSize = {COLUMN_WIDTH, COLUMN_WIDTH, COLUMN_WIDTH}; - JPanel northPane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_AlphaFine_Search_Range")); + JPanel searchConfigWrapperPane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_AlphaFine_Search_Range")); + // 搜索选项 productDynamicsCheckbox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_AlphaFine_Product_News")); containActionCheckbox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Function")); containPluginCheckbox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Plugin_Addon")); @@ -89,10 +106,37 @@ public class AlphaFineConfigPane extends BasicPane { containTemplateShopCheckbox = new UICheckBox(Toolkit.i18nText("Fine-Design_Report_AlphaFine_Template_Shop")); containMyTemplateCheckbox = new UICheckBox(Toolkit.i18nText("Fine-Design_Report_My_Templates")); JPanel searchConfigPane = TableLayoutHelper.createTableLayoutPane(initSearchRangeComponents(), rowSize, columnSize); - northPane.add(searchConfigPane); - contentPane.add(northPane); + + // 自定义排序 + JPanel customSortWrapperPane = new JPanel(); + customSortWrapperPane.setPreferredSize(new Dimension(SEARCH_CONFIG_PANE_HEIGHT, SEARCH_CONFIG_PANE_WIDTH)); + customSortWrapperPane.setAlignmentY(JPanel.TOP_ALIGNMENT); + customSortLabel = new ActionLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_AlphaFine_Config_Custom_Sort"), false); + customSortLabel.setForeground(UIConstants.NORMAL_BLUE); + customSortLabel.addActionListener((event)->{ + openCustomSortMenu(); + }); + customSortWrapperPane.add(customSortLabel); + if (!hasSelectedSearchRangeCheckBox()) { + customSortLabel.setEnabled(false); + } + + searchConfigWrapperPane.add(searchConfigPane); + searchConfigWrapperPane.add(customSortWrapperPane); + contentPane.add(searchConfigWrapperPane); + } + + /** + * 打开自定义排序面板 + * */ + private void openCustomSortMenu() { + CustomSortPane customSortPane = new CustomSortPane(getSelectedSearchRangeCheckBox(), this); + JPopupMenu popupMenu = new JPopupMenu(); + popupMenu.add(customSortPane); + GUICoreUtils.showPopupMenu(popupMenu, customSortLabel, 0, customSortLabel.getHeight()); } + private Component[][] initSearchRangeComponents() { // 我的模板checkbox设置,点击后 initMyTemplateSearchPane(); @@ -102,12 +146,16 @@ public class AlphaFineConfigPane extends BasicPane { new Component[]{containPluginCheckbox, containActionCheckbox, containMyTemplatePane}, }; - for (int i = 0; i < components.length; i++) { - for (int j = 0; j < components[i].length; j++) { - if (components[i][j] instanceof UICheckBox) { - UICheckBox box = (UICheckBox) components[i][j]; + // 添加选项点事件,无选中选项时自定排序按钮置灰 + UICheckBox[] checkBoxes = new UICheckBox[]{productDynamicsCheckbox, containTemplateShopCheckbox, containDocumentCheckbox, containPluginCheckbox, containActionCheckbox, containMyTemplateCheckbox}; + for (UICheckBox box : checkBoxes) { + box.addActionListener((e)->{ + if (!hasSelectedSearchRangeCheckBox()) { + customSortLabel.setEnabled(false); + } else { + customSortLabel.setEnabled(true); } - } + }); } return components; } @@ -120,6 +168,20 @@ public class AlphaFineConfigPane extends BasicPane { || containPluginCheckbox.isSelected() || containActionCheckbox.isSelected() || containMyTemplateCheckbox.isSelected(); } + /** + * 获取当前选中的搜索范围选项 + * */ + private List getSelectedSearchRangeCheckBox() { + List res = new ArrayList<>(); + UICheckBox[] checkBoxes = new UICheckBox[]{productDynamicsCheckbox, containTemplateShopCheckbox, containDocumentCheckbox, containPluginCheckbox, containActionCheckbox, containMyTemplateCheckbox}; + for (UICheckBox c : checkBoxes) { + if (c.isSelected()) { + res.add(c); + } + } + return res; + } + // 搜索范围-我的模板 private void initMyTemplateSearchPane() { containMyTemplatePane = new JPanel(new FlowLayout(FlowLayout.LEFT,4,5)); @@ -280,6 +342,14 @@ public class AlphaFineConfigPane extends BasicPane { this.needSegmentationCheckbox.setSelected(alphaFineConfigManager.isNeedSegmentationCheckbox()); shortCutKeyStore = convert2KeyStroke(alphaFineConfigManager.getShortcuts()); + + this.currentOrder = alphaFineConfigManager.getTabOrder().clone(); + + if (!hasSelectedSearchRangeCheckBox()) { + customSortLabel.setEnabled(false); + } else { + customSortLabel.setEnabled(true); + } } public void update() { @@ -296,6 +366,9 @@ public class AlphaFineConfigPane extends BasicPane { alphaFineConfigManager.setContainFileContent(this.containFileContentSearchCheckbox.isSelected()); alphaFineConfigManager.setNeedSegmentationCheckbox(this.needSegmentationCheckbox.isSelected()); alphaFineConfigManager.setShortcuts(shortCutKeyStore != null ? shortCutKeyStore.toString().replace(TYPE, DISPLAY_TYPE) : this.shortcutsField.getText()); + alphaFineConfigManager.setTabOrder(currentOrder); + + designerEnvManager.setAlphaFineConfigManager(alphaFineConfigManager); try { DesignerEnvManager.loadLogSetting(); @@ -327,4 +400,12 @@ public class AlphaFineConfigPane extends BasicPane { public void setIsContainFileContentCheckbox(UICheckBox isContainFileContentCheckbox) { this.containFileContentSearchCheckbox = isContainFileContentCheckbox; } + + public String[] getCurrentOrder() { + return currentOrder; + } + + public void setCurrentOrder(String[] currentOrder) { + this.currentOrder = currentOrder; + } } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/AlphaFineConstants.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConstants.java similarity index 91% rename from designer-realize/src/main/java/com/fr/design/mainframe/alphafine/AlphaFineConstants.java rename to designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConstants.java index 935d2d0e35..946c99f3f1 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/AlphaFineConstants.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConstants.java @@ -1,4 +1,4 @@ -package com.fr.design.mainframe.alphafine; +package com.fr.design.actions.help.alphafine; import com.fr.base.extension.FileExtension; import com.fr.base.svg.IconUtils; @@ -22,6 +22,19 @@ import java.util.Set; */ public class AlphaFineConstants { + + public static final String FUNCTION = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Function"); + + public static final String MY_TEMPLATES = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_My_Templates"); + + public static final String PRODUCT_NEWS = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_AlphaFine_Product_News"); + + public static final String HELP = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Community_Help"); + + public static final String PLUGIN = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Plugin_Addon"); + + public static final String TEMPLATE_SHOP = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_AlphaFine_Template_Shop"); + public static final int SHOW_SIZE = 5; public static final int MAX_FILE_SIZE = 1000; @@ -40,7 +53,7 @@ public class AlphaFineConstants { public static final int CONTENT_HEIGHT = 405; - public static final int CELL_HEIGHT = 32; + public static final int CELL_HEIGHT = 29; public static final int CELL_TITLE_HEIGHT = 24; @@ -115,6 +128,8 @@ public class AlphaFineConstants { public static final String PLUGIN_SEARCH_URL = CloudCenter.getInstance().acquireUrlByKind("plugin.searchAPI"); + public static final String SEARCH_ALL_PLUGIN_URL = CloudCenter.getInstance().acquireUrlByKind("plugin.all.searchAPI"); + public static final String PLUGIN_URL = CloudCenter.getInstance().acquireUrlByKind("af.pluginInfo"); public static final String REUSE_URL = CloudCenter.getInstance().acquireUrlByKind("af.reuseInfo"); diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java new file mode 100644 index 0000000000..e483482edb --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java @@ -0,0 +1,174 @@ +package com.fr.design.actions.help.alphafine.component; + +import com.fr.base.svg.IconUtils; +import com.fr.design.actions.help.alphafine.AlphaFineConfigPane; +import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.gui.icheckbox.UICheckBox; +import com.fr.stable.StringUtils; + +import javax.swing.BorderFactory; +import javax.swing.JPanel; +import javax.swing.SwingUtilities; +import javax.swing.plaf.PanelUI; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.function.Function; + +/** + * @version 11.0 + * @author: Link + * @date: 2022/9/9 + * @Description: alphafine设置 - 搜索范围 - 自定义排序 - 弹出面板 + */ +public class CustomSortPane extends JPanel { + + + private static final int WIDTH = 147; + private static final int ITEM_HEIGHT = 23; + private static final int GAP = 1; + private static final Color BACKGROUND_COLOR = new Color(0xdadadd); + + private UIButton top; + private UIButton bottom; + private UIButton up; + private UIButton down; + private JPanel toolbarPane; + private MenuLabelPane sortItemPane; + private List sortItems; + private MenuLabel selectedLabel; + private AlphaFineConfigPane parentPane; + + public CustomSortPane(List items, AlphaFineConfigPane parentPane) { + this.sortItems = items; + this.parentPane = parentPane; + setLayout(new BorderLayout(GAP, GAP)); + int height = (sortItems.size() + 1) * (ITEM_HEIGHT + GAP) + GAP; + setPreferredSize(new Dimension(WIDTH, height)); + initComponent(); + add(toolbarPane, BorderLayout.NORTH); + add(sortItemPane, BorderLayout.CENTER); + revalidate(); + this.setVisible(true); + } + + @Override + public void setUI(PanelUI ui) { + super.setUI(ui); + setBackground(BACKGROUND_COLOR); + + } + + private void initComponent() { + createToolbarPane(); + createSortItemPane(); + } + + private void createToolbarPane() { + top = new UIButton(IconUtils.readIcon("com/fr/design/mainframe/alphafine/images/top.svg")); + bottom = new UIButton(IconUtils.readIcon("com/fr/design/mainframe/alphafine/images/bottom.svg")); + up = new UIButton(IconUtils.readIcon("com/fr/design/mainframe/alphafine/images/up.svg")); + down = new UIButton(IconUtils.readIcon("com/fr/design/mainframe/alphafine/images/down.svg")); + top.addActionListener(e -> { + SwingUtilities.invokeLater(()->{ + sortItemPane.setComponentZOrder(selectedLabel, 0); + CustomSortPane.this.revalidate(); + CustomSortPane.this.repaint(); + refreshCurrentOrder(); + }); + + }); + bottom.addActionListener(e -> { + SwingUtilities.invokeLater(()->{ + sortItemPane.setComponentZOrder(selectedLabel, sortItemPane.getComponentCount() - 1); + CustomSortPane.this.revalidate(); + CustomSortPane.this.repaint(); + refreshCurrentOrder(); + }); + + }); + up.addActionListener(e -> { + SwingUtilities.invokeLater(()->{ + sortItemPane.setComponentZOrder(selectedLabel, sortItemPane.getComponentZOrder(selectedLabel) - 1); + CustomSortPane.this.revalidate(); + CustomSortPane.this.repaint(); + refreshCurrentOrder(); + }); + + }); + down.addActionListener(e -> { + SwingUtilities.invokeLater(()->{ + sortItemPane.setComponentZOrder(selectedLabel, sortItemPane.getComponentZOrder(selectedLabel) + 1); + CustomSortPane.this.revalidate(); + CustomSortPane.this.repaint(); + refreshCurrentOrder(); + }); + + }); + toolbarPane = new JPanel(new FlowLayout(FlowLayout.TRAILING, GAP, GAP)); + toolbarPane.setBorder(BorderFactory.createEmptyBorder()); + toolbarPane.add(top); + toolbarPane.add(bottom); + toolbarPane.add(up); + toolbarPane.add(down); + } + + private void createSortItemPane() { + String[] currentTabOrder = parentPane.getCurrentOrder(); + Map sortMap = new HashMap<>(); + for (int i = 0; i < currentTabOrder.length; i++) { + sortMap.put(currentTabOrder[i], i); + } + List sortLabels = new ArrayList<>(); + for (UICheckBox item : sortItems) { + MenuLabel label = new MenuLabel(item.getText(), (Function) o -> { + selectedLabel = o; + return null; + }); + sortLabels.add(label); + } + sortLabels.sort(Comparator.comparingInt(tab -> sortMap.get(tab.getText()))); + sortItemPane = new MenuLabelPane(sortLabels); + } + + + private void refreshCurrentOrder() { + String[] currentTabOrder = parentPane.getCurrentOrder(); + HashSet selectedTab = new HashSet<>(); + for (UICheckBox item : sortItems) { + selectedTab.add(item.getText()); + } + + // 未选中的tab,保持原排序不变 + Map exTab = new HashMap<>(); + for (int i = 0; i < currentTabOrder.length; i++) { + if (!selectedTab.contains(currentTabOrder[i])) { + exTab.put(currentTabOrder[i], i); + } + } + + // 计算当前排序 + String[] newOrder = new String[currentTabOrder.length]; + Component[] components =sortItemPane.getComponents(); + for (String s : exTab.keySet()) { + newOrder[exTab.get(s)] = s; + } + + int t = 0; + for (int i = 0; i < newOrder.length; i++) { + if (StringUtils.isEmpty(newOrder[i])) { + newOrder[i] = ((MenuLabel)components[t++]).getText(); + } + } + parentPane.setCurrentOrder(newOrder); + } + +} diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabel.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabel.java new file mode 100644 index 0000000000..2342f6da7a --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabel.java @@ -0,0 +1,95 @@ +package com.fr.design.actions.help.alphafine.component; + +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.utils.DesignUtils; + +import javax.swing.BorderFactory; +import javax.swing.plaf.LabelUI; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.util.function.Function; + +/** + * @version 11.0 + * @author: Link + * @date: 2022/9/12 + * @Description: 菜单label + */ +public class MenuLabel extends UILabel { + + private static final Color BACKGROUND_COLOR = Color.white; + private static final Color SELECTED_COLOR = new Color(0x419BF9); + private static final Color HOVERED_COLOR = new Color(0xd9ebfe); + private static final int HEIGHT = 23; + private static final int WIDTH = 147; + + private MenuLabelPane parentMenu; + private Function function; + private boolean isSelected; + + public MenuLabel(String text, Function function) { + super(text); + this.function = function; + setOpaque(true); + addMouseListener(createMouseListener()); + } + + public void setParentMenu(MenuLabelPane menu) { + this.parentMenu = menu; + } + + + @Override + public void setUI(LabelUI ui) { + super.setUI(ui); + this.setBackground(BACKGROUND_COLOR); + this.setBorder(BorderFactory.createEmptyBorder(2,10,1,10)); + this.setPreferredSize(new Dimension(WIDTH, HEIGHT)); + this.setFont(DesignUtils.getDefaultGUIFont().applySize(12)); + } + + public void setSelected(boolean selected) { + if (selected) { + parentMenu.setNoneSelected(); + setBackground(SELECTED_COLOR); + function.apply(this); + isSelected = true; + } else { + setBackground(BACKGROUND_COLOR); + isSelected = false; + } + } + + public boolean isSelected() { + return isSelected; + } + + MouseListener createMouseListener() { + return new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + super.mouseClicked(e); + setSelected(true); + } + + @Override + public void mouseEntered(MouseEvent e) { + super.mouseEntered(e); + if (!isSelected) { + setBackground(HOVERED_COLOR); + } + } + + @Override + public void mouseExited(MouseEvent e) { + super.mouseExited(e); + if (!isSelected) { + setBackground(BACKGROUND_COLOR); + } + } + }; + } +} diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabelPane.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabelPane.java new file mode 100644 index 0000000000..74877f9bbf --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabelPane.java @@ -0,0 +1,33 @@ +package com.fr.design.actions.help.alphafine.component; + +import javax.swing.JPanel; +import java.awt.FlowLayout; +import java.util.List; + +/** + * @version 11.0 + * @author: Link + * @date: 2022/9/12 + * @Description: 简单菜单面板 + */ +public class MenuLabelPane extends JPanel { + + private static final int GAP = 1; + + private List labels; + + public MenuLabelPane(List labels) { + this.labels = labels; + setLayout(new FlowLayout(FlowLayout.CENTER, GAP, GAP)); + for (MenuLabel label : labels) { + label.setParentMenu(this); + add(label); + } + } + + public void setNoneSelected() { + for (MenuLabel label : labels) { + label.setSelected(false); + } + } +} diff --git a/designer-base/src/main/java/com/fr/startup/ui/StartupPageWindow.java b/designer-base/src/main/java/com/fr/startup/ui/StartupPageWindow.java index cb0442abd8..b7b949aa5d 100644 --- a/designer-base/src/main/java/com/fr/startup/ui/StartupPageWindow.java +++ b/designer-base/src/main/java/com/fr/startup/ui/StartupPageWindow.java @@ -161,6 +161,7 @@ public class StartupPageWindow extends JFrame { revalidate(); setFullScreen(); + } private void setFullScreen() { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/AlphaFineUtil.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/AlphaFineUtil.java index 5648ab98d6..bdc1d18d79 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/AlphaFineUtil.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/AlphaFineUtil.java @@ -1,6 +1,7 @@ package com.fr.design.mainframe.alphafine; import com.fr.design.DesignerEnvManager; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.search.manager.impl.ProductNewsSearchManager; import com.fr.stable.ArrayUtils; import com.fr.stable.StringUtils; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/action/StartUseAction.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/action/StartUseAction.java index 4a7375f74e..cd73709c90 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/action/StartUseAction.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/action/StartUseAction.java @@ -72,7 +72,7 @@ public class StartUseAction implements ActionListener { File fileNeedOpen = new File(fileName); if (fileName.endsWith(FineMarketConstants.ZIP)) { File[] files = fileNeedOpen.getParentFile().listFiles(); - fileNeedOpen = getFirstCptOrFrm(files); + fileNeedOpen = getFirstTemplate(files); } else if (fileName.endsWith(FineMarketConstants.RAR)) { // rar资源没有解压,所以不用打开模板 return; @@ -88,9 +88,11 @@ public class StartUseAction implements ActionListener { } - private File getFirstCptOrFrm(File[] files) { + private File getFirstTemplate(File[] files) { for (File f : files) { - if (f.getName().endsWith(FineMarketConstants.CPT) || f.getName().endsWith(FineMarketConstants.FRM)) { + if (f.getName().endsWith(FineMarketConstants.CPT) || + f.getName().endsWith(FineMarketConstants.FRM) || + f.getName().endsWith(FineMarketConstants.FVS)) { return f; } } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/BottomModel.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/BottomModel.java index 503a4f413d..dcc193e19c 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/BottomModel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/BottomModel.java @@ -1,6 +1,6 @@ package com.fr.design.mainframe.alphafine.cell.model; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.CellType; import com.fr.json.JSONException; import com.fr.json.JSONObject; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/DocumentModel.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/DocumentModel.java index 7456daffce..89ffaa6334 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/DocumentModel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/DocumentModel.java @@ -1,6 +1,6 @@ package com.fr.design.mainframe.alphafine.cell.model; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.CellType; import com.fr.json.JSONObject; import com.fr.log.FineLoggerFactory; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java index 570538cad1..3ea91ad548 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java @@ -1,7 +1,7 @@ package com.fr.design.mainframe.alphafine.cell.model; import com.fr.design.extra.WebViewDlgHelper; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.CellType; import com.fr.json.JSONObject; import com.fr.stable.StringUtils; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/RobotModel.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/RobotModel.java index d504b9d859..eeb3499d82 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/RobotModel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/RobotModel.java @@ -1,6 +1,6 @@ package com.fr.design.mainframe.alphafine.cell.model; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.CellType; import com.fr.general.http.HttpToolbox; import com.fr.json.JSONException; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/render/BottomCellRender.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/render/BottomCellRender.java index 43aca2cae8..3a22d8cad7 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/render/BottomCellRender.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/render/BottomCellRender.java @@ -1,7 +1,7 @@ package com.fr.design.mainframe.alphafine.cell.render; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.cell.model.BottomModel; import javax.swing.*; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/render/ContentCellRender.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/render/ContentCellRender.java index 4f57b92b28..07661ac4fb 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/render/ContentCellRender.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/render/ContentCellRender.java @@ -2,7 +2,7 @@ package com.fr.design.mainframe.alphafine.cell.render; import com.bulenkov.iconloader.IconLoader; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.cell.model.AlphaCellModel; import com.fr.design.mainframe.alphafine.cell.model.BottomModel; import com.fr.design.mainframe.alphafine.cell.model.MoreModel; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/render/TitleCellRender.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/render/TitleCellRender.java index 8d1d5a5f9b..4a1fee43fb 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/render/TitleCellRender.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/render/TitleCellRender.java @@ -1,7 +1,7 @@ package com.fr.design.mainframe.alphafine.cell.render; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.cell.model.MoreModel; import javax.swing.*; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java index e6e9245706..774735d4b1 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java @@ -7,7 +7,7 @@ import com.fr.design.dialog.UIDialog; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.cell.CellModelHelper; import com.fr.design.mainframe.alphafine.cell.model.AlphaCellModel; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineFrame.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineFrame.java index 339643efc9..8e9a4d3cdd 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineFrame.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineFrame.java @@ -4,16 +4,18 @@ import com.fr.base.svg.IconUtils; import com.fr.base.svg.SVGLoader; import com.fr.design.DesignerEnvManager; import com.fr.design.actions.help.alphafine.AlphaFineConfigManager; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.actions.help.alphafine.AlphaFineShortCutUtil; import com.fr.design.constants.UIConstants; import com.fr.design.gui.borders.UITextFieldBorder; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.CellType; import com.fr.design.mainframe.alphafine.cell.model.AlphaCellModel; import com.fr.design.mainframe.alphafine.model.ProductNews; +import com.fr.design.mainframe.alphafine.preview.DefaultContentPane; +import com.fr.design.mainframe.alphafine.preview.DefaultPluginContentPane; import com.fr.design.mainframe.alphafine.preview.DefaultProductNewsPane; import com.fr.design.mainframe.alphafine.preview.HelpDocumentNoResultPane; import com.fr.design.mainframe.alphafine.preview.LoadingRightSearchResultPane; @@ -72,7 +74,10 @@ import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; +import java.util.Comparator; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -102,8 +107,6 @@ public class AlphaFineFrame extends JFrame { private static final String PLACE_HOLDER = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_AlphaFine"); - private static final String FUNCTION = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Function"); - private static final String NO_RESULT = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_No_Result"); private static final String SKILLS = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_AlphaFine_Skills"); @@ -114,20 +117,10 @@ public class AlphaFineFrame extends JFrame { private static final String GO_FORUM = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_AlphaFine_Go_Forum"); - private static final String MY_TEMPLATES = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_My_Templates"); - - public static final String PRODUCT_NEWS = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_AlphaFine_Product_News"); - - private static final String HELP = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Community_Help"); - - private static final String PLUGIN = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Plugin_Addon"); - private static final String ONE_CLICK_READ = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_AlphaFine_One_Click_Read"); private static final String NO_SEARCH_RESULT = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_AlphaFine_NO_Result"); - private static final String TEMPLATE_SHOP = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_AlphaFine_Template_Shop"); - private static final Image SEARCH_IMAGE = SVGLoader.load("/com/fr/design/mainframe/alphafine/images/search.svg"); private static final Color BORDER_COLOR = new Color(232, 232, 233); @@ -425,9 +418,9 @@ public class AlphaFineFrame extends JFrame { // 内容区,card layout resultPane.add(new DefaultProductNewsPane(), CellType.PRODUCT_NEWS.getFlagStr4None()); resultPane.add(new NoResultWithLinkPane(GO_FORUM, AlphaFineConstants.NO_RESULT_ICON), CellType.NO_RESULT.getFlagStr4None()); - resultPane.add(new NoResultPane(SEARCH_TERM, AlphaFineConstants.NO_RESULT_ICON), CellType.ACTION.getFlagStr4None()); - resultPane.add(new NoResultPane(SEARCH_TERM, AlphaFineConstants.NO_RESULT_ICON), CellType.FILE.getFlagStr4None()); - resultPane.add(new NoResultPane(SEARCH_TERM, AlphaFineConstants.NO_RESULT_ICON), CellType.PLUGIN.getFlagStr4None()); + resultPane.add(new DefaultContentPane(CellType.ACTION, this), CellType.ACTION.getFlagStr4None()); + resultPane.add(new DefaultContentPane(CellType.FILE, this), CellType.FILE.getFlagStr4None()); + resultPane.add(new DefaultPluginContentPane(CellType.PLUGIN, this), CellType.PLUGIN.getFlagStr4None()); resultPane.add(new HelpDocumentNoResultPane(SEARCH_TERM, AlphaFineConstants.NO_RESULT_ICON), CellType.DOCUMENT.getFlagStr4None()); resultPane.add(TemplateShopPane.getInstance(), CellType.TEMPLATE_SHOP.getFlagStr4None()); resultPane.add(new NetWorkFailedPane(this::reSearch), AlphaFineConstants.NETWORK_ERROR); @@ -438,7 +431,7 @@ public class AlphaFineFrame extends JFrame { labelPane.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 20)); labelPane.setBackground(Color.WHITE); labelContentPane = new JPanel(new BorderLayout()); - tabLabel = createTabLabel(PRODUCT_NEWS); + tabLabel = createTabLabel(AlphaFineConstants.PRODUCT_NEWS); labelWestPane = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0)); labelWestPane.add(tabLabel); labelContentPane.add(labelWestPane, BorderLayout.WEST); @@ -518,8 +511,8 @@ public class AlphaFineFrame extends JFrame { AlphaFineFrame.this.selectedTab = selectedLabel; // 处理产品动态 tab与下方文字展示不一致 - if (ComparatorUtils.equals(selectedLabel.getText().trim(), PRODUCT_NEWS)) { - tabLabel.setText(PRODUCT_NEWS); + if (ComparatorUtils.equals(selectedLabel.getText().trim(), AlphaFineConstants.PRODUCT_NEWS)) { + tabLabel.setText(AlphaFineConstants.PRODUCT_NEWS); } else { tabLabel.setText(selectedLabel.getText()); } @@ -600,25 +593,27 @@ public class AlphaFineFrame extends JFrame { List selectedLabelList = new ArrayList<>(); AlphaFineConfigManager alphaFineConfigManager = DesignerEnvManager.getEnvManager().getAlphaFineConfigManager(); if (alphaFineConfigManager.isProductDynamics()) { - selectedLabelList.add(new SelectedLabel(PRODUCT_NEWS, CellType.PRODUCT_NEWS)); + selectedLabelList.add(new SelectedLabel(AlphaFineConstants.PRODUCT_NEWS, CellType.PRODUCT_NEWS)); } if (alphaFineConfigManager.hasTemplateShop()) { - selectedLabelList.add(new SelectedLabel(TEMPLATE_SHOP, CellType.TEMPLATE_SHOP)); + selectedLabelList.add(new SelectedLabel(AlphaFineConstants.TEMPLATE_SHOP, CellType.TEMPLATE_SHOP)); } if (alphaFineConfigManager.isContainDocument()) { - selectedLabelList.add(new SelectedLabel(HELP, CellType.DOCUMENT)); + selectedLabelList.add(new SelectedLabel(AlphaFineConstants.HELP, CellType.DOCUMENT)); } if (alphaFineConfigManager.isContainPlugin()) { - selectedLabelList.add(new SelectedLabel(PLUGIN, CellType.PLUGIN)); + selectedLabelList.add(new SelectedLabel(AlphaFineConstants.PLUGIN, CellType.PLUGIN)); } if (alphaFineConfigManager.isContainAction()) { - selectedLabelList.add(new SelectedLabel(FUNCTION, CellType.ACTION)); + selectedLabelList.add(new SelectedLabel(AlphaFineConstants.FUNCTION, CellType.ACTION)); } if (alphaFineConfigManager.isContainMyTemplate()) { - selectedLabelList.add(new SelectedLabel(MY_TEMPLATES, CellType.FILE)); + selectedLabelList.add(new SelectedLabel(AlphaFineConstants.MY_TEMPLATES, CellType.FILE)); } + // 根据设置排序 + sortList(selectedLabelList); // 默认选中第一个tab if (!selectedLabelList.isEmpty()) { selectedLabelList.get(0).setSelected(true); @@ -627,6 +622,19 @@ public class AlphaFineFrame extends JFrame { return selectedLabelList; } + /** + * 根据用户自定义的顺序排序 + * */ + private void sortList(List list) { + AlphaFineConfigManager alphaFineConfigManager = DesignerEnvManager.getEnvManager().getAlphaFineConfigManager(); + String[] tabOrder = alphaFineConfigManager.getTabOrder(); + Map orderMap = new HashMap<>(); + for (int i = 0; i < tabOrder.length; i++) { + orderMap.put(tabOrder[i], i); + } + list.sort(Comparator.comparingInt(tab -> orderMap.get(tab.getText()))); + } + private void fireOneClickRead() { List productNewsList = ProductNewsSearchManager.getInstance().getCachedProductNewsList(); Set readSet = DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().getReadSet(); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineList.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineList.java index f4ffe50e39..6cad0e2e26 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineList.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineList.java @@ -1,15 +1,16 @@ package com.fr.design.mainframe.alphafine.component; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.cell.model.AlphaCellModel; import com.fr.design.mainframe.alphafine.cell.model.DocumentModel; import com.fr.design.mainframe.alphafine.preview.ResultShowPane; + +import javax.swing.JList; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; -import javax.swing.JList; /** * @author hades diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineTextField.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineTextField.java index b745b0de96..ccf6e6d5f0 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineTextField.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineTextField.java @@ -1,7 +1,7 @@ package com.fr.design.mainframe.alphafine.component; import com.fr.design.gui.itextfield.UITextField; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineToolTipContentCellRender.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineToolTipContentCellRender.java index 1b439f1a83..395dec800f 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineToolTipContentCellRender.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineToolTipContentCellRender.java @@ -1,20 +1,21 @@ package com.fr.design.mainframe.alphafine.component; import com.fr.base.svg.IconUtils; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineUtil; import com.fr.general.ComparatorUtils; import com.fr.stable.StringUtils; -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Component; -import java.awt.Dimension; + import javax.swing.BorderFactory; import javax.swing.Icon; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.ListCellRenderer; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; /** * @author hades diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineToolTipList.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineToolTipList.java index 3d33337724..7f9edfaffc 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineToolTipList.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineToolTipList.java @@ -1,13 +1,14 @@ package com.fr.design.mainframe.alphafine.component; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.general.ComparatorUtils; + +import javax.swing.JList; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; -import javax.swing.JList; /** * @author hades diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaSearchTooltipPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaSearchTooltipPane.java index b07d506b8d..6682618766 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaSearchTooltipPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaSearchTooltipPane.java @@ -1,14 +1,14 @@ package com.fr.design.mainframe.alphafine.component; import com.fr.design.DesignerEnvManager; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.gui.icontainer.UIScrollPane; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; -import com.fr.stable.StringUtils; + +import javax.swing.DefaultListModel; +import javax.swing.JPanel; import java.awt.Color; import java.awt.Dimension; import java.util.Stack; -import javax.swing.DefaultListModel; -import javax.swing.JPanel; /** * @author hades diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/ProductNewsContentCellRender.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/ProductNewsContentCellRender.java index c6b5983d68..a8f51641c6 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/ProductNewsContentCellRender.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/ProductNewsContentCellRender.java @@ -1,21 +1,22 @@ package com.fr.design.mainframe.alphafine.component; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.constants.UIConstants; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineUtil; import com.fr.design.mainframe.alphafine.model.ProductNews; import com.fr.design.utils.DesignUtils; + +import javax.swing.BorderFactory; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.ListCellRenderer; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.Graphics; import java.text.SimpleDateFormat; -import javax.swing.BorderFactory; -import javax.swing.JList; -import javax.swing.JPanel; -import javax.swing.ListCellRenderer; /** * @author hades diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/ProductNewsList.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/ProductNewsList.java index 48dfa4b865..10921ff114 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/ProductNewsList.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/ProductNewsList.java @@ -1,7 +1,7 @@ package com.fr.design.mainframe.alphafine.component; import com.fr.design.DesignerEnvManager; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.model.ProductNews; import com.fr.design.utils.BrowseUtils; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/ProductNewsSearchResultPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/ProductNewsSearchResultPane.java index b3fd4dc958..5e29eed073 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/ProductNewsSearchResultPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/ProductNewsSearchResultPane.java @@ -1,13 +1,12 @@ package com.fr.design.mainframe.alphafine.component; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.gui.icontainer.UIScrollPane; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Dimension; import javax.swing.BorderFactory; import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.Color; /** * @author hades diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/RecommendSearchLabel.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/RecommendSearchLabel.java new file mode 100644 index 0000000000..3830b6db0d --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/RecommendSearchLabel.java @@ -0,0 +1,53 @@ +package com.fr.design.mainframe.alphafine.component; + +import com.fr.design.mainframe.alphafine.AlphaFineHelper; +import org.jetbrains.annotations.NotNull; + +import javax.swing.JLabel; +import javax.swing.JPanel; +import java.awt.Color; +import java.awt.FlowLayout; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.List; + +/** + * @author Link + * @version 11.0 + * Created by Link on 2022/9/19 + * alphaFine - 推荐搜索词标签 + */ +public class RecommendSearchLabel extends JPanel { + + private static final Color RECOMMEND_SEARCH_KEY_BLUE = new Color(0x419bf9); + + public RecommendSearchLabel(String title, @NotNull List tips) { + this.setLayout(new FlowLayout(FlowLayout.LEFT)); + this.setBackground(Color.WHITE); + JLabel recommend = new JLabel(title); + this.add(recommend); + + for (String key : tips) { + JLabel keyLabel = new SearchKeyLabel(key); + this.add(keyLabel); + } + } + + + public class SearchKeyLabel extends JLabel { + String searchKey; + + SearchKeyLabel(String searchKey) { + this.searchKey = searchKey; + setText(searchKey); + setBackground(Color.WHITE); + setForeground(RECOMMEND_SEARCH_KEY_BLUE); + addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + AlphaFineHelper.getAlphaFineDialog().fireSearch(searchKey); + } + }); + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/RecommendSearchPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/RecommendSearchPane.java index 41d4881605..8082d8e762 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/RecommendSearchPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/RecommendSearchPane.java @@ -1,23 +1,16 @@ package com.fr.design.mainframe.alphafine.component; import com.fr.design.i18n.Toolkit; -import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.model.TemplateResource; import javax.swing.BorderFactory; -import javax.swing.JLabel; -import javax.swing.JPanel; import java.awt.BorderLayout; import java.awt.Color; -import java.awt.FlowLayout; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; import java.util.List; public class RecommendSearchPane extends TemplateResourcePanel { private static final Color BORDER_WHITE = new Color(0xe8e8e9); - private static final Color RECOMMEND_SEARCH_KEY_BLUE = new Color(0x419bf9); public RecommendSearchPane(TemplateResource templateResource) { super(); @@ -37,37 +30,11 @@ public class RecommendSearchPane extends TemplateResourcePanel { private void createCenterPane() { - setCenterPane(new JPanel(new FlowLayout(FlowLayout.LEFT))); - JPanel centerPane = getCenterPane(); - centerPane.setBackground(Color.WHITE); - JLabel recommend = new JLabel(Toolkit.i18nText("Fine-Design_Report_AlphaFine_Template_Resource_Recommend_For_You")); - centerPane.add(recommend); + String recommend = Toolkit.i18nText("Fine-Design_Report_AlphaFine_Template_Resource_Recommend_For_You"); List searchKeys = getTemplateResource().getRecommendSearchKey(); - for (String key : searchKeys) { - JLabel keyLabel = new SearchKeyLabel(key); - centerPane.add(keyLabel); - } - } - - - class SearchKeyLabel extends JLabel { - String searchKey; - - SearchKeyLabel(String searchKey) { - this.searchKey = searchKey; - setText(searchKey); - setBackground(Color.WHITE); - setForeground(RECOMMEND_SEARCH_KEY_BLUE); - addMouseListener(new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent e) { - AlphaFineHelper.getAlphaFineDialog().fireSearch(searchKey); - } - }); - } - + setCenterPane(new RecommendSearchLabel(recommend, searchKeys)); } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchHintPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchHintPane.java new file mode 100644 index 0000000000..6207be8427 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchHintPane.java @@ -0,0 +1,76 @@ +package com.fr.design.mainframe.alphafine.component; + +import com.fr.base.svg.IconUtils; +import com.fr.common.util.Collections; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.i18n.Toolkit; +import com.fr.design.utils.DesignUtils; + +import javax.swing.BorderFactory; +import javax.swing.Icon; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.SwingConstants; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.util.ArrayList; +import java.util.List; + +/** + * @author Link + * @version 11.0 + * Created by Link on 2022/9/18 + * alphafine - 搜索提示面板 + */ +public class SearchHintPane extends JPanel { + + private static final String TITLE = Toolkit.i18nText("Fine-Design_Report_AlphaFine_Search_Title"); + private static final String RECOMMEND = Toolkit.i18nText("Fine-Design_Report_AlphaFine_Recommend_Search"); + private static final Icon icon = IconUtils.readIcon("com/fr/design/mainframe/alphafine/images/search_hint.svg"); + private static final int HEIGHT = 305; + private static final int WIDTH = 300; + private static final int TITLE_FONT_SIZE = 14; + + public SearchHintPane() { + this(new ArrayList<>()); + } + + public SearchHintPane(List hints) { + this(hints, icon, TITLE); + } + + public SearchHintPane(List hints, Icon icon, String title) { + setLayout(new BorderLayout()); + setBackground(Color.white); + setPreferredSize(new Dimension(WIDTH, HEIGHT)); + setAlignmentY(SwingConstants.CENTER); + UILabel image = new UILabel(); + image.setPreferredSize(new Dimension(150, 111)); + image.setHorizontalAlignment(SwingConstants.CENTER); + image.setIcon(icon); + image.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); + add(image, BorderLayout.NORTH); + add(generateDescription(title), BorderLayout.CENTER); + add(generateHintsLabel(hints), BorderLayout.SOUTH); + } + + protected Component generateDescription(String title) { + JLabel description = new JLabel(title); + description.setForeground(AlphaFineConstants.MEDIUM_GRAY); + description.setFont(DesignUtils.getDefaultGUIFont().applySize(TITLE_FONT_SIZE)); + description.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); + description.setHorizontalAlignment(SwingConstants.CENTER); + return description; + } + + private Component generateHintsLabel(List hints) { + if (Collections.isEmpty(hints)) { + return new JLabel(); + } + return new RecommendSearchLabel(RECOMMEND, hints); + } + +} diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchResultContentCellRender.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchResultContentCellRender.java index dd65d36a2f..b3fe2dc5b7 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchResultContentCellRender.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchResultContentCellRender.java @@ -1,19 +1,20 @@ package com.fr.design.mainframe.alphafine.component; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineUtil; import com.fr.design.mainframe.alphafine.cell.model.AlphaCellModel; import com.fr.general.IOUtils; import com.fr.stable.StringUtils; -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Component; -import java.awt.Dimension; + import javax.swing.BorderFactory; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.ListCellRenderer; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; /** * @author hades diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchResultPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchResultPane.java index d4f6c18027..642a0da2b2 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchResultPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchResultPane.java @@ -1,13 +1,14 @@ package com.fr.design.mainframe.alphafine.component; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.gui.icontainer.UIScrollPane; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.model.SearchResult; import com.fr.design.mainframe.alphafine.preview.ResultShowPane; + +import javax.swing.JPanel; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; -import javax.swing.JPanel; /** * @author hades diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SelectedLabel.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SelectedLabel.java index 9bf151adc9..4bc59fd935 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SelectedLabel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SelectedLabel.java @@ -2,7 +2,7 @@ package com.fr.design.mainframe.alphafine.component; import com.fr.design.constants.UIConstants; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineUtil; import com.fr.design.mainframe.alphafine.CellType; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/TemplateResourcePanel.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/TemplateResourcePanel.java index 967f0a41ff..31652c405d 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/TemplateResourcePanel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/TemplateResourcePanel.java @@ -1,5 +1,6 @@ package com.fr.design.mainframe.alphafine.component; +import com.fr.common.util.Strings; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.alphafine.model.TemplateResource; import com.fr.design.mainframe.alphafine.preview.TemplateShopPane; @@ -93,11 +94,8 @@ public class TemplateResourcePanel extends JPanel { } private void createCenterPane() { - JLabel nameLabel = new JLabel(templateResource.getName()); - nameLabel.setFont(RESOURCE_NAME_FONT); - nameLabel.setForeground(RESOURCE_NAME_COLOR); - nameLabel.setBackground(Color.WHITE); - nameLabel.setBorder(BorderFactory.createEmptyBorder()); + JLabel nameLabel = createHtmlNameLabel(); + JLabel demoLabel = new JLabel(); if (templateResource.hasDemoUrl()) { @@ -121,6 +119,26 @@ public class TemplateResourcePanel extends JPanel { centerPane.add(demoLabel, BorderLayout.EAST); } + + private static final String SEARCH_WORD_FORMAT = "%s"; + private static final String HTML_JLABEL_FORMAT = "%s"; + + private JLabel createHtmlNameLabel() { + JLabel label = new JLabel(); + String htmlText = templateResource.getName(); + String searchWord = templateResource.getSearchWord(); + if (!Strings.isEmpty(searchWord) && htmlText.contains(searchWord)) { + htmlText = htmlText.replace(searchWord, String.format(SEARCH_WORD_FORMAT, searchWord)); + } + htmlText = String.format(HTML_JLABEL_FORMAT, htmlText); + label.setText(htmlText); + label.setFont(RESOURCE_NAME_FONT); + label.setForeground(RESOURCE_NAME_COLOR); + label.setBackground(Color.WHITE); + label.setBorder(BorderFactory.createEmptyBorder()); + return label; + } + @Override public Dimension getPreferredSize() { return new Dimension(180, 90); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/download/FineMarketConstants.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/download/FineMarketConstants.java index f17095b093..f9d80238b5 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/download/FineMarketConstants.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/download/FineMarketConstants.java @@ -7,4 +7,5 @@ public class FineMarketConstants { public static final String RAR = ".rar"; public static final String CPT = ".cpt"; public static final String FRM = ".frm"; + public static final String FVS = ".fvs"; } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/download/FineMarketDownloadManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/download/FineMarketDownloadManager.java index c95ee8bde8..29172f94ef 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/download/FineMarketDownloadManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/download/FineMarketDownloadManager.java @@ -2,6 +2,7 @@ package com.fr.design.mainframe.alphafine.download; import com.fr.base.svg.IconUtils; import com.fr.common.util.Strings; +import com.fr.decision.webservice.v10.log.download.utils.LogZipUtils; import com.fr.design.DesignerEnvManager; import com.fr.design.extra.Process; import com.fr.design.i18n.Toolkit; @@ -11,8 +12,9 @@ import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.model.TemplateResource; import com.fr.design.mainframe.alphafine.search.helper.FineMarketClientHelper; import com.fr.design.mainframe.toast.SimpleToast; +import com.fr.general.IOUtils; import com.fr.log.FineLoggerFactory; -import com.fr.third.jodd.io.ZipUtil; +import com.fr.stable.pinyin.ChineseHelper; import javax.swing.SwingUtilities; import javax.swing.filechooser.FileSystemView; @@ -80,7 +82,11 @@ public class FineMarketDownloadManager { if (fileName.endsWith(FineMarketConstants.ZIP)) { File file = new File(fileName); File parentDir = file.getParentFile(); - ZipUtil.unzip(file, parentDir); + if (ChineseHelper.containChinese(fileName)) { + IOUtils.unzip(file, parentDir.getAbsolutePath(), LogZipUtils.GBK); + } else { + IOUtils.unzip(file, parentDir.getAbsolutePath()); + } } } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/model/TemplateResource.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/model/TemplateResource.java index b7ace8a3fc..9d55feb892 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/model/TemplateResource.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/model/TemplateResource.java @@ -65,6 +65,12 @@ public class TemplateResource { private List recommendSearchKey; private boolean embed; + + + /// 其他属性 + // 当前搜索词 + private String searchWord; + public static List createByJson(JSONArray jsonArray) { List list = new ArrayList<>(); if (jsonArray != null) { @@ -219,4 +225,12 @@ public class TemplateResource { this.uuid = uuid; return this; } + + public String getSearchWord() { + return searchWord; + } + + public void setSearchWord(String searchWord) { + this.searchWord = searchWord; + } } \ No newline at end of file diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultContentPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultContentPane.java new file mode 100644 index 0000000000..91a79f66cc --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultContentPane.java @@ -0,0 +1,48 @@ +package com.fr.design.mainframe.alphafine.preview; + +import com.fr.design.actions.help.alphafine.AlphaFineConstants; +import com.fr.design.mainframe.alphafine.CellType; +import com.fr.design.mainframe.alphafine.component.AlphaFineFrame; +import com.fr.design.mainframe.alphafine.component.SearchHintPane; +import com.fr.design.mainframe.alphafine.search.SearchWorkerManager; +import com.fr.design.mainframe.alphafine.search.manager.SearchProviderRegistry; + +import javax.swing.JPanel; +import java.awt.BorderLayout; + +/** + * @version 11.0 + * @author: Link + * @date: 2022/9/16 + * @Description: alphaFine - 默认展示页面 + */ +public class DefaultContentPane extends JPanel { + + // 左边展示内容,右边展示搜索提示 + private SearchWorkerManager searchWorkerManager; + private CellType cellType; + + public DefaultContentPane(CellType cellType, AlphaFineFrame parentWindow) { + this.setLayout(new BorderLayout()); + this.setPreferredSize(AlphaFineConstants.PREVIEW_SIZE); + this.searchWorkerManager = new SearchWorkerManager( + cellType, + searchTextBean -> SearchProviderRegistry.getSearchProvider(cellType).getDefaultResult(), + parentWindow, + new SimpleRightSearchResultPane(new SearchHintPane()) + ); + this.searchWorkerManager.showDefault(this); + } + + public DefaultContentPane() { + + } + + public CellType getCellType() { + return cellType; + } + + public void setCellType(CellType cellType) { + this.cellType = cellType; + } +} diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultPluginContentPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultPluginContentPane.java new file mode 100644 index 0000000000..87deed7a8c --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultPluginContentPane.java @@ -0,0 +1,80 @@ +package com.fr.design.mainframe.alphafine.preview; + +import com.fr.design.actions.help.alphafine.AlphaFineConstants; +import com.fr.design.mainframe.alphafine.AlphaFineHelper; +import com.fr.design.mainframe.alphafine.CellType; +import com.fr.design.mainframe.alphafine.component.AlphaFineFrame; +import com.fr.design.mainframe.alphafine.component.SearchHintPane; +import com.fr.design.mainframe.alphafine.search.SearchWorkerManager; +import com.fr.design.mainframe.alphafine.search.manager.SearchProviderRegistry; +import com.fr.general.CloudCenter; +import com.fr.log.FineLoggerFactory; + +import javax.swing.SwingWorker; +import java.awt.BorderLayout; +import java.util.ArrayList; +import java.util.List; + +/** + * @author Link + * @version 11.0 + * Created by Link on 2022/9/18 + * alphafine插件默认页 + */ +public class DefaultPluginContentPane extends DefaultContentPane { + + // 左边展示内容,右边展示搜索提示 + private SearchWorkerManager searchWorkerManager; + private CellType cellType; + + private static final String[] HINTS = CloudCenter.getInstance().acquireConf("alphafine.plugin.recommend", "JS,API,JSON").split(","); + + public DefaultPluginContentPane(CellType cellType, AlphaFineFrame parentWindow) { + super(); + this.setLayout(new BorderLayout()); + this.setPreferredSize(AlphaFineConstants.PREVIEW_SIZE); + new SwingWorker(){ + @Override + protected Boolean doInBackground() throws Exception { + add(new SearchLoadingPane()); + return AlphaFineHelper.isNetworkOk(); + } + + @Override + protected void done() { + super.done(); + try { + boolean networkOk = get(); + removeAll(); + if (!networkOk) { + add(new NetWorkFailedPane()); + } else { + List searchKeys = new ArrayList<>(); + for (String s : HINTS) { + searchKeys.add(s); + } + searchWorkerManager = new SearchWorkerManager( + cellType, + searchTextBean -> SearchProviderRegistry.getSearchProvider(cellType).getDefaultResult(), + parentWindow, + new SimpleRightSearchResultPane(new SearchHintPane(searchKeys)) + ); + searchWorkerManager.showDefault(DefaultPluginContentPane.this); + } + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e, e.getMessage()); + } + + } + }.execute(); + + } + + public CellType getCellType() { + return cellType; + } + + public void setCellType(CellType cellType) { + this.cellType = cellType; + } +} diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultProductNewsPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultProductNewsPane.java index d70e37ec04..e32e6dd249 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultProductNewsPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultProductNewsPane.java @@ -1,9 +1,9 @@ package com.fr.design.mainframe.alphafine.preview; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.i18n.Toolkit; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.component.ProductNewsContentCellRender; import com.fr.design.mainframe.alphafine.component.ProductNewsList; @@ -12,14 +12,15 @@ import com.fr.design.mainframe.alphafine.model.ProductNews; import com.fr.design.mainframe.alphafine.search.manager.impl.ProductNewsSearchManager; import com.fr.design.utils.DesignUtils; import com.fr.log.FineLoggerFactory; -import java.awt.BorderLayout; -import java.awt.Color; -import java.util.List; + import javax.swing.BorderFactory; import javax.swing.DefaultListModel; import javax.swing.ImageIcon; import javax.swing.JPanel; import javax.swing.SwingWorker; +import java.awt.BorderLayout; +import java.awt.Color; +import java.util.List; /** * @author hades diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DocumentPreviewPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DocumentPreviewPane.java index 6aa46f1a63..70e69f57f2 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DocumentPreviewPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DocumentPreviewPane.java @@ -2,7 +2,7 @@ package com.fr.design.mainframe.alphafine.preview; import com.fr.design.gui.itextarea.UITextArea; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import javax.swing.*; import java.awt.*; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/FilePreviewPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/FilePreviewPane.java index 1ba7a5b915..1548aeb7b9 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/FilePreviewPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/FilePreviewPane.java @@ -1,7 +1,7 @@ package com.fr.design.mainframe.alphafine.preview; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import javax.swing.*; import java.awt.*; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/HelpDocumentNoResultPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/HelpDocumentNoResultPane.java index 961d490e58..e3eac4d968 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/HelpDocumentNoResultPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/HelpDocumentNoResultPane.java @@ -1,9 +1,9 @@ package com.fr.design.mainframe.alphafine.preview; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.constants.UIConstants; import com.fr.design.gui.ilable.UILabel; import com.fr.design.i18n.Toolkit; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.utils.BrowseUtils; import com.fr.design.utils.DesignUtils; @@ -13,6 +13,12 @@ import com.fr.json.JSONFactory; import com.fr.json.JSONObject; import com.fr.log.FineLoggerFactory; +import javax.swing.BorderFactory; +import javax.swing.Icon; +import javax.swing.JPanel; +import javax.swing.JSeparator; +import javax.swing.SwingConstants; +import javax.swing.SwingWorker; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Cursor; @@ -22,12 +28,6 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.LinkedHashMap; import java.util.Map; -import javax.swing.BorderFactory; -import javax.swing.Icon; -import javax.swing.JPanel; -import javax.swing.JSeparator; -import javax.swing.SwingConstants; -import javax.swing.SwingWorker; /** * @author hades diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/LoadingRightSearchResultPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/LoadingRightSearchResultPane.java index 6201c25e58..916c7307a6 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/LoadingRightSearchResultPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/LoadingRightSearchResultPane.java @@ -1,7 +1,7 @@ package com.fr.design.mainframe.alphafine.preview; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.CellType; import com.fr.design.mainframe.alphafine.cell.model.AlphaCellModel; import com.fr.design.mainframe.alphafine.cell.model.FileModel; @@ -11,6 +11,11 @@ import com.fr.stable.project.ProjectConstants; import com.fr.workspace.WorkContext; import com.fr.workspace.server.exporter.LocalExportOperator; import com.fr.workspace.server.exporter.TemplateExportOperator; + +import javax.imageio.ImageIO; +import javax.swing.BorderFactory; +import javax.swing.ImageIcon; +import javax.swing.SwingWorker; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; @@ -18,10 +23,6 @@ import java.awt.image.BufferedImage; import java.io.IOException; import java.net.URL; import java.util.concurrent.ExecutionException; -import javax.imageio.ImageIO; -import javax.swing.BorderFactory; -import javax.swing.ImageIcon; -import javax.swing.SwingWorker; /** * @author hades diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/NetWorkFailedPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/NetWorkFailedPane.java index eb4c107c46..1dda65942c 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/NetWorkFailedPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/NetWorkFailedPane.java @@ -3,7 +3,7 @@ package com.fr.design.mainframe.alphafine.preview; import com.fr.design.gui.ilable.UILabel; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.share.ui.base.MouseClickListener; import com.fr.general.IOUtils; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/NoResultPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/NoResultPane.java index db92821186..33fb600f1a 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/NoResultPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/NoResultPane.java @@ -1,17 +1,16 @@ package com.fr.design.mainframe.alphafine.preview; -import com.bulenkov.iconloader.IconLoader; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; import com.fr.design.utils.DesignUtils; -import java.awt.Component; import javax.swing.BorderFactory; import javax.swing.Icon; import javax.swing.JPanel; import javax.swing.SwingConstants; import java.awt.BorderLayout; import java.awt.Color; +import java.awt.Component; import java.awt.Dimension; /** diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/NoResultWithLinkPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/NoResultWithLinkPane.java index 3dc4a44b2a..8b490a0929 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/NoResultWithLinkPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/NoResultWithLinkPane.java @@ -1,15 +1,16 @@ package com.fr.design.mainframe.alphafine.preview; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.dialog.link.MessageWithLink; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; import com.fr.design.utils.BrowseUtils; import com.fr.design.utils.DesignUtils; -import java.awt.Color; -import java.awt.Component; + import javax.swing.BorderFactory; import javax.swing.Icon; import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkListener; +import java.awt.Color; +import java.awt.Component; /** * 带跳转链接的无结果面板 diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/PluginPreviewPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/PluginPreviewPane.java index 6f659055e4..dbe3126647 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/PluginPreviewPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/PluginPreviewPane.java @@ -1,7 +1,7 @@ package com.fr.design.mainframe.alphafine.preview; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.CellType; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/RobotPreviewPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/RobotPreviewPane.java index f6a9f70767..5baa790648 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/RobotPreviewPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/RobotPreviewPane.java @@ -3,7 +3,7 @@ package com.fr.design.mainframe.alphafine.preview; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.itextarea.UITextArea; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.cell.model.AlphaCellModel; import com.fr.design.mainframe.alphafine.cell.model.RobotModel; import com.fr.log.FineLoggerFactory; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/SearchLoadingPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/SearchLoadingPane.java index e694708e88..17c2289794 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/SearchLoadingPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/SearchLoadingPane.java @@ -1,13 +1,12 @@ package com.fr.design.mainframe.alphafine.preview; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Dimension; import javax.swing.ImageIcon; import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.Color; /** * @author hades diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/SimpleRightSearchResultPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/SimpleRightSearchResultPane.java index 6d94bd9ed8..656e80b6ec 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/SimpleRightSearchResultPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/SimpleRightSearchResultPane.java @@ -1,11 +1,12 @@ package com.fr.design.mainframe.alphafine.preview; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.CellType; import com.fr.design.mainframe.alphafine.cell.model.AlphaCellModel; + +import javax.swing.JPanel; import java.awt.Color; import java.awt.Dimension; -import javax.swing.JPanel; /** * @author hades diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/TemplateResourceDetailPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/TemplateResourceDetailPane.java index f43d16e63c..a4b47dd8ee 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/TemplateResourceDetailPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/TemplateResourceDetailPane.java @@ -1,10 +1,10 @@ package com.fr.design.mainframe.alphafine.preview; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.constants.UIConstants; import com.fr.design.dialog.link.MessageWithLink; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.i18n.Toolkit; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.action.StartUseAction; import com.fr.design.mainframe.alphafine.component.TemplateResourceImagePanel; import com.fr.design.mainframe.alphafine.model.TemplateResourceDetail; @@ -70,8 +70,8 @@ public class TemplateResourceDetailPane extends JPanel { private static final Font HTML_FONT = DesignUtils.getDefaultGUIFont().applySize(12); private static final Color HTML_COLOR = new Color(0x5c5c5d); - private static final String HTML_FORMAT = "%s"; - private static final String DETAIL_INFO_HTML_FORMAT = "

" + DETAIL_INFO + "

%s"; + private static final String HTML_FORMAT = "%s"; + private static final String DETAIL_INFO_HTML_FORMAT = "

" + DETAIL_INFO + "

%s"; private static final String HTML_P_TAG_FORMAT = "

%s

"; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/TemplateShopPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/TemplateShopPane.java index 00e7c4495c..3ce5f8caf8 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/TemplateShopPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/TemplateShopPane.java @@ -1,7 +1,7 @@ package com.fr.design.mainframe.alphafine.preview; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.component.TemplateResourcePageGridPane; import com.fr.design.mainframe.alphafine.model.TemplateResource; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/ProductNewsSearchWorkerManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/ProductNewsSearchWorkerManager.java index 40161e9baa..a1631603dd 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/ProductNewsSearchWorkerManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/ProductNewsSearchWorkerManager.java @@ -1,16 +1,18 @@ package com.fr.design.mainframe.alphafine.search; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.CellType; import com.fr.design.mainframe.alphafine.component.AlphaFineFrame; import com.fr.design.mainframe.alphafine.component.ProductNewsSearchResultPane; import com.fr.design.mainframe.alphafine.model.ProductNews; +import com.fr.design.mainframe.alphafine.preview.DefaultContentPane; import com.fr.log.FineLoggerFactory; -import java.util.List; -import java.util.function.Function; + import javax.swing.DefaultListModel; import javax.swing.SwingWorker; +import java.util.List; +import java.util.function.Function; /** * @author hades @@ -99,6 +101,11 @@ public class ProductNewsSearchWorkerManager implements SearchManager { this.searchWorker.execute(); } + @Override + public void showDefault(DefaultContentPane defaultContentPane) { + + } + public ProductNewsSearchResultPane getSearchResultPane() { return searchResultPane; } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchManager.java index f9f7893955..079f1b7105 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchManager.java @@ -1,5 +1,7 @@ package com.fr.design.mainframe.alphafine.search; +import com.fr.design.mainframe.alphafine.preview.DefaultContentPane; + /** * @author hades * @version 11.0 @@ -7,7 +9,12 @@ package com.fr.design.mainframe.alphafine.search; */ public interface SearchManager { - void doSearch(SearchTextBean searchTextBean); + void doSearch(SearchTextBean searchTextBean); + + /** + * 展示默认内容 + * */ + void showDefault(DefaultContentPane defaultContentPane); boolean hasSearchResult(); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchTextBean.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchTextBean.java index f7148363c2..25fb64f9c6 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchTextBean.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchTextBean.java @@ -7,6 +7,8 @@ package com.fr.design.mainframe.alphafine.search; */ public class SearchTextBean { + public static SearchTextBean EMPTY = new SearchTextBean("", new String[0]); + private String searchText; /** diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchWorkerManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchWorkerManager.java index 0b25c3ca1e..bca8904a13 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchWorkerManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchWorkerManager.java @@ -1,6 +1,6 @@ package com.fr.design.mainframe.alphafine.search; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.CellType; import com.fr.design.mainframe.alphafine.cell.model.AlphaCellModel; @@ -9,12 +9,15 @@ import com.fr.design.mainframe.alphafine.component.AlphaFineList; import com.fr.design.mainframe.alphafine.component.SearchListModel; import com.fr.design.mainframe.alphafine.component.SearchResultPane; import com.fr.design.mainframe.alphafine.model.SearchResult; +import com.fr.design.mainframe.alphafine.preview.DefaultContentPane; import com.fr.design.mainframe.alphafine.preview.ResultShowPane; import com.fr.log.FineLoggerFactory; -import java.util.function.Function; -import javax.swing.SwingWorker; import org.jetbrains.annotations.Nullable; +import javax.swing.SwingUtilities; +import javax.swing.SwingWorker; +import java.util.function.Function; + /** * @author hades * @version 11.0 @@ -120,6 +123,22 @@ public class SearchWorkerManager implements SearchManager { this.searchWorker.execute(); } + @Override + public void showDefault(DefaultContentPane defaultContentPane) { + searchResultPane = new SearchResultPane(SearchTextBean.EMPTY.getSegmentation(), resultShowPane); + SearchListModel searchListModel = new SearchListModel(new SearchResult(), searchResultPane.getSearchResultList(), searchResultPane.getLeftSearchResultPane()); + SearchResult searchResult = searchResultFunction.apply(SearchTextBean.EMPTY); + for (AlphaCellModel object : searchResult) { + AlphaFineHelper.checkCancel(); + searchListModel.addElement(object); + } + searchResultPane.getSearchResultList().setModel(searchListModel); + searchResultPane.getSearchResultList().setSelectedIndex(0); + searchResultPane.getSearchResultList().requestFocus(); + defaultContentPane.add(searchResultPane); + SwingUtilities.invokeLater(()->defaultContentPane.repaint()); + } + @Override public boolean hasSearchResult() { return hasSearchResult; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/TemplateResourceSearchWorkerManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/TemplateResourceSearchWorkerManager.java index 613f0f57a8..6dd1a8adfc 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/TemplateResourceSearchWorkerManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/TemplateResourceSearchWorkerManager.java @@ -1,10 +1,11 @@ package com.fr.design.mainframe.alphafine.search; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.CellType; import com.fr.design.mainframe.alphafine.component.AlphaFineFrame; import com.fr.design.mainframe.alphafine.model.TemplateResource; +import com.fr.design.mainframe.alphafine.preview.DefaultContentPane; import com.fr.design.mainframe.alphafine.preview.TemplateShopPane; import com.fr.log.FineLoggerFactory; @@ -68,6 +69,11 @@ public class TemplateResourceSearchWorkerManager implements SearchManager { this.searchWorker.execute(); } + @Override + public void showDefault(DefaultContentPane defaultContentPane) { + + } + void showResult(List list) { if (networkError && !searchResult) { alphaFineFrame.showResult(AlphaFineConstants.NETWORK_ERROR); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/SearchProviderRegistry.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/SearchProviderRegistry.java new file mode 100644 index 0000000000..0cf7abae95 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/SearchProviderRegistry.java @@ -0,0 +1,34 @@ +package com.fr.design.mainframe.alphafine.search.manager; + +import com.fr.design.mainframe.alphafine.CellType; +import com.fr.design.mainframe.alphafine.search.manager.fun.AlphaFineSearchProvider; +import com.fr.design.mainframe.alphafine.search.manager.impl.ActionSearchManager; +import com.fr.design.mainframe.alphafine.search.manager.impl.FileSearchManager; +import com.fr.design.mainframe.alphafine.search.manager.impl.PluginSearchManager; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author Link + * @version 11.0 + * Created by Link on 2022/9/18 + * alphafine搜索提供者注册到这里 + */ +public class SearchProviderRegistry { + private static Map map; + + static { + map = new HashMap<>(); + map.put(CellType.PLUGIN, PluginSearchManager.getInstance()); + map.put(CellType.ACTION, ActionSearchManager.getInstance()); + map.put(CellType.FILE, FileSearchManager.getInstance()); + } + + /** + * 根据celltype获得对应searchProvider + * */ + public static AlphaFineSearchProvider getSearchProvider(CellType cellType) { + return map.get(cellType); + } +} diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/fun/AlphaFineSearchProvider.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/fun/AlphaFineSearchProvider.java index 631fce88ea..420762b87a 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/fun/AlphaFineSearchProvider.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/fun/AlphaFineSearchProvider.java @@ -22,6 +22,12 @@ public interface AlphaFineSearchProvider { */ SearchResult getMoreSearchResult(String searchText); + /** + * 不搜索的情况下,获取显示结果 + * */ + default SearchResult getDefaultResult() { + return new SearchResult(); + } /** * 获取所有搜索结果 取决于具体实现 diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ActionSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ActionSearchManager.java index 54d6d14025..c6b02160f8 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ActionSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ActionSearchManager.java @@ -1,7 +1,7 @@ package com.fr.design.mainframe.alphafine.search.manager.impl; import com.fr.design.DesignerEnvManager; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.CellType; import com.fr.design.mainframe.alphafine.cell.model.ActionModel; @@ -29,6 +29,7 @@ public class ActionSearchManager implements AlphaFineSearchProvider { private SearchResult filterModelList; private SearchResult lessModelList; private SearchResult moreModelList; + private SearchResult defaultModelList; public static ActionSearchManager getInstance() { if (instance == null) { @@ -41,6 +42,17 @@ public class ActionSearchManager implements AlphaFineSearchProvider { return instance; } + /** + * 初始化的时候初始化默认功能列表 + * */ + private ActionSearchManager() { + defaultModelList = new SearchResult(); + List updateActions = UpdateActionManager.getUpdateActionManager().getUpdateActions(); + for (UpdateActionModel updateActionModel : updateActions) { + defaultModelList.add(new ActionModel(updateActionModel.getActionName(), updateActionModel.getParentName(), updateActionModel.getAction())); + } + } + /** * 根据类名获取对象 * @@ -115,4 +127,12 @@ public class ActionSearchManager implements AlphaFineSearchProvider { getLessSearchResult(searchTextBean.getSegmentation()); return filterModelList; } + + @Override + public SearchResult getDefaultResult() { + return defaultModelList; + } + + + } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java index aa3690cb68..38bc6b8e96 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java @@ -1,7 +1,7 @@ package com.fr.design.mainframe.alphafine.search.manager.impl; import com.fr.design.DesignerEnvManager; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.model.SearchResult; import com.fr.general.http.HttpToolbox; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java index 3ea1f2db2f..30416749e5 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java @@ -1,7 +1,7 @@ package com.fr.design.mainframe.alphafine.search.manager.impl; import com.fr.design.DesignerEnvManager; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.CellType; import com.fr.design.mainframe.alphafine.cell.model.DocumentModel; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java index 744b5a8399..7508f3a6c7 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java @@ -3,7 +3,7 @@ package com.fr.design.mainframe.alphafine.search.manager.impl; import com.fr.base.FRContext; import com.fr.base.extension.FileExtension; import com.fr.design.DesignerEnvManager; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.CellType; import com.fr.design.mainframe.alphafine.cell.model.FileModel; @@ -21,6 +21,8 @@ import com.fr.stable.StringUtils; import com.fr.stable.project.ProjectConstants; import com.fr.workspace.WorkContext; +import java.util.List; + /** * Created by XiaXiang on 2017/3/27. @@ -33,9 +35,11 @@ public class FileSearchManager implements AlphaFineSearchProvider { private static volatile FileSearchManager instance; private SearchResult filterModelList; private SearchResult lessModelList; + private SearchResult defaultModelList; private SearchResult moreModelList; private String searchText; private FileNode[] fileNodes = null; + private static final int defaultListSize = 10; //停止搜索 //隐藏的搜索功能,可根据特殊的字符标记判断搜索分类 @@ -137,6 +141,19 @@ public class FileSearchManager implements AlphaFineSearchProvider { } } + @Override + public SearchResult getDefaultResult() { + List list = DesignerEnvManager.getEnvManager().getRecentOpenedFilePathList(); + defaultModelList = new SearchResult(); + for (int i = 0; i < Math.min(defaultListSize, list.size()); i++) { + String name = list.get(i).toLowerCase(); + name = name.replaceAll(StringUtils.BLANK, StringUtils.EMPTY); + FileModel model = new FileModel(name, name); + defaultModelList.add(model); + } + return defaultModelList; + } + /** * 搜索模板内容 * diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/HotIssuesManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/HotIssuesManager.java index 749a0a611f..3fad289a0e 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/HotIssuesManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/HotIssuesManager.java @@ -1,6 +1,6 @@ package com.fr.design.mainframe.alphafine.search.manager.impl; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.cell.model.MoreModel; import com.fr.design.mainframe.alphafine.cell.model.RobotModel; @@ -11,16 +11,15 @@ import com.fr.json.JSONArray; import com.fr.json.JSONException; import com.fr.json.JSONFactory; import com.fr.json.JSONObject; -import com.fr.json.JSONUtils; import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; -import org.jetbrains.annotations.Nullable; /** diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java index 56f7078b41..5627f89952 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java @@ -1,7 +1,8 @@ package com.fr.design.mainframe.alphafine.search.manager.impl; +import com.fr.common.util.Collections; import com.fr.design.DesignerEnvManager; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.CellType; import com.fr.design.mainframe.alphafine.cell.model.MoreModel; @@ -15,13 +16,19 @@ import com.fr.json.JSONArray; import com.fr.json.JSONObject; import com.fr.log.FineLoggerFactory; import com.fr.plugin.basic.version.Version; -import com.fr.plugin.basic.version.VersionIntervalType; import com.fr.plugin.basic.version.VersionIntervalFactory; import com.fr.stable.ArrayUtils; import com.fr.stable.EncodeConstants; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.function.ToLongFunction; /** * Created by XiaXiang on 2017/3/27. @@ -30,6 +37,12 @@ public class PluginSearchManager implements AlphaFineSearchProvider { private SearchResult lessModelList; private SearchResult moreModelList; private SearchResult searchResult; + private SearchResult defaultModelList; + + private static final int defaultListSize = 10; + private static final String timeFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"; + + private static final String UPLOAD_TIME = "uploadTime"; private PluginSearchManager() { @@ -155,4 +168,60 @@ public class PluginSearchManager implements AlphaFineSearchProvider { getLessSearchResult(searchTextBean.getSegmentation()); return searchResult; } + + @Override + public SearchResult getDefaultResult() { + this.defaultModelList = new SearchResult(); + try { + String url = AlphaFineConstants.SEARCH_ALL_PLUGIN_URL; + String result = HttpToolbox.get(url); + AlphaFineHelper.checkCancel(); + JSONObject jsonObject = new JSONObject(result); + JSONArray jsonArray = jsonObject.optJSONArray("result"); + List plugins = jsonArray.getList(); + + List pluginModels = new ArrayList<>(); + pluginModels.addAll(parseDefaultPluginModel(plugins)); + + pluginModels.forEach(m->this.defaultModelList.add(m)); + + } catch (Exception e) { + FineLoggerFactory.getLogger().error("plugin search error :" + e.getMessage()); + } + + return this.defaultModelList; + } + + + /** + * 将jsonobject转化为PluginModel + * 并按照更新时间排序,取最新的10个 + * */ + List parseDefaultPluginModel(List jsonObjects) { + List pluginModels = new ArrayList<>(); + if (!Collections.isEmpty(jsonObjects)) { + SimpleDateFormat format = new SimpleDateFormat(timeFormat); + try { + jsonObjects.sort(Comparator.comparingLong(new ToLongFunction() { + @Override + public long applyAsLong(Map value) { + Long time = 0l; + try { + time = format.parse((String) value.get(UPLOAD_TIME)).getTime(); + } catch (ParseException e) { + FineLoggerFactory.getLogger().error(e, e.getMessage()); + } + return time; + } + })); + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e, e.getMessage()); + } + for (int i = 0; i < defaultListSize; i++) { + pluginModels.add(getPluginModel(new JSONObject(jsonObjects.get(i)), false)); + } + } + return pluginModels; + } + } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ProductNewsSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ProductNewsSearchManager.java index 9611217589..0dda19c933 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ProductNewsSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ProductNewsSearchManager.java @@ -2,7 +2,7 @@ package com.fr.design.mainframe.alphafine.search.manager.impl; import com.fr.concurrent.NamedThreadFactory; import com.fr.design.DesignerEnvManager; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.model.ProductNews; import com.fr.general.http.HttpToolbox; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java index d9b93fb556..992b429406 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java @@ -1,7 +1,7 @@ package com.fr.design.mainframe.alphafine.search.manager.impl; import com.fr.design.actions.UpdateAction; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.CellType; import com.fr.design.mainframe.alphafine.cell.CellModelHelper; import com.fr.design.mainframe.alphafine.cell.model.ActionModel; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java index ce0d987767..39ea82503c 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java @@ -1,7 +1,7 @@ package com.fr.design.mainframe.alphafine.search.manager.impl; import com.fr.design.DesignerEnvManager; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.CellType; import com.fr.design.mainframe.alphafine.cell.CellModelHelper; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SegmentationManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SegmentationManager.java index a953b70fe6..9e3d4bb679 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SegmentationManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SegmentationManager.java @@ -1,6 +1,6 @@ package com.fr.design.mainframe.alphafine.search.manager.impl; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.stable.StringUtils; import com.fr.third.ibm.icu.text.BreakIterator; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManager.java index f353573b49..fbdd5a90f9 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManager.java @@ -1,7 +1,7 @@ package com.fr.design.mainframe.alphafine.search.manager.impl; import com.fr.design.DesignerEnvManager; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.CellType; import com.fr.design.mainframe.alphafine.cell.model.MoreModel; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/TemplateResourceSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/TemplateResourceSearchManager.java index 61dceaa008..c7b4babec1 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/TemplateResourceSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/TemplateResourceSearchManager.java @@ -29,7 +29,19 @@ public class TemplateResourceSearchManager { public List getSearchResult(String searchText) { List resourceList = new ArrayList<>(); - // 联网搜索 + resourceList.addAll(searchOnline(searchText)); + resourceList.addAll(searchLocal(searchText)); + + resourceList.stream().forEach(resource -> {resource.setSearchWord(searchText);}); + + return resourceList; + } + + /** + * 联网搜索 + * */ + private List searchOnline(String searchText) { + List resourceList = new ArrayList<>(); try { JSONArray jsonArray = helper.getTemplateInfoByName(searchText); if (jsonArray != null && !jsonArray.isEmpty()) { @@ -38,8 +50,14 @@ public class TemplateResourceSearchManager { } catch (Exception e) { } + return resourceList; + } - // 本地搜索 + /** + * 本地搜索 + * */ + private List searchLocal(String searchText) { + List resourceList = new ArrayList<>(); if (resourceList.isEmpty()) { List localResource = getEmbedResourceList(); localResource.stream().forEach(resource->{ diff --git a/designer-realize/src/main/resources/com/fr/design/mainframe/alphafine/images/search_hint.svg b/designer-realize/src/main/resources/com/fr/design/mainframe/alphafine/images/search_hint.svg new file mode 100644 index 0000000000..767729dad5 --- /dev/null +++ b/designer-realize/src/main/resources/com/fr/design/mainframe/alphafine/images/search_hint.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/designer-realize/src/test/java/com.fr/design/mainframe/alphafine/cell/model/ModelTest.java b/designer-realize/src/test/java/com.fr/design/mainframe/alphafine/cell/model/ModelTest.java index 5d32b85bbd..af378b5d4d 100644 --- a/designer-realize/src/test/java/com.fr/design/mainframe/alphafine/cell/model/ModelTest.java +++ b/designer-realize/src/test/java/com.fr/design/mainframe/alphafine/cell/model/ModelTest.java @@ -1,6 +1,6 @@ package com.fr.design.mainframe.alphafine.cell.model; -import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.CellType; import com.fr.json.JSONException; import com.fr.json.JSONObject; From 17d98288c59c7f9a372d8d7038c2889ec11b0fc5 Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Mon, 19 Sep 2022 14:55:24 +0800 Subject: [PATCH 24/93] =?UTF-8?q?REPORT-79093=20=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=EF=BC=88=E9=81=97?= =?UTF-8?q?=E7=95=99=EF=BC=89=201=E3=80=81=E4=BF=AE=E6=94=B9pr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alphafine/component/CustomSortPane.java | 6 +++--- .../help/alphafine/component/MenuLabel.java | 18 +++++++++--------- .../alphafine/component/MenuLabelPane.java | 6 +++--- .../component/RecommendSearchLabel.java | 3 +++ .../alphafine/component/SearchHintPane.java | 4 ++-- .../alphafine/preview/DefaultContentPane.java | 6 +++--- .../alphafine/search/SearchManager.java | 3 +++ .../search/manager/impl/FileSearchManager.java | 4 ++-- .../manager/impl/PluginSearchManager.java | 10 +++++----- 9 files changed, 33 insertions(+), 27 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java index e483482edb..e080b3e7c3 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java @@ -24,10 +24,10 @@ import java.util.Map; import java.util.function.Function; /** + * @author Link * @version 11.0 - * @author: Link - * @date: 2022/9/9 - * @Description: alphafine设置 - 搜索范围 - 自定义排序 - 弹出面板 + * Created by Link on 2022/9/18 + * alphafine设置 - 搜索范围 - 自定义排序 - 弹出面板 */ public class CustomSortPane extends JPanel { diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabel.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabel.java index 2342f6da7a..dfe83b7083 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabel.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabel.java @@ -13,10 +13,10 @@ import java.awt.event.MouseListener; import java.util.function.Function; /** + * @author Link * @version 11.0 - * @author: Link - * @date: 2022/9/12 - * @Description: 菜单label + * Created by Link on 2022/9/18 + * 菜单选项label */ public class MenuLabel extends UILabel { @@ -28,7 +28,7 @@ public class MenuLabel extends UILabel { private MenuLabelPane parentMenu; private Function function; - private boolean isSelected; + private boolean selected; public MenuLabel(String text, Function function) { super(text); @@ -56,15 +56,15 @@ public class MenuLabel extends UILabel { parentMenu.setNoneSelected(); setBackground(SELECTED_COLOR); function.apply(this); - isSelected = true; + selected = true; } else { setBackground(BACKGROUND_COLOR); - isSelected = false; + selected = false; } } public boolean isSelected() { - return isSelected; + return selected; } MouseListener createMouseListener() { @@ -78,7 +78,7 @@ public class MenuLabel extends UILabel { @Override public void mouseEntered(MouseEvent e) { super.mouseEntered(e); - if (!isSelected) { + if (!selected) { setBackground(HOVERED_COLOR); } } @@ -86,7 +86,7 @@ public class MenuLabel extends UILabel { @Override public void mouseExited(MouseEvent e) { super.mouseExited(e); - if (!isSelected) { + if (!selected) { setBackground(BACKGROUND_COLOR); } } diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabelPane.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabelPane.java index 74877f9bbf..83a15ff5d2 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabelPane.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabelPane.java @@ -5,10 +5,10 @@ import java.awt.FlowLayout; import java.util.List; /** + * @author Link * @version 11.0 - * @author: Link - * @date: 2022/9/12 - * @Description: 简单菜单面板 + * Created by Link on 2022/9/18 + * 简单菜单面板 */ public class MenuLabelPane extends JPanel { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/RecommendSearchLabel.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/RecommendSearchLabel.java index 3830b6db0d..acf3e1f3a5 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/RecommendSearchLabel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/RecommendSearchLabel.java @@ -34,6 +34,9 @@ public class RecommendSearchLabel extends JPanel { } + /** + * 推荐搜索词,绑定alphaFine搜索事件 + * */ public class SearchKeyLabel extends JLabel { String searchKey; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchHintPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchHintPane.java index 6207be8427..43394e0a7d 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchHintPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchHintPane.java @@ -29,7 +29,7 @@ public class SearchHintPane extends JPanel { private static final String TITLE = Toolkit.i18nText("Fine-Design_Report_AlphaFine_Search_Title"); private static final String RECOMMEND = Toolkit.i18nText("Fine-Design_Report_AlphaFine_Recommend_Search"); - private static final Icon icon = IconUtils.readIcon("com/fr/design/mainframe/alphafine/images/search_hint.svg"); + private static final Icon ICON = IconUtils.readIcon("com/fr/design/mainframe/alphafine/images/search_hint.svg"); private static final int HEIGHT = 305; private static final int WIDTH = 300; private static final int TITLE_FONT_SIZE = 14; @@ -39,7 +39,7 @@ public class SearchHintPane extends JPanel { } public SearchHintPane(List hints) { - this(hints, icon, TITLE); + this(hints, ICON, TITLE); } public SearchHintPane(List hints, Icon icon, String title) { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultContentPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultContentPane.java index 91a79f66cc..ef4487f7ea 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultContentPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultContentPane.java @@ -11,10 +11,10 @@ import javax.swing.JPanel; import java.awt.BorderLayout; /** + * @author Link * @version 11.0 - * @author: Link - * @date: 2022/9/16 - * @Description: alphaFine - 默认展示页面 + * Created by Link on 2022/9/18 + * alphaFine - 默认展示页面 */ public class DefaultContentPane extends JPanel { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchManager.java index 079f1b7105..027dc15775 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchManager.java @@ -9,6 +9,9 @@ import com.fr.design.mainframe.alphafine.preview.DefaultContentPane; */ public interface SearchManager { + /** + * 搜索 + * */ void doSearch(SearchTextBean searchTextBean); /** diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java index 7508f3a6c7..5f358bbb5e 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java @@ -39,7 +39,7 @@ public class FileSearchManager implements AlphaFineSearchProvider { private SearchResult moreModelList; private String searchText; private FileNode[] fileNodes = null; - private static final int defaultListSize = 10; + private static final int DEFAULT_LIST_SIZE = 10; //停止搜索 //隐藏的搜索功能,可根据特殊的字符标记判断搜索分类 @@ -145,7 +145,7 @@ public class FileSearchManager implements AlphaFineSearchProvider { public SearchResult getDefaultResult() { List list = DesignerEnvManager.getEnvManager().getRecentOpenedFilePathList(); defaultModelList = new SearchResult(); - for (int i = 0; i < Math.min(defaultListSize, list.size()); i++) { + for (int i = 0; i < Math.min(DEFAULT_LIST_SIZE, list.size()); i++) { String name = list.get(i).toLowerCase(); name = name.replaceAll(StringUtils.BLANK, StringUtils.EMPTY); FileModel model = new FileModel(name, name); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java index 5627f89952..8fa28040d5 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java @@ -39,8 +39,8 @@ public class PluginSearchManager implements AlphaFineSearchProvider { private SearchResult searchResult; private SearchResult defaultModelList; - private static final int defaultListSize = 10; - private static final String timeFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"; + private static final int DEFAULT_LIST_SIZE = 10; + private static final String TIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"; private static final String UPLOAD_TIME = "uploadTime"; @@ -200,12 +200,12 @@ public class PluginSearchManager implements AlphaFineSearchProvider { List parseDefaultPluginModel(List jsonObjects) { List pluginModels = new ArrayList<>(); if (!Collections.isEmpty(jsonObjects)) { - SimpleDateFormat format = new SimpleDateFormat(timeFormat); + SimpleDateFormat format = new SimpleDateFormat(TIME_FORMAT); try { jsonObjects.sort(Comparator.comparingLong(new ToLongFunction() { @Override public long applyAsLong(Map value) { - Long time = 0l; + long time = 0L; try { time = format.parse((String) value.get(UPLOAD_TIME)).getTime(); } catch (ParseException e) { @@ -217,7 +217,7 @@ public class PluginSearchManager implements AlphaFineSearchProvider { } catch (Exception e) { FineLoggerFactory.getLogger().error(e, e.getMessage()); } - for (int i = 0; i < defaultListSize; i++) { + for (int i = 0; i < DEFAULT_LIST_SIZE; i++) { pluginModels.add(getPluginModel(new JSONObject(jsonObjects.get(i)), false)); } } From 4c58d55dcae80b7d8ac6d4c835d21d63d126d52b Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Mon, 19 Sep 2022 14:57:04 +0800 Subject: [PATCH 25/93] =?UTF-8?q?REPORT-79093=20=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=EF=BC=88=E9=81=97?= =?UTF-8?q?=E7=95=99=EF=BC=89=201=E3=80=81=E4=BF=AE=E6=94=B9pr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/actions/help/alphafine/AlphaFineConfigPane.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigPane.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigPane.java index 7919465f4c..2a64eeba6d 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigPane.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigPane.java @@ -150,11 +150,7 @@ public class AlphaFineConfigPane extends BasicPane { UICheckBox[] checkBoxes = new UICheckBox[]{productDynamicsCheckbox, containTemplateShopCheckbox, containDocumentCheckbox, containPluginCheckbox, containActionCheckbox, containMyTemplateCheckbox}; for (UICheckBox box : checkBoxes) { box.addActionListener((e)->{ - if (!hasSelectedSearchRangeCheckBox()) { - customSortLabel.setEnabled(false); - } else { - customSortLabel.setEnabled(true); - } + customSortLabel.setEnabled(hasSelectedSearchRangeCheckBox()); }); } return components; From 170a54fe95d3c08cbbd5d9a0b4c2589726ee239c Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Tue, 20 Sep 2022 09:40:49 +0800 Subject: [PATCH 26/93] =?UTF-8?q?REPORT-79093=20=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=EF=BC=88=E9=81=97?= =?UTF-8?q?=E7=95=99=EF=BC=89=201=E3=80=81=E4=BF=AE=E6=94=B9pr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alphafine/search/ProductNewsSearchWorkerManager.java | 6 ------ .../fr/design/mainframe/alphafine/search/SearchManager.java | 4 +++- .../search/TemplateResourceSearchWorkerManager.java | 6 ------ 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/ProductNewsSearchWorkerManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/ProductNewsSearchWorkerManager.java index a1631603dd..b701abdf8b 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/ProductNewsSearchWorkerManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/ProductNewsSearchWorkerManager.java @@ -6,7 +6,6 @@ import com.fr.design.mainframe.alphafine.CellType; import com.fr.design.mainframe.alphafine.component.AlphaFineFrame; import com.fr.design.mainframe.alphafine.component.ProductNewsSearchResultPane; import com.fr.design.mainframe.alphafine.model.ProductNews; -import com.fr.design.mainframe.alphafine.preview.DefaultContentPane; import com.fr.log.FineLoggerFactory; import javax.swing.DefaultListModel; @@ -101,11 +100,6 @@ public class ProductNewsSearchWorkerManager implements SearchManager { this.searchWorker.execute(); } - @Override - public void showDefault(DefaultContentPane defaultContentPane) { - - } - public ProductNewsSearchResultPane getSearchResultPane() { return searchResultPane; } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchManager.java index 027dc15775..d8132c6871 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchManager.java @@ -17,7 +17,9 @@ public interface SearchManager { /** * 展示默认内容 * */ - void showDefault(DefaultContentPane defaultContentPane); + default void showDefault(DefaultContentPane defaultContentPane) { + + }; boolean hasSearchResult(); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/TemplateResourceSearchWorkerManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/TemplateResourceSearchWorkerManager.java index 6dd1a8adfc..620fee8993 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/TemplateResourceSearchWorkerManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/TemplateResourceSearchWorkerManager.java @@ -5,7 +5,6 @@ import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.CellType; import com.fr.design.mainframe.alphafine.component.AlphaFineFrame; import com.fr.design.mainframe.alphafine.model.TemplateResource; -import com.fr.design.mainframe.alphafine.preview.DefaultContentPane; import com.fr.design.mainframe.alphafine.preview.TemplateShopPane; import com.fr.log.FineLoggerFactory; @@ -69,11 +68,6 @@ public class TemplateResourceSearchWorkerManager implements SearchManager { this.searchWorker.execute(); } - @Override - public void showDefault(DefaultContentPane defaultContentPane) { - - } - void showResult(List list) { if (networkError && !searchResult) { alphaFineFrame.showResult(AlphaFineConstants.NETWORK_ERROR); From cdfe210da6f17586f87003b0f4126d77f1c3196d Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 20 Sep 2022 09:41:30 +0800 Subject: [PATCH 27/93] =?UTF-8?q?REPORT-75998=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=B8=80=E9=83=A8=E5=88=86=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/ShowSearchResultAction.java | 2 +- .../content/component/ComponentType.java | 15 ++ .../content/formula/FormulaReplaceObject.java | 141 +++++++++++++++++- .../template/SearchTemplateFormulaAction.java | 4 +- .../widget/SearchDateEditorFormulaAction.java | 2 +- .../widget/SearchTreeEditorFormulaAction.java | 20 +-- .../widget/SearchWidgetFormulaAction.java | 25 +++- .../widget/SearchWidgetFormulaManager.java | 2 + .../actions/replace/info/ComponentInfo.java | 14 +- .../actions/replace/info/FloatInfo.java | 25 ++++ .../actions/replace/info/FormulaInfo.java | 9 ++ .../design/actions/replace/info/JSInfo.java | 9 ++ .../actions/replace/info/ReplaceObject.java | 45 +++++- .../replace/ui/ITReplaceMainDialog.java | 45 +++--- .../replace/ui/ITReplaceNorthPanel.java | 12 ++ .../actions/replace/utils/ShowValueUtils.java | 12 +- 16 files changed, 339 insertions(+), 43 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java index 0ec4377a41..2f44137c78 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java @@ -135,7 +135,7 @@ public enum ShowSearchResultAction implements ShowValue { } private void searchMap4JS(Map map, List jsInfos, JSInfo info, String str) { - if (map.containsKey(objectNameKey) && !StringUtils.isEmpty(map.get(objectNameKey))) { + if (map.containsKey(objectNameKey) && StringUtils.isNotEmpty(map.get(objectNameKey))) { String name = map.get(objectNameKey); if (name.contains(str)) { JSInfo nameJSInfo = info.copy(); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/ComponentType.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/ComponentType.java index db7c63f17a..bb6e190f69 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/ComponentType.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/ComponentType.java @@ -347,4 +347,19 @@ public enum ComponentType implements DealWithInfoValue { } + /** + * 校验是否被修改 + * + * @param info + * @return + */ + public boolean check(Info info) { + if (info.getContent().getReplaceObject() instanceof Widget) { + Widget widget = (Widget) info.getContent().getReplaceObject(); + return StringUtils.equals(widget.getWidgetName(), info.getContent().getOldShowStr()); + } + return false; + } + + } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java index 7a1c199af9..3aaea18b33 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java @@ -4,14 +4,19 @@ import com.fr.base.BaseFormula; import com.fr.base.Formula; import com.fr.base.Parameter; import com.fr.base.StoreProcedureParameter; +import com.fr.base.core.KV; import com.fr.base.iofile.attr.WatermarkAttr; import com.fr.base.present.FormulaPresent; +import com.fr.base.present.Present; import com.fr.data.condition.FormulaCondition; import com.fr.data.core.Compare; import com.fr.design.actions.replace.info.DealWithInfoValue; import com.fr.design.actions.replace.info.Info; import com.fr.design.actions.replace.utils.ShowValueUtils; import com.fr.design.file.HistoryTemplateListCache; +import com.fr.form.main.Form; +import com.fr.function.IF; +import com.fr.general.GeneralUtils; import com.fr.js.SingleJavaScript; import com.fr.main.impl.WorkBook; import com.fr.report.cell.cellattr.CellInsertPolicyAttr; @@ -54,6 +59,15 @@ public enum FormulaReplaceObject implements DealWithInfoValue { info.updateOldStr(((Formula) replaceObject).getContent(), findStr); ((Formula) replaceObject).setContent(ShowValueUtils.replaceAll(((Formula) replaceObject).getContent(), findStr, replaceStr)); } + + @Override + public boolean check(Info info) { + if (info.getContent().getReplaceObject() instanceof Formula){ + Formula formula = (Formula) info.getContent().getReplaceObject(); + return StringUtils.equals(formula.getContent(), info.getContent().getOldShowStr()); + } + return false; + } }, /** * FormulaCondition @@ -77,6 +91,14 @@ public enum FormulaReplaceObject implements DealWithInfoValue { ((FormulaCondition) replaceObject).setFormula(ShowValueUtils.replaceAll(((FormulaCondition) replaceObject).getFormula(), findStr, replaceStr)); } + @Override + public boolean check(Info info) { + if (info.getContent().getReplaceObject() instanceof FormulaCondition){ + FormulaCondition condition = (FormulaCondition) info.getContent().getReplaceObject(); + return StringUtils.equals(condition.getFormula(), info.getContent().getOldShowStr()); + } + return false; + } }, /** * Compare @@ -102,6 +124,14 @@ public enum FormulaReplaceObject implements DealWithInfoValue { } } + @Override + public boolean check(Info info) { + if (info.getContent().getReplaceObject() instanceof Compare){ + Compare compare = (Compare) info.getContent().getReplaceObject(); + return StringUtils.equals(GeneralUtils.objectToString(compare.getValue()), info.getContent().getOldShowStr()); + } + return false; + } }, /** * 富文本 @@ -128,6 +158,14 @@ public enum FormulaReplaceObject implements DealWithInfoValue { } } + @Override + public boolean check(Info info) { + if (info.getContent().getReplaceObject() instanceof RichChar){ + RichChar richChar = (RichChar) info.getContent().getReplaceObject(); + return StringUtils.equals(richChar.getText(), info.getContent().getOldShowStr()); + } + return false; + } }, /** * KV @@ -150,6 +188,14 @@ public enum FormulaReplaceObject implements DealWithInfoValue { ((Formula) ((com.fr.base.core.KV) replaceObject).getValue()).setContent(ShowValueUtils.replaceAll(((Formula) ((com.fr.base.core.KV) replaceObject).getValue()).getContent(), findStr, replaceStr)); } + @Override + public boolean check(Info info) { + if (info.getContent().getReplaceObject() instanceof com.fr.base.core.KV){ + com.fr.base.core.KV kv = (com.fr.base.core.KV) info.getContent().getReplaceObject(); + return StringUtils.equals(GeneralUtils.objectToString(kv.getValue()), info.getContent().getOldShowStr()); + } + return false; + } }, /** * 插入策略 @@ -171,6 +217,14 @@ public enum FormulaReplaceObject implements DealWithInfoValue { ((Formula) (((CellInsertPolicyAttr) replaceObject).getDefaultInsertValue())).setContent(ShowValueUtils.replaceAll(((Formula) (((CellInsertPolicyAttr) replaceObject).getDefaultInsertValue())).getContent(), findStr, replaceStr)); } + @Override + public boolean check(Info info) { + if (info.getContent().getReplaceObject() instanceof CellInsertPolicyAttr){ + CellInsertPolicyAttr policyAttr = (CellInsertPolicyAttr) info.getContent().getReplaceObject(); + return StringUtils.equals(GeneralUtils.objectToString(policyAttr.getDefaultInsertValue()), info.getContent().getOldShowStr()); + } + return false; + } }, /** * present @@ -193,6 +247,14 @@ public enum FormulaReplaceObject implements DealWithInfoValue { ((FormulaPresent) replaceObject).setFormulaContent(ShowValueUtils.replaceAll(((FormulaPresent) replaceObject).getFormulaContent(), findStr, replaceStr)); } + @Override + public boolean check(Info info) { + if (info.getContent().getReplaceObject() instanceof FormulaPresent){ + FormulaPresent present = (FormulaPresent) info.getContent().getReplaceObject(); + return StringUtils.equals(present.getFormulaContent(), info.getContent().getOldShowStr()); + } + return false; + } }, /** * SingleJavaScript @@ -211,10 +273,17 @@ public enum FormulaReplaceObject implements DealWithInfoValue { public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { Object replaceObject = info.getContent().getReplaceObject(); info.updateOldStr(((SingleJavaScript) replaceObject).getFileName(), findStr); - ((SingleJavaScript) replaceObject).setFileName(ShowValueUtils.replaceAll(((SingleJavaScript) replaceObject).getFileName(), findStr, replaceStr)); } + @Override + public boolean check(Info info) { + if (info.getContent().getReplaceObject() instanceof SingleJavaScript){ + SingleJavaScript javaScript = (SingleJavaScript) info.getContent().getReplaceObject(); + return StringUtils.equals(javaScript.getFileName(), info.getContent().getOldShowStr()); + } + return false; + } }, /** * 参数 @@ -237,6 +306,16 @@ public enum FormulaReplaceObject implements DealWithInfoValue { ((Formula) (((ParameterProvider) replaceObject).getValue())).setContent(ShowValueUtils.replaceAll(((Formula) (((ParameterProvider) replaceObject).getValue())).getContent(), findStr, replaceStr)); } + @Override + public boolean check(Info info) { + if (info.getContent().getReplaceObject() instanceof ParameterProvider){ + ParameterProvider provider = (ParameterProvider) info.getContent().getReplaceObject(); + if (provider.getValue() instanceof Formula){ + return StringUtils.equals(GeneralUtils.objectToString(provider.getValue()), info.getContent().getOldShowStr()); + } + } + return false; + } }, /** * FormulaProvider @@ -259,6 +338,14 @@ public enum FormulaReplaceObject implements DealWithInfoValue { ((FormulaProvider) replaceObject).setContent(ShowValueUtils.replaceAll(((FormulaProvider) replaceObject).getContent(), findStr, replaceStr)); } + @Override + public boolean check(Info info) { + if (info.getContent().getReplaceObject() instanceof FormulaProvider){ + FormulaProvider provider = (FormulaProvider) info.getContent().getReplaceObject(); + return StringUtils.equals(provider.getContent(), info.getContent().getOldShowStr()); + } + return false; + } }, /** * 参数 @@ -281,6 +368,16 @@ public enum FormulaReplaceObject implements DealWithInfoValue { ((Formula) (((Parameter) replaceObject).getValue())).setContent(ShowValueUtils.replaceAll(((Formula) (((Parameter) replaceObject).getValue())).getContent(), findStr, replaceStr)); } + @Override + public boolean check(Info info) { + if (info.getContent().getReplaceObject() instanceof Parameter){ + Parameter parameter = (Parameter) info.getContent().getReplaceObject(); + if (parameter.getValue() instanceof Formula){ + return StringUtils.equals(((Formula) parameter.getValue()).getContent(), info.getContent().getOldShowStr()); + } + } + return false; + } }, /** * 数据列 @@ -303,6 +400,14 @@ public enum FormulaReplaceObject implements DealWithInfoValue { ((DSColumn) replaceObject).setResult(ShowValueUtils.replaceAll(((DSColumn) replaceObject).getResult(), findStr, replaceStr)); } + @Override + public boolean check(Info info) { + if (info.getContent().getReplaceObject() instanceof DSColumn){ + DSColumn column = (DSColumn) info.getContent().getReplaceObject(); + return StringUtils.equals(column.getResult(), info.getContent().getOldShowStr()); + } + return false; + } }, /** * 公式类型 @@ -325,6 +430,14 @@ public enum FormulaReplaceObject implements DealWithInfoValue { ((BaseFormula) replaceObject).setContent(ShowValueUtils.replaceAll(((BaseFormula) replaceObject).getContent(), findStr, replaceStr)); } + @Override + public boolean check(Info info) { + if (info.getContent().getReplaceObject() instanceof BaseFormula){ + BaseFormula formula = (BaseFormula) info.getContent().getReplaceObject(); + return StringUtils.equals(formula.getContent(), info.getContent().getOldShowStr()); + } + return false; + } }, /** * 存储过程的参数 @@ -347,6 +460,17 @@ public enum FormulaReplaceObject implements DealWithInfoValue { ((Formula) ((StoreProcedureParameter) replaceObject).getValue()).setContent(ShowValueUtils.replaceAll(((Formula) ((StoreProcedureParameter) replaceObject).getValue()).getContent(), findStr, replaceStr)); } + + @Override + public boolean check(Info info) { + if (info.getContent().getReplaceObject() instanceof StoreProcedureParameter){ + StoreProcedureParameter procedureParameter = (StoreProcedureParameter) info.getContent().getReplaceObject(); + if (procedureParameter.getValue() instanceof Formula){ + return StringUtils.equals(GeneralUtils.objectToString(procedureParameter.getValue()), info.getContent().getOldShowStr()); + } + } + return false; + } }, /** * WatermarkAttr水印 @@ -369,6 +493,15 @@ public enum FormulaReplaceObject implements DealWithInfoValue { watermarkAttr.setText(ShowValueUtils.replaceAll(watermarkAttr.getText(), findStr, replaceStr)); workBook.addAttrMark(watermarkAttr); } + + @Override + public boolean check(Info info) { + if (info.getContent().getReplaceObject() instanceof WatermarkAttr){ + WatermarkAttr watermarkAttr = ((WatermarkAttr) info.getContent().getReplaceObject()); + return StringUtils.equals(watermarkAttr.getText(), info.getContent().getOldShowStr()); + } + return false; + } }; @@ -395,6 +528,12 @@ public enum FormulaReplaceObject implements DealWithInfoValue { return null; } + /** + * 校验内容 + * @param info + * @return + */ + abstract public boolean check(Info info); @Override public String getInfoShowStr(Info info) { diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java index 977de5a333..309fed1808 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java @@ -54,7 +54,7 @@ public class SearchTemplateFormulaAction implements SearchTemplateFormula { if (parameter.getValue() instanceof Formula) { ITContent paraContent = ITContent.copy(content); paraContent.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Template_Parameter")); - paraContent.setReplaceObject(parameter.getValue()); + paraContent.setReplaceObject(parameter); formulaInfos.add(new FormulaInfo(paraContent)); } } @@ -64,7 +64,7 @@ public class SearchTemplateFormulaAction implements SearchTemplateFormula { if (parameter.getValue() instanceof Formula) { ITContent paraContent = ITContent.copy(content); paraContent.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Parameter_Source_Type_Server")); - paraContent.setReplaceObject(parameter.getValue()); + paraContent.setReplaceObject(parameter); formulaInfos.add(new FormulaInfo(paraContent)); } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java index d7e81a1d6e..67548b4157 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java @@ -4,7 +4,7 @@ import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; import com.fr.form.ui.DateEditor; -import org.gradle.internal.impldep.org.apache.commons.lang.StringUtils; +import com.fr.stable.StringUtils; import java.util.List; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java index 81987a1db4..d1251c5b8c 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java @@ -33,15 +33,17 @@ public class SearchTreeEditorFormulaAction extends AbstractSearchWidgetFormulaAc } private void SearchFormulaFromModelConfig(ITContent content, List formulaInfos) { - if (((TreeEditor) content.getReplaceObject()).getBuildModelConfig() != null) { - //LayerConfig[] 急速分层构建 - //TreeNodeWrapper 普通分层构建 - if (((TreeEditor) content.getReplaceObject()).getBuildModelConfig() instanceof LayerConfig[]) { - LayerConfig[] layerConfigs = (LayerConfig[]) ((TreeEditor) content.getReplaceObject()).getBuildModelConfig(); - dealWithLayerConfigs(layerConfigs, content, formulaInfos); - } else if (((TreeEditor) content.getReplaceObject()).getBuildModelConfig() instanceof TreeNodeWrapper) { - TreeNodeWrapper wrapper = (TreeNodeWrapper) ((TreeEditor) content.getReplaceObject()).getBuildModelConfig(); - dealWithTreeNodeWrapper(wrapper, content, formulaInfos); + if (content.getReplaceObject() instanceof TreeEditor) { + if (((TreeEditor) content.getReplaceObject()).getBuildModelConfig() != null) { + //LayerConfig[] 急速分层构建 + //TreeNodeWrapper 普通分层构建 + if (((TreeEditor) content.getReplaceObject()).getBuildModelConfig() instanceof LayerConfig[]) { + LayerConfig[] layerConfigs = (LayerConfig[]) ((TreeEditor) content.getReplaceObject()).getBuildModelConfig(); + dealWithLayerConfigs(layerConfigs, content, formulaInfos); + } else if (((TreeEditor) content.getReplaceObject()).getBuildModelConfig() instanceof TreeNodeWrapper) { + TreeNodeWrapper wrapper = (TreeNodeWrapper) ((TreeEditor) content.getReplaceObject()).getBuildModelConfig(); + dealWithTreeNodeWrapper(wrapper, content, formulaInfos); + } } } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java index f1f214f648..b82076a3d3 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java @@ -1,5 +1,7 @@ package com.fr.design.actions.replace.action.content.formula.widget; +import com.fr.base.BaseFormula; +import com.fr.base.Formula; import com.fr.chart.chartattr.ChartCollection; import com.fr.design.actions.replace.action.content.component.SearchComponentAction; import com.fr.design.actions.replace.action.content.formula.chart.SearchChartCollectionFormulaAction; @@ -11,14 +13,20 @@ import com.fr.design.actions.replace.info.WidgetInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.actions.replace.utils.ShowValueUtils; import com.fr.design.mainframe.JTemplate; +import com.fr.design.mainframe.chart.gui.ChangeConfigPane; import com.fr.form.main.Form; import com.fr.form.ui.ChartEditor; +import com.fr.form.ui.ElementCaseEditor; +import com.fr.form.ui.Label; import com.fr.form.ui.Widget; +import com.fr.form.ui.WidgetTitle; +import com.fr.form.ui.concept.data.ValueInitializer; import com.fr.form.ui.container.WScaleLayout; import com.fr.form.ui.container.WTitleLayout; import com.fr.form.ui.widget.CRBoundsWidget; import com.fr.main.impl.WorkBook; +import com.fr.report.worksheet.FormElementCase; import java.util.ArrayList; import java.util.List; @@ -59,7 +67,6 @@ public class SearchWidgetFormulaAction extends AbstractSearchWidgetFormulaAction formulaInfos.addAll(result); } - @Override public void searchFormulaFromWidgetInfos(Info info, List formulaInfos) { if (isReplaceObjectExist(info)) { @@ -69,13 +76,23 @@ public class SearchWidgetFormulaAction extends AbstractSearchWidgetFormulaAction private void searchFormulaFromWidgetValue(Info info, List formulaInfos) { Widget widget = (Widget) info.getContent().getReplaceObject(); + if (widget instanceof WScaleLayout) { widget = ((CRBoundsWidget) ((WScaleLayout) widget).getWidget(0)).getWidget(); + info.getContent().setReplaceObject(widget); } if (widget instanceof WTitleLayout) { - widget = ((CRBoundsWidget) ((WTitleLayout) widget).getWidget(0)).getWidget(); - if (widget instanceof ChartEditor && ((ChartEditor) widget).getChartCollection() instanceof ChartCollection) { - SearchChartCollectionFormulaAction.getInstance().searchChartCollectionFormula(formulaInfos, info.getContent(), (ChartCollection) ((ChartEditor) widget).getChartCollection()); + if (((WTitleLayout) widget).getTitleBoundsWidget() != null){ + CRBoundsWidget boundsWidget = ((WTitleLayout) widget).getTitleBoundsWidget(); + if (boundsWidget.getWidget() instanceof Label){ + ITContent titleContent = ITContent.copy(info.getContent()); + titleContent.setReplaceObject(((Label) boundsWidget.getWidget()).getWidgetValue().getValue()); + formulaInfos.add(new FormulaInfo(titleContent)); + } + } + Widget tempWidget = (((WTitleLayout) widget).getBodyBoundsWidget()).getWidget(); + if (tempWidget instanceof ChartEditor && ((ChartEditor) tempWidget).getChartCollection() instanceof ChartCollection) { + SearchChartCollectionFormulaAction.getInstance().searchChartCollectionFormula(formulaInfos, info.getContent(), (ChartCollection) ((ChartEditor) tempWidget).getChartCollection()); } } Map widgetType = SearchWidgetFormulaManager.getInstance().getWidgetType(); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaManager.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaManager.java index 6ddb7eae72..719f49f003 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaManager.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaManager.java @@ -32,6 +32,7 @@ public class SearchWidgetFormulaManager implements SearchManager { private static final String PAGE_FIXED_ROW_COMBOBOX = "PageFixedRowComboBox"; private static final String TREE_COMBO_BOX_EDITOR = "TreeComboBoxEditor"; private static final String TREE_EDITOR = "TreeEditor"; + private static final String W_TITLE_LAYOUT = "WTitleLayout"; private SearchWidgetFormulaManager() { /** @@ -46,6 +47,7 @@ public class SearchWidgetFormulaManager implements SearchManager { register(FREE_BUTTON, SearchCommonWidgetFormulaAction.getInstance()); register(NUMBER_EDITOR, SearchCommonWidgetFormulaAction.getInstance()); register(TEXT_EDITOR, SearchCommonWidgetFormulaAction.getInstance()); + register(W_TITLE_LAYOUT, SearchCommonWidgetFormulaAction.getInstance()); /** * 日期类型 diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/ComponentInfo.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ComponentInfo.java index cb84837f48..b302376fb6 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/ComponentInfo.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ComponentInfo.java @@ -44,6 +44,15 @@ public class ComponentInfo implements Info { } + @Override + public Boolean checkValid() { + ComponentType componentType = ComponentType.match(this.content.getReplaceObject().getClass().getSimpleName()); + if (componentType != null) { + return componentType.check(this); + } + return false; + } + /** * 这边设置值其实就是修改组件的名称,要注意的就是如果是layout的情况下有些需要对其外面封装的对象也进行名称的修改 * @@ -68,9 +77,6 @@ public class ComponentInfo implements Info { */ @Override public String getInfoShowStr(Info info) { - if (this.content.getReplaceObject() != null && this.content.getReplaceObject() instanceof Widget) { - return ((Widget) this.content.getReplaceObject()).getWidgetName(); - } - return StringUtils.EMPTY; + return this.getContent().getOldShowStr(); } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/FloatInfo.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/FloatInfo.java index ec8cb28ddc..2bf794ab80 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/FloatInfo.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/FloatInfo.java @@ -7,8 +7,10 @@ import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.actions.replace.utils.ShowValueUtils; import com.fr.general.GeneralUtils; +import com.fr.report.cell.CellElement; import com.fr.report.cell.FloatElement; import com.fr.stable.AssistUtils; +import com.fr.stable.StringUtils; import com.fr.stable.collections.combination.Pair; @@ -108,6 +110,29 @@ public class FloatInfo implements Info { } } + @Override + public Boolean checkValid() { + FloatElement floatElement = (((FloatElement) (this.getContent().getReplaceObject()))); + String newValue; + if (this.isChartExist() && this.getFloatChartIndex() != -1) { + newValue = getChartCheckValue(); + } else { + newValue = GeneralUtils.objectToString(floatElement.getValue()); + } + return StringUtils.equals(newValue, this.getContent().getOldShowStr()); + } + + private String getChartCheckValue() { + ChartCollection chartCollection = (ChartCollection) ((FloatElement) this.getContent().getReplaceObject()).getValue(); + Title title = chartCollection.getChart(this.getFloatChartIndex()).getTitle(); + if (title.getTextObject() instanceof Formula) { + Formula formula = (Formula) title.getTextObject(); + return formula.getContent(); + } else { + return GeneralUtils.objectToString(title.getTextObject()); + } + } + @Override public String getInfoShowStr(Info info) { return this.getContent().getOldShowStr(); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/FormulaInfo.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/FormulaInfo.java index 8dae97110f..73a0750cb8 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/FormulaInfo.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/FormulaInfo.java @@ -68,6 +68,15 @@ public class FormulaInfo implements Info { return StringUtils.EMPTY; } + @Override + public Boolean checkValid() { + FormulaReplaceObject formulaReplaceObject = FormulaReplaceObject.match(this.content.getReplaceObject().getClass().getSimpleName()); + if (formulaReplaceObject != null) { + return formulaReplaceObject.check(this); + } + return false; + } + private Map getCommonValue() { Map map = new HashMap(); FormulaReplaceObject o = FormulaReplaceObject.match(this.content.getReplaceObject().getClass().getSimpleName()); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/JSInfo.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/JSInfo.java index 4cf9de1fd8..3f0632fe84 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/JSInfo.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/JSInfo.java @@ -60,6 +60,15 @@ public class JSInfo implements Info { } + @Override + public Boolean checkValid() { + ReplaceObject o = ReplaceObject.match(this.content.getReplaceObject().getClass().getSimpleName()); + if (o != null) { + return o.check(this); + } + return false; + } + /** * toString * diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java index ea82c19295..ed78c62784 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java @@ -59,6 +59,17 @@ public enum ReplaceObject implements DealWithInfoValue { return javaScript.getName(); } } + + @Override + boolean check(Info info) { + if (((JSInfo) info).isContent()) { + JavaScriptImpl javaScript = (JavaScriptImpl) ((NameJavaScript) (info.getContent().getReplaceObject())).getJavaScript(); + return StringUtils.equals(javaScript.getContent(), info.getContent().getOldShowStr()); + } else { + NameJavaScript javaScript = ((NameJavaScript) (info.getContent().getReplaceObject())); + return StringUtils.equals(javaScript.getName(), info.getContent().getOldShowStr()); + } + } }, /** * Listener——JS @@ -79,7 +90,6 @@ public enum ReplaceObject implements DealWithInfoValue { JavaScriptImpl javaScript = (JavaScriptImpl) ((Listener) (info.getContent().getReplaceObject())).getAction(); info.updateOldStr(javaScript.getContent(), findStr); javaScript.setContent(ShowValueUtils.replaceAll(javaScript.getContent(), findStr, replaceStr)); - } } else { Listener listener = ((Listener) ((info.getContent().getReplaceObject()))); @@ -97,6 +107,17 @@ public enum ReplaceObject implements DealWithInfoValue { return listener.getName(); } } + + @Override + boolean check(Info info) { + if (((JSInfo) info).isContent()) { + JavaScriptImpl javaScript = (JavaScriptImpl) ((Listener) (info.getContent().getReplaceObject())).getAction(); + return StringUtils.equals(javaScript.getContent(), info.getContent().getOldShowStr()); + } else { + Listener listener = ((Listener) (info.getContent().getReplaceObject())); + return StringUtils.equals(listener.getName(), info.getContent().getOldShowStr()); + } + } }, /** * VanChartHtmlLabel——JS @@ -126,6 +147,15 @@ public enum ReplaceObject implements DealWithInfoValue { VanChartHtmlLabel htmlLabel = ((VanChartHtmlLabel) (info.getContent().getReplaceObject())); return htmlLabel.getCustomText(); } + + @Override + boolean check(Info info) { + if (((JSInfo) info).isContent()) { + VanChartHtmlLabel htmlLabel = ((VanChartHtmlLabel) (info.getContent().getReplaceObject())); + return StringUtils.equals(htmlLabel.getCustomText(), info.getContent().getOldShowStr()); + } + return false; + } }, /** * JavaScriptImpl——JS @@ -150,11 +180,23 @@ public enum ReplaceObject implements DealWithInfoValue { JavaScriptImpl javaScript = (JavaScriptImpl) (info.getContent().getReplaceObject()); return javaScript.getContent(); } + + @Override + boolean check(Info info) { + JavaScriptImpl javaScript = (JavaScriptImpl) (info.getContent().getReplaceObject()); + return StringUtils.equals(javaScript.getContent(), info.getContent().getOldShowStr()); + } }, /** * DBTableData——SQL */ DB_TABLE_DATA("DBTableData") { + @Override + boolean check(Info info) { + DBTableData dbTableData = (DBTableData) info.getContent().getReplaceObject(); + return StringUtils.equals(dbTableData.getQuery(), info.getContent().getOldShowStr()); + } + @Override public Map getValue(Object... o) { HashMap map = new HashMap<>(); @@ -215,4 +257,5 @@ public enum ReplaceObject implements DealWithInfoValue { } + abstract boolean check(Info info); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java index b59499c7d5..4ac477cdc5 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java @@ -41,6 +41,7 @@ import java.util.List; public class ITReplaceMainDialog extends UIDialog { List searchResultList = new ArrayList<>(); private static boolean ITReplaceFlag = false; + private static boolean matched = false; private static volatile ITReplaceMainDialog instance = null; private static String templateID; private ITReplaceNorthPanel northPane; @@ -116,21 +117,12 @@ public class ITReplaceMainDialog extends UIDialog { northPane.getFindInputCombobox().setEditable(true); northPane.getReplaceInputCombobox().setEditable(false); - ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).setPlaceholder(Toolkit.i18nText("Fine-Design_Replace_Search_Input")); ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).setPlaceholder(Toolkit.i18nText("Fine-Design_Replace_Input")); ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { search(); - String searchStr = ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).getText(); - if (StringUtils.isNotEmpty(searchStr)) { - ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).setEditable(true); - northPane.getReplaceInputCombobox().setEditable(true); - } else { - ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).setEditable(false); - northPane.getReplaceInputCombobox().setEditable(false); - } } }); @@ -138,14 +130,7 @@ public class ITReplaceMainDialog extends UIDialog { @Override public void actionPerformed(ActionEvent e) { search(); - String searchStr = ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).getText(); - if (StringUtils.isNotEmpty(searchStr)) { - ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).setEditable(true); - northPane.getReplaceInputCombobox().setEditable(true); - } else { - ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).setEditable(false); - northPane.getReplaceInputCombobox().setEditable(false); - } + } }); @@ -169,6 +154,7 @@ public class ITReplaceMainDialog extends UIDialog { * 替换 */ private void replace() { + if (isITReplaceValid() && checkTemplateChanged(searchResultList)) { String searchStr = ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).getText(); String replaceStr = ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).getText(); @@ -183,6 +169,7 @@ public class ITReplaceMainDialog extends UIDialog { southPanel.getTableEditorPane().update(); northPane.refreshReplaceInputComboBoxItems(); ITTableEditorPane.getEditTable().repaint(); + HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().fireTabChange(); HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().fireTargetModified(true); setSearchFlag(false); @@ -204,6 +191,8 @@ public class ITReplaceMainDialog extends UIDialog { search(); } } + + } private Boolean checkTemplateChanged(List searchResultList) { @@ -252,6 +241,19 @@ public class ITReplaceMainDialog extends UIDialog { this.searchStr = searchStr; } + /** + * 是否使用通配符 + * + * @return + */ + public static boolean isMatched() { + return matched; + } + + public static void setMatched(boolean matched) { + ITReplaceMainDialog.matched = matched; + } + /** * 设置标签 * @@ -288,6 +290,15 @@ public class ITReplaceMainDialog extends UIDialog { itTableEditor.fireTableDataChanged(); northPane.refreshFindInputComboBoxItems(); setSearchFlag(true); + + String searchStr = ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).getText(); + if (StringUtils.isNotEmpty(searchStr)) { + ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).setEditable(true); + northPane.getReplaceInputCombobox().setEditable(true); + } else { + ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).setEditable(false); + northPane.getReplaceInputCombobox().setEditable(false); + } } else { //todo } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java index c35160954e..0fea79f21e 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java @@ -13,6 +13,8 @@ import javax.swing.ComboBoxEditor; import javax.swing.JCheckBox; import javax.swing.JPanel; import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Collections; @@ -92,6 +94,16 @@ public class ITReplaceNorthPanel { } }; matchRadioButton = new JCheckBox(Toolkit.i18nText("Fine-Design_Replace_WildCard")); + matchRadioButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (matchRadioButton.isSelected()) { + ITReplaceMainDialog.setMatched(true); + } else { + ITReplaceMainDialog.setMatched(false); + } + } + }); replaceButton = new UIButton(Toolkit.i18nText("Fine-Design_Replace_Button")); searchButton = new UIButton(Toolkit.i18nText("Fine-Design_Search_Button")); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java index 6342c7e72e..6f4e7e84fa 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java @@ -3,9 +3,10 @@ package com.fr.design.actions.replace.utils; import com.fr.design.actions.replace.info.Info; +import com.fr.design.actions.replace.ui.ITReplaceMainDialog; +import com.fr.stable.StringUtils; import com.fr.stable.collections.combination.Pair; -import org.gradle.internal.impldep.org.apache.commons.lang.StringUtils; import java.util.ArrayList; import java.util.Collection; @@ -39,7 +40,7 @@ public class ShowValueUtils { } /** - * 可以替换括号的replaceAll + * 替换策略 * * @param str 原字符串 * @param regex 要被替换的内容 @@ -47,7 +48,12 @@ public class ShowValueUtils { * @return 替换后的字符串 */ public static String replaceAll(String str, String regex, String replacement) { - return str.replaceAll(Pattern.quote(regex), replacement); + if (ITReplaceMainDialog.isMatched()){ + return str.replaceAll(Pattern.quote(regex), replacement); + }else { + return str.replace(regex, replacement); + } + } From 7097f23bd9ead9a02daa9d5237ff7ba5436a5d92 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 20 Sep 2022 09:51:35 +0800 Subject: [PATCH 28/93] =?UTF-8?q?REPORT-75998=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=B8=8D=E5=8F=AF=E8=B7=B3=E8=BD=AC=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/content/formula/data/SearchDataFormulaAction.java | 2 ++ .../content/formula/template/SearchTemplateFormulaAction.java | 1 + .../actions/replace/action/content/js/SearchWebJSAction.java | 1 + .../actions/replace/action/content/sql/SearchSQLAction.java | 1 + 4 files changed, 5 insertions(+) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormulaAction.java index 472819d6ad..aa296a0721 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormulaAction.java @@ -44,6 +44,7 @@ public class SearchDataFormulaAction implements SearchFormula { Toolkit.i18nText("Fine-Design_Basic_DS_Server_TableData"), dataName ); + content.setJumpAble(false); content.setShowObject(Toolkit.i18nText("Fine-Design_Basic_DS_Server_TableData")); DataType dataType = DataType.match(tableDataConfig.getTableData(dataName).getClass().getSimpleName()); if (dataType != null) { @@ -60,6 +61,7 @@ public class SearchDataFormulaAction implements SearchFormula { String dataName = (String) dataIterator.next(); ITContent content = new ITContent(); content.setTemplateName(jTemplate.getTemplateName()); + content.setJumpAble(false); content.addOtherPos( Toolkit.i18nText("Fine-Design_Basic_DS_Report_TableData"), dataName diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java index 309fed1808..39c98dda3f 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java @@ -32,6 +32,7 @@ public class SearchTemplateFormulaAction implements SearchTemplateFormula { public void searchFormulaFromObject(JTemplate jTemplate, List formulaInfos) { ITContent content = new ITContent(); content.setTemplateName(jTemplate.getTemplateName()); + content.setJumpAble(false); searchTemplateParaFormula(jTemplate, formulaInfos, content); searchTemplateWaterMarkFormula(jTemplate, formulaInfos, content); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java index 137d84b377..d0bb7d9c13 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java @@ -59,6 +59,7 @@ public class SearchWebJSAction implements SearchJS { ReportWebAttr webAttr = workBook.getReportWebAttr(); ITContent content = new ITContent(); content.setTemplateName(jTemplate.getTemplateName()); + content.setJumpAble(false); addWebContent2Array(webAttr); for (int i = 0; i < arrayList.size(); i++) { addJSInfos2ListFromArray(content, jsInfos, arrayList.get(i)); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/sql/SearchSQLAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/sql/SearchSQLAction.java index 10ae238056..f37f6acac1 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/sql/SearchSQLAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/sql/SearchSQLAction.java @@ -34,6 +34,7 @@ public class SearchSQLAction implements SearchAction { List sqlInfos = new ArrayList<>(); ITContent content = new ITContent(); content.setTemplateName(jTemplate.getTemplateName()); + content.setJumpAble(false); addModelDataInfos2Array(jTemplate, content, sqlInfos); addServerDataInfos2Array(content, sqlInfos); setSqlInfos(sqlInfos); From d13623f45829e492ee864b455771b12cd5554887 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 20 Sep 2022 10:07:05 +0800 Subject: [PATCH 29/93] =?UTF-8?q?REPORT-75998=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../formula/widget/SearchWidgetFormulaAction.java | 12 +++++------- .../actions/replace/ui/ITReplaceNorthPanel.java | 6 +----- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java index b82076a3d3..769d608382 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java @@ -1,7 +1,6 @@ package com.fr.design.actions.replace.action.content.formula.widget; -import com.fr.base.BaseFormula; -import com.fr.base.Formula; + import com.fr.chart.chartattr.ChartCollection; import com.fr.design.actions.replace.action.content.component.SearchComponentAction; import com.fr.design.actions.replace.action.content.formula.chart.SearchChartCollectionFormulaAction; @@ -13,20 +12,19 @@ import com.fr.design.actions.replace.info.WidgetInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.actions.replace.utils.ShowValueUtils; import com.fr.design.mainframe.JTemplate; -import com.fr.design.mainframe.chart.gui.ChangeConfigPane; + import com.fr.form.main.Form; import com.fr.form.ui.ChartEditor; -import com.fr.form.ui.ElementCaseEditor; + import com.fr.form.ui.Label; import com.fr.form.ui.Widget; -import com.fr.form.ui.WidgetTitle; -import com.fr.form.ui.concept.data.ValueInitializer; + import com.fr.form.ui.container.WScaleLayout; import com.fr.form.ui.container.WTitleLayout; import com.fr.form.ui.widget.CRBoundsWidget; import com.fr.main.impl.WorkBook; -import com.fr.report.worksheet.FormElementCase; + import java.util.ArrayList; import java.util.List; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java index 0fea79f21e..ff5b3c8199 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java @@ -97,11 +97,7 @@ public class ITReplaceNorthPanel { matchRadioButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - if (matchRadioButton.isSelected()) { - ITReplaceMainDialog.setMatched(true); - } else { - ITReplaceMainDialog.setMatched(false); - } + ITReplaceMainDialog.setMatched(matchRadioButton.isSelected()); } }); From 8db8b207d2cbe79b0d45c8f5e95864d38523821a Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Tue, 20 Sep 2022 10:17:39 +0800 Subject: [PATCH 30/93] =?UTF-8?q?REPORT-79093=20=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=EF=BC=88=E9=81=97?= =?UTF-8?q?=E7=95=99=EF=BC=89=201=E3=80=81=E6=A0=BC=E5=BC=8F=E5=8C=96?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alphafine/AlphaFineConfigManager.java | 46 ++++++++----------- .../alphafine/component/CustomSortPane.java | 17 +++---- .../help/alphafine/component/MenuLabel.java | 15 +++--- .../alphafine/component/MenuLabelPane.java | 3 +- .../component/RecommendSearchLabel.java | 5 +- .../alphafine/component/SearchHintPane.java | 3 +- .../alphafine/preview/DefaultContentPane.java | 5 +- .../preview/DefaultPluginContentPane.java | 10 ++-- .../manager/SearchProviderRegistry.java | 5 +- 9 files changed, 55 insertions(+), 54 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigManager.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigManager.java index 8661324bd6..c74ddaa65a 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigManager.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigManager.java @@ -29,6 +29,7 @@ import java.util.Stack; */ public class AlphaFineConfigManager implements XMLable { + public static final String COMMA = ","; private static final long serialVersionUID = -8170289826729582122L; private static AlphaFineConfigManager alphaFineConfigManager = new AlphaFineConfigManager(); /** @@ -91,27 +92,20 @@ public class AlphaFineConfigManager implements XMLable { * 是否提醒 */ private boolean needRemind = true; - /** * 产品动态 */ private boolean productDynamics = true; - /** * 模板商城是否展示 - * */ + */ private boolean showTemplateShop = true; - - /** * tab页排序 * 默认排序:动态,模板商城,帮助文档,插件中心,功能,我的模板 - * */ + */ private String[] tabOrder; - public static final String COMMA = ","; - private Map actionSearchTextCache = new HashMap<>(8); - private String cacheBuildNO; @@ -207,7 +201,7 @@ public class AlphaFineConfigManager implements XMLable { if (ComparatorUtils.equals(reader.getTagName(), "history")) { String tmpVal = reader.getElementValue(); if (tmpVal != null) { - tmpVal = tmpVal.replace("[",StringUtils.EMPTY).replace("]",StringUtils.EMPTY); + tmpVal = tmpVal.replace("[", StringUtils.EMPTY).replace("]", StringUtils.EMPTY); Stack stack = new SizedStack<>(3); String[] historyList = tmpVal.split(","); for (String history : historyList) { @@ -231,7 +225,7 @@ public class AlphaFineConfigManager implements XMLable { if (ComparatorUtils.equals(reader.getTagName(), "readId")) { String tmpVal = reader.getElementValue(); if (tmpVal != null) { - tmpVal = tmpVal.replace("[",StringUtils.EMPTY).replace("]",StringUtils.EMPTY); + tmpVal = tmpVal.replace("[", StringUtils.EMPTY).replace("]", StringUtils.EMPTY); String[] idArr = tmpVal.split(","); Set setId = new HashSet<>(); for (String id : idArr) { @@ -329,7 +323,7 @@ public class AlphaFineConfigManager implements XMLable { /** * 返回默认排序 - * */ + */ private String getDefaultTabOrder() { return AlphaFineConstants.PRODUCT_NEWS + COMMA + AlphaFineConstants.TEMPLATE_SHOP + COMMA + AlphaFineConstants.HELP + COMMA + AlphaFineConstants.PLUGIN + COMMA + AlphaFineConstants.FUNCTION + COMMA + AlphaFineConstants.MY_TEMPLATES; } @@ -350,14 +344,14 @@ public class AlphaFineConfigManager implements XMLable { this.containDocument = containDocument; } - public void setContainMyTemplate(boolean containMyTemplate) { - this.containMyTemplate = containMyTemplate; - } - public boolean isContainMyTemplate() { return containMyTemplate; } + public void setContainMyTemplate(boolean containMyTemplate) { + this.containMyTemplate = containMyTemplate; + } + public boolean isContainTemplate() { return containTemplate; } @@ -478,6 +472,10 @@ public class AlphaFineConfigManager implements XMLable { return productDynamics && FRContext.isChineseEnv(); } + public void setProductDynamics(boolean productDynamics) { + this.productDynamics = productDynamics; + } + public boolean hasTemplateShop() { return showTemplateShop && FRContext.isChineseEnv(); } @@ -486,13 +484,9 @@ public class AlphaFineConfigManager implements XMLable { this.showTemplateShop = showTemplateShop; } - public void setProductDynamics(boolean productDynamics) { - this.productDynamics = productDynamics; - } - /** * 返回tab显示顺序 - * */ + */ public String[] getTabOrder() { if (tabOrder == null) { tabOrder = getDefaultTabOrder().split(COMMA); @@ -500,9 +494,13 @@ public class AlphaFineConfigManager implements XMLable { return tabOrder; } + public void setTabOrder(String[] tabOrder) { + this.tabOrder = tabOrder; + } + /** * getTabOrder的tostring - * */ + */ public String getTabOrderString() { StringBuilder sb = new StringBuilder(); for (String s : getTabOrder()) { @@ -510,8 +508,4 @@ public class AlphaFineConfigManager implements XMLable { } return sb.toString(); } - - public void setTabOrder(String[] tabOrder) { - this.tabOrder = tabOrder; - } } diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java index e080b3e7c3..09415d5327 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java @@ -24,10 +24,11 @@ import java.util.Map; import java.util.function.Function; /** + * alphafine设置 - 搜索范围 - 自定义排序 - 弹出面板 + * * @author Link * @version 11.0 * Created by Link on 2022/9/18 - * alphafine设置 - 搜索范围 - 自定义排序 - 弹出面板 */ public class CustomSortPane extends JPanel { @@ -78,7 +79,7 @@ public class CustomSortPane extends JPanel { up = new UIButton(IconUtils.readIcon("com/fr/design/mainframe/alphafine/images/up.svg")); down = new UIButton(IconUtils.readIcon("com/fr/design/mainframe/alphafine/images/down.svg")); top.addActionListener(e -> { - SwingUtilities.invokeLater(()->{ + SwingUtilities.invokeLater(() -> { sortItemPane.setComponentZOrder(selectedLabel, 0); CustomSortPane.this.revalidate(); CustomSortPane.this.repaint(); @@ -87,7 +88,7 @@ public class CustomSortPane extends JPanel { }); bottom.addActionListener(e -> { - SwingUtilities.invokeLater(()->{ + SwingUtilities.invokeLater(() -> { sortItemPane.setComponentZOrder(selectedLabel, sortItemPane.getComponentCount() - 1); CustomSortPane.this.revalidate(); CustomSortPane.this.repaint(); @@ -96,8 +97,8 @@ public class CustomSortPane extends JPanel { }); up.addActionListener(e -> { - SwingUtilities.invokeLater(()->{ - sortItemPane.setComponentZOrder(selectedLabel, sortItemPane.getComponentZOrder(selectedLabel) - 1); + SwingUtilities.invokeLater(() -> { + sortItemPane.setComponentZOrder(selectedLabel, sortItemPane.getComponentZOrder(selectedLabel) - 1); CustomSortPane.this.revalidate(); CustomSortPane.this.repaint(); refreshCurrentOrder(); @@ -105,7 +106,7 @@ public class CustomSortPane extends JPanel { }); down.addActionListener(e -> { - SwingUtilities.invokeLater(()->{ + SwingUtilities.invokeLater(() -> { sortItemPane.setComponentZOrder(selectedLabel, sortItemPane.getComponentZOrder(selectedLabel) + 1); CustomSortPane.this.revalidate(); CustomSortPane.this.repaint(); @@ -157,7 +158,7 @@ public class CustomSortPane extends JPanel { // 计算当前排序 String[] newOrder = new String[currentTabOrder.length]; - Component[] components =sortItemPane.getComponents(); + Component[] components = sortItemPane.getComponents(); for (String s : exTab.keySet()) { newOrder[exTab.get(s)] = s; } @@ -165,7 +166,7 @@ public class CustomSortPane extends JPanel { int t = 0; for (int i = 0; i < newOrder.length; i++) { if (StringUtils.isEmpty(newOrder[i])) { - newOrder[i] = ((MenuLabel)components[t++]).getText(); + newOrder[i] = ((MenuLabel) components[t++]).getText(); } } parentPane.setCurrentOrder(newOrder); diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabel.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabel.java index dfe83b7083..96c7a17971 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabel.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabel.java @@ -13,10 +13,11 @@ import java.awt.event.MouseListener; import java.util.function.Function; /** + * 菜单选项label + * * @author Link * @version 11.0 * Created by Link on 2022/9/18 - * 菜单选项label */ public class MenuLabel extends UILabel { @@ -27,7 +28,7 @@ public class MenuLabel extends UILabel { private static final int WIDTH = 147; private MenuLabelPane parentMenu; - private Function function; + private final Function function; private boolean selected; public MenuLabel(String text, Function function) { @@ -46,11 +47,15 @@ public class MenuLabel extends UILabel { public void setUI(LabelUI ui) { super.setUI(ui); this.setBackground(BACKGROUND_COLOR); - this.setBorder(BorderFactory.createEmptyBorder(2,10,1,10)); + this.setBorder(BorderFactory.createEmptyBorder(2, 10, 1, 10)); this.setPreferredSize(new Dimension(WIDTH, HEIGHT)); this.setFont(DesignUtils.getDefaultGUIFont().applySize(12)); } + public boolean isSelected() { + return selected; + } + public void setSelected(boolean selected) { if (selected) { parentMenu.setNoneSelected(); @@ -63,10 +68,6 @@ public class MenuLabel extends UILabel { } } - public boolean isSelected() { - return selected; - } - MouseListener createMouseListener() { return new MouseAdapter() { @Override diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabelPane.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabelPane.java index 83a15ff5d2..929f54837c 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabelPane.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabelPane.java @@ -5,10 +5,11 @@ import java.awt.FlowLayout; import java.util.List; /** + * 简单菜单面板 + * * @author Link * @version 11.0 * Created by Link on 2022/9/18 - * 简单菜单面板 */ public class MenuLabelPane extends JPanel { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/RecommendSearchLabel.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/RecommendSearchLabel.java index acf3e1f3a5..8d3b760706 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/RecommendSearchLabel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/RecommendSearchLabel.java @@ -12,10 +12,11 @@ import java.awt.event.MouseEvent; import java.util.List; /** + * alphaFine - 推荐搜索词标签 + * * @author Link * @version 11.0 * Created by Link on 2022/9/19 - * alphaFine - 推荐搜索词标签 */ public class RecommendSearchLabel extends JPanel { @@ -36,7 +37,7 @@ public class RecommendSearchLabel extends JPanel { /** * 推荐搜索词,绑定alphaFine搜索事件 - * */ + */ public class SearchKeyLabel extends JLabel { String searchKey; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchHintPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchHintPane.java index 43394e0a7d..adc5fc8352 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchHintPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchHintPane.java @@ -20,10 +20,11 @@ import java.util.ArrayList; import java.util.List; /** + * alphafine - 搜索提示面板 + * * @author Link * @version 11.0 * Created by Link on 2022/9/18 - * alphafine - 搜索提示面板 */ public class SearchHintPane extends JPanel { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultContentPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultContentPane.java index ef4487f7ea..56c14dc28a 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultContentPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultContentPane.java @@ -11,10 +11,11 @@ import javax.swing.JPanel; import java.awt.BorderLayout; /** + * alphaFine - 默认展示页面 + * * @author Link * @version 11.0 * Created by Link on 2022/9/18 - * alphaFine - 默认展示页面 */ public class DefaultContentPane extends JPanel { @@ -25,7 +26,7 @@ public class DefaultContentPane extends JPanel { public DefaultContentPane(CellType cellType, AlphaFineFrame parentWindow) { this.setLayout(new BorderLayout()); this.setPreferredSize(AlphaFineConstants.PREVIEW_SIZE); - this.searchWorkerManager = new SearchWorkerManager( + this.searchWorkerManager = new SearchWorkerManager( cellType, searchTextBean -> SearchProviderRegistry.getSearchProvider(cellType).getDefaultResult(), parentWindow, diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultPluginContentPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultPluginContentPane.java index 87deed7a8c..fc9838e9fb 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultPluginContentPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultPluginContentPane.java @@ -16,24 +16,24 @@ import java.util.ArrayList; import java.util.List; /** + * alphafine插件默认页 + * * @author Link * @version 11.0 * Created by Link on 2022/9/18 - * alphafine插件默认页 */ public class DefaultPluginContentPane extends DefaultContentPane { + private static final String[] HINTS = CloudCenter.getInstance().acquireConf("alphafine.plugin.recommend", "JS,API,JSON").split(","); // 左边展示内容,右边展示搜索提示 private SearchWorkerManager searchWorkerManager; private CellType cellType; - private static final String[] HINTS = CloudCenter.getInstance().acquireConf("alphafine.plugin.recommend", "JS,API,JSON").split(","); - public DefaultPluginContentPane(CellType cellType, AlphaFineFrame parentWindow) { super(); this.setLayout(new BorderLayout()); this.setPreferredSize(AlphaFineConstants.PREVIEW_SIZE); - new SwingWorker(){ + new SwingWorker() { @Override protected Boolean doInBackground() throws Exception { add(new SearchLoadingPane()); @@ -53,7 +53,7 @@ public class DefaultPluginContentPane extends DefaultContentPane { for (String s : HINTS) { searchKeys.add(s); } - searchWorkerManager = new SearchWorkerManager( + searchWorkerManager = new SearchWorkerManager( cellType, searchTextBean -> SearchProviderRegistry.getSearchProvider(cellType).getDefaultResult(), parentWindow, diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/SearchProviderRegistry.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/SearchProviderRegistry.java index 0cf7abae95..02d1fc35c2 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/SearchProviderRegistry.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/SearchProviderRegistry.java @@ -10,10 +10,11 @@ import java.util.HashMap; import java.util.Map; /** + * alphafine搜索提供者注册到这里 + * * @author Link * @version 11.0 * Created by Link on 2022/9/18 - * alphafine搜索提供者注册到这里 */ public class SearchProviderRegistry { private static Map map; @@ -27,7 +28,7 @@ public class SearchProviderRegistry { /** * 根据celltype获得对应searchProvider - * */ + */ public static AlphaFineSearchProvider getSearchProvider(CellType cellType) { return map.get(cellType); } From cc48a7b29afc43e099beacb674df128078bbad1e Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 20 Sep 2022 14:10:36 +0800 Subject: [PATCH 31/93] =?UTF-8?q?REPORT-75998=20=E5=86=B3=E7=AD=96?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E7=BB=84=E4=BB=B6JS=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E3=80=81=E9=83=A8=E5=88=86=E9=80=9A=E9=85=8D=E7=AC=A6=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E3=80=81=E5=B7=A6=E4=BE=A7=E9=9D=A2=E6=9D=BF=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cell/SearchDSColumnFormulaAction.java | 2 +- .../action/content/js/SearchCellJSAction.java | 14 --- .../content/js/SearchComponentJSAction.java | 87 +++++++++++++++++++ .../action/content/js/SearchJSManager.java | 2 + .../actions/replace/info/ReplaceObject.java | 1 + .../replace/ui/ITReplaceWestPanel.java | 6 +- .../actions/replace/utils/SearchJSUtils.java | 13 +-- .../actions/replace/utils/ShowValueUtils.java | 47 ++++++++-- 8 files changed, 140 insertions(+), 32 deletions(-) create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchComponentJSAction.java diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchDSColumnFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchDSColumnFormulaAction.java index cc2c1988e4..5bced089a6 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchDSColumnFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchDSColumnFormulaAction.java @@ -59,7 +59,7 @@ public class SearchDSColumnFormulaAction implements SearchCellFormula { private void addFormulaInfos2ArrayFromResult(ITContent content, DSColumn dsColumn, List formulaInfos) { char formulaLabel = '='; - if (dsColumn.getResult().length() > 0 && dsColumn.getResult().charAt(0) == formulaLabel) { + if (dsColumn.getResult() != null && dsColumn.getResult().length() > 0 && dsColumn.getResult().charAt(0) == formulaLabel) { ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(dsColumn); //高级-显示值 diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchCellJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchCellJSAction.java index d0a00644eb..cff74e9e0a 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchCellJSAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchCellJSAction.java @@ -61,20 +61,6 @@ public class SearchCellJSAction implements SearchJS { //单元格如果是图表还需要额外处理 if (cell.getValue() instanceof ChartCollection) { SearchChartJSAction.getInstance().searchChartJS((ChartCollection) cell.getValue(), ITContent.copy(cellInfo.getContent()), jsInfos); - //List> htmlLabels = SearchJSUtils.getHtmlLabel((ChartCollection) cell.getValue()); - //List nameJavaScripts = SearchJSUtils.getNameJavaScript((ChartCollection) cell.getValue()); - ////图表-样式-标签以及图表-特效-条件显示 - //ITContent htmlITContent = ITContent.copy(cellInfo.getContent()); - //htmlITContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Chart")); - //SearchJSUtils.addJSInfosFromHtmlLabel(htmlITContent, htmlLabels, jsInfos); - ////图表-特效-交互属性 - //ITContent conditionContent = ITContent.copy(cellInfo.getContent()); - //conditionContent.addOtherPos( - // Toolkit.i18nText("Fine-Design_Chart_Chart"), - // Toolkit.i18nText("Fine-Design_Chart_Animation_Special"), - // Toolkit.i18nText("Fine-Design_Chart_Interactive") - //); - //SearchJSUtils.addJSInfosFromNameJS(conditionContent, nameJavaScripts, jsInfos); } } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchComponentJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchComponentJSAction.java new file mode 100644 index 0000000000..881b0d1663 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchComponentJSAction.java @@ -0,0 +1,87 @@ +package com.fr.design.actions.replace.action.content.js; + +import com.fr.base.chart.BaseChartCollection; +import com.fr.chart.chartattr.ChartCollection; +import com.fr.design.actions.replace.action.content.component.SearchComponentAction; +import com.fr.design.actions.replace.info.ComponentInfo; +import com.fr.design.actions.replace.info.JSInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.mainframe.JTemplate; +import com.fr.form.ui.ChartEditor; +import com.fr.form.ui.container.WTitleLayout; + +import java.util.ArrayList; +import java.util.List; + +/** + * 决策报表的图表组件中特殊存在的JS + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-20 + */ +public class SearchComponentJSAction implements SearchJS { + private SearchComponentJSAction() { + } + + @Override + public void searchJSFromObject(JTemplate jTemplate, List jsInfos) { + List componentJSInfos = new ArrayList<>(); + addJSInfos2ListFromComponent(jTemplate, componentJSInfos); + jsInfos.addAll(componentJSInfos); + } + + private void addJSInfos2ListFromComponent(JTemplate jTemplate, List componentJSInfos) { + SearchComponentAction searchComponentAction = SearchComponentAction.getInstance(); + searchComponentAction.search4Infos(jTemplate); + List componentInfoList = searchComponentAction.getComponentInfos(); + for (ComponentInfo componentInfo : componentInfoList) { + Object o = componentInfo.getContent().getReplaceObject(); + if (o instanceof WTitleLayout) { + if (((WTitleLayout) o).getBodyBoundsWidget().getWidget() instanceof ChartEditor) { + ChartEditor chartEditor = (ChartEditor) ((WTitleLayout) o).getBodyBoundsWidget().getWidget(); + SearchChartJSAction searchChartJSAction = SearchChartJSAction.getInstance(); + for (BaseChartCollection chartCollection : chartEditor.getChartCollections()) { + if (chartCollection instanceof ChartCollection) { + searchChartJSAction.searchChartJS((ChartCollection) chartCollection, ITContent.copy(componentInfo.getContent()), componentJSInfos); + } + + } + } + } + } + } + + /** + * 对外开放获取对象的方法 + * + * @return + */ + public static SearchComponentJSAction getInstance() { + return SearchComponentJSActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchComponentJSActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchComponentJSAction instance; + + SearchComponentJSActionEnum() { + instance = new SearchComponentJSAction(); + } + + /** + * 获取单例的方法 + * + * @return + */ + public SearchComponentJSAction getInstance() { + return instance; + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchJSManager.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchJSManager.java index 01e12dbd8e..9bd972a1f1 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchJSManager.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchJSManager.java @@ -32,6 +32,8 @@ public class SearchJSManager implements SearchAction, SearchManager { register(SearchWebJSAction.getInstance()); //从悬浮元素 register(SearchFloatJSAction.getInstance()); + //从决策报表图表组件 + register(SearchComponentJSAction.getInstance()); } @Override diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java index ed78c62784..ec57cfcc86 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java @@ -93,6 +93,7 @@ public enum ReplaceObject implements DealWithInfoValue { } } else { Listener listener = ((Listener) ((info.getContent().getReplaceObject()))); + info.updateOldStr(listener.getName(), findStr); listener.setName(listener.getName().replaceAll(findStr, replaceStr)); } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceWestPanel.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceWestPanel.java index e9ff2286c0..a552f4f841 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceWestPanel.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceWestPanel.java @@ -25,13 +25,9 @@ public class ITReplaceWestPanel { UIToggleButton contentButton = new UIToggleButton(Toolkit.i18nText("Fine-Design_Basic_Templates_Content")); contentButton.setSelected(true); contentButton.setBorderPainted(false); - UIToggleButton settingButton = new UIToggleButton("//"); - settingButton.setBorderPainted(false); leftJpanel.add(contentButton); leftJpanel.setBorder(BorderFactory.createMatteBorder(0, 0, 0, 1, new Color(218, 218, 221))); - leftJpanel.add(settingButton); - //由于要砍掉设置项这部分,这边先暂时填充一下 - int labelNum = 13; + int labelNum = 14; for (int i = 0; i < labelNum; i++) { leftJpanel.add(new UILabel("")); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java index 729f1e6a8b..6ec96038eb 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java @@ -38,11 +38,14 @@ public class SearchJSUtils { * 从Listener中获取JS */ public static void searchJSFromListener(List jsInfos, ITContent content) { - JavaScript javaScript = ((Listener) (content.getReplaceObject())).getAction(); - if (javaScript instanceof JavaScriptImpl) { - ITContent newContent = ITContent.copy(content); - newContent.setReplaceObject(javaScript); - SearchJSUtils.addJSInfos(jsInfos, new JSInfo(newContent)); + if (content.getReplaceObject() instanceof Listener){ + Listener listener = (Listener) (content.getReplaceObject()); + JavaScript javaScript = listener.getAction(); + if (javaScript instanceof JavaScriptImpl) { + ITContent newContent = ITContent.copy(content); + newContent.setReplaceObject(listener); + SearchJSUtils.addJSInfos(jsInfos, new JSInfo(newContent)); + } } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java index 6f4e7e84fa..003fe1baf0 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java @@ -11,8 +11,10 @@ import com.fr.stable.collections.combination.Pair; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.regex.Matcher; import java.util.regex.Pattern; + /** * 用来处理展示内容的工具类(截取、高亮) * @@ -22,6 +24,12 @@ import java.util.regex.Pattern; */ public class ShowValueUtils { + public static final String ANY_THING = "?"; + public static final String NUMBER = "#"; + public static final String ENGLISH = "$"; + public static final String ANY_THING_REGEX = "."; + public static final String NUMBER_REGEX = "[0-9]"; + public static final String ENGLISH_REGEX = "[\u4e00-\u9fa5a-zA-Z]"; /** * 获取除内容外其他一次性展示所有的内容(名称、水印...) * @@ -48,14 +56,20 @@ public class ShowValueUtils { * @return 替换后的字符串 */ public static String replaceAll(String str, String regex, String replacement) { - if (ITReplaceMainDialog.isMatched()){ - return str.replaceAll(Pattern.quote(regex), replacement); - }else { - return str.replace(regex, replacement); - } - + return str.replace(regex, replacement); } + /** + * 转换正则表达式 + * @param regex + * @return + */ + public static String changeRegex(String regex){ + regex = regex.replace(NUMBER,NUMBER_REGEX); + regex = regex.replace(ENGLISH, ENGLISH_REGEX); + regex = regex.replace(ANY_THING,ANY_THING_REGEX); + return regex; + } /** * 获取匹配的字符串的位置(开始位置,结束位置) @@ -93,7 +107,7 @@ public class ShowValueUtils { */ public static void updateHighlight(Info info, String replaceStr) { String s = info.getInfoShowStr(info); - s = ShowValueUtils.replaceAll(s, info.getContent().getLastSearchStr(), "" + replaceStr + ""); + s = s.replace(info.getContent().getLastSearchStr(), "" + replaceStr + ""); info.getContent().setShowStr( "
" + s + "
" ); @@ -110,4 +124,23 @@ public class ShowValueUtils { public static boolean isNotEmpty(Collection collection) { return collection != null && collection.size() > 0; } + + + /** + * 支持正则表达式的indexOf + * @param str + * @param regex + * @return + */ + public static int indexOf(String str, String regex){ + CharSequence inputStr = str; + int failReturn = -1; + String patternStr = changeRegex(regex); + Pattern pattern = Pattern.compile(patternStr); + Matcher matcher = pattern.matcher(inputStr); + if(matcher.find()){ + return matcher.start(); + } + return failReturn; + } } From 00c98afbc6111e770d356a0fd6ed656ff433e205 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 20 Sep 2022 14:23:38 +0800 Subject: [PATCH 32/93] =?UTF-8?q?REPORT-75998=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=AD=97=E6=AF=8D=E5=8C=B9=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/actions/replace/utils/ShowValueUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java index 003fe1baf0..75288d0f92 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java @@ -29,7 +29,7 @@ public class ShowValueUtils { public static final String ENGLISH = "$"; public static final String ANY_THING_REGEX = "."; public static final String NUMBER_REGEX = "[0-9]"; - public static final String ENGLISH_REGEX = "[\u4e00-\u9fa5a-zA-Z]"; + public static final String ENGLISH_REGEX = "[a-zA-Z]"; /** * 获取除内容外其他一次性展示所有的内容(名称、水印...) * From 28e4fd3d65ad6881c2aab051833bce1d1b1830d5 Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Wed, 21 Sep 2022 15:21:10 +0800 Subject: [PATCH 33/93] =?UTF-8?q?REPORT-80748=E3=80=90=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=E3=80=91=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E4=B8=AD=E5=BF=83=E4=B8=8D=E5=B1=95=E7=A4=BA=E9=BB=98?= =?UTF-8?q?=E8=AE=A4&=E6=A3=80=E7=B4=A2=E4=B8=80=E7=9B=B4=E6=98=AF?= =?UTF-8?q?=E7=A9=BA=E7=9A=84=EF=BC=9BREPORT-80752=E3=80=90=E8=BF=90?= =?UTF-8?q?=E8=90=A5=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=E3=80=91?= =?UTF-8?q?=E5=8A=A8=E6=80=81=E6=97=A0=E6=B3=95=E6=98=BE=E7=A4=BA=E5=87=BA?= =?UTF-8?q?=E6=9D=A5=EF=BC=8C=E8=8B=A5=E6=8F=92=E4=BB=B6=E4=B8=AD=E5=BF=83?= =?UTF-8?q?=E5=9C=A8=E9=A6=96=E4=B8=AA=E4=B9=9F=E6=97=A0=E6=B3=95=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=20=E3=80=90=E9=97=AE=E9=A2=98=E5=8E=9F=E5=9B=A0?= =?UTF-8?q?=E3=80=91=20=E5=B8=B8=E9=87=8F=E7=B1=BB=E8=A2=AB=E6=8F=90?= =?UTF-8?q?=E5=89=8D=E5=8A=A0=E8=BD=BD=EF=BC=8C=E5=AF=BC=E8=87=B4=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E4=B8=8D=E5=88=B0=E4=BA=91=E4=B8=AD=E5=BF=83=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=20=E3=80=90=E6=94=B9=E5=8A=A8=E6=80=9D=E8=B7=AF?= =?UTF-8?q?=E3=80=91=20=E9=9C=80=E8=A6=81=E4=BB=8E=E8=BF=90=E4=B8=AD?= =?UTF-8?q?=E5=BF=83=E5=8A=A0=E8=BD=BD=E7=9A=84=E5=B8=B8=E9=87=8F=E6=94=BE?= =?UTF-8?q?=E5=88=B0=E5=8F=A6=E4=B8=80=E4=B8=AA=E7=B1=BB=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alphafine/AlphaFineCloudConstants.java | 67 +++++++++++++++++++ .../help/alphafine/AlphaFineConstants.java | 52 -------------- .../alphafine/cell/model/BottomModel.java | 4 +- .../alphafine/cell/model/DocumentModel.java | 6 +- .../alphafine/cell/model/PluginModel.java | 6 +- .../alphafine/cell/model/RobotModel.java | 5 +- .../alphafine/component/AlphaFineDialog.java | 7 +- .../preview/HelpDocumentNoResultPane.java | 4 +- .../preview/NoResultWithLinkPane.java | 3 +- .../alphafine/preview/RobotPreviewPane.java | 5 +- .../manager/impl/ComplementAdviceManager.java | 3 +- .../manager/impl/DocumentSearchManager.java | 4 +- .../search/manager/impl/HotIssuesManager.java | 4 +- .../manager/impl/PluginSearchManager.java | 7 +- .../impl/ProductNewsSearchManager.java | 5 +- .../manager/impl/RecommendSearchManager.java | 3 +- .../manager/impl/SimilarSearchManager.java | 3 +- 17 files changed, 107 insertions(+), 81 deletions(-) create mode 100644 designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java new file mode 100644 index 0000000000..a2b028be33 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java @@ -0,0 +1,67 @@ +package com.fr.design.actions.help.alphafine; + +import com.fr.general.CloudCenter; + +/** + * 需要从云端获取的常量单独放一起 + * 以防AlphaFineConstants被加载时,CloudCenter还没启动,导致常量获取不到。 + * + * @author Link + * @version 11.0 + * Created by Link on 2022/9/21 + */ +public class AlphaFineCloudConstants { + + public static final String PLUGIN_SEARCH_URL = CloudCenter.getInstance().acquireUrlByKind("plugin.searchAPI"); + + public static final String SEARCH_ALL_PLUGIN_URL = CloudCenter.getInstance().acquireUrlByKind("plugin.all.searchAPI"); + + public static final String PLUGIN_URL = CloudCenter.getInstance().acquireUrlByKind("af.pluginInfo"); + + public static final String REUSE_URL = CloudCenter.getInstance().acquireUrlByKind("af.reuseInfo"); + + public static final String DOCUMENT_DOC_URL = CloudCenter.getInstance().acquireUrlByKind("af.doc_view"); + + public static final String DOCUMENT_SEARCH_URL = CloudCenter.getInstance().acquireUrlByKind("af.doc_search"); + + public static final String DOCUMENT_INFORMATION_URL = CloudCenter.getInstance().acquireUrlByKind("af.doc_info"); + + public static final String PLUGIN_IMAGE_URL = CloudCenter.getInstance().acquireUrlByKind("af.plugin_image"); + + public static final String CLOUD_SERVER_URL = CloudCenter.getInstance().acquireUrlByKind("af.record"); + + public static final String SEARCH_API = CloudCenter.getInstance().acquireUrlByKind("af.cloud_search"); + + public static final String SIMILAR_SEARCH_URL_PREFIX = CloudCenter.getInstance().acquireUrlByKind("af.similar_search"); + + public static final String COMPLEMENT_ADVICE_SEARCH_URL_PREFIX = CloudCenter.getInstance().acquireUrlByKind("af.advice_search"); + + public static final String ALPHA_HOT_SEARCH = CloudCenter.getInstance().acquireUrlByKind("af.hot_search"); + + public static final String ALPHA_GO_TO_FORUM = CloudCenter.getInstance().acquireUrlByKind("af.go_fourm"); + + public static final String ALPHA_GO_TO_WEB = CloudCenter.getInstance().acquireUrlByKind("af.go_web"); + + public static final String ALPHA_PREVIEW = CloudCenter.getInstance().acquireUrlByKind("af.preview"); + + public static final String ALPHA_CID = CloudCenter.getInstance().acquireUrlByKind("af.cid.new"); + + public static final String ALPHA_CID_USER_GROUP_INFO = CloudCenter.getInstance().acquireUrlByKind("af.cid.user.group.info"); + + + private static final String QUICK_START_URL = CloudCenter.getInstance().acquireUrlByKind("af.help.quick.start"); + + private static final String REPORT_LEARNING_PATH = CloudCenter.getInstance().acquireUrlByKind("af.help.report.learning.path"); + + private static final String PARAMETER_LEARNING_PATH = CloudCenter.getInstance().acquireUrlByKind("af.help.param.learning.path"); + + private static final String FILL_LEARNING_PATH = CloudCenter.getInstance().acquireUrlByKind("af.help.fill.learning.path"); + + private static final String API_SUMMARY = CloudCenter.getInstance().acquireUrlByKind("af.help.api.summary"); + + private static final String MONTHLY_DOCUMENT = CloudCenter.getInstance().acquireUrlByKind("af.help.monthly.document"); + + private static final String DEFAULT_RECOMMEND = "[ { \"name\":\"快速入门指南\", \"link\":\"" + QUICK_START_URL + "\" }, { \"name\":\"报表应用学习路径\", \"link\":\"" + REPORT_LEARNING_PATH + "\" }, { \"name\":\"参数应用学习路径\", \"link\":\"" + PARAMETER_LEARNING_PATH + "\" }, { \"name\":\"填报学习路径\", \"link\":\"" + FILL_LEARNING_PATH + "\" }, { \"name\":\"API接口汇总\", \"link\":\"" + API_SUMMARY + "\" }, { \"name\":\"文档月刊\", \"link\":\"" + MONTHLY_DOCUMENT + "\" } ]"; + + public static final String ALPHA_HELP_RECOMMEND = CloudCenter.getInstance().acquireUrlByKind("af.recommend", DEFAULT_RECOMMEND); +} diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConstants.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConstants.java index 946c99f3f1..b723e08b16 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConstants.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConstants.java @@ -4,7 +4,6 @@ import com.fr.base.extension.FileExtension; import com.fr.base.svg.IconUtils; import com.fr.design.i18n.Toolkit; import com.fr.design.utils.DesignUtils; -import com.fr.general.CloudCenter; import com.fr.general.IOUtils; import javax.swing.Icon; @@ -68,11 +67,9 @@ public class AlphaFineConstants { /** * 帮助文档搜索间隔(ms) api限制了1s之内只能搜索一次 - * */ public static final long DOCUMENT_SEARCH_GAP = 1000; - public static final Dimension FULL_SIZE = new Dimension(680, 460); public static final Dimension CONTENT_SIZE = new Dimension(680, 405); @@ -126,27 +123,6 @@ public class AlphaFineConstants { public static final String ALPHA_HOT_IMAGE_NAME = "alphafine_hot"; - public static final String PLUGIN_SEARCH_URL = CloudCenter.getInstance().acquireUrlByKind("plugin.searchAPI"); - - public static final String SEARCH_ALL_PLUGIN_URL = CloudCenter.getInstance().acquireUrlByKind("plugin.all.searchAPI"); - - public static final String PLUGIN_URL = CloudCenter.getInstance().acquireUrlByKind("af.pluginInfo"); - - public static final String REUSE_URL = CloudCenter.getInstance().acquireUrlByKind("af.reuseInfo"); - - - public static final String DOCUMENT_DOC_URL = CloudCenter.getInstance().acquireUrlByKind("af.doc_view"); - - public static final String DOCUMENT_SEARCH_URL = CloudCenter.getInstance().acquireUrlByKind("af.doc_search"); - - public static final String DOCUMENT_INFORMATION_URL = CloudCenter.getInstance().acquireUrlByKind("af.doc_info"); - - public static final String PLUGIN_IMAGE_URL = CloudCenter.getInstance().acquireUrlByKind("af.plugin_image"); - - public static final String CLOUD_SERVER_URL = CloudCenter.getInstance().acquireUrlByKind("af.record"); - - public static final String SEARCH_API = CloudCenter.getInstance().acquireUrlByKind("af.cloud_search"); - public static final String SPECIAL_CHARACTER_REGEX = "[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】';:”“’。,、?]"; public static final String BOTTOM_REGEX_FIRST = "
([\\s\\S]*?)class=\"jiaoyes\">YES
"; @@ -159,36 +135,8 @@ public class AlphaFineConstants { public static final String ALPHA_ROBOT_SEARCH_TOKEN = "K8dl0Np6l0gs"; - public static final String SIMILAR_SEARCH_URL_PREFIX = CloudCenter.getInstance().acquireUrlByKind("af.similar_search"); - - public static final String COMPLEMENT_ADVICE_SEARCH_URL_PREFIX = CloudCenter.getInstance().acquireUrlByKind("af.advice_search"); - - public static final String ALPHA_HOT_SEARCH = CloudCenter.getInstance().acquireUrlByKind("af.hot_search"); - - public static final String ALPHA_GO_TO_FORUM = CloudCenter.getInstance().acquireUrlByKind("af.go_fourm"); - - public static final String ALPHA_GO_TO_WEB = CloudCenter.getInstance().acquireUrlByKind("af.go_web"); - - public static final String ALPHA_PREVIEW = CloudCenter.getInstance().acquireUrlByKind("af.preview"); - - public static final String ALPHA_CID = CloudCenter.getInstance().acquireUrlByKind("af.cid.new"); - - public static final String ALPHA_CID_USER_GROUP_INFO = CloudCenter.getInstance().acquireUrlByKind("af.cid.user.group.info"); - public static final String SEARCH_BY_ID = "?id="; - private static final String QUICK_START_URL = CloudCenter.getInstance().acquireUrlByKind("af.help.quick.start"); - private static final String REPORT_LEARNING_PATH = CloudCenter.getInstance().acquireUrlByKind("af.help.report.learning.path"); - private static final String PARAMETER_LEARNING_PATH = CloudCenter.getInstance().acquireUrlByKind("af.help.param.learning.path"); - private static final String FILL_LEARNING_PATH = CloudCenter.getInstance().acquireUrlByKind("af.help.fill.learning.path"); - private static final String API_SUMMARY = CloudCenter.getInstance().acquireUrlByKind("af.help.api.summary"); - private static final String MONTHLY_DOCUMENT = CloudCenter.getInstance().acquireUrlByKind("af.help.monthly.document"); - - - private static final String DEFAULT_RECOMMEND = "[ { \"name\":\"快速入门指南\", \"link\":\"" + QUICK_START_URL + "\" }, { \"name\":\"报表应用学习路径\", \"link\":\"" + REPORT_LEARNING_PATH + "\" }, { \"name\":\"参数应用学习路径\", \"link\":\"" + PARAMETER_LEARNING_PATH + "\" }, { \"name\":\"填报学习路径\", \"link\":\"" + FILL_LEARNING_PATH + "\" }, { \"name\":\"API接口汇总\", \"link\":\"" + API_SUMMARY + "\" }, { \"name\":\"文档月刊\", \"link\":\"" + MONTHLY_DOCUMENT + "\" } ]"; - - public static final String ALPHA_HELP_RECOMMEND = CloudCenter.getInstance().acquireUrlByKind("af.recommend", DEFAULT_RECOMMEND); - public static final String JAVASCRIPT_PREFIX = "javascript:SendJava"; public static final String CHINESE_CHARACTERS = "[\\u4e00-\\u9fa5]"; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/BottomModel.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/BottomModel.java index dcc193e19c..fff60ea1f6 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/BottomModel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/BottomModel.java @@ -1,6 +1,6 @@ package com.fr.design.mainframe.alphafine.cell.model; -import com.fr.design.actions.help.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineCloudConstants; import com.fr.design.mainframe.alphafine.CellType; import com.fr.json.JSONException; import com.fr.json.JSONObject; @@ -48,7 +48,7 @@ public class BottomModel extends AlphaCellModel { @Override public void doAction() { try { - Desktop.getDesktop().browse(new URI(AlphaFineConstants.ALPHA_GO_TO_FORUM)); + Desktop.getDesktop().browse(new URI(AlphaFineCloudConstants.ALPHA_GO_TO_FORUM)); } catch (IOException | URISyntaxException e) { FineLoggerFactory.getLogger().error(e.getMessage()); } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/DocumentModel.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/DocumentModel.java index 89ffaa6334..8fa7ca2515 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/DocumentModel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/DocumentModel.java @@ -1,6 +1,6 @@ package com.fr.design.mainframe.alphafine.cell.model; -import com.fr.design.actions.help.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineCloudConstants; import com.fr.design.mainframe.alphafine.CellType; import com.fr.json.JSONObject; import com.fr.log.FineLoggerFactory; @@ -26,8 +26,8 @@ public class DocumentModel extends AlphaCellModel { public DocumentModel(String name, String content, int documentId) { super(name, content, CellType.DOCUMENT); this.documentId = documentId; - this.informationUrl = AlphaFineConstants.DOCUMENT_INFORMATION_URL + documentId; - this.documentUrl = AlphaFineConstants.DOCUMENT_DOC_URL + documentId + ".html"; + this.informationUrl = AlphaFineCloudConstants.DOCUMENT_INFORMATION_URL + documentId; + this.documentUrl = AlphaFineCloudConstants.DOCUMENT_DOC_URL + documentId + ".html"; } public DocumentModel(String name, String content, int documentId, int searchCount) { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java index 3ea91ad548..7eda90015d 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java @@ -1,7 +1,7 @@ package com.fr.design.mainframe.alphafine.cell.model; +import com.fr.design.actions.help.alphafine.AlphaFineCloudConstants; import com.fr.design.extra.WebViewDlgHelper; -import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.CellType; import com.fr.json.JSONObject; import com.fr.stable.StringUtils; @@ -36,9 +36,9 @@ public class PluginModel extends AlphaCellModel { this.price = price; this.pluginId = pluginId; if (getType() == CellType.PLUGIN) { - this.informationUrl = AlphaFineConstants.PLUGIN_URL + id; + this.informationUrl = AlphaFineCloudConstants.PLUGIN_URL + id; } else { - this.informationUrl = AlphaFineConstants.REUSE_URL + id; + this.informationUrl = AlphaFineCloudConstants.REUSE_URL + id; } } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/RobotModel.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/RobotModel.java index eeb3499d82..79e02f18e0 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/RobotModel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/RobotModel.java @@ -1,5 +1,6 @@ package com.fr.design.mainframe.alphafine.cell.model; +import com.fr.design.actions.help.alphafine.AlphaFineCloudConstants; import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.CellType; import com.fr.general.http.HttpToolbox; @@ -46,7 +47,7 @@ public class RobotModel extends AlphaCellModel { public static String getContent(String titleStr) { String token = DigestUtils.md5Hex(AlphaFineConstants.ALPHA_ROBOT_SEARCH_TOKEN + titleStr); - String url = AlphaFineConstants.ALPHA_GO_TO_WEB + titleStr + "&token=" + token; + String url = AlphaFineCloudConstants.ALPHA_GO_TO_WEB + titleStr + "&token=" + token; try { String result = HttpToolbox.get(url); @@ -83,7 +84,7 @@ public class RobotModel extends AlphaCellModel { @Override public void doAction() { try { - Desktop.getDesktop().browse(new URI(AlphaFineConstants.ALPHA_PREVIEW + URLEncoder.encode(super.getName(), EncodeConstants.ENCODING_UTF_8))); + Desktop.getDesktop().browse(new URI(AlphaFineCloudConstants.ALPHA_PREVIEW + URLEncoder.encode(super.getName(), EncodeConstants.ENCODING_UTF_8))); } catch (IOException e) { FineLoggerFactory.getLogger().error(e.getMessage()); } catch (URISyntaxException e) { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java index 774735d4b1..f7112c27a6 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java @@ -2,12 +2,13 @@ package com.fr.design.mainframe.alphafine.component; import com.bulenkov.iconloader.IconLoader; import com.fr.design.DesignerEnvManager; +import com.fr.design.actions.help.alphafine.AlphaFineCloudConstants; import com.fr.design.actions.help.alphafine.AlphaFineConfigManager; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.dialog.UIDialog; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.cell.CellModelHelper; import com.fr.design.mainframe.alphafine.cell.model.AlphaCellModel; @@ -39,10 +40,10 @@ import com.fr.log.FineLoggerFactory; import com.fr.stable.CodeUtils; import com.fr.stable.StringUtils; import com.fr.stable.project.ProjectConstants; - import com.fr.workspace.WorkContext; import com.fr.workspace.server.exporter.LocalExportOperator; import com.fr.workspace.server.exporter.TemplateExportOperator; + import javax.imageio.ImageIO; import javax.swing.BorderFactory; import javax.swing.DefaultListModel; @@ -968,7 +969,7 @@ public class AlphaFineDialog extends UIDialog { String date = new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime()); para.put("token", CodeUtils.md5Encode(date, StringUtils.EMPTY, "MD5")); para.put("content", object.toString()); - HttpClient httpClient = new HttpClient(AlphaFineConstants.CLOUD_SERVER_URL, para, true); + HttpClient httpClient = new HttpClient(AlphaFineCloudConstants.CLOUD_SERVER_URL, para, true); httpClient.asGet(); if (!httpClient.isServerAlive()) { FineLoggerFactory.getLogger().error("Failed to sent data to server!"); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/HelpDocumentNoResultPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/HelpDocumentNoResultPane.java index e3eac4d968..87a27cd29d 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/HelpDocumentNoResultPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/HelpDocumentNoResultPane.java @@ -1,6 +1,6 @@ package com.fr.design.mainframe.alphafine.preview; -import com.fr.design.actions.help.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineCloudConstants; import com.fr.design.constants.UIConstants; import com.fr.design.gui.ilable.UILabel; import com.fr.design.i18n.Toolkit; @@ -98,7 +98,7 @@ public class HelpDocumentNoResultPane extends JPanel { private Map generateMap() { - JSONArray jsonArray = JSONFactory.createJSON(JSON.ARRAY, AlphaFineConstants.ALPHA_HELP_RECOMMEND); + JSONArray jsonArray = JSONFactory.createJSON(JSON.ARRAY, AlphaFineCloudConstants.ALPHA_HELP_RECOMMEND); Map linkMap = new LinkedHashMap<>(); for (int i = 0, len = jsonArray.size(); i < len; i++) { JSONObject json = jsonArray.getJSONObject(i); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/NoResultWithLinkPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/NoResultWithLinkPane.java index 8b490a0929..31082f9e44 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/NoResultWithLinkPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/NoResultWithLinkPane.java @@ -1,5 +1,6 @@ package com.fr.design.mainframe.alphafine.preview; +import com.fr.design.actions.help.alphafine.AlphaFineCloudConstants; import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.dialog.link.MessageWithLink; import com.fr.design.utils.BrowseUtils; @@ -33,7 +34,7 @@ public class NoResultWithLinkPane extends NoResultPane { String[] para1 = title.split(TAG_A_START); String[] para2 = para1[1].split(TAG_A_END); - MessageWithLink messageWithLink = new MessageWithLink(para1[0], para2[0], AlphaFineConstants.ALPHA_GO_TO_FORUM, para2[1], Color.WHITE, DesignUtils.getDefaultGUIFont().applySize(14), AlphaFineConstants.MEDIUM_GRAY) { + MessageWithLink messageWithLink = new MessageWithLink(para1[0], para2[0], AlphaFineCloudConstants.ALPHA_GO_TO_FORUM, para2[1], Color.WHITE, DesignUtils.getDefaultGUIFont().applySize(14), AlphaFineConstants.MEDIUM_GRAY) { @Override protected void initListener(String link) { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/RobotPreviewPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/RobotPreviewPane.java index 5baa790648..7df9e3d4cc 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/RobotPreviewPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/RobotPreviewPane.java @@ -1,9 +1,10 @@ package com.fr.design.mainframe.alphafine.preview; +import com.fr.design.actions.help.alphafine.AlphaFineCloudConstants; +import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.itextarea.UITextArea; -import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.cell.model.AlphaCellModel; import com.fr.design.mainframe.alphafine.cell.model.RobotModel; import com.fr.log.FineLoggerFactory; @@ -60,7 +61,7 @@ public class RobotPreviewPane extends JPanel { .replaceAll("\\('", StringUtils.EMPTY) .replaceAll("'\\)", StringUtils.EMPTY); try { - Desktop.getDesktop().browse(new URI(AlphaFineConstants.ALPHA_PREVIEW + URLEncoder.encode(s, EncodeConstants.ENCODING_UTF_8))); + Desktop.getDesktop().browse(new URI(AlphaFineCloudConstants.ALPHA_PREVIEW + URLEncoder.encode(s, EncodeConstants.ENCODING_UTF_8))); } catch (IOException | URISyntaxException e1) { FineLoggerFactory.getLogger().error(e1.getMessage()); } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java index 38bc6b8e96..8a9acb87c6 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java @@ -1,6 +1,7 @@ package com.fr.design.mainframe.alphafine.search.manager.impl; import com.fr.design.DesignerEnvManager; +import com.fr.design.actions.help.alphafine.AlphaFineCloudConstants; import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.model.SearchResult; @@ -40,7 +41,7 @@ public class ComplementAdviceManager { SearchResult searchResult = new SearchResult(); for (int j = 0; j < searchText.length; j++) { String token = DigestUtils.md5Hex(AlphaFineConstants.ALPHA_ROBOT_SEARCH_TOKEN + searchText[j]); - String url = AlphaFineConstants.COMPLEMENT_ADVICE_SEARCH_URL_PREFIX + "msg=" + searchText[j] + "&token=" + token; + String url = AlphaFineCloudConstants.COMPLEMENT_ADVICE_SEARCH_URL_PREFIX + "msg=" + searchText[j] + "&token=" + token; try { String result = HttpToolbox.get(url); AlphaFineHelper.checkCancel(); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java index 30416749e5..0c8ef70536 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java @@ -1,6 +1,7 @@ package com.fr.design.mainframe.alphafine.search.manager.impl; import com.fr.design.DesignerEnvManager; +import com.fr.design.actions.help.alphafine.AlphaFineCloudConstants; import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.CellType; @@ -15,6 +16,7 @@ import com.fr.json.JSONException; import com.fr.json.JSONObject; import com.fr.log.FineLoggerFactory; import com.fr.stable.ArrayUtils; + import java.util.concurrent.TimeUnit; @@ -69,7 +71,7 @@ public class DocumentSearchManager implements AlphaFineSearchProvider { searchResult = new SearchResult(); for (int j = 0; j < searchText.length; j++) { long start = System.currentTimeMillis(); - String url = AlphaFineConstants.DOCUMENT_SEARCH_URL + searchText[j]; + String url = AlphaFineCloudConstants.DOCUMENT_SEARCH_URL + searchText[j]; try { String result = HttpToolbox.get(url); AlphaFineHelper.checkCancel(); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/HotIssuesManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/HotIssuesManager.java index 3fad289a0e..5346e05ec1 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/HotIssuesManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/HotIssuesManager.java @@ -1,6 +1,6 @@ package com.fr.design.mainframe.alphafine.search.manager.impl; -import com.fr.design.actions.help.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineCloudConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.cell.model.MoreModel; import com.fr.design.mainframe.alphafine.cell.model.RobotModel; @@ -75,7 +75,7 @@ public class HotIssuesManager { public String[][] getHotIssues() { try { - String result = HttpToolbox.get(AlphaFineConstants.ALPHA_HOT_SEARCH); + String result = HttpToolbox.get(AlphaFineCloudConstants.ALPHA_HOT_SEARCH); JSONArray jsonArray = JSONFactory.createJSON(JSON.ARRAY, result); if(jsonArray != null){ for (int i = 0; i < HOT_ITEM_NUM; i++) { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java index 8fa28040d5..f9729d1712 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java @@ -2,6 +2,7 @@ package com.fr.design.mainframe.alphafine.search.manager.impl; import com.fr.common.util.Collections; import com.fr.design.DesignerEnvManager; +import com.fr.design.actions.help.alphafine.AlphaFineCloudConstants; import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.CellType; @@ -73,7 +74,7 @@ public class PluginSearchManager implements AlphaFineSearchProvider { int searchCount = object.optInt("searchCount"); String imageUrl = null; try { - imageUrl = isFromCloud ? AlphaFineConstants.PLUGIN_IMAGE_URL + URLEncoder.encode(object.optString("pic").toString().substring(AlphaFineConstants.PLUGIN_IMAGE_URL.length()), "utf8") : object.optString("pic"); + imageUrl = isFromCloud ? AlphaFineCloudConstants.PLUGIN_IMAGE_URL + URLEncoder.encode(object.optString("pic").toString().substring(AlphaFineCloudConstants.PLUGIN_IMAGE_URL.length()), "utf8") : object.optString("pic"); } catch (UnsupportedEncodingException e) { FineLoggerFactory.getLogger().error("plugin icon error: " + e.getMessage()); } @@ -125,7 +126,7 @@ public class PluginSearchManager implements AlphaFineSearchProvider { for (int j = 0; j < searchText.length; j++) { try { String encodedKey = URLEncoder.encode(searchText[j], EncodeConstants.ENCODING_UTF_8); - String url = AlphaFineConstants.PLUGIN_SEARCH_URL + "?keyword=" + encodedKey; + String url = AlphaFineCloudConstants.PLUGIN_SEARCH_URL + "?keyword=" + encodedKey; String result = HttpToolbox.get(url); AlphaFineHelper.checkCancel(); JSONObject jsonObject = new JSONObject(result); @@ -173,7 +174,7 @@ public class PluginSearchManager implements AlphaFineSearchProvider { public SearchResult getDefaultResult() { this.defaultModelList = new SearchResult(); try { - String url = AlphaFineConstants.SEARCH_ALL_PLUGIN_URL; + String url = AlphaFineCloudConstants.SEARCH_ALL_PLUGIN_URL; String result = HttpToolbox.get(url); AlphaFineHelper.checkCancel(); JSONObject jsonObject = new JSONObject(result); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ProductNewsSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ProductNewsSearchManager.java index 0dda19c933..c20d3bb48b 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ProductNewsSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ProductNewsSearchManager.java @@ -2,6 +2,7 @@ package com.fr.design.mainframe.alphafine.search.manager.impl; import com.fr.concurrent.NamedThreadFactory; import com.fr.design.DesignerEnvManager; +import com.fr.design.actions.help.alphafine.AlphaFineCloudConstants; import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.model.ProductNews; @@ -82,7 +83,7 @@ public class ProductNewsSearchManager { public List getProductNewsList() throws Exception { productNewsList = new ArrayList<>(); idSet = new HashSet<>(); - String jsonStr = HttpToolbox.get(AlphaFineConstants.ALPHA_CID); + String jsonStr = HttpToolbox.get(AlphaFineCloudConstants.ALPHA_CID); AlphaFineHelper.checkCancel(); JSONObject cidJSON = JSONFactory.createJSON(JSON.OBJECT, jsonStr); JSONArray jsonArray = cidJSON.getJSONArray("data"); @@ -150,7 +151,7 @@ public class ProductNewsSearchManager { * 根据用户组id,查询用户组信息(改用户组中的所有设计器id) * */ private Set searchUserGroupInfo(String userGroupId) { - String url = AlphaFineConstants.ALPHA_CID_USER_GROUP_INFO + AlphaFineConstants.SEARCH_BY_ID + userGroupId; + String url = AlphaFineCloudConstants.ALPHA_CID_USER_GROUP_INFO + AlphaFineConstants.SEARCH_BY_ID + userGroupId; Set idSet = new HashSet<>(); try { String jsonStr = HttpToolbox.get(url); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java index 39ea82503c..88872d2d8b 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java @@ -1,6 +1,7 @@ package com.fr.design.mainframe.alphafine.search.manager.impl; import com.fr.design.DesignerEnvManager; +import com.fr.design.actions.help.alphafine.AlphaFineCloudConstants; import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.CellType; @@ -59,7 +60,7 @@ public class RecommendSearchManager implements AlphaFineSearchProvider { for (int j = 0; j < searchText.length; j++) { searchText[j] = searchText[j].replaceAll(StringUtils.BLANK, StringUtils.EMPTY); try { - String url = AlphaFineConstants.SEARCH_API + CodeUtils.cjkEncode(searchText[j]); + String url = AlphaFineCloudConstants.SEARCH_API + CodeUtils.cjkEncode(searchText[j]); String result = HttpToolbox.get(url); AlphaFineHelper.checkCancel(); JSONObject jsonObject = new JSONObject(result); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManager.java index fbdd5a90f9..5e08795ef1 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManager.java @@ -1,6 +1,7 @@ package com.fr.design.mainframe.alphafine.search.manager.impl; import com.fr.design.DesignerEnvManager; +import com.fr.design.actions.help.alphafine.AlphaFineCloudConstants; import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.CellType; @@ -47,7 +48,7 @@ public class SimilarSearchManager implements AlphaFineSearchProvider { SearchResult allModelList = new SearchResult(); for (int j = 0; j < searchText.length; j++) { String token = DigestUtils.md5Hex(AlphaFineConstants.ALPHA_ROBOT_SEARCH_TOKEN + searchText[j]); - String url = AlphaFineConstants.SIMILAR_SEARCH_URL_PREFIX + "msg=" + searchText[j] + "&token=" + token; + String url = AlphaFineCloudConstants.SIMILAR_SEARCH_URL_PREFIX + "msg=" + searchText[j] + "&token=" + token; try { String result = HttpToolbox.get(url); AlphaFineHelper.checkCancel(); From b8f6690a63aa4e7796912683637de9b5ba6dbaa8 Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Wed, 21 Sep 2022 15:22:34 +0800 Subject: [PATCH 34/93] =?UTF-8?q?REPORT-80748=E3=80=90=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=E3=80=91=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E4=B8=AD=E5=BF=83=E4=B8=8D=E5=B1=95=E7=A4=BA=E9=BB=98?= =?UTF-8?q?=E8=AE=A4&=E6=A3=80=E7=B4=A2=E4=B8=80=E7=9B=B4=E6=98=AF?= =?UTF-8?q?=E7=A9=BA=E7=9A=84=EF=BC=9BREPORT-80752=E3=80=90=E8=BF=90?= =?UTF-8?q?=E8=90=A5=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=E3=80=91?= =?UTF-8?q?=E5=8A=A8=E6=80=81=E6=97=A0=E6=B3=95=E6=98=BE=E7=A4=BA=E5=87=BA?= =?UTF-8?q?=E6=9D=A5=EF=BC=8C=E8=8B=A5=E6=8F=92=E4=BB=B6=E4=B8=AD=E5=BF=83?= =?UTF-8?q?=E5=9C=A8=E9=A6=96=E4=B8=AA=E4=B9=9F=E6=97=A0=E6=B3=95=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=20format=20code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/actions/help/alphafine/AlphaFineCloudConstants.java | 1 - 1 file changed, 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java index a2b028be33..5e527d9916 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java @@ -48,7 +48,6 @@ public class AlphaFineCloudConstants { public static final String ALPHA_CID_USER_GROUP_INFO = CloudCenter.getInstance().acquireUrlByKind("af.cid.user.group.info"); - private static final String QUICK_START_URL = CloudCenter.getInstance().acquireUrlByKind("af.help.quick.start"); private static final String REPORT_LEARNING_PATH = CloudCenter.getInstance().acquireUrlByKind("af.help.report.learning.path"); From 72817d38b022acbf29519f8d8fb4d968af4ca2f4 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Thu, 22 Sep 2022 10:16:38 +0800 Subject: [PATCH 35/93] =?UTF-8?q?REPORT-75998=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=9B=BE=E8=A1=A8-=E6=95=B0=E6=8D=AE=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E3=80=81=E5=A2=9E=E5=8A=A0=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=B8=8D=E5=90=8C=E8=BE=93=E5=85=A5=E7=9A=84=E5=A4=84=E7=90=86?= =?UTF-8?q?=E3=80=81=E5=A2=9E=E5=8A=A0=E8=B6=85=E9=93=BE=E6=82=AC=E6=B5=AE?= =?UTF-8?q?=E7=AA=97=E5=9B=BE=E8=A1=A8=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/ShowSearchResultAction.java | 6 +- .../content/formula/FormulaReplaceObject.java | 30 ++- .../action/content/formula/FormulaTag.java | 128 ++++++++++ .../SearchChartBoxDataFormulaAction.java | 95 +++++++ .../SearchChartBubbleDataFormulaAction.java | 79 ++++++ .../SearchChartCollectionFormulaAction.java | 31 ++- .../SearchChartCustomDataFormulaAction.java | 79 ++++++ .../formula/chart/SearchChartDataFormula.java | 46 ++++ .../chart/SearchChartDataFormulaManager.java | 160 ++++++++++++ .../SearchChartDrillMapDataFormulaAction.java | 93 +++++++ .../SearchChartGanttDataFormulaAction.java | 108 ++++++++ .../SearchChartMapDataFormulaAction.java | 239 ++++++++++++++++++ .../SearchChartMeterDataFormulaAction.java | 68 +++++ .../SearchChartMultiPieDataFormulaAction.java | 71 ++++++ ...rchChartNormalReportDataFormulaAction.java | 65 +++++ ...SearchChartStructureDataFormulaAction.java | 69 +++++ ...SearchChartVanNormalDataFormulaAction.java | 74 ++++++ ...SearchChartWordCloudDataFormulaAction.java | 63 +++++ .../SearchChartHyperPopLinkAction.java | 68 +++++ .../javascript/SearchJSFormulaManager.java | 6 +- .../replace/info/DealWithInfoValue.java | 14 +- .../actions/replace/info/base/ITContent.java | 59 ++++- .../actions/replace/info/base/SearchTag.java | 37 +++ .../replace/ui/ITReplaceMainDialog.java | 70 ++--- .../replace/ui/ITReplaceWestPanel.java | 4 +- .../actions/replace/utils/SearchJSUtils.java | 37 ++- .../actions/replace/utils/ShowValueUtils.java | 15 +- 27 files changed, 1734 insertions(+), 80 deletions(-) create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaTag.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartBoxDataFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartBubbleDataFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCustomDataFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartDataFormula.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartDataFormulaManager.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartDrillMapDataFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartGanttDataFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartMapDataFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartMeterDataFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartMultiPieDataFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartNormalReportDataFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartStructureDataFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartVanNormalDataFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartWordCloudDataFormulaAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchChartHyperPopLinkAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java index 2f44137c78..0d250337c4 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java @@ -59,7 +59,7 @@ public enum ShowSearchResultAction implements ShowValue { ChartCollection chartCollection = (ChartCollection) cellElement.getValue(); for (int i = 0; i < chartCollection.getChartCount(); i++) { String titleName = GeneralUtils.objectToString(chartCollection.getChart(i).getTitle().getTextObject()); - if (titleName.contains(str)) { + if (isTitleNameValid(titleName, str)) { CellInfo cellInfo = ((CellInfo) info).copy(); cellInfo.setCellChartIndex(i); cellInfo.getContent().addOtherPos( @@ -92,6 +92,10 @@ public enum ShowSearchResultAction implements ShowValue { cellInfo.getContent().setOperatorArray(ShowValueUtils.getStringStartAndEndIndex(titleName, str)); cellInfo.getContent().setSelected(true); } + + private boolean isTitleNameValid(String titleName, String str){ + return titleName.contains(str) && StringUtils.isNotEmpty(titleName); + } }, /** * 搜索JS事件 diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java index 3aaea18b33..720dbab1e8 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java @@ -502,7 +502,35 @@ public enum FormulaReplaceObject implements DealWithInfoValue { } return false; } - }; + }, + /** + * 存储字符串类型需要特殊处理 + */ + STRING("String"){ + @Override + public Map getValue(Object... o) { + HashMap map = new HashMap<>(); + if (StringUtils.isNotEmpty(GeneralUtils.objectToString(o[0]))){ + map.put("content", GeneralUtils.objectToString(o[0])); + } + return map; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { + FormulaTag formulaTag = FormulaTag.match(info.getContent().getTag()); + if (formulaTag != null){ + info.updateOldStr(GeneralUtils.objectToString(info.getContent().getReplaceObject()), findStr); + formulaTag.setValue(info, findStr, replaceStr, operatorArray); + } + } + + @Override + public boolean check(Info info) { + return true; + } + } + ; String name; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaTag.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaTag.java new file mode 100644 index 0000000000..c5c12d3bfc --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaTag.java @@ -0,0 +1,128 @@ +package com.fr.design.actions.replace.action.content.formula; + +import com.fr.chart.chartdata.MeterReportDefinition; +import com.fr.design.actions.replace.info.DealWithInfoValue; +import com.fr.design.actions.replace.info.Info; +import com.fr.design.actions.replace.info.base.SearchTag; +import com.fr.design.actions.replace.utils.ShowValueUtils; +import com.fr.general.GeneralUtils; +import com.fr.plugin.chart.map.data.VanMapReportDefinition; +import com.fr.stable.collections.combination.Pair; +import org.jetbrains.annotations.Nullable; + +import java.util.List; + + +/** + * 针对特殊类型进行处理,负责公式校验(公式设置值时如果是new一个新的公式都要放进来这里根据持有对象来校验) + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-21 + */ +public enum FormulaTag implements DealWithInfoValue { + /** + * 经度 + */ + CHART_DATA_LONGITUDE(SearchTag.CHART_DATA_LONGITUDE) { + @Override + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { + if (info.getContent().getHoldObject() instanceof VanMapReportDefinition) { + VanMapReportDefinition definition = (VanMapReportDefinition) info.getContent().getHoldObject(); + definition.setLongitude(ShowValueUtils.replaceAll(GeneralUtils.objectToString(definition.getLongitude()), findStr, replaceStr)); + } + } + }, + /** + * 纬度 + */ + CHART_DATA_LATITUDE(SearchTag.CHART_DATA_LATITUDE) { + @Override + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { + if (info.getContent().getHoldObject() instanceof VanMapReportDefinition) { + VanMapReportDefinition definition = (VanMapReportDefinition) info.getContent().getHoldObject(); + definition.setLatitude(ShowValueUtils.replaceAll(GeneralUtils.objectToString(definition.getLatitude()), findStr, replaceStr)); + } + } + }, + /** + * 区域名 + */ + CHART_AREA_NAME(SearchTag.CHART_AREA_NAME) { + @Override + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { + if (info.getContent().getHoldObject() instanceof VanMapReportDefinition) { + VanMapReportDefinition definition = (VanMapReportDefinition) info.getContent().getHoldObject(); + definition.setCategoryName(ShowValueUtils.replaceAll(GeneralUtils.objectToString(definition.getCategoryName()), findStr, replaceStr)); + } + } + }, + /** + * 终点经度 + */ + CHART_DATA_END_LONGITUDE(SearchTag.CHART_DATA_END_LONGITUDE) { + @Override + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { + if (info.getContent().getHoldObject() instanceof VanMapReportDefinition) { + VanMapReportDefinition definition = (VanMapReportDefinition) info.getContent().getHoldObject(); + definition.setEndLongitude(ShowValueUtils.replaceAll(GeneralUtils.objectToString(definition.getEndLongitude()), findStr, replaceStr)); + } + } + }, + /** + * 终点纬度 + */ + CHART_DATA_END_LATITUDE(SearchTag.CHART_DATA_END_LATITUDE) { + @Override + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { + if (info.getContent().getHoldObject() instanceof VanMapReportDefinition) { + VanMapReportDefinition definition = (VanMapReportDefinition) info.getContent().getHoldObject(); + definition.setEndLatitude(ShowValueUtils.replaceAll(GeneralUtils.objectToString(definition.getEndLatitude()), findStr, replaceStr)); + } + } + }, + /** + * 终点区域名 + */ + CHART_AREA_END_NAME(SearchTag.CHART_AREA_END_NAME) { + @Override + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { + if (info.getContent().getHoldObject() instanceof VanMapReportDefinition) { + VanMapReportDefinition definition = (VanMapReportDefinition) info.getContent().getHoldObject(); + definition.setEndAreaName(ShowValueUtils.replaceAll(GeneralUtils.objectToString(definition.getEndAreaName()), findStr, replaceStr)); + } + } + }; + + int index; + + FormulaTag(int index) { + this.index = index; + } + + /** + * 匹配 + * + * @param index + * @return + */ + @Nullable + public static FormulaTag match(int index) { + FormulaTag[] values = FormulaTag.values(); + for (FormulaTag value : values) { + if (value.index == index) { + return value; + } + } + return null; + } + + + @Override + abstract public void setValue(Info info, String findStr, String replaceStr, List> operatorArray); + + @Override + public String getInfoShowStr(Info info) { + return info.getContent().getOldShowStr(); + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartBoxDataFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartBoxDataFormulaAction.java new file mode 100644 index 0000000000..fee727ae36 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartBoxDataFormulaAction.java @@ -0,0 +1,95 @@ +package com.fr.design.actions.replace.action.content.formula.chart; + +import com.fr.base.chart.chartdata.TopDefinitionProvider; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; +import com.fr.plugin.chart.box.data.VanBoxReportDefinition; +import com.fr.plugin.chart.box.data.VanBoxReportDetailedDefinition; +import com.fr.plugin.chart.box.data.VanBoxReportResultDefinition; + +import java.util.List; + +/** + * 箱型图 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-21 + */ +public class SearchChartBoxDataFormulaAction implements SearchChartDataFormula { + + private SearchChartBoxDataFormulaAction() { + } + + @Override + public void searchChartDataFormula(List formulaInfos, ITContent content, TopDefinitionProvider provider) { + if (provider instanceof VanBoxReportDefinition) { + VanBoxReportDefinition definition = (VanBoxReportDefinition) provider; + //明细数据 + ITContent detailContent = ITContent.copy(content); + detailContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Detailed_Data")); + dealDetailDefinition(formulaInfos, detailContent, definition.getDetailedDefinition()); + //结果数据 + ITContent resultContent = ITContent.copy(content); + resultContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Result_Data")); + dealResultDefinition(formulaInfos, resultContent, definition.getResultDefinition()); + } + } + + private void dealResultDefinition(List formulaInfos, ITContent content, VanBoxReportResultDefinition resultDefinition) { + //分类 + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Category"), resultDefinition.getCategoryName()); + //系列名 + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Series_Name"), resultDefinition.getSeriesName()); + //最大值 + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Data_Max"), resultDefinition.getMax()); + //上四分位数 + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Data_Q3"), resultDefinition.getQ3()); + //中位数 + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Data_Median"), resultDefinition.getMedian()); + //下四分位数 + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Data_Q1"), resultDefinition.getQ1()); + // + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Min_Value"), resultDefinition.getMin()); + + } + + private void dealDetailDefinition(List formulaInfos, ITContent content, VanBoxReportDetailedDefinition detailedDefinition) { + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Category_Name"), detailedDefinition.getCategoryName()); + SearchChartMapDataFormulaAction.dealSeriesDefinition(formulaInfos, content, detailedDefinition.getSeriesList()); + } + + /** + * 对外开放获取对象的方法 + * + * @return + */ + public static SearchChartBoxDataFormulaAction getInstance() { + return SearchChartBoxDataFormulaActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchChartBoxDataFormulaActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchChartBoxDataFormulaAction instance; + + SearchChartBoxDataFormulaActionEnum() { + instance = new SearchChartBoxDataFormulaAction(); + } + + /** + * 获取单例的方法 + * + * @return + */ + public SearchChartBoxDataFormulaAction getInstance() { + return instance; + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartBubbleDataFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartBubbleDataFormulaAction.java new file mode 100644 index 0000000000..d012ad58b3 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartBubbleDataFormulaAction.java @@ -0,0 +1,79 @@ +package com.fr.design.actions.replace.action.content.formula.chart; + + +import com.fr.base.chart.chartdata.TopDefinitionProvider; +import com.fr.chart.chartdata.BubbleReportDefinition; +import com.fr.chart.chartdata.BubbleSeriesValue; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; + +import java.util.List; + +/** + * 散点图、气泡图数据 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-21 + */ +public class SearchChartBubbleDataFormulaAction implements SearchChartDataFormula { + + private SearchChartBubbleDataFormulaAction() { + } + + + @Override + public void searchChartDataFormula(List formulaInfos, ITContent content, TopDefinitionProvider provider) { + if (provider instanceof BubbleReportDefinition) { + BubbleReportDefinition reportDefinition = (BubbleReportDefinition) provider; + for (int i = 0; i < reportDefinition.size(); i++) { + if (reportDefinition.get(i) instanceof BubbleSeriesValue) { + BubbleSeriesValue seriesValue = (BubbleSeriesValue) reportDefinition.get(i); + dealBubbleSeriesValue(formulaInfos, content, seriesValue); + } + } + } + } + + private void dealBubbleSeriesValue(List formulaInfos, ITContent content, BubbleSeriesValue seriesValue) { + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Series_Name"), seriesValue.getBubbleSereisName()); + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Size"), seriesValue.getBubbleSeriesSize()); + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_X_Axis"), seriesValue.getBubbleSeriesX()); + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Y_Axis"), seriesValue.getBubbleSeriesY()); + } + + + /** + * 对外开放获取对象的方法 + * + * @return + */ + public static SearchChartBubbleDataFormulaAction getInstance() { + return SearchChartBubbleDataFormulaActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchChartBubbleDataFormulaActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchChartBubbleDataFormulaAction instance; + + SearchChartBubbleDataFormulaActionEnum() { + instance = new SearchChartBubbleDataFormulaAction(); + } + + /** + * 获取单例的方法 + * + * @return + */ + public SearchChartBubbleDataFormulaAction getInstance() { + return instance; + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java index 15da2cd842..fd17f57eeb 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java @@ -1,19 +1,25 @@ package com.fr.design.actions.replace.action.content.formula.chart; import com.fr.base.Formula; +import com.fr.base.chart.chartdata.TopDefinitionProvider; import com.fr.chart.chartattr.Axis; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.ChartCollection; import com.fr.chart.chartattr.Title; -import com.fr.chart.chartdata.NormalChartData; + +import com.fr.chart.chartdata.NormalReportDataDefinition; +import com.fr.chart.chartdata.SeriesDefinition; + import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; + import com.fr.plugin.chart.attr.axis.VanChartAlertValue; import com.fr.plugin.chart.attr.axis.VanChartAxis; import com.fr.plugin.chart.attr.axis.VanChartValueAxis; import java.util.List; +import java.util.Map; /** * 图表类型获取公式汇总 @@ -24,7 +30,6 @@ import java.util.List; */ public class SearchChartCollectionFormulaAction { - private SearchChartCollectionFormulaAction() { } @@ -39,17 +44,23 @@ public class SearchChartCollectionFormulaAction { for (int i = 0; i < chartCollection.getChartCount(); i++) { ITContent chartContent = ITContent.copy(content); searchChartPatternFormula(formulaInfos, chartContent, chartCollection.getChart(i)); + //数据-单元格数据-分类名&系列名&值 - searchChartDataFormula(formulaInfos, content, chartCollection.getChart(i)); + SearchChartDataFormulaManager searchChartDataFormulaManager = SearchChartDataFormulaManager.getInstance(); + Map type = searchChartDataFormulaManager.getChartDataType(); + if (isDefinitionValid(chartCollection.getChart(i).getFilterDefinition())) { + String name = chartCollection.getChart(i).getFilterDefinition().getClass().getSimpleName(); + SearchChartDataFormula searchChartDataFormula = type.get(name); + TopDefinitionProvider provider = chartCollection.getChart(i).getFilterDefinition(); + ITContent dataContent = ITContent.copy(content); + dataContent.addOtherPos(chartCollection.getChart(i).getChartName(), Toolkit.i18nText("Fine-Design_Basic_Data")); + searchChartDataFormula.searchChartDataFormula(formulaInfos, dataContent, provider); + } } } - - private void searchChartDataFormula(List formulaInfos, ITContent content, Chart chart) { - if (chart.defaultChartData() instanceof NormalChartData) { - NormalChartData chartData = (NormalChartData) chart.defaultChartData(); - //todo - } + private boolean isDefinitionValid(TopDefinitionProvider provider) { + return provider != null && SearchChartDataFormulaManager.getInstance().getChartDataType().containsKey(provider.getClass().getSimpleName()); } @@ -120,7 +131,7 @@ public class SearchChartCollectionFormulaAction { if (xAxis != null) { //轴标题 ITContent xAxisContent = ITContent.copy(chartContent); - if (!chartContent.isFrm()){ + if (!chartContent.isFrm()) { xAxisContent.addOtherPos(chart.getChartName()); } xAxisContent.addOtherPos( diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCustomDataFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCustomDataFormulaAction.java new file mode 100644 index 0000000000..5c63ac52e0 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCustomDataFormulaAction.java @@ -0,0 +1,79 @@ +package com.fr.design.actions.replace.action.content.formula.chart; + +import com.fr.base.chart.chartdata.TopDefinitionProvider; + +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; + +import com.fr.plugin.chart.custom.CustomDefinition; +import com.fr.plugin.chart.custom.CustomPlotFactory; +import com.fr.plugin.chart.custom.type.CustomPlotType; + + +import java.util.List; +import java.util.Map; + +/** + * 组合图 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-21 + */ +public class SearchChartCustomDataFormulaAction implements SearchChartDataFormula { + + private SearchChartCustomDataFormulaAction() { + } + + @Override + public void searchChartDataFormula(List formulaInfos, ITContent content, TopDefinitionProvider provider) { + if (provider instanceof CustomDefinition) { + CustomDefinition definition = (CustomDefinition) provider; + Map map = SearchChartDataFormulaManager.getInstance().getChartDataType(); + for (CustomPlotType customPlotType : definition.getDefinitionProviderMap().keySet()) { + TopDefinitionProvider definitionProvider = definition.getDefinitionProviderMap().get(customPlotType); + if (map.containsKey(definitionProvider.getClass().getSimpleName())) { + ITContent customContent = ITContent.copy(content); + customContent.addOtherPos(CustomPlotFactory.getTitle(customPlotType)); + map.get(definitionProvider.getClass().getSimpleName()).searchChartDataFormula(formulaInfos, customContent, definitionProvider); + } + } + + + } + } + + + /** + * 对外开放获取对象的方法 + * + * @return + */ + public static SearchChartCustomDataFormulaAction getInstance() { + return SearchChartCustomDataFormulaActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchChartCustomDataFormulaActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchChartCustomDataFormulaAction instance; + + SearchChartCustomDataFormulaActionEnum() { + instance = new SearchChartCustomDataFormulaAction(); + } + + /** + * 获取单例的方法 + * + * @return + */ + public SearchChartCustomDataFormulaAction getInstance() { + return instance; + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartDataFormula.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartDataFormula.java new file mode 100644 index 0000000000..6378d9dfb1 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartDataFormula.java @@ -0,0 +1,46 @@ +package com.fr.design.actions.replace.action.content.formula.chart; + +import com.fr.base.Formula; +import com.fr.base.chart.chartdata.TopDefinitionProvider; +import com.fr.design.actions.replace.action.content.formula.SearchFormula; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; + +import java.util.List; + +/** + * 搜索图表-数据中的公式 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-21 + */ +public interface SearchChartDataFormula extends SearchFormula { + + + /** + * 搜索图表-数据中的公式 + * + * @param formulaInfos + * @param content + * @param provider + */ + void searchChartDataFormula(List formulaInfos, ITContent content, TopDefinitionProvider provider); + + /** + * 快速处理Formula + * + * @param formulaInfos + * @param reportContent + * @param otherPos + * @param o + */ + default void dealFormulaObject(List formulaInfos, ITContent reportContent, String otherPos, Object o) { + if (o instanceof Formula) { + ITContent content = ITContent.copy(reportContent); + content.addOtherPos(otherPos); + content.setReplaceObject(o); + formulaInfos.add(new FormulaInfo(content)); + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartDataFormulaManager.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartDataFormulaManager.java new file mode 100644 index 0000000000..f8916a757f --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartDataFormulaManager.java @@ -0,0 +1,160 @@ +package com.fr.design.actions.replace.action.content.formula.chart; + +import com.fr.design.actions.replace.action.SearchAction; +import com.fr.design.actions.replace.action.SearchManager; + +import java.util.HashMap; +import java.util.Map; + +/** + * 管理图表-数据中的公式 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-21 + */ +public class SearchChartDataFormulaManager implements SearchManager { + private static Map chartDataType = new HashMap<>(); + /** + * 其余普通类型 + */ + public static final String VAN_CHART_NORMAL_REPORT_DATA_DEFINITION = "VanChartNormalReportDataDefinition"; + /** + * 散点图、气泡图数据 + */ + public static final String BUBBLE_REPORT_DEFINITION = "BubbleReportDefinition"; + /** + * 组合图 + */ + public static final String CUSTOM_DEFINITION = "CustomDefinition"; + /** + * 多层饼图、矩形树图 + */ + public static final String MULTI_PIE_REPORT_DATA_DEFINITION = "MultiPieReportDataDefinition"; + /** + * 地图、热力地图 + */ + public static final String VAN_MAP_DEFINITION = "VanMapDefinition"; + /** + * 钻取地图 + */ + public static final String DRILL_MAP_DEFINITION = "DrillMapDefinition"; + /** + * 词云 + */ + public static final String WORD_CLOUD_REPORT_DEFINITION = "WordCloudReportDefinition"; + /** + * 漏斗图 + */ + public static final String METER_REPORT_DEFINITION = "MeterReportDefinition"; + /** + * 甘特图 + */ + public static final String VAN_GANTT_DEFINITION = "VanGanttDefinition"; + /** + * 框架图 + */ + public static final String STRUCTURE_REPORT_DEFINITION = "StructureReportDefinition"; + /** + * 箱型图 + */ + public static final String VAN_BOX_REPORT_DEFINITION = "VanBoxReportDefinition"; + + /** + * 组合图中的大部分类型 + */ + public static final String NORMAL_REPORT_DATA_DEFINITION = "NormalReportDataDefinition"; + + private SearchChartDataFormulaManager() { + register(VAN_CHART_NORMAL_REPORT_DATA_DEFINITION, SearchChartVanNormalDataFormulaAction.getInstance()); + register(BUBBLE_REPORT_DEFINITION, SearchChartBubbleDataFormulaAction.getInstance()); + register(MULTI_PIE_REPORT_DATA_DEFINITION, SearchChartMultiPieDataFormulaAction.getInstance()); + register(VAN_MAP_DEFINITION, SearchChartMapDataFormulaAction.getInstance()); + register(DRILL_MAP_DEFINITION, SearchChartDrillMapDataFormulaAction.getInstance()); + register(WORD_CLOUD_REPORT_DEFINITION, SearchChartWordCloudDataFormulaAction.getInstance()); + register(METER_REPORT_DEFINITION, SearchChartMeterDataFormulaAction.getInstance()); + register(VAN_GANTT_DEFINITION, SearchChartGanttDataFormulaAction.getInstance()); + register(STRUCTURE_REPORT_DEFINITION, SearchChartStructureDataFormulaAction.getInstance()); + register(VAN_BOX_REPORT_DEFINITION, SearchChartBoxDataFormulaAction.getInstance()); + register(CUSTOM_DEFINITION, SearchChartCustomDataFormulaAction.getInstance()); + register(NORMAL_REPORT_DATA_DEFINITION, SearchChartNormalReportDataFormulaAction.getInstance()); + } + + + /** + * 获取类别 + * + * @return + */ + public Map getChartDataType() { + return chartDataType; + } + + + @Override + public void registerAction(String tag, SearchAction searchAction) { + if (searchAction instanceof SearchChartDataFormula) { + register(tag, (SearchChartDataFormula) searchAction); + } + } + + @Override + public void removeAction(String tag) { + remove(tag); + } + + + /** + * 注册 + * + * @param tag 用于匹配的类型tag + * @param searchChartDataFormula 对应的实现类 + */ + private void register(String tag, SearchChartDataFormula searchChartDataFormula) { + chartDataType.put(tag, searchChartDataFormula); + } + + /** + * 注销 + * + * @param tag 用于匹配的tag + */ + private void remove(String tag) { + chartDataType.remove(tag); + } + + + /** + * 对外开放获取对象的方法 + * + * @return + */ + public static SearchChartDataFormulaManager getInstance() { + return SearchChartCollectionFormulaManagerEnum.SINGLETON.getInstance(); + } + + + /** + * 枚举实现单例 + */ + private enum SearchChartCollectionFormulaManagerEnum { + /** + * 单例 + */ + SINGLETON; + private SearchChartDataFormulaManager instance; + + SearchChartCollectionFormulaManagerEnum() { + instance = new SearchChartDataFormulaManager(); + } + + /** + * 获取单例的方法 + * + * @return + */ + public SearchChartDataFormulaManager getInstance() { + return instance; + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartDrillMapDataFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartDrillMapDataFormulaAction.java new file mode 100644 index 0000000000..e4e6000e85 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartDrillMapDataFormulaAction.java @@ -0,0 +1,93 @@ +package com.fr.design.actions.replace.action.content.formula.chart; + +import com.fr.base.chart.chartdata.TopDefinitionProvider; +import com.fr.chartx.data.AbstractDataDefinition; +import com.fr.chartx.data.DrillMapChartDataDefinition; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; +import com.fr.plugin.chart.drillmap.data.DrillMapDefinition; +import com.fr.plugin.chart.map.data.VanMapReportDefinition; + +import java.util.List; + +/** + * 钻取地图 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-21 + */ +public class SearchChartDrillMapDataFormulaAction implements SearchChartDataFormula { + private SearchChartDrillMapDataFormulaAction() { + } + + @Override + public void searchChartDataFormula(List formulaInfos, ITContent content, TopDefinitionProvider provider) { + if (provider instanceof DrillMapDefinition) { + DrillMapDefinition definition = (DrillMapDefinition) provider; + + if (definition.isFromBottomData()) { + dealDefinition(formulaInfos, content, definition.getBottomDataDefinition()); + } else { + for (int i = 0; i < definition.getEachLayerDataDefinitionList().size(); i++) { + ITContent listContent = ITContent.copy(content); + int index = i + 1; + listContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Chart_Index_Article") + index + Toolkit.i18nText("Fine-Design_Chart_Index_Layer") + ); + dealDefinition(formulaInfos, listContent, definition.getEachLayerDataDefinitionList().get(i)); + } + } + } + } + + /** + * 这边存在点地图和区域地图两种,点地图特殊的地方需要处理一下 + * + * @param formulaInfos + * @param content + * @param provider + */ + private void dealDefinition(List formulaInfos, ITContent content, TopDefinitionProvider provider) { + if (provider instanceof VanMapReportDefinition) { + SearchChartMapDataFormulaAction.getInstance().dealAreaName(formulaInfos, content, ((VanMapReportDefinition) provider).getCategoryName(), (VanMapReportDefinition) provider); + SearchChartMapDataFormulaAction.dealSeriesDefinition(formulaInfos, content, ((VanMapReportDefinition) provider).getSeriesList()); + SearchChartMapDataFormulaAction.getInstance().dealPointDefinition4Special(formulaInfos, content, provider); + } + + } + + /** + * 对外开放获取对象的方法 + * + * @return + */ + public static SearchChartDrillMapDataFormulaAction getInstance() { + return SearchChartDrillMapDataFormulaActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchChartDrillMapDataFormulaActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchChartDrillMapDataFormulaAction instance; + + SearchChartDrillMapDataFormulaActionEnum() { + instance = new SearchChartDrillMapDataFormulaAction(); + } + + /** + * 获取单例的方法 + * + * @return + */ + public SearchChartDrillMapDataFormulaAction getInstance() { + return instance; + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartGanttDataFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartGanttDataFormulaAction.java new file mode 100644 index 0000000000..75c6daf235 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartGanttDataFormulaAction.java @@ -0,0 +1,108 @@ +package com.fr.design.actions.replace.action.content.formula.chart; + +import com.fr.base.Formula; +import com.fr.base.chart.chartdata.TopDefinitionProvider; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; +import com.fr.plugin.chart.gantt.data.VanGanttDefinition; +import com.fr.plugin.chart.gantt.data.VanGanttLinkReportDefinition; +import com.fr.plugin.chart.gantt.data.VanGanttReportDefinition; + +import java.util.List; + +/** + * 甘特图 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-21 + */ +public class SearchChartGanttDataFormulaAction implements SearchChartDataFormula { + private SearchChartGanttDataFormulaAction() { + } + + @Override + public void searchChartDataFormula(List formulaInfos, ITContent content, TopDefinitionProvider provider) { + if (provider instanceof VanGanttDefinition) { + VanGanttDefinition definition = (VanGanttDefinition) provider; + if (definition.getDataDefinition() instanceof VanGanttReportDefinition) { + VanGanttReportDefinition reportDefinition = (VanGanttReportDefinition) definition.getDataDefinition(); + ITContent reportContent = ITContent.copy(content); + reportContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Gantt_Chart")); + dealReportDefinition(formulaInfos, reportContent, reportDefinition); + } + if (definition.getLinkDefinition() instanceof VanGanttLinkReportDefinition) { + VanGanttLinkReportDefinition linkReportDefinition = (VanGanttLinkReportDefinition) definition.getLinkDefinition(); + ITContent linkContent = ITContent.copy(content); + linkContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Task_Link")); + dealLinkDefinition(formulaInfos, linkContent, linkReportDefinition); + + } + } + } + + private void dealLinkDefinition(List formulaInfos, ITContent linkContent, VanGanttLinkReportDefinition linkReportDefinition) { + //起始任务id + dealFormulaObject(formulaInfos, linkContent, Toolkit.i18nText("Fine-Design_Chart_Start_Task_ID"), linkReportDefinition.getStartTaskID()); + //结束任务id + dealFormulaObject(formulaInfos, linkContent, Toolkit.i18nText("Fine-Design_Chart_End_Task_ID"), linkReportDefinition.getEndTaskID()); + //关联类型 + dealFormulaObject(formulaInfos, linkContent, Toolkit.i18nText("Fine-Design_Chart_Link_Type"), linkReportDefinition.getLinkType()); + } + + private void dealReportDefinition(List formulaInfos, ITContent reportContent, VanGanttReportDefinition reportDefinition) { + //系列名 + dealFormulaObject(formulaInfos, reportContent, Toolkit.i18nText("Fine-Design_Chart_Series_Name"), reportDefinition.getSeriesName()); + //开始时间 + dealFormulaObject(formulaInfos, reportContent, Toolkit.i18nText("Fine-Design_Chart_Start_Time"), reportDefinition.getStartTime()); + //结束时间 + dealFormulaObject(formulaInfos, reportContent, Toolkit.i18nText("Fine-Design_Chart_End_Time"), reportDefinition.getEndTime()); + //里程碑时间 + dealFormulaObject(formulaInfos, reportContent, Toolkit.i18nText("Fine-Design_Chart_Marker_Time"), reportDefinition.getMarkTime()); + //进度 + dealFormulaObject(formulaInfos, reportContent, Toolkit.i18nText("Fine-Design_Chart_Process"), reportDefinition.getProgress()); + //任务ID + dealFormulaObject(formulaInfos, reportContent, Toolkit.i18nText("Fine-Design_Chart_Task_ID"), reportDefinition.getLinkID()); + //项目名称 + dealFormulaObject(formulaInfos, reportContent, Toolkit.i18nText("Fine-Design_Chart_Project_Name"), reportDefinition.getFirstProcess()); + //项目 + for (Object o : reportDefinition.getProcessList()) { + dealFormulaObject(formulaInfos, reportContent, Toolkit.i18nText("Fine-Design_Chart_Project"), o); + } + } + + /** + * 对外开放获取对象的方法 + * + * @return + */ + public static SearchChartGanttDataFormulaAction getInstance() { + return SearchChartGanttDataFormulaActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchChartGanttDataFormulaActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchChartGanttDataFormulaAction instance; + + SearchChartGanttDataFormulaActionEnum() { + instance = new SearchChartGanttDataFormulaAction(); + } + + /** + * 获取单例的方法 + * + * @return + */ + public SearchChartGanttDataFormulaAction getInstance() { + return instance; + } + } +} + diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartMapDataFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartMapDataFormulaAction.java new file mode 100644 index 0000000000..c66309c10a --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartMapDataFormulaAction.java @@ -0,0 +1,239 @@ +package com.fr.design.actions.replace.action.content.formula.chart; + +import com.fr.base.Formula; +import com.fr.base.chart.chartdata.TopDefinitionProvider; +import com.fr.chart.chartdata.SeriesDefinition; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.actions.replace.info.base.SearchTag; +import com.fr.design.i18n.Toolkit; +import com.fr.plugin.chart.map.data.VanMapDefinition; +import com.fr.plugin.chart.map.data.VanMapReportDefinition; + +import java.util.List; + +/** + * 地图 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-21 + */ +public class SearchChartMapDataFormulaAction implements SearchChartDataFormula { + private SearchChartMapDataFormulaAction() { + } + + @Override + public void searchChartDataFormula(List formulaInfos, ITContent content, TopDefinitionProvider provider) { + if (provider instanceof VanMapDefinition) { + VanMapDefinition mapDefinition = (VanMapDefinition) provider; + //区域地图 + ITContent areaContent = ITContent.copy(content); + areaContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Region_Map")); + dealAreaDefinition(formulaInfos, areaContent, mapDefinition.getAreaDefinition()); + //流向地图 + ITContent lineContent = ITContent.copy(content); + lineContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_LineMap")); + dealLineDefinition(formulaInfos, content, mapDefinition.getLineDefinition()); + //点地图 + ITContent pointContent = ITContent.copy(content); + pointContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_PointMap")); + dealPointDefinition(formulaInfos, content, mapDefinition.getPointDefinition()); + } + } + + /** + * 处理点地图 + * + * @param formulaInfos + * @param content + * @param pointDefinition + */ + public void dealPointDefinition(List formulaInfos, ITContent content, TopDefinitionProvider pointDefinition) { + if (pointDefinition instanceof VanMapReportDefinition) { + VanMapReportDefinition definition = (VanMapReportDefinition) pointDefinition; + ITContent pointContent = ITContent.copy(content); + //系列名&值 + dealSeriesDefinition(formulaInfos, pointContent, definition.getSeriesList()); + //经纬度 + dealLongitudeAndLatitude(formulaInfos, pointContent, definition); + //区域名 + dealAreaName(formulaInfos, pointContent, definition.getCategoryName(), definition); + } + } + + private boolean isFormulaString(Object o) { + String formulaFlag = "="; + return o instanceof String && ((String) o).startsWith(formulaFlag); + } + + private void dealLineDefinition(List formulaInfos, ITContent content, TopDefinitionProvider lineDefinition) { + if (lineDefinition instanceof VanMapReportDefinition) { + VanMapReportDefinition definition = (VanMapReportDefinition) lineDefinition; + ITContent lineContent = ITContent.copy(content); + //系列名&值 + dealSeriesDefinition(formulaInfos, lineContent, definition.getSeriesList()); + //经纬度 + dealLongitudeAndLatitude(formulaInfos, lineContent, definition); + //终点经纬度 + if (isFormulaString(definition.getEndLongitude())) { + ITContent longContent = ITContent.copy(lineContent); + longContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_End_Longitude")); + longContent.setReplaceObject(definition.getEndLongitude()); + longContent.setTag(SearchTag.CHART_DATA_END_LONGITUDE); + longContent.setHoldObject(definition); + formulaInfos.add(new FormulaInfo(longContent)); + } + if (isFormulaString(definition.getEndLatitude())) { + ITContent latitudeContent = ITContent.copy(lineContent); + latitudeContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_End_Latitude")); + latitudeContent.setReplaceObject(definition.getEndLatitude()); + latitudeContent.setTag(SearchTag.CHART_DATA_END_LATITUDE); + latitudeContent.setHoldObject(definition); + formulaInfos.add(new FormulaInfo(latitudeContent)); + } + if (isFormulaString(definition.getEndAreaName())) { + ITContent endAreaNameContent = ITContent.copy(lineContent); + endAreaNameContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_End_Area_Name")); + endAreaNameContent.setReplaceObject(definition.getEndAreaName()); + endAreaNameContent.setTag(SearchTag.CHART_AREA_END_NAME); + endAreaNameContent.setHoldObject(definition); + formulaInfos.add(new FormulaInfo(endAreaNameContent)); + } + //区域名 + dealAreaName(formulaInfos, lineContent, definition.getCategoryName(), definition); + } + } + + private void dealLongitudeAndLatitude(List formulaInfos, ITContent content, VanMapReportDefinition definition) { + if (isFormulaString(definition.getLongitude())) { + ITContent longContent = ITContent.copy(content); + longContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Longitude")); + longContent.setReplaceObject(definition.getLongitude()); + longContent.setTag(SearchTag.CHART_DATA_LONGITUDE); + longContent.setHoldObject(definition); + formulaInfos.add(new FormulaInfo(longContent)); + } + if (isFormulaString(definition.getLatitude())) { + ITContent latitudeContent = ITContent.copy(content); + latitudeContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Latitude")); + latitudeContent.setReplaceObject(definition.getLatitude()); + latitudeContent.setHoldObject(definition); + latitudeContent.setTag(SearchTag.CHART_DATA_LATITUDE); + formulaInfos.add(new FormulaInfo(latitudeContent)); + } + } + + /** + * 处理区域地图 + * + * @param formulaInfos + * @param content + * @param areaDefinition + */ + public void dealAreaDefinition(List formulaInfos, ITContent content, TopDefinitionProvider areaDefinition) { + if (areaDefinition instanceof VanMapReportDefinition) { + VanMapReportDefinition reportDefinition = (VanMapReportDefinition) areaDefinition; + ITContent mapContent = ITContent.copy(content); + //系列名&值 + dealSeriesDefinition(formulaInfos, mapContent, reportDefinition.getSeriesList()); + //区域名 + dealAreaName(formulaInfos, mapContent, reportDefinition.getCategoryName(), reportDefinition); + } + } + + + /** + * 处理点地图特有的 + * + * @param formulaInfos + * @param content + * @param pointDefinition + */ + public void dealPointDefinition4Special(List formulaInfos, ITContent content, TopDefinitionProvider pointDefinition) { + if (pointDefinition instanceof VanMapReportDefinition) { + VanMapReportDefinition definition = (VanMapReportDefinition) pointDefinition; + ITContent pointContent = ITContent.copy(content); + //经纬度 + dealLongitudeAndLatitude(formulaInfos, pointContent, definition); + } + } + + public void dealAreaName(List formulaInfos, ITContent content, Object object, VanMapReportDefinition definition) { + if (object instanceof Formula) { + ITContent cateContent = ITContent.copy(content); + cateContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Chart_Area_Name") + ); + cateContent.setReplaceObject(object); + formulaInfos.add(new FormulaInfo(cateContent)); + } else if (isFormulaString(object)) { + ITContent strContent = ITContent.copy(content); + strContent.setHoldObject(definition); + strContent.setTag(SearchTag.CHART_AREA_NAME); + strContent.setReplaceObject(object); + strContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Area_Name")); + formulaInfos.add(new FormulaInfo(strContent)); + } + } + + + /** + * 处理系列名&值 + */ + public static void dealSeriesDefinition(List formulaInfos, ITContent content, List seriesDefinitions) { + for (SeriesDefinition seriesDefinition : seriesDefinitions) { + if (seriesDefinition.getValue() instanceof Formula) { + ITContent valueContent = ITContent.copy(content); + valueContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Chart_Series_Value") + ); + valueContent.setReplaceObject(seriesDefinition.getValue()); + formulaInfos.add(new FormulaInfo(valueContent)); + } + if (seriesDefinition.getSeriesName() instanceof Formula) { + ITContent nameContent = ITContent.copy(content); + nameContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Chart_Series_Name") + ); + nameContent.setReplaceObject(seriesDefinition.getSeriesName()); + formulaInfos.add(new FormulaInfo(nameContent)); + } + + } + } + + /** + * 对外开放获取对象的方法 + * + * @return + */ + public static SearchChartMapDataFormulaAction getInstance() { + return SearchChartMapDataFormulaActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchChartMapDataFormulaActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchChartMapDataFormulaAction instance; + + SearchChartMapDataFormulaActionEnum() { + instance = new SearchChartMapDataFormulaAction(); + } + + /** + * 获取单例的方法 + * + * @return + */ + public SearchChartMapDataFormulaAction getInstance() { + return instance; + } + } + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartMeterDataFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartMeterDataFormulaAction.java new file mode 100644 index 0000000000..6b635ebfda --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartMeterDataFormulaAction.java @@ -0,0 +1,68 @@ +package com.fr.design.actions.replace.action.content.formula.chart; + +import com.fr.base.Formula; +import com.fr.base.chart.chartdata.TopDefinitionProvider; +import com.fr.chart.chartdata.MeterReportDefinition; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; + +import java.util.List; + +/** + * 漏斗图 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-21 + */ +public class SearchChartMeterDataFormulaAction implements SearchChartDataFormula { + + private SearchChartMeterDataFormulaAction() { + } + + + @Override + public void searchChartDataFormula(List formulaInfos, ITContent content, TopDefinitionProvider provider) { + if (provider instanceof MeterReportDefinition) { + MeterReportDefinition definition = (MeterReportDefinition) provider; + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Series_Name"), definition.getName()); + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Series_Value"), definition.getValue()); + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Target_Value"), definition.getTarget()); + } + } + + + /** + * 对外开放获取对象的方法 + * + * @return + */ + public static SearchChartMeterDataFormulaAction getInstance() { + return SearchChartMeterDataFormulaActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchChartMeterDataFormulaActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchChartMeterDataFormulaAction instance; + + SearchChartMeterDataFormulaActionEnum() { + instance = new SearchChartMeterDataFormulaAction(); + } + + /** + * 获取单例的方法 + * + * @return + */ + public SearchChartMeterDataFormulaAction getInstance() { + return instance; + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartMultiPieDataFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartMultiPieDataFormulaAction.java new file mode 100644 index 0000000000..75f1147a98 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartMultiPieDataFormulaAction.java @@ -0,0 +1,71 @@ +package com.fr.design.actions.replace.action.content.formula.chart; + +import com.fr.base.Formula; +import com.fr.base.chart.chartdata.TopDefinitionProvider; + +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; + +import com.fr.design.i18n.Toolkit; +import com.fr.plugin.chart.multilayer.data.MultiPieReportDataDefinition; + +import java.util.List; + +/** + * 层次图 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-21 + */ +public class SearchChartMultiPieDataFormulaAction implements SearchChartDataFormula { + private SearchChartMultiPieDataFormulaAction() { + } + + @Override + public void searchChartDataFormula(List formulaInfos, ITContent content, TopDefinitionProvider provider) { + if (provider instanceof MultiPieReportDataDefinition) { + //层次 + MultiPieReportDataDefinition definition = (MultiPieReportDataDefinition) provider; + for (int i = 0; i < definition.getLevelColumnNameList().size(); i++) { + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Level"), definition.getLevelColumnNameList().get(i)); + } + + //值字段 + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Basic_Base_Value"), definition.getValue()); + } + } + + /** + * 对外开放获取对象的方法 + * + * @return + */ + public static SearchChartMultiPieDataFormulaAction getInstance() { + return SearchChartMultiPieDataFormulaActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchChartMultiPieDataFormulaActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchChartMultiPieDataFormulaAction instance; + + SearchChartMultiPieDataFormulaActionEnum() { + instance = new SearchChartMultiPieDataFormulaAction(); + } + + /** + * 获取单例的方法 + * + * @return + */ + public SearchChartMultiPieDataFormulaAction getInstance() { + return instance; + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartNormalReportDataFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartNormalReportDataFormulaAction.java new file mode 100644 index 0000000000..cfd3f0e68e --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartNormalReportDataFormulaAction.java @@ -0,0 +1,65 @@ +package com.fr.design.actions.replace.action.content.formula.chart; + +import com.fr.base.chart.chartdata.TopDefinitionProvider; +import com.fr.chart.chartdata.NormalReportDataDefinition; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; + +import java.util.List; + +/** + * 组合图中的大部分类型 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-22 + */ +public class SearchChartNormalReportDataFormulaAction implements SearchChartDataFormula { + + private SearchChartNormalReportDataFormulaAction() { + } + + @Override + public void searchChartDataFormula(List formulaInfos, ITContent content, TopDefinitionProvider provider) { + if (provider instanceof NormalReportDataDefinition) { + NormalReportDataDefinition dataDefinition = (NormalReportDataDefinition) provider; + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Category_Name"), dataDefinition.getCategoryName()); + SearchChartMapDataFormulaAction.dealSeriesDefinition(formulaInfos, content, dataDefinition.getSeriesList()); + } + } + + /** + * 对外开放获取对象的方法 + * + * @return + */ + public static SearchChartNormalReportDataFormulaAction getInstance() { + return SearchChartNormalReportDataFormulaActionEnum.SINGLETON.getInstance(); + } + + + /** + * 枚举实现单例 + */ + private enum SearchChartNormalReportDataFormulaActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchChartNormalReportDataFormulaAction instance; + + SearchChartNormalReportDataFormulaActionEnum() { + instance = new SearchChartNormalReportDataFormulaAction(); + } + + /** + * 获取单例的方法 + * + * @return + */ + public SearchChartNormalReportDataFormulaAction getInstance() { + return instance; + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartStructureDataFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartStructureDataFormulaAction.java new file mode 100644 index 0000000000..266d1fe4a0 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartStructureDataFormulaAction.java @@ -0,0 +1,69 @@ +package com.fr.design.actions.replace.action.content.formula.chart; + +import com.fr.base.chart.chartdata.TopDefinitionProvider; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; +import com.fr.plugin.chart.structure.data.StructureReportDefinition; + +import java.util.List; + +/** + * 框架图 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-21 + */ +public class SearchChartStructureDataFormulaAction implements SearchChartDataFormula { + private SearchChartStructureDataFormulaAction() { + } + + + @Override + public void searchChartDataFormula(List formulaInfos, ITContent content, TopDefinitionProvider provider) { + if (provider instanceof StructureReportDefinition) { + StructureReportDefinition definition = (StructureReportDefinition) provider; + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Node_Name"), definition.getNodeName()); + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Node_Id"), definition.getNodeID()); + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Parent_Node_Id"), definition.getParentID()); + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Series_Value"), definition.getNodeValue()); + + + } + } + + /** + * 对外开放获取对象的方法 + * + * @return + */ + public static SearchChartStructureDataFormulaAction getInstance() { + return SearchChartStructureDataFormulaActionEnum.SINGLETON.getInstance(); + } + + + /** + * 枚举实现单例 + */ + private enum SearchChartStructureDataFormulaActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchChartStructureDataFormulaAction instance; + + SearchChartStructureDataFormulaActionEnum() { + instance = new SearchChartStructureDataFormulaAction(); + } + + /** + * 获取单例的方法 + * + * @return + */ + public SearchChartStructureDataFormulaAction getInstance() { + return instance; + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartVanNormalDataFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartVanNormalDataFormulaAction.java new file mode 100644 index 0000000000..65f4800d21 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartVanNormalDataFormulaAction.java @@ -0,0 +1,74 @@ +package com.fr.design.actions.replace.action.content.formula.chart; + +import com.fr.base.chart.chartdata.TopDefinitionProvider; +import com.fr.chart.chartdata.NormalReportDataDefinition; +import com.fr.chart.chartdata.SeriesDefinition; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; + +import java.util.List; + +/** + * 普通图表类型 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-21 + */ +public class SearchChartVanNormalDataFormulaAction implements SearchChartDataFormula { + private SearchChartVanNormalDataFormulaAction() { + } + + + @Override + public void searchChartDataFormula(List formulaInfos, ITContent content, TopDefinitionProvider provider) { + if (provider instanceof NormalReportDataDefinition) { + NormalReportDataDefinition normalReportDataDefinition = (NormalReportDataDefinition) provider; + //分类名 + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Category_Name"), normalReportDataDefinition.getCategoryName()); + //系列名&值 + for (Object seriesDefinition : normalReportDataDefinition.getSeriesList()) { + if (seriesDefinition instanceof SeriesDefinition) { + SeriesDefinition definition = (SeriesDefinition) seriesDefinition; + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Series_Name"), definition.getSeriesName()); + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Series_Value"), definition.getValue()); + } + } + } + } + + /** + * 对外开放获取对象的方法 + * + * @return + */ + public static SearchChartVanNormalDataFormulaAction getInstance() { + return SearchChartNormalDataFormulaActionEnum.SINGLETON.getInstance(); + } + + + /** + * 枚举实现单例 + */ + private enum SearchChartNormalDataFormulaActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchChartVanNormalDataFormulaAction instance; + + SearchChartNormalDataFormulaActionEnum() { + instance = new SearchChartVanNormalDataFormulaAction(); + } + + /** + * 获取单例的方法 + * + * @return + */ + public SearchChartVanNormalDataFormulaAction getInstance() { + return instance; + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartWordCloudDataFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartWordCloudDataFormulaAction.java new file mode 100644 index 0000000000..d22eadaeab --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartWordCloudDataFormulaAction.java @@ -0,0 +1,63 @@ +package com.fr.design.actions.replace.action.content.formula.chart; + +import com.fr.base.chart.chartdata.TopDefinitionProvider; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; +import com.fr.plugin.chart.wordcloud.data.WordCloudReportDefinition; + +import java.util.List; + +/** + * 词云 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-21 + */ +public class SearchChartWordCloudDataFormulaAction implements SearchChartDataFormula { + private SearchChartWordCloudDataFormulaAction() { + } + + @Override + public void searchChartDataFormula(List formulaInfos, ITContent content, TopDefinitionProvider provider) { + if (provider instanceof WordCloudReportDefinition) { + WordCloudReportDefinition definition = (WordCloudReportDefinition) provider; + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Word_Name"), definition.getWordName()); + dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Word_Value"), definition.getWordValue()); + } + } + + /** + * 对外开放获取对象的方法 + * + * @return + */ + public static SearchChartWordCloudDataFormulaAction getInstance() { + return SearchWordCloudDataFormulaActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchWordCloudDataFormulaActionEnum { + /** + * 单例 + */ + SINGLETON; + private SearchChartWordCloudDataFormulaAction instance; + + SearchWordCloudDataFormulaActionEnum() { + instance = new SearchChartWordCloudDataFormulaAction(); + } + + /** + * 获取单例的方法 + * + * @return + */ + public SearchChartWordCloudDataFormulaAction getInstance() { + return instance; + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchChartHyperPopLinkAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchChartHyperPopLinkAction.java new file mode 100644 index 0000000000..4edd5b4f17 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchChartHyperPopLinkAction.java @@ -0,0 +1,68 @@ +package com.fr.design.actions.replace.action.content.formula.highlight.javascript; + +import com.fr.base.chart.BaseChartCollection; +import com.fr.chart.chartattr.ChartCollection; +import com.fr.chart.web.ChartHyperPoplink; +import com.fr.design.actions.replace.action.content.formula.chart.SearchChartCollectionFormulaAction; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.js.JavaScript; + +import java.util.List; + +/** + * 图表超链-悬浮窗图表的公式 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-20 + */ +public class SearchChartHyperPopLinkAction implements SearchJSFormula { + private SearchChartHyperPopLinkAction() { + } + + + @Override + public void searchJSFormulaFromOther(List formulaInfos, ITContent content, JavaScript javaScript) { + if (javaScript instanceof ChartHyperPoplink) { + ChartHyperPoplink chartHyperPoplink = (ChartHyperPoplink) javaScript; + if (chartHyperPoplink.getChartCollection() instanceof ChartCollection) { + SearchChartCollectionFormulaAction.getInstance().searchChartCollectionFormula(formulaInfos, content, (ChartCollection) chartHyperPoplink.getChartCollection()); + } + } + } + + /** + * 获取单例 + * + * @return + */ + public static SearchChartHyperPopLinkAction getInstance() { + return SearchChartHyperPopLinkActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchChartHyperPopLinkActionEnum { + /** + * 单例实现 + */ + SINGLETON; + private SearchChartHyperPopLinkAction instance; + + SearchChartHyperPopLinkActionEnum() { + instance = new SearchChartHyperPopLinkAction(); + } + + /** + * 拿到对象 + * + * @return + */ + public SearchChartHyperPopLinkAction getInstance() { + return instance; + } + } + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormulaManager.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormulaManager.java index df797a36fa..e77e4c60ec 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormulaManager.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSFormulaManager.java @@ -20,6 +20,7 @@ public class SearchJSFormulaManager implements SearchManager { public static final String COMMIT_2_DB_JAVASCRIPT = "Commit2DBJavaScript"; public static final String EXPORT_JAVASCRIPT = "ExportJavaScript"; public static final String MOBILE_POPUP_HYPERLINK = "MobilePopupHyperlink"; + public static final String CHART_HYPER_POP_LINK = "ChartHyperPoplink"; private SearchJSFormulaManager() { //控件事件里面需要特殊处理的类型 @@ -35,11 +36,12 @@ public class SearchJSFormulaManager implements SearchManager { //JavaScriptImpl——只有参数可以放公式,不需要特殊处理 //MobilePopupHyperlink //ChartHyperPoplink - //ChartHyperRelateCellLink - //ChartHyperRelateFloatLink + //ChartHyperRelateCellLink——只有参数可以放公式,不需要特殊处理 + //ChartHyperRelateFloatLink——只有参数可以放公式,不需要特殊处理 register(COMMIT_2_DB_JAVASCRIPT, SearchCommit2DBJSFormulaAction.getInstance()); register(EXPORT_JAVASCRIPT, SearchExportJSFormulaAction.getInstance()); register(MOBILE_POPUP_HYPERLINK, SearchMobileHyperlinkFormulaAction.getInstance()); + register(CHART_HYPER_POP_LINK, SearchChartHyperPopLinkAction.getInstance()); } @Override diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/DealWithInfoValue.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/DealWithInfoValue.java index feb5cc1a78..2330fa5fdf 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/DealWithInfoValue.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/DealWithInfoValue.java @@ -1,10 +1,11 @@ package com.fr.design.actions.replace.info; +import com.fr.stable.StringUtils; import com.fr.stable.collections.combination.Pair; - +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -23,7 +24,9 @@ public interface DealWithInfoValue { * @param o 用于替换的replaceObject * @return 返回便于处理的Map(不同类型可能会存在多个需要存储的数据,eg:控件名 & 水印) */ - Map getValue(Object... o); + default Map getValue(Object... o) { + return new HashMap<>(); + } /** @@ -34,7 +37,8 @@ public interface DealWithInfoValue { * @param replaceStr 用于替换的字符串 * @param operatorArray 存储内容类替换所要操作的所有位置(Pair<起始位置,结束位置>) */ - void setValue(Info info, String findStr, String replaceStr, List> operatorArray); + default void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { + } /** @@ -43,5 +47,7 @@ public interface DealWithInfoValue { * @param info 信息 * @return 返回用于展示的字符串 */ - String getInfoShowStr(Info info); + default String getInfoShowStr(Info info) { + return StringUtils.EMPTY; + } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java index de736cb27f..afa9847f37 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java @@ -66,6 +66,16 @@ public class ITContent implements Cloneable { */ private boolean jumpAble = true; + /** + * 持有公式的对象 + */ + private Object holdObject; + + /** + * 与SearchTag对应的标签,用于后续校验处理 + */ + private int tag = -1; + public ITContent() { this.sheetID = StringUtils.EMPTY; this.sheetName = StringUtils.EMPTY; @@ -79,6 +89,7 @@ public class ITContent implements Cloneable { this.lastSearchStr = StringUtils.EMPTY; this.trlString = StringUtils.EMPTY; this.operatorArray = new ArrayList<>(); + this.holdObject = new Object(); } @@ -89,23 +100,43 @@ public class ITContent implements Cloneable { */ public static ITContent copy(ITContent content) { ITContent result = new ITContent(); - result.setSheetID(content.getSheetID()); - result.setSheetName(content.getSheetName()); - result.setTemplateName(content.getTemplateName()); - result.setBlockName(content.getBlockName()); - result.addOtherPos(content.getOtherPos()); - result.setReplaceObject(content.getReplaceObject()); - result.setShowObject(content.getShowObject()); - result.setTrlString(content.getTrlString()); - result.setShowStr(content.getShowStr()); - result.setOldShowStr(content.getOldShowStr()); - result.setLastSearchStr(content.getLastSearchStr()); - result.setOperatorArray(content.getOperatorArray()); - result.setFrmFlag(content.isFrm()); - result.setJumpAble(content.isJumpAble()); + if (content != null){ + result.setSheetID(content.getSheetID()); + result.setSheetName(content.getSheetName()); + result.setTemplateName(content.getTemplateName()); + result.setBlockName(content.getBlockName()); + result.addOtherPos(content.getOtherPos()); + result.setReplaceObject(content.getReplaceObject()); + result.setShowObject(content.getShowObject()); + result.setTrlString(content.getTrlString()); + result.setShowStr(content.getShowStr()); + result.setOldShowStr(content.getOldShowStr()); + result.setLastSearchStr(content.getLastSearchStr()); + result.setOperatorArray(content.getOperatorArray()); + result.setFrmFlag(content.isFrm()); + result.setJumpAble(content.isJumpAble()); + result.setHoldObject(content.getHoldObject()); + result.setTag(content.getTag()); + } return result; } + public int getTag() { + return tag; + } + + public void setTag(int tag) { + this.tag = tag; + } + + public Object getHoldObject() { + return holdObject; + } + + public void setHoldObject(Object holdObject) { + this.holdObject = holdObject; + } + public Object getReplaceObject() { return replaceObject; } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java new file mode 100644 index 0000000000..2106c51c0f --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java @@ -0,0 +1,37 @@ +package com.fr.design.actions.replace.info.base; + +/** + * 用于校验的标签 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-21 + */ +public class SearchTag { + /** + * 经度 + */ + public static final int CHART_DATA_LONGITUDE = 0; + /** + * 纬度 + */ + public static final int CHART_DATA_LATITUDE = 1; + /** + * 区域名 + */ + public static final int CHART_AREA_NAME = 2; + /** + * 终点经度 + */ + public static final int CHART_DATA_END_LONGITUDE = 3; + /** + * 终点纬度 + */ + public static final int CHART_DATA_END_LATITUDE = 4; + /** + * 终点区域名 + */ + public static final int CHART_AREA_END_NAME = 5; + + +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java index 4ac477cdc5..da8951d5ab 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java @@ -154,42 +154,43 @@ public class ITReplaceMainDialog extends UIDialog { * 替换 */ private void replace() { + String searchStr = ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).getText(); + String replaceStr = ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).getText(); + if (StringUtils.equals(getSearchStr(), searchStr)) { + if (isITReplaceValid() && checkTemplateChanged(searchResultList)) { + for (Info info : searchResultList) { + if (info.getContent().isSelected()) { + info.setValue(info, searchStr, replaceStr, info.getContent().getOperatorArray()); + ShowValueUtils.updateHighlight(info, replaceStr); + } + } + southPanel.getTableEditorPane().update(); + northPane.refreshReplaceInputComboBoxItems(); + ITTableEditorPane.getEditTable().repaint(); + HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().fireTabChange(); + HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().fireTargetModified(true); + setSearchFlag(false); - if (isITReplaceValid() && checkTemplateChanged(searchResultList)) { - String searchStr = ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).getText(); - String replaceStr = ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).getText(); - - - for (Info info : searchResultList) { - if (info.getContent().isSelected()) { - info.setValue(info, searchStr, replaceStr, info.getContent().getOperatorArray()); - ShowValueUtils.updateHighlight(info, replaceStr); + } else { + Object[] options = new Object[]{Toolkit.i18nText("Fine-Design_Replace_Search_Again"), Toolkit.i18nText("Fine-Design_Basic_Cancel")}; + int optionSelected = FineJOptionPane.showOptionDialog( + ITReplaceMainDialog.this, + Toolkit.i18nText("Fine-Design_Replace_Message"), + Toolkit.i18nText("Fine-Design_Basic_Tool_Tips"), + JOptionPane.YES_NO_CANCEL_OPTION, + JOptionPane.ERROR_MESSAGE, + null, + // 如果传null, 则按钮为 optionType 类型所表示的按钮(也就是确认对话框) + options, + options[0] + ); + //如果选择了重新查找,则再查找一遍 + if (optionSelected == 0) { + search(); } } - southPanel.getTableEditorPane().update(); - northPane.refreshReplaceInputComboBoxItems(); - ITTableEditorPane.getEditTable().repaint(); - HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().fireTabChange(); - HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().fireTargetModified(true); - setSearchFlag(false); - } else { - Object[] options = new Object[]{Toolkit.i18nText("Fine-Design_Replace_Search_Again"), Toolkit.i18nText("Fine-Design_Basic_Cancel")}; - int optionSelected = FineJOptionPane.showOptionDialog( - ITReplaceMainDialog.this, - Toolkit.i18nText("Fine-Design_Replace_Message"), - Toolkit.i18nText("Fine-Design_Basic_Tool_Tips"), - JOptionPane.YES_NO_CANCEL_OPTION, - JOptionPane.ERROR_MESSAGE, - null, - // 如果传null, 则按钮为 optionType 类型所表示的按钮(也就是确认对话框) - options, - options[0] - ); - //如果选择了重新查找,则再查找一遍 - if (optionSelected == 0) { - search(); - } + search(); } @@ -281,9 +282,11 @@ public class ITReplaceMainDialog extends UIDialog { JTemplate jTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); templateID = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getTarget().getTemplateID(); itTableEditor.clear(); + String searchStr = ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).getText(); + setSearchStr(searchStr); ShowSearchResultAction searchAction = ShowSearchResultAction.match(GeneralUtils.objectToString(northPane.getFindCombobox().getSelectedItem())); if (searchAction != null) { - searchResultList = searchAction.addMatchResult(((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).getText(), searchAction.showSearchValue(jTemplate)); + searchResultList = searchAction.addMatchResult(searchStr, searchAction.showSearchValue(jTemplate)); itTableEditor.add(searchResultList); northPane.getResultLabel().setText("" + Toolkit.i18nText("Fine-Design_Replace_Search_Finish") + "" + searchResultList.size() + "" + Toolkit.i18nText("Fine-Design_Replace_Result")); } @@ -291,7 +294,6 @@ public class ITReplaceMainDialog extends UIDialog { northPane.refreshFindInputComboBoxItems(); setSearchFlag(true); - String searchStr = ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).getText(); if (StringUtils.isNotEmpty(searchStr)) { ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).setEditable(true); northPane.getReplaceInputCombobox().setEditable(true); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceWestPanel.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceWestPanel.java index a552f4f841..9295baf655 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceWestPanel.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceWestPanel.java @@ -3,6 +3,7 @@ package com.fr.design.actions.replace.ui; import com.fr.design.gui.ibutton.UIToggleButton; import com.fr.design.gui.ilable.UILabel; import com.fr.design.i18n.Toolkit; +import com.fr.stable.StringUtils; import javax.swing.BorderFactory; import javax.swing.JPanel; @@ -27,9 +28,10 @@ public class ITReplaceWestPanel { contentButton.setBorderPainted(false); leftJpanel.add(contentButton); leftJpanel.setBorder(BorderFactory.createMatteBorder(0, 0, 0, 1, new Color(218, 218, 221))); + //填充一下面板 int labelNum = 14; for (int i = 0; i < labelNum; i++) { - leftJpanel.add(new UILabel("")); + leftJpanel.add(new UILabel(StringUtils.EMPTY)); } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java index 6ec96038eb..5c7acb1b3c 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java @@ -3,6 +3,8 @@ package com.fr.design.actions.replace.utils; import com.fr.chart.chartattr.ChartCollection; import com.fr.chart.chartglyph.ConditionAttr; import com.fr.chart.chartglyph.ConditionCollection; +import com.fr.chart.web.ChartHyperPoplink; +import com.fr.design.actions.replace.action.content.js.SearchChartJSAction; import com.fr.design.actions.replace.info.JSInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; @@ -38,7 +40,7 @@ public class SearchJSUtils { * 从Listener中获取JS */ public static void searchJSFromListener(List jsInfos, ITContent content) { - if (content.getReplaceObject() instanceof Listener){ + if (content.getReplaceObject() instanceof Listener) { Listener listener = (Listener) (content.getReplaceObject()); JavaScript javaScript = listener.getAction(); if (javaScript instanceof JavaScriptImpl) { @@ -102,15 +104,18 @@ public class SearchJSUtils { Toolkit.i18nText("Fine-Design_Chart_Tooltip") + "-" + Toolkit.i18nText("Fine-Design_Basic_Custom"))); } } - private static boolean isToolTipValid(VanChartPlot plot){ + + private static boolean isToolTipValid(VanChartPlot plot) { return plot.getAttrTooltipFromConditionCollection() != null && ((AttrTooltip) plot.getAttrTooltipFromConditionCollection()).isEnable() && plot.getAttrTooltipFromConditionCollection() instanceof AttrTooltip; } + private static void addAttrLabelDetail2Array(VanChartPlot plot, List> arrayList) { if (isLabelDetailValid(plot)) { arrayList.add(new Pair<>(plot.getAttrLabelFromConditionCollection().getAttrLabelDetail().getContent().getHtmlLabel(), Toolkit.i18nText("Fine-Design_Chart_Value_Label"))); } } - private static boolean isLabelDetailValid(VanChartPlot plot){ + + private static boolean isLabelDetailValid(VanChartPlot plot) { return plot.getAttrLabelFromConditionCollection() != null && plot.getAttrLabelFromConditionCollection().getAttrLabelDetail() != null && plot.getAttrLabelFromConditionCollection().getAttrLabelDetail().getContent().getHtmlLabel() != null; @@ -121,7 +126,8 @@ public class SearchJSUtils { arrayList.add(new Pair<>(plot.getAttrLabelFromConditionCollection().getSecondLabelDetail().getContent().getHtmlLabel(), Toolkit.i18nText("Fine-Design_Chart_Category_Label"))); } } - private static boolean isSecondLabelDetailValid(VanChartPlot plot){ + + private static boolean isSecondLabelDetailValid(VanChartPlot plot) { return plot.getAttrLabelFromConditionCollection() != null && plot.getAttrLabelFromConditionCollection().getSecondLabelDetail() != null && plot.getAttrLabelFromConditionCollection().getSecondLabelDetail().getContent().getHtmlLabel() != null; @@ -239,17 +245,34 @@ public class SearchJSUtils { public static void addJSInfosFromHyperLink(Elem elem, List jsInfos, ITContent content) { if (elem.getNameHyperlinkGroup() != null) { for (int j = 0; j < elem.getNameHyperlinkGroup().size(); j++) { - if ((elem.getNameHyperlinkGroup().getNameHyperlink(j).getJavaScript()) instanceof JavaScriptImpl) { + NameJavaScript nameJavaScript = elem.getNameHyperlinkGroup().getNameHyperlink(j); + JavaScript javaScript = nameJavaScript.getJavaScript(); + if (javaScript instanceof JavaScriptImpl) { ITContent newContent = ITContent.copy(content); newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Report_Hyperlink")); - newContent.setReplaceObject(elem.getNameHyperlinkGroup().getNameHyperlink(j)); - newContent.addOtherPos(elem.getNameHyperlinkGroup().getNameHyperlink(j).getName()); + newContent.setReplaceObject(nameJavaScript); + newContent.addOtherPos(nameJavaScript.getName()); SearchJSUtils.addJSInfos(jsInfos, new JSInfo(newContent)); + } else if (isChartHyperPopLinkValid(javaScript)) { + ITContent chartContent = ITContent.copy(content); + chartContent.addOtherPos(nameJavaScript.getName()); + ChartCollection chartCollection = (ChartCollection) ((ChartHyperPoplink) javaScript).getChartCollection(); + SearchChartJSAction.getInstance().searchChartJS(chartCollection, chartContent, jsInfos); } } } } + /** + * 是否图表悬浮超链且内部图表是否可用 + * + * @param javaScript + * @return + */ + private static boolean isChartHyperPopLinkValid(JavaScript javaScript) { + return javaScript instanceof ChartHyperPoplink && ((ChartHyperPoplink) javaScript).getChartCollection() instanceof ChartCollection; + } + /** * 从Action中拿JS * diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java index 75288d0f92..b215a16c6d 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java @@ -3,7 +3,7 @@ package com.fr.design.actions.replace.utils; import com.fr.design.actions.replace.info.Info; -import com.fr.design.actions.replace.ui.ITReplaceMainDialog; + import com.fr.stable.StringUtils; import com.fr.stable.collections.combination.Pair; @@ -30,6 +30,7 @@ public class ShowValueUtils { public static final String ANY_THING_REGEX = "."; public static final String NUMBER_REGEX = "[0-9]"; public static final String ENGLISH_REGEX = "[a-zA-Z]"; + /** * 获取除内容外其他一次性展示所有的内容(名称、水印...) * @@ -61,13 +62,14 @@ public class ShowValueUtils { /** * 转换正则表达式 + * * @param regex * @return */ - public static String changeRegex(String regex){ - regex = regex.replace(NUMBER,NUMBER_REGEX); + public static String changeRegex(String regex) { + regex = regex.replace(NUMBER, NUMBER_REGEX); regex = regex.replace(ENGLISH, ENGLISH_REGEX); - regex = regex.replace(ANY_THING,ANY_THING_REGEX); + regex = regex.replace(ANY_THING, ANY_THING_REGEX); return regex; } @@ -128,17 +130,18 @@ public class ShowValueUtils { /** * 支持正则表达式的indexOf + * * @param str * @param regex * @return */ - public static int indexOf(String str, String regex){ + public static int indexOf(String str, String regex) { CharSequence inputStr = str; int failReturn = -1; String patternStr = changeRegex(regex); Pattern pattern = Pattern.compile(patternStr); Matcher matcher = pattern.matcher(inputStr); - if(matcher.find()){ + if (matcher.find()) { return matcher.start(); } return failReturn; From 2a810e445c841c17fec8c62675e39a15572c6489 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Thu, 22 Sep 2022 10:40:18 +0800 Subject: [PATCH 36/93] =?UTF-8?q?REPORT-75998=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=E3=80=81=E5=A2=9E=E5=8A=A0=E5=86=B3=E7=AD=96?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=BA=95=E5=B1=82=E7=BB=84=E4=BB=B6=E7=9A=84?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../content/component/SearchComponentAction.java | 11 +++++++++++ .../chart/SearchChartMapDataFormulaAction.java | 7 +++++++ .../formula/widget/SearchWidgetFormulaAction.java | 11 +++++++---- .../formula/widget/SearchWidgetFormulaManager.java | 3 ++- 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java index 4326f62287..336aa93745 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java @@ -52,6 +52,8 @@ public class SearchComponentAction implements SearchAction { content.setTemplateName(jTemplate.getTemplateName()); content.addTRL(jTemplate.getTemplateName()); content.setFrmFlag(true); + //处理最底层form组件 + dealForm(componentInfos, content, form.getContainer()); //参数面板 dealPara(componentInfos, content, form.getParaContainer()); //body面板 @@ -60,6 +62,15 @@ public class SearchComponentAction implements SearchAction { setComponentInfos(componentInfos); } + private void dealForm(List componentInfos, ITContent content, WLayout container) { + ITContent formContent = ITContent.copy(content); + formContent.setReplaceObject(container); + dealContent(formContent, container.getWidgetName()); + formContent.addOtherPos(container.getWidgetName()); + formContent.setJumpAble(false); + componentInfos.add(new ComponentInfo(formContent)); + } + private void dealBody(List componentInfos, ITContent content, Widget body) { if (body instanceof WLayout) { ITContent bodyContent = ITContent.copy(content); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartMapDataFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartMapDataFormulaAction.java index c66309c10a..b892e35c82 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartMapDataFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartMapDataFormulaAction.java @@ -159,6 +159,13 @@ public class SearchChartMapDataFormulaAction implements SearchChartDataFormula { } } + /** + * 处理区域名 + * @param formulaInfos + * @param content + * @param object + * @param definition + */ public void dealAreaName(List formulaInfos, ITContent content, Object object, VanMapReportDefinition definition) { if (object instanceof Formula) { ITContent cateContent = ITContent.copy(content); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java index 769d608382..3e1f4a8bcf 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaAction.java @@ -20,6 +20,7 @@ import com.fr.form.ui.ChartEditor; import com.fr.form.ui.Label; import com.fr.form.ui.Widget; +import com.fr.form.ui.container.WBorderLayout; import com.fr.form.ui.container.WScaleLayout; import com.fr.form.ui.container.WTitleLayout; import com.fr.form.ui.widget.CRBoundsWidget; @@ -74,22 +75,21 @@ public class SearchWidgetFormulaAction extends AbstractSearchWidgetFormulaAction private void searchFormulaFromWidgetValue(Info info, List formulaInfos) { Widget widget = (Widget) info.getContent().getReplaceObject(); - if (widget instanceof WScaleLayout) { widget = ((CRBoundsWidget) ((WScaleLayout) widget).getWidget(0)).getWidget(); info.getContent().setReplaceObject(widget); } if (widget instanceof WTitleLayout) { - if (((WTitleLayout) widget).getTitleBoundsWidget() != null){ + if (((WTitleLayout) widget).getTitleBoundsWidget() != null) { CRBoundsWidget boundsWidget = ((WTitleLayout) widget).getTitleBoundsWidget(); - if (boundsWidget.getWidget() instanceof Label){ + if (boundsWidget.getWidget() instanceof Label) { ITContent titleContent = ITContent.copy(info.getContent()); titleContent.setReplaceObject(((Label) boundsWidget.getWidget()).getWidgetValue().getValue()); formulaInfos.add(new FormulaInfo(titleContent)); } } Widget tempWidget = (((WTitleLayout) widget).getBodyBoundsWidget()).getWidget(); - if (tempWidget instanceof ChartEditor && ((ChartEditor) tempWidget).getChartCollection() instanceof ChartCollection) { + if (isChartValid(tempWidget)) { SearchChartCollectionFormulaAction.getInstance().searchChartCollectionFormula(formulaInfos, info.getContent(), (ChartCollection) ((ChartEditor) tempWidget).getChartCollection()); } } @@ -102,6 +102,9 @@ public class SearchWidgetFormulaAction extends AbstractSearchWidgetFormulaAction } + private boolean isChartValid(Widget tempWidget) { + return tempWidget instanceof ChartEditor && ((ChartEditor) tempWidget).getChartCollection() instanceof ChartCollection; + } public boolean isReplaceObjectExist(Info info) { return info.getContent() != null && info.getContent().getReplaceObject() != null; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaManager.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaManager.java index 719f49f003..1d11046164 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaManager.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchWidgetFormulaManager.java @@ -33,6 +33,7 @@ public class SearchWidgetFormulaManager implements SearchManager { private static final String TREE_COMBO_BOX_EDITOR = "TreeComboBoxEditor"; private static final String TREE_EDITOR = "TreeEditor"; private static final String W_TITLE_LAYOUT = "WTitleLayout"; + private static final String W_BORDER_LAYOUT = "WBorderLayout"; private SearchWidgetFormulaManager() { /** @@ -48,7 +49,7 @@ public class SearchWidgetFormulaManager implements SearchManager { register(NUMBER_EDITOR, SearchCommonWidgetFormulaAction.getInstance()); register(TEXT_EDITOR, SearchCommonWidgetFormulaAction.getInstance()); register(W_TITLE_LAYOUT, SearchCommonWidgetFormulaAction.getInstance()); - + register(W_BORDER_LAYOUT, SearchCommonWidgetFormulaAction.getInstance()); /** * 日期类型 */ From 8b938e3a8ac7df4f1025a11b6af4cf73101c6045 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Thu, 22 Sep 2022 12:37:56 +0800 Subject: [PATCH 37/93] =?UTF-8?q?REPORT-75998=20=E5=A4=84=E7=90=86?= =?UTF-8?q?=E6=89=A9=E5=B1=95=E5=9B=BE=E8=A1=A8=E6=8A=A5=E9=94=99=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SearchChartBoxDataFormulaAction.java | 2 +- .../content/js/SearchChartJSAction.java | 41 ++++++++++--------- .../actions/replace/utils/SearchJSUtils.java | 23 ++++++----- 3 files changed, 36 insertions(+), 30 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartBoxDataFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartBoxDataFormulaAction.java index fee727ae36..b677d3e86f 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartBoxDataFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartBoxDataFormulaAction.java @@ -50,7 +50,7 @@ public class SearchChartBoxDataFormulaAction implements SearchChartDataFormula { dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Data_Median"), resultDefinition.getMedian()); //下四分位数 dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Data_Q1"), resultDefinition.getQ1()); - // + //最小值 dealFormulaObject(formulaInfos, content, Toolkit.i18nText("Fine-Design_Chart_Min_Value"), resultDefinition.getMin()); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java index 768972c679..9f5e705a62 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java @@ -59,27 +59,30 @@ public class SearchChartJSAction { } private void searchAxisJS(List jsInfos, ITContent chartContent, Chart chart) { - Axis xAxis = chart.getPlot().getxAxis(); - Axis yAxis = chart.getPlot().getyAxis(); - if (xAxis instanceof VanChartAxis) { - ITContent xAxisContent = ITContent.copy(chartContent); - xAxisContent.addOtherPos( - Toolkit.i18nText("Fine-Design_Chart_Axis"), - Toolkit.i18nText("Fine-Design_Chart_X_Axis"), - Toolkit.i18nText("Fine-Design_Chart_Axis_Label_Format") - ); - dealAxisHtmlLabelJS(jsInfos, ((VanChartAxis) xAxis).getHtmlLabel(), xAxisContent); + if (chart.getPlot() != null){ + Axis xAxis = chart.getPlot().getxAxis(); + Axis yAxis = chart.getPlot().getyAxis(); + if (xAxis instanceof VanChartAxis) { + ITContent xAxisContent = ITContent.copy(chartContent); + xAxisContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Chart_Axis"), + Toolkit.i18nText("Fine-Design_Chart_X_Axis"), + Toolkit.i18nText("Fine-Design_Chart_Axis_Label_Format") + ); + dealAxisHtmlLabelJS(jsInfos, ((VanChartAxis) xAxis).getHtmlLabel(), xAxisContent); + } + + if (yAxis instanceof VanChartAxis) { + ITContent yAxisContent = ITContent.copy(chartContent); + yAxisContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Chart_Axis"), + Toolkit.i18nText("Fine-Design_Chart_Y_Axis"), + Toolkit.i18nText("Fine-Design_Chart_Axis_Label_Format") + ); + dealAxisHtmlLabelJS(jsInfos, ((VanChartAxis) yAxis).getHtmlLabel(), yAxisContent); + } } - if (yAxis instanceof VanChartAxis) { - ITContent yAxisContent = ITContent.copy(chartContent); - yAxisContent.addOtherPos( - Toolkit.i18nText("Fine-Design_Chart_Axis"), - Toolkit.i18nText("Fine-Design_Chart_Y_Axis"), - Toolkit.i18nText("Fine-Design_Chart_Axis_Label_Format") - ); - dealAxisHtmlLabelJS(jsInfos, ((VanChartAxis) yAxis).getHtmlLabel(), yAxisContent); - } } private void dealAxisHtmlLabelJS(List jsInfos, VanChartHtmlLabel label, ITContent content) { diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java index 5c7acb1b3c..1495c8fac8 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java @@ -71,12 +71,14 @@ public class SearchJSUtils { */ private static void addHtmlLabel2Array(List> arrayList, ChartCollection collection) { for (int i = 0; i < collection.getChartCount(); i++) { - VanChart chart = ((VanChart) collection.getChart(i)); - int size = chart.getPlot().getConditionCollection().getConditionAttrSize(); - ConditionCollection conditionCollection = chart.getPlot().getConditionCollection(); - addAttrLabelHtmlLabel(chart, arrayList); - for (int j = 0; j < size; j++) { - searchConditionCollection(arrayList, conditionCollection.getConditionAttr(j)); + if (collection.getChart(i) instanceof VanChart){ + VanChart chart = ((VanChart) collection.getChart(i)); + int size = chart.getPlot().getConditionCollection().getConditionAttrSize(); + ConditionCollection conditionCollection = chart.getPlot().getConditionCollection(); + addAttrLabelHtmlLabel(chart, arrayList); + for (int j = 0; j < size; j++) { + searchConditionCollection(arrayList, conditionCollection.getConditionAttr(j)); + } } } } @@ -163,10 +165,11 @@ public class SearchJSUtils { public static List getNameJavaScript(ChartCollection chartCollection) { ArrayList nameJavaScriptArrayList = new ArrayList<>(); for (int i = 0; i < chartCollection.getChartCount(); i++) { - VanChart chart = ((VanChart) chartCollection.getChart(i)); - NameJavaScriptGroup nameJavaScriptGroup = chart.getPlot().getHotHyperLink(); - addNameJavaScript2Array(nameJavaScriptArrayList, nameJavaScriptGroup); - + if (chartCollection.getChart(i) instanceof VanChart){ + VanChart chart = ((VanChart) chartCollection.getChart(i)); + NameJavaScriptGroup nameJavaScriptGroup = chart.getPlot().getHotHyperLink(); + addNameJavaScript2Array(nameJavaScriptArrayList, nameJavaScriptGroup); + } } return nameJavaScriptArrayList; } From c899ce3df3aab02a0732023772039c3ccc875c0f Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Thu, 22 Sep 2022 15:50:39 +0800 Subject: [PATCH 38/93] =?UTF-8?q?REPORT-75998=20=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=BB=9A=E5=8A=A8=E6=9D=A1=EF=BC=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E4=B8=80=E4=BA=9B=E5=8F=AF=E8=83=BD=E4=BC=9A=E5=87=BA?= =?UTF-8?q?=E9=94=99=E7=9A=84=E5=88=A4=E6=96=AD=E3=80=81=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6=E6=98=BE=E7=A4=BA-=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E5=B1=9E=E6=80=A7-=E6=A0=87=E7=AD=BE=E4=B8=AD=E7=9A=84JS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/ShowSearchResultAction.java | 22 ++-- .../SearchChartCollectionFormulaAction.java | 110 +++++++++--------- .../replace/ui/ITReplaceMainDialog.java | 5 +- .../replace/ui/ITReplaceNorthPanel.java | 54 +++++---- .../actions/replace/utils/SearchJSUtils.java | 22 +++- 5 files changed, 127 insertions(+), 86 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java index 0d250337c4..601b3d09e5 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java @@ -2,6 +2,7 @@ package com.fr.design.actions.replace.action; import com.fr.chart.chartattr.ChartCollection; +import com.fr.chart.chartattr.Title; import com.fr.design.actions.replace.action.content.cell.SearchCellAction; import com.fr.design.actions.replace.action.content.component.SearchComponentAction; import com.fr.design.actions.replace.action.content.floatelement.SearchFloatAction; @@ -58,8 +59,8 @@ public enum ShowSearchResultAction implements ShowValue { CellElement cellElement = (CellElement) info.getContent().getReplaceObject(); ChartCollection chartCollection = (ChartCollection) cellElement.getValue(); for (int i = 0; i < chartCollection.getChartCount(); i++) { - String titleName = GeneralUtils.objectToString(chartCollection.getChart(i).getTitle().getTextObject()); - if (isTitleNameValid(titleName, str)) { + if (isTitleNameValid(chartCollection.getChart(i).getTitle(), str)) { + String titleName = GeneralUtils.objectToString(chartCollection.getChart(i).getTitle().getTextObject()); CellInfo cellInfo = ((CellInfo) info).copy(); cellInfo.setCellChartIndex(i); cellInfo.getContent().addOtherPos( @@ -93,9 +94,6 @@ public enum ShowSearchResultAction implements ShowValue { cellInfo.getContent().setSelected(true); } - private boolean isTitleNameValid(String titleName, String str){ - return titleName.contains(str) && StringUtils.isNotEmpty(titleName); - } }, /** * 搜索JS事件 @@ -233,8 +231,8 @@ public enum ShowSearchResultAction implements ShowValue { if (((FloatInfo) info).isChartExist()) { ChartCollection chartCollection = (ChartCollection) floatElement.getValue(); for (int i = 0; i < chartCollection.getChartCount(); i++) { - String titleName = GeneralUtils.objectToString(chartCollection.getChart(i).getTitle().getTextObject()); - if (titleName.contains(str)) { + if (isTitleNameValid(chartCollection.getChart(i).getTitle(),str)) { + String titleName = GeneralUtils.objectToString(chartCollection.getChart(i).getTitle().getTextObject()); FloatInfo floatInfo = ((FloatInfo) info).copy(); floatInfo.setFloatChartIndex(i); floatInfo.getContent().addOtherPos( @@ -410,4 +408,14 @@ public enum ShowSearchResultAction implements ShowValue { } return null; } + + /** + * 标题是否可用 + * @param title + * @param str + * @return + */ + public boolean isTitleNameValid(Title title, String str){ + return title != null && GeneralUtils.objectToString(title.getTextObject()).contains(str) && StringUtils.isNotEmpty(GeneralUtils.objectToString(title.getTextObject())); + } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java index fd17f57eeb..9276302a90 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java @@ -76,34 +76,37 @@ public class SearchChartCollectionFormulaAction { } private void searchChartPatternFormulaFromAlertLine(List formulaInfos, ITContent chartContent, Chart chart) { - Axis xAxis = chart.getPlot().getxAxis(); - Axis yAxis = chart.getPlot().getyAxis(); - ITContent content = ITContent.copy(chartContent); - content.addOtherPos( - Toolkit.i18nText("Fine-Design_Chart_Pattern"), - Toolkit.i18nText("Fine-Design_Chart_Background"), - Toolkit.i18nText("Fine-Design_Chart_Plot_Region"), - Toolkit.i18nText("Fine-Design_Chart_Alert_Line") - ); - if (xAxis instanceof VanChartAxis) { - List list = ((VanChartAxis) xAxis).getAlertValues(); - for (VanChartAlertValue alertValue : list) { - //警戒线设置 - dealAlertValue(formulaInfos, content, alertValue); - //提示文字 - dealAlertContent(formulaInfos, content, alertValue); + if (chart.getPlot() != null){ + Axis xAxis = chart.getPlot().getxAxis(); + Axis yAxis = chart.getPlot().getyAxis(); + ITContent content = ITContent.copy(chartContent); + content.addOtherPos( + Toolkit.i18nText("Fine-Design_Chart_Pattern"), + Toolkit.i18nText("Fine-Design_Chart_Background"), + Toolkit.i18nText("Fine-Design_Chart_Plot_Region"), + Toolkit.i18nText("Fine-Design_Chart_Alert_Line") + ); + if (xAxis instanceof VanChartAxis) { + List list = ((VanChartAxis) xAxis).getAlertValues(); + for (VanChartAlertValue alertValue : list) { + //警戒线设置 + dealAlertValue(formulaInfos, content, alertValue); + //提示文字 + dealAlertContent(formulaInfos, content, alertValue); + } } - } - if (yAxis instanceof VanChartAxis) { - List list = ((VanChartAxis) yAxis).getAlertValues(); - for (VanChartAlertValue alertValue : list) { - //警戒线设置 - dealAlertValue(formulaInfos, content, alertValue); - //提示文字 - dealAlertContent(formulaInfos, content, alertValue); + if (yAxis instanceof VanChartAxis) { + List list = ((VanChartAxis) yAxis).getAlertValues(); + for (VanChartAlertValue alertValue : list) { + //警戒线设置 + dealAlertValue(formulaInfos, content, alertValue); + //提示文字 + dealAlertContent(formulaInfos, content, alertValue); + } } } + } private void dealAlertContent(List formulaInfos, ITContent content, VanChartAlertValue alertValue) { @@ -125,39 +128,40 @@ public class SearchChartCollectionFormulaAction { } private void searchChartPatternFormulaFromAxisValue(List formulaInfos, ITContent chartContent, Chart chart) { - Axis xAxis = chart.getPlot().getxAxis(); - Axis yAxis = chart.getPlot().getyAxis(); - //样式-坐标轴-x轴 - if (xAxis != null) { - //轴标题 - ITContent xAxisContent = ITContent.copy(chartContent); - if (!chartContent.isFrm()) { - xAxisContent.addOtherPos(chart.getChartName()); + if (chart.getPlot() != null){ + Axis xAxis = chart.getPlot().getxAxis(); + Axis yAxis = chart.getPlot().getyAxis(); + //样式-坐标轴-x轴 + if (xAxis != null) { + //轴标题 + ITContent xAxisContent = ITContent.copy(chartContent); + if (!chartContent.isFrm()) { + xAxisContent.addOtherPos(chart.getChartName()); + } + xAxisContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Chart_Pattern"), + Toolkit.i18nText("Fine-Design_Chart_Axis"), + Toolkit.i18nText("Fine-Design_Chart_X_Axis") + ); + dealTitle(formulaInfos, xAxisContent, xAxis.getTitle()); + dealChartValueDefine(formulaInfos, xAxisContent, xAxis); } - xAxisContent.addOtherPos( - Toolkit.i18nText("Fine-Design_Chart_Pattern"), - Toolkit.i18nText("Fine-Design_Chart_Axis"), - Toolkit.i18nText("Fine-Design_Chart_X_Axis") - ); - dealTitle(formulaInfos, xAxisContent, xAxis.getTitle()); - dealChartValueDefine(formulaInfos, xAxisContent, xAxis); - } - - //样式-坐标轴-y轴-轴标题 - if (yAxis != null) { - ITContent yAxisContent = ITContent.copy(chartContent); - yAxisContent.addOtherPos( - chart.getChartName(), - Toolkit.i18nText("Fine-Design_Chart_Pattern"), - Toolkit.i18nText("Fine-Design_Chart_Axis"), - Toolkit.i18nText("Fine-Design_Chart_Y_Axis") - ); - dealTitle(formulaInfos, yAxisContent, yAxis.getTitle()); - dealChartValueDefine(formulaInfos, yAxisContent, yAxis); + //样式-坐标轴-y轴-轴标题 + if (yAxis != null) { + ITContent yAxisContent = ITContent.copy(chartContent); + yAxisContent.addOtherPos( + chart.getChartName(), + Toolkit.i18nText("Fine-Design_Chart_Pattern"), + Toolkit.i18nText("Fine-Design_Chart_Axis"), + Toolkit.i18nText("Fine-Design_Chart_Y_Axis") + + ); + dealTitle(formulaInfos, yAxisContent, yAxis.getTitle()); + dealChartValueDefine(formulaInfos, yAxisContent, yAxis); + } } - } private void dealChartValueDefine(List formulaInfos, ITContent axisContent, Axis axis) { diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java index da8951d5ab..a1443d89f4 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java @@ -10,6 +10,7 @@ import com.fr.design.actions.replace.utils.ShowValueUtils; import com.fr.design.dialog.FineJOptionPane; import com.fr.design.dialog.UIDialog; import com.fr.design.file.HistoryTemplateListCache; +import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.DesignerContext; @@ -97,7 +98,7 @@ public class ITReplaceMainDialog extends UIDialog { setSize(width, height); setLocation(new Point(point.x, point.y + jTemplate.getHeight() / 2 + jTemplate.getHeight() / 2 - 385)); - northPane.fitScreen(0, 0, jTemplate.getWidth()); + northPane.fitScreen(0, 0,width); } @@ -142,7 +143,7 @@ public class ITReplaceMainDialog extends UIDialog { } } }); - center.add(northPane.getUpPanel(), BorderLayout.NORTH); + center.add(northPane.getScrollPane(), BorderLayout.NORTH); center.add(southPanel.getTableEditorPane(), BorderLayout.CENTER); add(westPanel.getLeftJpanel(), BorderLayout.WEST); //主体部分 diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java index ff5b3c8199..eb019cff65 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java @@ -1,8 +1,8 @@ package com.fr.design.actions.replace.ui; -import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.icombobox.UIComboBox; +import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.i18n.Toolkit; @@ -12,6 +12,7 @@ import com.fr.stable.StringUtils; import javax.swing.ComboBoxEditor; import javax.swing.JCheckBox; import javax.swing.JPanel; +import javax.swing.ScrollPaneConstants; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -36,12 +37,16 @@ public class ITReplaceNorthPanel { private UIComboBox findInputCombobox; private UIComboBox replaceInputCombobox; - + private UIScrollPane scrollPane; private UIButton replaceButton; private UIButton searchButton; //存储的5次最近输入 private int maxItemCount = 5; + private static final int LIMIT_WIDTH = 1250; + private static final int HEIGHT = 161; + private static final int BUTTON_WIDTH = 60; + private static final int BUTTON_GAP = 20; private int findLabelX, findLabelY, findLabelWidth, findLabelHeight; @@ -52,9 +57,9 @@ public class ITReplaceNorthPanel { private int resultLabelX, resultLabelY, resultLabelWidth, resultLabelHeight; private int findInputComboBoxX, findInputComboBoxY, findInputComboBoxWidth, findInputComboBoxHeight; private int replaceInputComboBoxX, replaceInputComboBoxY, replaceInputComboBoxWidth, replaceInputComboBoxHeight; - private int replaceButtonX, replaceButtonY, replaceButtonWidth, replaceButtonHeight; - private int searchButtonX, searchButtonY, searchButtonWidth, searchButtonHeight; - private int buttonGap; + private int replaceButtonX, replaceButtonY, replaceButtonHeight; + private int searchButtonX, searchButtonY, searchButtonHeight; + public static ArrayList findItems = new ArrayList<>(); public static ArrayList findInputItems = new ArrayList<>(); @@ -103,9 +108,8 @@ public class ITReplaceNorthPanel { replaceButton = new UIButton(Toolkit.i18nText("Fine-Design_Replace_Button")); searchButton = new UIButton(Toolkit.i18nText("Fine-Design_Search_Button")); - - setLimitSize(HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getWidth()); - + upPanel.setPreferredSize(new Dimension(LIMIT_WIDTH, HEIGHT)); + scrollPane = new UIScrollPane(upPanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); upPanel.add(findLabel); upPanel.add(rangeLabel); upPanel.add(resultLabel); @@ -124,8 +128,9 @@ public class ITReplaceNorthPanel { * @param width */ public void setLimitSize(int width) { + width = Math.max(LIMIT_WIDTH, width); upPanel.setMaximumSize(new Dimension(width, 161)); - upPanel.setMinimumSize(new Dimension(width, 161)); + //upPanel.setMinimumSize(new Dimension(width, 161)); upPanel.setPreferredSize(new Dimension(width, 161)); } @@ -139,6 +144,8 @@ public class ITReplaceNorthPanel { */ public void fitScreen(int x, int y, int templateWidth) { + templateWidth = Math.max(templateWidth, LIMIT_WIDTH); + setFindLabelBounds(x, y, templateWidth); setRangeLabelBounds(x, y, templateWidth); setResultLabelBounds(x, y, templateWidth); @@ -152,6 +159,7 @@ public class ITReplaceNorthPanel { setReplaceButtonBounds(x, y, templateWidth); setSearchButtonBounds(x, y, templateWidth); + } @@ -198,27 +206,31 @@ public class ITReplaceNorthPanel { } - private void setSearchButtonBounds(int x, int y, int templateWidth) { - buttonGap = templateWidth / 90; - searchButtonWidth = templateWidth / 30; + public UIScrollPane getScrollPane() { + return scrollPane; + } + + public void setScrollPane(UIScrollPane scrollPane) { + this.scrollPane = scrollPane; + } + + private void setSearchButtonBounds(int x, int y, int templateWidth) { searchButtonHeight = 25; searchButtonY = resultLabelY; - searchButtonX = replaceInputComboBoxX + replaceInputComboBoxWidth - replaceButtonWidth * 2 - buttonGap; - searchButton.setBounds(searchButtonX, searchButtonY, searchButtonWidth, searchButtonHeight); + searchButtonX = replaceInputComboBoxX + replaceInputComboBoxWidth - BUTTON_WIDTH * 2 - BUTTON_GAP; + searchButton.setBounds(searchButtonX, searchButtonY, BUTTON_WIDTH, searchButtonHeight); } private void setReplaceButtonBounds(int x, int y, int templateWidth) { - buttonGap = templateWidth / 90; - replaceButtonWidth = templateWidth / 30; replaceButtonHeight = 25; replaceButtonY = resultLabelY; - replaceButtonX = replaceInputComboBoxX + replaceInputComboBoxWidth - replaceButtonWidth; - replaceButton.setBounds(replaceButtonX, replaceButtonY, replaceButtonWidth, replaceButtonHeight); + replaceButtonX = replaceInputComboBoxX + replaceInputComboBoxWidth - BUTTON_WIDTH; + replaceButton.setBounds(replaceButtonX, replaceButtonY, BUTTON_WIDTH, replaceButtonHeight); } private void setReplaceInputComboboxBounds(int x, int y, int templateWidth) { - replaceInputComboBoxX = x + templateWidth / 2 + templateWidth / 30; + replaceInputComboBoxX = x + templateWidth / 2 + templateWidth / 60; replaceInputComboBoxY = y + 55; replaceInputComboBoxWidth = templateWidth / 3 + templateWidth / 30 * 2; replaceInputComboBoxHeight = 25; @@ -243,7 +255,7 @@ public class ITReplaceNorthPanel { private void setRangeComboboxBounds(int x, int y, int templateWidth) { - rangeComboBoxX = x + templateWidth / 2 + templateWidth / 15 + templateWidth / 60; + rangeComboBoxX = x + templateWidth / 2 + templateWidth / 15; rangeComboBoxY = y + 20; rangeComboBoxWidth = templateWidth / 3 + templateWidth / 60; rangeComboBoxHeight = 25; @@ -270,7 +282,7 @@ public class ITReplaceNorthPanel { } private void setRangeLabelBounds(int x, int y, int templateWidth) { - rangeLabelX = x + templateWidth / 2 + templateWidth / 30; + rangeLabelX = x + templateWidth / 2 + templateWidth / 60; rangeLabelY = y + 20; rangeLabelWidth = findLabelWidth; rangeLabelHeight = 25; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java index 1495c8fac8..13094fc5c8 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java @@ -1,5 +1,6 @@ package com.fr.design.actions.replace.utils; +import com.fr.chart.base.DataSeriesCondition; import com.fr.chart.chartattr.ChartCollection; import com.fr.chart.chartglyph.ConditionAttr; import com.fr.chart.chartglyph.ConditionCollection; @@ -16,6 +17,7 @@ import com.fr.js.JavaScriptImpl; import com.fr.js.NameJavaScript; import com.fr.js.NameJavaScriptGroup; import com.fr.plugin.chart.attr.plot.VanChartPlot; +import com.fr.plugin.chart.base.AttrLabel; import com.fr.plugin.chart.base.AttrTooltip; import com.fr.plugin.chart.base.VanChartHtmlLabel; import com.fr.plugin.chart.vanchart.VanChart; @@ -148,14 +150,28 @@ public class SearchJSUtils { private static void searchConditionCollection(List> arrayList, ConditionAttr conditionAttr) { int conditionSize = conditionAttr.getDataSeriesConditionCount(); for (int t = 0; t < conditionSize; t++) { - if (conditionAttr.getDataSeriesCondition(t) instanceof AttrTooltip) { - arrayList.add(new Pair<>(((AttrTooltip) conditionAttr.getDataSeriesCondition(t)).getContent().getHtmlLabel(), - Toolkit.i18nText("Fine-Design_Chart_Animation_Special") + "-" + Toolkit.i18nText("Fine-Design_Chart_Condition_Display"))); + DataSeriesCondition condition = conditionAttr.getDataSeriesCondition(t); + String str = Toolkit.i18nText("Fine-Design_Chart_Animation_Special") + "-" + Toolkit.i18nText("Fine-Design_Chart_Condition_Display"); + if (StringUtils.isNotEmpty(conditionAttr.getName())){ + str += "-"+conditionAttr.getName(); + } + if (condition instanceof AttrTooltip) { + arrayList.add(new Pair<>(((AttrTooltip) condition).getContent().getHtmlLabel(), str+"-"+Toolkit.i18nText("Fine-Design_Chart_Data_Point_Tooltip"))); + } + if (condition instanceof AttrLabel){ + AttrLabel label = (AttrLabel) condition; + if (isAttrLabelValid(label)){ + arrayList.add(new Pair<>(label.getContent().getHtmlLabel(), str+"-"+Toolkit.i18nText("Fine-Design_Chart_Label"))); + } } } } + private static boolean isAttrLabelValid(AttrLabel label){ + return label.isEnable() && label.getContent() != null && label.getContent().getHtmlLabel() != null; + } + /** * 获取图表-特效-交互属性中的JS * From da1d28d62de11caadf6d2f157fd07c76c5e63e40 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Thu, 22 Sep 2022 16:32:53 +0800 Subject: [PATCH 39/93] =?UTF-8?q?REPORT-75998=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=9B=91=E6=8E=A7=E5=88=B7=E6=96=B0JS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../content/js/SearchChartJSAction.java | 28 ++++++++++++++++++- .../replace/ui/ITReplaceNorthPanel.java | 1 - 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java index 9f5e705a62..b7269318e5 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java @@ -10,7 +10,9 @@ import com.fr.design.i18n.Toolkit; import com.fr.js.NameJavaScript; import com.fr.plugin.chart.attr.axis.VanChartAxis; +import com.fr.plugin.chart.base.RefreshMoreLabel; import com.fr.plugin.chart.base.VanChartHtmlLabel; +import com.fr.plugin.chart.vanchart.VanChart; import com.fr.stable.collections.combination.Pair; import java.util.List; @@ -42,7 +44,7 @@ public class SearchChartJSAction { ITContent htmlITContent = ITContent.copy(content); htmlITContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Chart")); SearchJSUtils.addJSInfosFromHtmlLabel(htmlITContent, htmlLabels, jsInfos); - //图表-特效-交互属性 + //图表-特效-交互属性-超级链接 ITContent conditionContent = ITContent.copy(content); conditionContent.addOtherPos( Toolkit.i18nText("Fine-Design_Chart_Chart"), @@ -51,13 +53,37 @@ public class SearchChartJSAction { ); SearchJSUtils.addJSInfosFromNameJS(conditionContent, nameJavaScripts, jsInfos); + //图表-特效-交互属性-监控刷新 + dealMonitorRefreshJS(conditionContent,chartCollection,jsInfos); for (int i = 0; i < chartCollection.getChartCount(); i++) { ITContent chartContent = ITContent.copy(content); + chartContent.addOtherPos(chartCollection.getChart(i).getChartName()); searchAxisJS(jsInfos, chartContent, chartCollection.getChart(i)); } } + private void dealMonitorRefreshJS(ITContent conditionContent, ChartCollection chartCollection, List jsInfos) { + for (int i = 0 ; i < chartCollection.getChartCount() ; i ++){ + if (chartCollection.getChart(i) instanceof VanChart){ + VanChart chart = (VanChart) chartCollection.getChart(i); + if (isMonitorValid(chart.getRefreshMoreLabel())){ + VanChartHtmlLabel htmlLabel = chart.getRefreshMoreLabel().getAttrTooltip().getContent().getHtmlLabel(); + if (htmlLabel != null){ + ITContent content = ITContent.copy(conditionContent); + content.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Moniter_refresh")); + content.setReplaceObject(htmlLabel); + jsInfos.add(new JSInfo(content)); + } + } + } + } + } + + private boolean isMonitorValid(RefreshMoreLabel moreLabel){ + return moreLabel.isMoreLabel() && moreLabel.getAttrTooltip() != null && moreLabel.getAttrTooltip().isEnable(); + } + private void searchAxisJS(List jsInfos, ITContent chartContent, Chart chart) { if (chart.getPlot() != null){ Axis xAxis = chart.getPlot().getxAxis(); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java index eb019cff65..bc4e82255f 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java @@ -130,7 +130,6 @@ public class ITReplaceNorthPanel { public void setLimitSize(int width) { width = Math.max(LIMIT_WIDTH, width); upPanel.setMaximumSize(new Dimension(width, 161)); - //upPanel.setMinimumSize(new Dimension(width, 161)); upPanel.setPreferredSize(new Dimension(width, 161)); } From 0a32b3ac133c5db971156d42276f28d605a89c20 Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Fri, 23 Sep 2022 11:56:13 +0800 Subject: [PATCH 40/93] =?UTF-8?q?REPORT-80734=E3=80=90=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=E3=80=91=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E6=8E=92=E5=BA=8F=E4=BA=A4=E4=BA=92=E9=97=AE?= =?UTF-8?q?=E9=A2=98=201=E3=80=81=E4=BA=A4=E4=BA=92=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=B8=80=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../help/alphafine/AlphaFineConfigPane.java | 30 +++++++++--------- .../alphafine/component/CustomSortPane.java | 31 ++++++++++++++++--- .../help/alphafine/component/MenuLabel.java | 4 +-- .../com/fr/design/gui/ibutton/UIButton.java | 12 +++++++ 4 files changed, 57 insertions(+), 20 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigPane.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigPane.java index 2a64eeba6d..dcc20f6ea7 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigPane.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigPane.java @@ -114,7 +114,9 @@ public class AlphaFineConfigPane extends BasicPane { customSortLabel = new ActionLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_AlphaFine_Config_Custom_Sort"), false); customSortLabel.setForeground(UIConstants.NORMAL_BLUE); customSortLabel.addActionListener((event)->{ + if (customSortLabel.isEnabled()) { openCustomSortMenu(); + } }); customSortWrapperPane.add(customSortLabel); if (!hasSelectedSearchRangeCheckBox()) { @@ -178,25 +180,25 @@ public class AlphaFineConfigPane extends BasicPane { return res; } - // 搜索范围-我的模板 + /** + * 搜索范围-我的模板 + */ private void initMyTemplateSearchPane() { - containMyTemplatePane = new JPanel(new FlowLayout(FlowLayout.LEFT,4,5)); + containMyTemplatePane = new JPanel(new FlowLayout(FlowLayout.LEFT, 4, 5)); containMyTemplateCheckbox.setBorder(BorderFactory.createEmptyBorder()); - containMyTemplateCheckbox.addActionListener( - new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - if (containMyTemplateCheckbox.isSelected()) { - myTemplateSearchConfigButton.setVisible(true); - } else { - myTemplateSearchConfigButton.setVisible(false); - } - } + containMyTemplateCheckbox.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (containMyTemplateCheckbox.isSelected()) { + myTemplateSearchConfigButton.setVisible(true); + } else { + myTemplateSearchConfigButton.setVisible(false); } - ); + } + }); myTemplateSearchConfigButton = new JButton(); myTemplateSearchConfigButton.setBorder(BorderFactory.createEmptyBorder()); - myTemplateSearchConfigButton.setMargin(new Insets(0,0,0,0)); + myTemplateSearchConfigButton.setMargin(new Insets(0, 0, 0, 0)); myTemplateSearchConfigButton.setIcon(IconUtils.readIcon("/com/fr/design/mainframe/alphafine/images/config.svg")); myTemplateSearchMenu = new UIPopupMenu(); containTemplateNameSearchCheckbox = new UICheckBox(Toolkit.i18nText("Fine-Design_AlphaFine_Config_Name_Search")); diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java index 09415d5327..747b8d8ce0 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java @@ -74,10 +74,14 @@ public class CustomSortPane extends JPanel { } private void createToolbarPane() { - top = new UIButton(IconUtils.readIcon("com/fr/design/mainframe/alphafine/images/top.svg")); - bottom = new UIButton(IconUtils.readIcon("com/fr/design/mainframe/alphafine/images/bottom.svg")); - up = new UIButton(IconUtils.readIcon("com/fr/design/mainframe/alphafine/images/up.svg")); - down = new UIButton(IconUtils.readIcon("com/fr/design/mainframe/alphafine/images/down.svg")); + top = new UIButton(IconUtils.readIcon("com/fr/design/mainframe/alphafine/images/top.svg"), false); + bottom = new UIButton(IconUtils.readIcon("com/fr/design/mainframe/alphafine/images/bottom.svg"), false); + up = new UIButton(IconUtils.readIcon("com/fr/design/mainframe/alphafine/images/up.svg"), false); + down = new UIButton(IconUtils.readIcon("com/fr/design/mainframe/alphafine/images/down.svg"), false); + top.setDisabledIcon(IconUtils.readIcon("com/fr/design/mainframe/alphafine/images/top_disable.svg")); + bottom.setDisabledIcon(IconUtils.readIcon("com/fr/design/mainframe/alphafine/images/bottom_disable.svg")); + up.setDisabledIcon(IconUtils.readIcon("com/fr/design/mainframe/alphafine/images/up_disable.svg")); + down.setDisabledIcon(IconUtils.readIcon("com/fr/design/mainframe/alphafine/images/down_disable.svg")); top.addActionListener(e -> { SwingUtilities.invokeLater(() -> { sortItemPane.setComponentZOrder(selectedLabel, 0); @@ -132,6 +136,7 @@ public class CustomSortPane extends JPanel { for (UICheckBox item : sortItems) { MenuLabel label = new MenuLabel(item.getText(), (Function) o -> { selectedLabel = o; + disableButton(); return null; }); sortLabels.add(label); @@ -140,6 +145,24 @@ public class CustomSortPane extends JPanel { sortItemPane = new MenuLabelPane(sortLabels); } + /** + * 如果选中第一个和最后一个,则置灰向上和向下的按钮 + */ + private void disableButton() { + int order = sortItemPane.getComponentZOrder(selectedLabel); + if (order == 0) { + top.setEnabled(false); + up.setEnabled(false); + } else if (order == sortItemPane.getComponentCount() - 1) { + down.setEnabled(false); + bottom.setEnabled(false); + } else { + up.setEnabled(true); + top.setEnabled(true); + down.setEnabled(true); + bottom.setEnabled(true); + } + } private void refreshCurrentOrder() { String[] currentTabOrder = parentPane.getCurrentOrder(); diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabel.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabel.java index 96c7a17971..5f3708ed97 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabel.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/MenuLabel.java @@ -61,10 +61,10 @@ public class MenuLabel extends UILabel { parentMenu.setNoneSelected(); setBackground(SELECTED_COLOR); function.apply(this); - selected = true; + this.selected = true; } else { setBackground(BACKGROUND_COLOR); - selected = false; + this.selected = false; } } diff --git a/designer-base/src/main/java/com/fr/design/gui/ibutton/UIButton.java b/designer-base/src/main/java/com/fr/design/gui/ibutton/UIButton.java index 335397d908..e5f2c03ff8 100644 --- a/designer-base/src/main/java/com/fr/design/gui/ibutton/UIButton.java +++ b/designer-base/src/main/java/com/fr/design/gui/ibutton/UIButton.java @@ -61,6 +61,14 @@ public class UIButton extends JButton implements UIObserver, UITextComponent { init(); } + public UIButton(Icon icon, boolean decorate) { + this(icon); + if (!decorate) { + setContentAreaFilled(false); + setFocusPainted(false); + setBorderPainted(false); + } + } public UIButton(Icon icon) { super(icon); @@ -397,4 +405,8 @@ public class UIButton extends JButton implements UIObserver, UITextComponent { public boolean shouldResponseChangeListener() { return true; } + + + + } From b0c5c6660bfc9a5a72f33e08dc81c450ce34566f Mon Sep 17 00:00:00 2001 From: kerry Date: Fri, 23 Sep 2022 13:49:45 +0800 Subject: [PATCH 41/93] =?UTF-8?q?REPORT-80745=20FR11=E6=96=B0=E8=87=AA?= =?UTF-8?q?=E9=80=82=E5=BA=94-=E5=9C=A8=E7=95=8C=E9=9D=A2=E6=9C=89?= =?UTF-8?q?=E7=BC=A9=E6=94=BE=E6=AF=94=E4=BE=8B=E6=97=B6=EF=BC=8C=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8=E5=9D=97=E5=8D=95=E5=85=83=E6=A0=BC=E5=AE=BD=E5=BA=A6?= =?UTF-8?q?=E4=BC=9A=E6=98=BE=E7=A4=BA=E7=BC=A9=E6=94=BE=E7=9A=84=E5=83=8F?= =?UTF-8?q?=E7=B4=A0=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/grid/AbstractGridHeaderMouseHandler.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/grid/AbstractGridHeaderMouseHandler.java b/designer-realize/src/main/java/com/fr/grid/AbstractGridHeaderMouseHandler.java index d9d5cbe53b..97e95a34f4 100644 --- a/designer-realize/src/main/java/com/fr/grid/AbstractGridHeaderMouseHandler.java +++ b/designer-realize/src/main/java/com/fr/grid/AbstractGridHeaderMouseHandler.java @@ -305,11 +305,14 @@ public abstract class AbstractGridHeaderMouseHandler extends MouseInputAdapter { StringBuilder sb = new StringBuilder(); sb.append(String.format("%.2f", new Double(len))) .append('/').append(String.format("%.2f", new Double(tlen))) - .append(unit).append('(') - .append((int)(unitValue.toPixD(resolution))).append('/') - .append((int)(totalUnitValue.toPixD(resolution))) - .append(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Px")) - .append(')'); + .append(unit); + if(!DesignerUIModeConfig.getInstance().simulateWebUIMode()){ + sb.append('(') + .append((int)(unitValue.toPixD(resolution))).append('/') + .append((int)(totalUnitValue.toPixD(resolution))) + .append(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Px")) + .append(')'); + } return sb.toString(); } From b854a4ada2932c2f894a72ab8ebb81e06920ccd9 Mon Sep 17 00:00:00 2001 From: "Jimmy.Zheng" Date: Fri, 23 Sep 2022 13:50:48 +0800 Subject: [PATCH 42/93] =?UTF-8?q?Revert=20"Revert=20"REPORT-70593=20?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E6=8E=A7=E4=BB=B6=E5=90=88=E5=B9=B6=E4=B8=BB?= =?UTF-8?q?=E4=BB=A3=E7=A0=81""?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 911ca18f --- .../com/fr/design/gui/core/WidgetOption.java | 7 +- .../HyperlinkGroupPaneActionProvider.java | 2 + .../com/fr/design/report/SelectImagePane.java | 67 ++++++----- .../buttonicon/widget/picture_widget_16.png | Bin 0 -> 1061 bytes .../widget/picture_widget_designer_bg.png | Bin 0 -> 4933 bytes .../designer/creator/XCreatorUtils.java | 2 + .../fr/design/designer/creator/XPicture.java | 74 ++++++++++++ .../com/fr/design/designer/ui/ImgPanel.java | 111 ++++++++++++++++++ .../AccessiblePictureModelEditor.java | 77 ++++++++++++ .../AccessibleUrlLinkModelEditor.java | 57 +++++++++ .../widget/editors/PictureEditor.java | 17 +++ .../widget/editors/UrlLinkEditor.java | 17 +++ .../widget/renderer/PictureRenderer.java | 15 +++ .../widget/renderer/UrlLinkRenderer.java | 16 +++ .../widget/wrappers/PictureModelWrapper.java | 34 ++++++ .../widget/wrappers/UrlLinkModelWrapper.java | 33 ++++++ .../fr/start/module/DesignerActivator.java | 6 +- .../com/fr/start/preload/ImagePreLoader.java | 1 + 18 files changed, 499 insertions(+), 37 deletions(-) rename {designer-realize => designer-base}/src/main/java/com/fr/design/report/SelectImagePane.java (96%) create mode 100644 designer-base/src/main/resources/com/fr/design/images/buttonicon/widget/picture_widget_16.png create mode 100644 designer-base/src/main/resources/com/fr/design/images/form/designer/widget/picture_widget_designer_bg.png create mode 100644 designer-form/src/main/java/com/fr/design/designer/creator/XPicture.java create mode 100644 designer-form/src/main/java/com/fr/design/designer/ui/ImgPanel.java create mode 100644 designer-form/src/main/java/com/fr/design/mainframe/widget/accessibles/AccessiblePictureModelEditor.java create mode 100644 designer-form/src/main/java/com/fr/design/mainframe/widget/accessibles/AccessibleUrlLinkModelEditor.java create mode 100644 designer-form/src/main/java/com/fr/design/mainframe/widget/editors/PictureEditor.java create mode 100644 designer-form/src/main/java/com/fr/design/mainframe/widget/editors/UrlLinkEditor.java create mode 100644 designer-form/src/main/java/com/fr/design/mainframe/widget/renderer/PictureRenderer.java create mode 100644 designer-form/src/main/java/com/fr/design/mainframe/widget/renderer/UrlLinkRenderer.java create mode 100644 designer-form/src/main/java/com/fr/design/mainframe/widget/wrappers/PictureModelWrapper.java create mode 100644 designer-form/src/main/java/com/fr/design/mainframe/widget/wrappers/UrlLinkModelWrapper.java diff --git a/designer-base/src/main/java/com/fr/design/gui/core/WidgetOption.java b/designer-base/src/main/java/com/fr/design/gui/core/WidgetOption.java index 258f558a71..4c9db5a6a0 100644 --- a/designer-base/src/main/java/com/fr/design/gui/core/WidgetOption.java +++ b/designer-base/src/main/java/com/fr/design/gui/core/WidgetOption.java @@ -1,6 +1,7 @@ package com.fr.design.gui.core; import com.fr.base.BaseUtils; +import com.fr.base.svg.IconUtils; import com.fr.form.ui.Button; import com.fr.form.ui.CheckBox; import com.fr.form.ui.CheckBoxGroup; @@ -14,6 +15,7 @@ import com.fr.form.ui.ListEditor; import com.fr.form.ui.MultiFileEditor; import com.fr.form.ui.NumberEditor; import com.fr.form.ui.Password; +import com.fr.form.ui.PictureWidget; import com.fr.form.ui.RadioGroup; import com.fr.form.ui.TextArea; import com.fr.form.ui.TextEditor; @@ -142,7 +144,7 @@ public abstract class WidgetOption implements Serializable { */ public static WidgetOption[] getFormWidgetIntance() { return new WidgetOption[]{TEXTEDITOR, LABEL, FREEBUTTON, COMBOBOX, COMBOCHECKBOX, DATEEDITOR, - NUMBEREDITOR, TREECOMBOBOX, RADIOGROUP, CHECKBOXGROUP, TEXTAREA, PASSWORD, CHECKBOX, TREE, MULTI_FILEEDITOR}; + NUMBEREDITOR, TREECOMBOBOX, RADIOGROUP, CHECKBOXGROUP, TEXTAREA, PASSWORD, CHECKBOX, TREE, MULTI_FILEEDITOR,PICTURE}; } public static final WidgetOption DATEEDITOR = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Widget_Type_Date"), @@ -214,4 +216,7 @@ public abstract class WidgetOption implements Serializable { public static final WidgetOption IFRAMEDITOR = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Form_Iframe"), BaseUtils.readIcon("/com/fr/web/images/form/resources/iframe_16.png"), IframeEditor.class); + public static final WidgetOption PICTURE = WidgetOptionFactory.createByWidgetClass(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Widget_Type_Image"), IconUtils.readIcon("/com/fr/web/images/form/resources/picture_widget_16.png"), + PictureWidget.class); + } diff --git a/designer-base/src/main/java/com/fr/design/gui/frpane/HyperlinkGroupPaneActionProvider.java b/designer-base/src/main/java/com/fr/design/gui/frpane/HyperlinkGroupPaneActionProvider.java index 525bb5b792..be0d8e8523 100644 --- a/designer-base/src/main/java/com/fr/design/gui/frpane/HyperlinkGroupPaneActionProvider.java +++ b/designer-base/src/main/java/com/fr/design/gui/frpane/HyperlinkGroupPaneActionProvider.java @@ -8,6 +8,8 @@ import com.fr.design.designer.TargetComponent; */ public interface HyperlinkGroupPaneActionProvider { + String XML_TAG = "HyperlinkGroupPane"; + /** * 刷新面板展示 * diff --git a/designer-realize/src/main/java/com/fr/design/report/SelectImagePane.java b/designer-base/src/main/java/com/fr/design/report/SelectImagePane.java similarity index 96% rename from designer-realize/src/main/java/com/fr/design/report/SelectImagePane.java rename to designer-base/src/main/java/com/fr/design/report/SelectImagePane.java index bcad15c76c..7781233aac 100644 --- a/designer-realize/src/main/java/com/fr/design/report/SelectImagePane.java +++ b/designer-base/src/main/java/com/fr/design/report/SelectImagePane.java @@ -13,22 +13,24 @@ import com.fr.report.cell.Elem; import com.fr.report.cell.cellattr.CellImage; import com.fr.report.cell.painter.CellImagePainter; import com.fr.stable.Constants; - -import javax.swing.BorderFactory; -import javax.swing.ButtonGroup; -import javax.swing.JFileChooser; -import javax.swing.JPanel; -import javax.swing.JScrollPane; import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; +import javax.swing.BorderFactory; +import javax.swing.ButtonGroup; +import javax.swing.JFileChooser; +import javax.swing.JPanel; +import javax.swing.JScrollPane; /** - * 这个类主要用于插入图片时的设置 - */ + *

这个类主要用于插入图片时的设置

+ *

这个类原本在designer-realize包下面,现在表单也可选择图片,所以应该抽为公用的base包。包名不变,应该不影响插件使用

+ * + * @author Jimmy.Zheng created on 2022/8/11 21:22 + **/ public class SelectImagePane extends BasicPane { private ImagePreviewPane previewPane = null; @@ -39,8 +41,31 @@ public class SelectImagePane extends BasicPane { private UIRadioButton adjustRadioButton = null; private Style imageStyle = null; + ActionListener layoutActionListener = new ActionListener() { + @Override + public void actionPerformed(ActionEvent evt) { + setImageStyle(); + changeImageStyle(); + } + }; private File imageFile; + /** + * Select picture. + */ + ActionListener selectPictureActionListener = new ActionListener() { + + @Override + public void actionPerformed(ActionEvent evt) { + int returnVal = imageFileChooser + .showOpenDialog(SelectImagePane.this); + if (returnVal != JFileChooser.CANCEL_OPTION) { + File selectedFile = imageFileChooser.getSelectedFile(); + imageFile = selectedFile; + ImgChooseWrapper.getInstance(previewPane, imageFileChooser, imageStyle, null).dealWithImageFile(returnVal); + } + } + }; public SelectImagePane() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); @@ -102,23 +127,6 @@ public class SelectImagePane extends BasicPane { imageFileChooser.setMultiSelectionEnabled(false); } - /** - * Select picture. - */ - ActionListener selectPictureActionListener = new ActionListener() { - - @Override - public void actionPerformed(ActionEvent evt) { - int returnVal = imageFileChooser - .showOpenDialog(SelectImagePane.this); - if (returnVal != JFileChooser.CANCEL_OPTION) { - File selectedFile = imageFileChooser.getSelectedFile(); - imageFile = selectedFile; - ImgChooseWrapper.getInstance(previewPane, imageFileChooser, imageStyle, null).dealWithImageFile(returnVal); - } - } - }; - // 调整图片样式,只有水平和垂直对齐以及拉伸。相对于背景,平铺不予考虑。 private void changeImageStyle() { previewPane.setImageStyle(this.imageStyle); @@ -137,15 +145,6 @@ public class SelectImagePane extends BasicPane { } } - ActionListener layoutActionListener = new ActionListener() { - - @Override - public void actionPerformed(ActionEvent evt) { - setImageStyle(); - changeImageStyle(); - } - }; - @Override protected String title4PopupWindow() { return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Image"); diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/widget/picture_widget_16.png b/designer-base/src/main/resources/com/fr/design/images/buttonicon/widget/picture_widget_16.png new file mode 100644 index 0000000000000000000000000000000000000000..fbf334ad22a2e3a9985830d225959a6ea40379b0 GIT binary patch literal 1061 zcmXw%drVUY6vj_`Z{LOD#Mvv1!WaS)2ZL>*!Ic`+!Nd_BgDhZeMr2t8N zlU$Kp{GO~qQLd2HpFa7Aq5uH7SzIKkR6me!P?Q)+gJb{+Xem_xmmUP01i<7nfg%Y& z5EQtq7&h*A#jS4yMZvH?#lP-Owgs1WVzDXHn>g6#1Q`LHwG}9y8|Y6kfnWd_Y_!1S zGVL+j4JkH{IR*DSMQZ^wW^tH!Zif|(FmW)2jGz!VX1={k-8=30nlSk9!1Mf<|HoJ? z7BE_kwVl^H8$zTLn7lANCnCUUMqwRcz($Y&7ubPL0W7X8zTnMqZT`nIWTk*)15i&f zh{0%p%#2LY%!0lI;ou+?asW56AmCwvFF=AbUZKsXFQk|ZlNlRr1_zmdqGXt8XR z;eHYdF_}zsyVbEZYj;wOFJhoMOenb4=&()(!EUz!n@0eR4&V&{Y)eNWHqrMiKH%_#yf^hOl=^;M}Vop`2+HQmg=fr(Ke6C zj&6zEhC{LZ0WG~X!p{hY#5uKXxnJZHo#U0kt(UqdCo05Zsn%`zvzXZd^0QXT7oM=G zO0l>2S1lpotI~q06Jc9vSM~^s)u+V^m3OPKxxP6p-gFs@Uu9rq+hBLZkL%^k0|7D6 z(7a{Wmz&=lmhN$P8-kx^@ssvZ!p4vLgdXL0*!8M6g!$;4Fn{6J?4%p_Hg#E47pBOz z9c8TT4~HHPcNlK}cqRQRaUybDwtR;O;>xapo+CMf&F{;X&oo~&;FcG=zUrx=9*us0 zJHD-GI8yt|Nmo4@Bs~`YU%}?G9)c|UMw?y8ccKQGRh2>!U_~udP_>AeTx}BqgcYJu+yPIDy zdlN{!t?J^jNAI3lb1dY0$ot`?ouT5RM2@I|ws8Rv6BA=@ZVrz>={x-B(#}PPpiGKx z24VVy62LPV+;8K&sq@7mc=BP#4uY)W-_3GI`wq{mbO?=_Q>_+BBusJsKYv?S?Ne`f z{jg*5=?#7zRd-0|15n{Z{W-h@psLnBB#(OX3mj=>XEYkAbUL)mT3@GKzVrI^>y8T1 z&TSBW#xmdKN0u1|sKe_P?N3cfDX3fs96Z_7#1=O}5FVAskHyNY=i^r@FYWwFZuD?- zbIbXMIsv^v;3JilOINM3+lP_q0Fg8P$GURC$aU@V(s%FP8HmK@NtorfV#NxDj4)J| zks6vmH3JP};8-kf7SPnu6uA(z9QL{1Jp`L!J?iVS4SRbZS{7J z1DD-T@dO&(6&naYx4{Gsx`mQ!il&85Ns$sIGUK`h?RH&6tyXKWA_&{mCplfk85)_v znH0TMG^qa0G1l$`AX_{@0q_jPE%*iSBpFI>3cfp9Q^T`=Z-^jBibSa*KizA>iaf&x z^M|vDjX&K#x0w*F;2k`8@P{LdaE`UP+eOUmNIdr~BD3~1cXe|E88fgd$bPjUlUmi3 zUjU+@B+&5G>Ya$7tgw=u8_1&CPjj{I#H6~VzQoKS%%Y^dJ;?KWU~&t}wHVUGDq&}5 zqT7A7hlirPXE|^zium&%&-?_eX;O{82vPjbmK_3?S?C{6z8$|(Krw@VFxMv)G@tEC zftS+2vI^`O4D zY8pe%AJ~~$9ApZMw(B&ouSs3R$&=V6JweLtN~tJA67?^8^v*OS~BLR9qGd`g-0knK02=x7{&`I50wInE~wGH4*E0_+*SxlmKwGOdrBex z25i3%>bOZ?M8E;KX)R-knta3wouOB@y?Gd1w^p%Mo4ylpK|Wat^fXfZ5kN|lD6ulK zd;yqhYj`n9j=Nk!GZAxlBnfz=A_>1!TXQ=DLd3aHW6RF3UvSaU6SX>bY~n{0<><+U z6$!_!BaKmkv3+$Tv6a(Hd+MzWEAJrOjIfd4P&tJg`b!iAZkZ*%L55IhfK;=T7AM8S1H3R_Nhx>(Bl%b}Ame zYL2P~>Laq;!!rKMJdthAPJnRSn2?%bgUqUp|Mk@>$-D%N2}Q1`mvKrs5GhN*91 zq1L@h1E3^Xv_)Y}J_!oK$)b1+ zwmf|RT+U zBKzRybzm@(5`<@RWeOvf7KTHqJ9aN{WtMuvwc(AA&{%bmhF(FzTv>kGO%go5i$Pf*1 z2rtz(Fn>UytqcGoapR&$E3O18Uf5UB-wH$QGfhF93j1qCfG$>Z%d)SpuX~s4gpv}P zNswiGd3hnl{~2{+h#KG$1JEbH*dCapZ7DZD|I6_OrJ^8{ds{H*@Wxy5a`}M+2h>kE zL2*d0`RxQTTExUj8o_cdLdyMf_A^?e%r@=xi5NGsmrmDMX&BXed*+KF511AmXJ~_( zb?~BG$Js)xSEzVJwylE>1&e$|mTE_1(JRz~9kQ3%{7n4=5B=xOqfkY%A7;}L%f$Jt(xgg~B-*f#JUp|Y zIZJ!A0C3Z&qlvC0i7k3BP_dtSNs6YWh<~G`E0Dl##_ll6=MlFAli>B!7$M2p2h5U; zGf5rv>L4;V$gsku)5YA=3w+zbRH zZU*>861=|A(r0$TA-RSew)HD`9=+r15X#kM`It@Sd0;ks0b= zT;64qW5Lb*x<$#As&GmaXT?z~(mxfG+UN|~AyN4(?D0}XH8GllTGNevVd!Q~r%wi8 zyNj}-6)l?IK*M{8;!Ry)A)4^SME)`mCjt4&-fg6?-a$c@w~-_hkv%U1{H0F%Sutc& zD>Rl6I~IDuGKt;!yApmbV1#IV;XHSaj1NU)s@bt6D2l3u_X?PjiblQ`&yKt}J6GG*Am|1;h@v@k`#Ylif+(i5VE%xn z)oAY4ym-D~{iQHo+_h`hM3+%tHdA~*LbDny^=N3IO|5 zH?2^X6}3l`Wkpx7U4ux1^&5R^c#)=iVh2VjCT*HW)2o#$GMCpPQl%^c%Q^? z0iO}@)9Rgt*eZLaFF29+J?3!_<*~kYQj8ne`3?^69=l^}rP%X1YhT~yk(Prv=Uj{V z>bh|ET%FO8;MSH5Pu+SOC5swZZZnMxIhvS#C$O%f7SEu)1xD z^U&ZdRP;N}n`f4`sQb*BqUM^v-;PuC|Ln=TWj;~I#*&nnp$FHs%@2OjRR0X$6^Uxr zHb@uhO`$cr6aDHncu(~RiK)k(TYQe4Iqcc)Lv?V=dHa||$N`}|J^h9RmkutMTlex0 zb_+-Wz=;2XGEB)hUBiIjvw|rx3A<^Fae^kgwqZt>Sn%}!&I(@eqK>>O0P#_3i3N8e z!c`omdC);_9xc5W&aCz+)-e?bNg_el(oUF%IGRam0kg<|_Pp$0?kmP?QF_U}kl7GE zG9t2QZJ{Tf9qT6v>v7Ae^@ax*82`qddo$4)&_x% z9^yakTI#~=vvS`*w+>21_E}{PAc=QEtTw;p2jJ;Caa51mgd)5|)Ng_3NyP6ua6b|I zn1Jk?sl3b5akP&fPy({dx34C|K7aq>E-L*rwq<|6CqBDJoGm1+nIfKtZCiJe^Ur%s z@SLzMKjL$=cD8V$Kr?zHOPopx5X{V6URVqT9rT3{ zXA=56q*7_nEY?K5If4&_e%Qsiihh#UhU~bv90KM9*@!S^w#$-RAPYa zBT{@|bEy1}1x$q_yR?blL-O`+74Yw^y za-s(~totjXcY3RuNxI<3K@Ai0QW>ns0SD;=6uV6^yIoCrScP1>dX?s8sMUbFLxpzo z%RtgbU)}>Jyno>wJnRx~!POn3RtKz8v+BP<1^pZcfr-iOx6LkMmhxQW1Hs!c_p$wd z7TZhl-&L7g37L;FtSTh<)=qC*-%3Rk{F9^s@uaK3={EWQ|D?$im~5W&*A!s!8h;K3 NL`TL%oDNfH{|_#1j literal 0 HcmV?d00001 diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java b/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java index 5e7807698a..10a8fbfb1f 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java @@ -47,6 +47,7 @@ import com.fr.form.ui.MultiFileEditor; import com.fr.form.ui.NameWidget; import com.fr.form.ui.NumberEditor; import com.fr.form.ui.Password; +import com.fr.form.ui.PictureWidget; import com.fr.form.ui.Radio; import com.fr.form.ui.RadioGroup; import com.fr.form.ui.TextArea; @@ -183,6 +184,7 @@ public class XCreatorUtils { objectMap.put(CardSwitchButton.class, XCardSwitchButton.class); objectMap.put(CardAddButton.class, XCardAddButton.class); objectMap.put(WidgetErrorMarker.class, ErrorCreator.class); + objectMap.put(PictureWidget.class, XPicture.class); } private static void reInitExtra() { diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XPicture.java b/designer-form/src/main/java/com/fr/design/designer/creator/XPicture.java new file mode 100644 index 0000000000..7dd23bd4ce --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XPicture.java @@ -0,0 +1,74 @@ +package com.fr.design.designer.creator; + +import com.fr.design.designer.ui.ImgPanel; +import com.fr.design.i18n.Toolkit; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.mainframe.widget.editors.PictureEditor; +import com.fr.design.mainframe.widget.editors.UrlLinkEditor; +import com.fr.design.mainframe.widget.renderer.PictureRenderer; +import com.fr.design.mainframe.widget.renderer.UrlLinkRenderer; +import com.fr.form.ui.PictureWidget; +import com.fr.general.IOUtils; +import com.fr.stable.ArrayUtils; +import java.awt.Dimension; +import java.awt.Image; +import java.beans.IntrospectionException; +import javax.swing.JComponent; + +/** +* +*

图片控件的creator

+* +* @author Jimmy.Zheng created on 2022/8/11 21:16 +**/ +public class XPicture extends XWidgetCreator { + + public XPicture(PictureWidget widget, Dimension dimension) { + super(widget, dimension); + } + + @Override + protected String getIconName() { + return "picture_widget_16.png"; + } + + @Override + public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException { + return (CRPropertyDescriptor[]) ArrayUtils.addAll(super.supportedDescriptor(), new CRPropertyDescriptor[]{ + new CRPropertyDescriptor("picUrl", toData().getClass()) + .setI18NName(Toolkit.i18nText("Fine-Design_Basic_Widget_Type_Image")) + .setEditorClass(PictureEditor.class) + .setRendererClass(PictureRenderer.class) + .putKeyValue("category", "Fine-Design_Basic_Advanced"), + new CRPropertyDescriptor("urlLink", toData().getClass()) + .setI18NName(Toolkit.i18nText("Fine-Design_Basic_Hyperlink")) + .setEditorClass(UrlLinkEditor.class) + .setRendererClass(UrlLinkRenderer.class) + .putKeyValue( + "category", "Fine-Design_Basic_Advanced")}); + } + + @Override + protected JComponent initEditor() { + PictureWidget pictureWidget = (PictureWidget) this.data; + if (this.editor == null) { + this.editor = FRGUIPaneFactory.createBorderLayout_S_Pane(); + Object value = pictureWidget.getPicUrl().getValue(); + ImgPanel imgPanel = new ImgPanel(); + if (value instanceof Image) { + imgPanel.setBackgroundImage((Image) value); + imgPanel.setImageDisplayMode(pictureWidget.getShowType()); + } else { + imgPanel.setBackgroundImage(IOUtils.readImage("com/fr/design/images/form/designer/widget/picture_widget_designer_bg.png")); + imgPanel.setImageDisplayMode(0); + } + this.editor.add(imgPanel, "Center"); + } + return this.editor; + } + + @Override + public boolean canEnterIntoParaPane() { + return false; + } +} diff --git a/designer-form/src/main/java/com/fr/design/designer/ui/ImgPanel.java b/designer-form/src/main/java/com/fr/design/designer/ui/ImgPanel.java new file mode 100644 index 0000000000..05aa8ba465 --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/designer/ui/ImgPanel.java @@ -0,0 +1,111 @@ +package com.fr.design.designer.ui; + +import com.fr.general.ImageWithSuffix; +import java.awt.Graphics; +import java.awt.Image; +import javax.swing.JComponent; + + +/** +* +*

图片控件中的已选图片展示面板

+* +* @author Jimmy.Zheng created on 2022/8/11 21:17 +**/ +public class ImgPanel extends JComponent { + private static final long serialVersionUID = 1L; + private Image backgroundImage; + private int imageDisplayMode; + private int modeIndex; + + public ImgPanel() { + this(null, 0); + } + + public ImgPanel(Image image, int modeName) { + setBackgroundImage(image); + setImageDisplayMode(modeName); + } + + public void setBackgroundImage(Image image) { + this.backgroundImage = image; + repaint(); + } + + public Image getBackgroundImage() { + return this.backgroundImage; + } + + public void setImageDisplayMode(int modeName) { + if (modeName == 1) { + this.modeIndex = 0; + } + + if (modeName == 0) { + this.imageDisplayMode = 0; + this.modeIndex = 1; + } + + if (modeName == 2) { + this.imageDisplayMode = 2; + this.modeIndex = 2; + } + if (modeName == 4) { + this.imageDisplayMode = 4; + this.modeIndex = 3; + } + repaint(); + } + + public int getImageDisplayMode() { + return this.imageDisplayMode; + } + + @Override + protected void paintComponent(Graphics g) { + super.paintComponent(g); + + if (this.backgroundImage != null) { + if (this.backgroundImage instanceof ImageWithSuffix) { + this.backgroundImage = ((ImageWithSuffix) backgroundImage).getImage(); + } + int width = getWidth(); + int height = getHeight(); + int imageWidth = this.backgroundImage.getWidth(this); + int imageHeight = this.backgroundImage.getHeight(this); + + switch (this.modeIndex) { + case 0: + int x = (width - imageWidth) / 2; + int y = (height - imageHeight) / 2; + g.drawImage(this.backgroundImage, x, y, this); + break; + case 1: + for (int ix = 0; ix < width; ix += imageWidth) { + for (int iy = 0; iy < height; iy += imageHeight) { + g.drawImage(this.backgroundImage, ix, iy, this); + } + } + + break; + case 2: + g.drawImage(this.backgroundImage, 0, 0, width, height, this); + break; + case 3: + double sx = 1.0 * width / imageWidth; + double sy = 1.0 * height / imageHeight; + + if (sx > sy) { + sx = sy; + width = (int) (sx * imageWidth); + } else { + sy = sx; + height = (int) (sy * imageHeight); + } + int xx = (getWidth() - width) / 2; + int yy = (getHeight() - height) / 2; + g.drawImage(this.backgroundImage, xx, yy, width, height, this); + } + } + } +} diff --git a/designer-form/src/main/java/com/fr/design/mainframe/widget/accessibles/AccessiblePictureModelEditor.java b/designer-form/src/main/java/com/fr/design/mainframe/widget/accessibles/AccessiblePictureModelEditor.java new file mode 100644 index 0000000000..9e72b5c2ac --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/mainframe/widget/accessibles/AccessiblePictureModelEditor.java @@ -0,0 +1,77 @@ +package com.fr.design.mainframe.widget.accessibles; + +import com.fr.base.Style; +import com.fr.design.DesignModelAdapter; +import com.fr.design.designer.creator.XPicture; +import com.fr.design.designer.ui.ImgPanel; +import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.mainframe.DesignerContext; +import com.fr.design.mainframe.WidgetPropertyPane; +import com.fr.design.mainframe.widget.wrappers.PictureModelWrapper; +import com.fr.design.report.SelectImagePane; +import com.fr.form.ui.PictureWidget; +import com.fr.general.ComparatorUtils; +import com.fr.report.cell.FloatElement; +import com.fr.report.cell.cellattr.CellImage; +import javax.swing.JComponent; + + +/** +* +*

图片控件的图片选择、编辑器

+* +* @author Jimmy.Zheng created on 2022/8/11 21:13 +**/ +public class AccessiblePictureModelEditor extends UneditableAccessibleEditor { + protected FloatElement element = new FloatElement(); + private PictureWidget pic; + + public AccessiblePictureModelEditor(PictureWidget pic) { + super(new PictureModelWrapper()); + this.pic = pic; + } + + @Override + public FloatElement getValue() { + return (FloatElement) super.getValue(); + } + + @Override + protected void showEditorPane() { + final SelectImagePane imageEditorPane = new SelectImagePane(); + if (super.getValue() != null) { + this.element = ((FloatElement) super.getValue()); + } + this.element.setStyle(Style.getInstance().deriveImageLayout(this.pic.getShowType())); + imageEditorPane.populate(this.element); + final Object oldValue = this.element.getValue(); + final Style oldStyle = this.element.getStyle(); + final String oldname = this.element.getName(); + imageEditorPane.showWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { + @Override + public void doOk() { + CellImage cellImage = imageEditorPane.update(); + if ((!ComparatorUtils.equals(cellImage.getImage(), oldValue)) || (!ComparatorUtils.equals(cellImage.getStyle(), oldStyle))) { + AccessiblePictureModelEditor.this.element.setValue(cellImage.getImage()); + AccessiblePictureModelEditor.this.element.setStyle(cellImage.getStyle()); + AccessiblePictureModelEditor.this.element.setName(imageEditorPane.getSelectedImage() == null ? oldname : imageEditorPane.getSelectedImage().toString()); + AccessiblePictureModelEditor.this.setValue(AccessiblePictureModelEditor.this.element); + AccessiblePictureModelEditor.this.pic.setShowType(cellImage.getStyle().getImageLayout()); + AccessiblePictureModelEditor.this.pic.setPicUrl(element); + ImgPanel p = AccessiblePictureModelEditor.this.getCurrentImgPanel(); + p.setBackgroundImage(cellImage.getBufferImage()); + p.setImageDisplayMode(cellImage.getStyle().getImageLayout()); + AccessiblePictureModelEditor.this.fireStateChanged(); + DesignModelAdapter d = DesignModelAdapter.getCurrentModelAdapter(); + d.fireTargetModified(); + } + } + }).setVisible(true); + } + + private ImgPanel getCurrentImgPanel() { + XPicture xPicture = (XPicture) WidgetPropertyPane.getInstance().getEditingFormDesigner().getSelectionModel().getSelection().getSelectedCreator(); + JComponent editor = (JComponent) xPicture.getComponent(0); + return (ImgPanel) editor.getComponent(0); + } +} \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/mainframe/widget/accessibles/AccessibleUrlLinkModelEditor.java b/designer-form/src/main/java/com/fr/design/mainframe/widget/accessibles/AccessibleUrlLinkModelEditor.java new file mode 100644 index 0000000000..2dd4b54991 --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/mainframe/widget/accessibles/AccessibleUrlLinkModelEditor.java @@ -0,0 +1,57 @@ +package com.fr.design.mainframe.widget.accessibles; + +import com.fr.design.DesignModelAdapter; +import com.fr.design.dialog.BasicDialog; +import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.gui.frpane.HyperlinkGroupPaneActionProvider; +import com.fr.design.gui.xpane.FormHyperlinkGroupPane; +import com.fr.design.mainframe.DesignerContext; +import com.fr.design.mainframe.widget.wrappers.UrlLinkModelWrapper; +import com.fr.js.NameJavaScriptGroup; +import com.fr.stable.bridge.StableFactory; + +/** + *

表单图片控件的链接编辑器

+ * @author Jimmy + */ +public class AccessibleUrlLinkModelEditor extends UneditableAccessibleEditor { + private FormHyperlinkGroupPane hyperlinkPane; + + public AccessibleUrlLinkModelEditor() { + super(new UrlLinkModelWrapper()); + } + /** + * 原插件使用 + *

DesignerContext.getDesignerFrame().getSelectedJTemplate().getHyperLinkPaneNoPop( + * HyperlinkGroupPaneActionImpl.getInstance()));

获取{@see this.hyperlinkPane} + * 合并插件依赖不到,换种方式 用{@see DesignerActivator将实例注册了} + */ + @Override + protected void showEditorPane() { + if (this.hyperlinkPane == null) { + HyperlinkGroupPaneActionProvider hyperlinkGroupPaneActionProvider = StableFactory.getMarkedInstanceObjectFromClass(HyperlinkGroupPaneActionProvider.XML_TAG,HyperlinkGroupPaneActionProvider.class); + this.hyperlinkPane = (FormHyperlinkGroupPane) DesignerContext.getDesignerFrame().getSelectedJTemplate().getHyperLinkPaneNoPop( + hyperlinkGroupPaneActionProvider); + } + BasicDialog dialog = this.hyperlinkPane.showWindow(DesignerContext.getDesignerFrame()); + dialog.addDialogActionListener(new DialogActionAdapter() { + @Override + public void doOk() { + super.doOk(); + NameJavaScriptGroup hyperlinks = AccessibleUrlLinkModelEditor.this.hyperlinkPane.updateJSGroup(); + AccessibleUrlLinkModelEditor.this.setValue(hyperlinks); + AccessibleUrlLinkModelEditor.this.fireStateChanged(); + DesignModelAdapter d = DesignModelAdapter.getCurrentModelAdapter(); + d.fireTargetModified(); + } + }); + this.hyperlinkPane.populate(getValue()); + + dialog.setVisible(true); + } + + @Override + public NameJavaScriptGroup getValue() { + return (NameJavaScriptGroup) super.getValue(); + } +} diff --git a/designer-form/src/main/java/com/fr/design/mainframe/widget/editors/PictureEditor.java b/designer-form/src/main/java/com/fr/design/mainframe/widget/editors/PictureEditor.java new file mode 100644 index 0000000000..c7bbff80a3 --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/mainframe/widget/editors/PictureEditor.java @@ -0,0 +1,17 @@ +package com.fr.design.mainframe.widget.editors; + +import com.fr.design.mainframe.widget.accessibles.AccessiblePictureModelEditor; +import com.fr.design.mainframe.widget.accessibles.AccessiblePropertyEditor; +import com.fr.form.ui.PictureWidget; +/** +* +*

图片控件的图片选择、编辑器

+* +* @author Jimmy.Zheng created on 2022/8/11 21:15 +**/ +public class PictureEditor extends AccessiblePropertyEditor { + + public PictureEditor(Object o) { + super(new AccessiblePictureModelEditor((PictureWidget) o)); + } +} diff --git a/designer-form/src/main/java/com/fr/design/mainframe/widget/editors/UrlLinkEditor.java b/designer-form/src/main/java/com/fr/design/mainframe/widget/editors/UrlLinkEditor.java new file mode 100644 index 0000000000..195e8f5250 --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/mainframe/widget/editors/UrlLinkEditor.java @@ -0,0 +1,17 @@ +package com.fr.design.mainframe.widget.editors; + +import com.fr.design.mainframe.widget.accessibles.AccessiblePropertyEditor; +import com.fr.design.mainframe.widget.accessibles.AccessibleUrlLinkModelEditor; + +/** +* +*

图片控件的链接编辑器

+* +* @author Jimmy.Zheng created on 2022/8/11 21:19 +**/ +public class UrlLinkEditor extends AccessiblePropertyEditor { + + public UrlLinkEditor() { + super(new AccessibleUrlLinkModelEditor()); + } +} \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/mainframe/widget/renderer/PictureRenderer.java b/designer-form/src/main/java/com/fr/design/mainframe/widget/renderer/PictureRenderer.java new file mode 100644 index 0000000000..82fcc85b43 --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/mainframe/widget/renderer/PictureRenderer.java @@ -0,0 +1,15 @@ +package com.fr.design.mainframe.widget.renderer; + +import com.fr.design.mainframe.widget.wrappers.PictureModelWrapper; + +/** + *

图片控件的图片编辑器的EncoderCellRenderer

+ * + * @author Jimmy.Zheng created on 2022/8/11 21:29 + **/ +public class PictureRenderer extends EncoderCellRenderer { + + public PictureRenderer() { + super(new PictureModelWrapper()); + } +} diff --git a/designer-form/src/main/java/com/fr/design/mainframe/widget/renderer/UrlLinkRenderer.java b/designer-form/src/main/java/com/fr/design/mainframe/widget/renderer/UrlLinkRenderer.java new file mode 100644 index 0000000000..a81187d2d5 --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/mainframe/widget/renderer/UrlLinkRenderer.java @@ -0,0 +1,16 @@ +package com.fr.design.mainframe.widget.renderer; + + +import com.fr.design.mainframe.widget.wrappers.UrlLinkModelWrapper; + +/** + *

图片控件的链接编辑器的EncoderCellRenderer

+ * + * @author Jimmy.Zheng created on 2022/8/11 21:29 + **/ +public class UrlLinkRenderer extends EncoderCellRenderer { + + public UrlLinkRenderer() { + super(new UrlLinkModelWrapper()); + } +} \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/mainframe/widget/wrappers/PictureModelWrapper.java b/designer-form/src/main/java/com/fr/design/mainframe/widget/wrappers/PictureModelWrapper.java new file mode 100644 index 0000000000..ed9fd0a4ac --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/mainframe/widget/wrappers/PictureModelWrapper.java @@ -0,0 +1,34 @@ +package com.fr.design.mainframe.widget.wrappers; + +import com.fr.design.Exception.ValidationException; +import com.fr.design.designer.properties.Decoder; +import com.fr.design.designer.properties.Encoder; +import com.fr.report.cell.FloatElement; +import com.fr.stable.StringUtils; + +/** + *

图片选择器 {@link com.fr.design.mainframe.widget.accessibles.AccessiblePictureModelEditor}的 Wrapper

+ *

插件中直接移入,未作改动

+ * + * @author Jimmy.Zheng created on 2022/8/11 21:25 + **/ +public class PictureModelWrapper implements Encoder, Decoder { + + @Override + public FloatElement decode(String txt) { + return null; + } + + @Override + public void validate(String txt) throws ValidationException { + // do nothing + } + + @Override + public String encode(FloatElement v) { + if (v != null) { + return v.getName(); + } + return StringUtils.EMPTY; + } +} diff --git a/designer-form/src/main/java/com/fr/design/mainframe/widget/wrappers/UrlLinkModelWrapper.java b/designer-form/src/main/java/com/fr/design/mainframe/widget/wrappers/UrlLinkModelWrapper.java new file mode 100644 index 0000000000..a892065ad7 --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/mainframe/widget/wrappers/UrlLinkModelWrapper.java @@ -0,0 +1,33 @@ +package com.fr.design.mainframe.widget.wrappers; + +import com.fr.design.Exception.ValidationException; +import com.fr.design.designer.properties.Decoder; +import com.fr.design.designer.properties.Encoder; +import com.fr.js.NameJavaScriptGroup; + +/** + *

链接选择器 {@link com.fr.design.mainframe.widget.accessibles.AccessibleUrlLinkModelEditor}的 Wrapper

+ *

插件中直接移入,未作改动

+ * + * @author Jimmy.Zheng created on 2022/8/11 21:28 + **/ +public class UrlLinkModelWrapper implements Encoder, Decoder { + + @Override + public NameJavaScriptGroup decode(String txt) { + return null; + } + + @Override + public void validate(String txt) throws ValidationException { + // do nothing + } + + @Override + public String encode(NameJavaScriptGroup v) { + if (v.size() > 0) { + return v.getNameHyperlink(0).getName(); + } + return null; + } +} \ No newline at end of file diff --git a/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java b/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java index af32f596c4..92d1fc6a4a 100644 --- a/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java +++ b/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java @@ -41,6 +41,7 @@ import com.fr.design.form.parameter.FormParaDesigner; import com.fr.design.fun.ElementUIProvider; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; +import com.fr.design.gui.frpane.HyperlinkGroupPaneActionProvider; import com.fr.design.hyperlink.ReportletHyperlinkPane; import com.fr.design.hyperlink.WebHyperlinkPane; import com.fr.design.hyperlink.popup.MobilePopupPane; @@ -55,6 +56,7 @@ import com.fr.design.login.message.DesignerMessageHelper; import com.fr.design.login.socketio.LoginAuthServer; import com.fr.design.mainframe.BaseJForm; import com.fr.design.mainframe.FormHierarchyTreePane; +import com.fr.design.mainframe.HyperlinkGroupPaneActionImpl; import com.fr.design.mainframe.InformationCollector; import com.fr.design.mainframe.JTemplateEvent; import com.fr.design.mainframe.WidgetPropertyPane; @@ -143,14 +145,13 @@ import com.fr.start.common.DesignerStartupPool; import com.fr.task.Once; import com.fr.workspace.WorkContext; import com.fr.xml.ReportXMLUtils; - -import javax.swing.SwingWorker; import java.awt.Image; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.concurrent.CompletableFuture; +import javax.swing.SwingWorker; /** * Created by juhaoyu on 2018/1/31. @@ -404,6 +405,7 @@ public class DesignerActivator extends Activator implements Prepare { private static void registerOtherPane() { StableFactory.registerMarkedClass(BBSGuestPaneProvider.XML_TAG, BBSGuestPane.class); + StableFactory.registerMarkedObject(HyperlinkGroupPaneActionProvider.XML_TAG, HyperlinkGroupPaneActionImpl.getInstance()); } /** diff --git a/designer-realize/src/main/java/com/fr/start/preload/ImagePreLoader.java b/designer-realize/src/main/java/com/fr/start/preload/ImagePreLoader.java index 24d23565c0..aad478348f 100644 --- a/designer-realize/src/main/java/com/fr/start/preload/ImagePreLoader.java +++ b/designer-realize/src/main/java/com/fr/start/preload/ImagePreLoader.java @@ -242,6 +242,7 @@ public class ImagePreLoader { "com/fr/design/images/buttonicon/widget/label_16_normal.svg", "com/fr/web/images/form/resources/button_16.png", "com/fr/design/images/buttonicon/widget/button_16.png", + "com/fr/web/images/form/resources/picture_widget_16.png", "com/fr/design/images/buttonicon/widget/button_16_normal.svg", "com/fr/design/images/buttonicon/widget/files_up.png", "com/fr/design/images/buttonicon/widget/files_up_normal.svg", From 780f63991c2d0ff31daf11c76134c6b71f0efc1e Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Fri, 23 Sep 2022 14:16:37 +0800 Subject: [PATCH 43/93] =?UTF-8?q?=E6=97=A0jira=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/mainframe/alphafine/cell/model/ModelTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/designer-realize/src/test/java/com.fr/design/mainframe/alphafine/cell/model/ModelTest.java b/designer-realize/src/test/java/com.fr/design/mainframe/alphafine/cell/model/ModelTest.java index af378b5d4d..2311514d17 100644 --- a/designer-realize/src/test/java/com.fr/design/mainframe/alphafine/cell/model/ModelTest.java +++ b/designer-realize/src/test/java/com.fr/design/mainframe/alphafine/cell/model/ModelTest.java @@ -1,6 +1,6 @@ package com.fr.design.mainframe.alphafine.cell.model; -import com.fr.design.actions.help.alphafine.AlphaFineConstants; +import com.fr.design.actions.help.alphafine.AlphaFineCloudConstants; import com.fr.design.mainframe.alphafine.CellType; import com.fr.json.JSONException; import com.fr.json.JSONObject; @@ -14,8 +14,8 @@ public class ModelTest { Assert.assertEquals("name", documentModel.getName()); Assert.assertEquals("content", documentModel.getContent()); Assert.assertEquals(1, documentModel.getDocumentId()); - Assert.assertEquals(AlphaFineConstants.DOCUMENT_DOC_URL + documentModel.getDocumentId() + ".html", documentModel.getDocumentUrl()); - Assert.assertEquals(AlphaFineConstants.DOCUMENT_INFORMATION_URL + documentModel.getDocumentId(), documentModel.getInformationUrl()); + Assert.assertEquals(AlphaFineCloudConstants.DOCUMENT_DOC_URL + documentModel.getDocumentId() + ".html", documentModel.getDocumentUrl()); + Assert.assertEquals(AlphaFineCloudConstants.DOCUMENT_INFORMATION_URL + documentModel.getDocumentId(), documentModel.getInformationUrl()); Assert.assertEquals(documentModel.getStoreInformation(), documentModel.getInformationUrl()); Assert.assertEquals(CellType.DOCUMENT, documentModel.getType()); Assert.assertEquals(true, documentModel.hasAction()); From e0e04607f1cd5d3f100eb7ddcae5deaf95cb442f Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Fri, 23 Sep 2022 16:05:47 +0800 Subject: [PATCH 44/93] =?UTF-8?q?REPORT-75998=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E6=9B=BF=E6=8D=A2=E5=90=8E=E8=A7=A6=E5=8F=91=E6=9F=A5=E6=89=BE?= =?UTF-8?q?=E7=9A=84=E6=95=B4=E4=BD=93=E9=80=BB=E8=BE=91=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E6=9F=A5=E6=89=BE=E5=90=8E=E6=B2=A1=E6=9C=89=E5=85=A8?= =?UTF-8?q?=E9=80=89=E7=9A=84=E9=97=AE=E9=A2=98=E3=80=81=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E5=9B=BE=E8=A1=A8=E6=90=9C=E7=B4=A2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SearchChartCollectionFormulaAction.java | 109 +++++++++++++++++- .../content/js/SearchChartJSAction.java | 18 +-- .../action/content/js/SearchWebJSAction.java | 35 ++++++ .../actions/replace/info/ReplaceObject.java | 2 + .../replace/ui/ITReplaceMainDialog.java | 10 +- .../actions/replace/ui/ITTableButton.java | 10 +- .../actions/replace/ui/ITTableEditor.java | 23 +--- .../actions/replace/ui/ITTableEditorPane.java | 8 ++ .../actions/replace/utils/SearchJSUtils.java | 18 +-- 9 files changed, 188 insertions(+), 45 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java index 9276302a90..6d85266228 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java @@ -2,21 +2,34 @@ package com.fr.design.actions.replace.action.content.formula.chart; import com.fr.base.Formula; import com.fr.base.chart.chartdata.TopDefinitionProvider; +import com.fr.base.present.DictPresent; +import com.fr.base.present.FormulaPresent; +import com.fr.base.present.Present; +import com.fr.chart.base.AttrChangeConfig; import com.fr.chart.chartattr.Axis; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.ChartCollection; +import com.fr.chart.chartattr.SwitchTitle; import com.fr.chart.chartattr.Title; import com.fr.chart.chartdata.NormalReportDataDefinition; import com.fr.chart.chartdata.SeriesDefinition; +import com.fr.design.actions.replace.action.content.formula.highlight.javascript.SearchJSHighlightAction; +import com.fr.design.actions.replace.action.content.formula.widget.DictionaryType; +import com.fr.design.actions.replace.info.CellInfo; import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.JSInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; +import com.fr.js.NameJavaScript; +import com.fr.js.NameJavaScriptGroup; import com.fr.plugin.chart.attr.axis.VanChartAlertValue; import com.fr.plugin.chart.attr.axis.VanChartAxis; import com.fr.plugin.chart.attr.axis.VanChartValueAxis; +import com.fr.report.cell.TemplateCellElement; +import com.fr.stable.StringUtils; import java.util.List; import java.util.Map; @@ -44,7 +57,12 @@ public class SearchChartCollectionFormulaAction { for (int i = 0; i < chartCollection.getChartCount(); i++) { ITContent chartContent = ITContent.copy(content); searchChartPatternFormula(formulaInfos, chartContent, chartCollection.getChart(i)); - + if (isChangeConfigAttrValid(chartCollection.getChangeConfigAttr())) { + //图表切换属性 + dealChangeConfig(formulaInfos, chartContent, chartCollection.getChart(i)); + } + //图表-交互属性-超级链接 + dealChartHyperLink(formulaInfos, chartContent, chartCollection.getChart(i)); //数据-单元格数据-分类名&系列名&值 SearchChartDataFormulaManager searchChartDataFormulaManager = SearchChartDataFormulaManager.getInstance(); Map type = searchChartDataFormulaManager.getChartDataType(); @@ -56,9 +74,94 @@ public class SearchChartCollectionFormulaAction { dataContent.addOtherPos(chartCollection.getChart(i).getChartName(), Toolkit.i18nText("Fine-Design_Basic_Data")); searchChartDataFormula.searchChartDataFormula(formulaInfos, dataContent, provider); } + //数据-形态 + if (chartCollection.getChart(i).getFilterDefinition() != null) { + ITContent presentContent = ITContent.copy(content); + presentContent.addOtherPos(chartCollection.getChart(i).getChartName(), Toolkit.i18nText("Fine-Design_Basic_Data")); + searchFormulaFromChartPresent(formulaInfos, presentContent, chartCollection.getChart(i).getFilterDefinition()); + } + } + } + + private void dealChartHyperLink(List formulaInfos, ITContent content, Chart chart) { + ITContent conditionContent = ITContent.copy(content); + if (StringUtils.isNotEmpty(chart.getChartName())) { + conditionContent.addOtherPos(chart.getChartName()); + } + conditionContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Chart_Animation_Special"), + Toolkit.i18nText("Fine-Design_Chart_Interactive") + ); + if (chart.getPlot() != null) { + NameJavaScriptGroup javaScriptGroup = chart.getPlot().getHotHyperLink(); + if (javaScriptGroup != null) { + for (int i = 0; i < javaScriptGroup.size(); i++) { + NameJavaScript javaScript = javaScriptGroup.getNameHyperlink(i); + conditionContent.addOtherPos(javaScript.getName()); + SearchJSHighlightAction action = SearchJSHighlightAction.getInstance(); + action.searchJSFormulaFromOther(formulaInfos, conditionContent, javaScript.getJavaScript()); + } + } + } + + } + + + private void searchFormulaFromChartPresent(List formulaInfos, ITContent content, TopDefinitionProvider provider) { + searchPresent4Formula(provider.getCategoryPresent(), content, formulaInfos); + searchPresent4Formula(provider.getSeriesPresent(), content, formulaInfos); + + } + + private void searchPresent4Formula(Present present, ITContent content, List formulaInfos) { + if (present instanceof FormulaPresent) { + ITContent newContent = ITContent.copy(content); + newContent.setReplaceObject(present); + newContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Chart_Style_Present"), + Toolkit.i18nText("Fine-Design_Basic_Present_Formula_Present")); + formulaInfos.add(new FormulaInfo(newContent)); + } + if (present instanceof DictPresent) { + ITContent dictContent = ITContent.copy(content); + dictContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Chart_Style_Present"), + Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary") + ); + DictPresent dictPresent = (DictPresent) present; + if (dictPresent.getDictionary() != null) { + DictionaryType type = DictionaryType.match(dictPresent.getDictionary().getClass().getSimpleName()); + if (type != null) { + type.searchFormulaFromDictionary(dictContent, formulaInfos, dictPresent.getDictionary()); + } + } + } + } + + private boolean isChangeConfigAttrValid(AttrChangeConfig attrChangeConfig) { + return attrChangeConfig != null && attrChangeConfig.isEnable(); + } + + private void dealChangeConfig(List formulaInfos, ITContent chartContent, Chart chart) { + ITContent content = ITContent.copy(chartContent); + if (StringUtils.isNotEmpty(chart.getChartName())) { + content.addOtherPos(chart.getChartName()); + } + content.addOtherPos( + Toolkit.i18nText("Fine-Design_Chart_Type"), + Toolkit.i18nText("Fine-Design_Chart_Change_Config_Attributes") + ); + if (isSwitchTitleValid(chart.getSwitchTitle())) { + SwitchTitle title = chart.getSwitchTitle(); + content.setReplaceObject(title.getContent()); + formulaInfos.add(new FormulaInfo(content)); } } + private boolean isSwitchTitleValid(SwitchTitle title) { + return title != null && title.getContent() instanceof Formula; + } + private boolean isDefinitionValid(TopDefinitionProvider provider) { return provider != null && SearchChartDataFormulaManager.getInstance().getChartDataType().containsKey(provider.getClass().getSimpleName()); } @@ -76,7 +179,7 @@ public class SearchChartCollectionFormulaAction { } private void searchChartPatternFormulaFromAlertLine(List formulaInfos, ITContent chartContent, Chart chart) { - if (chart.getPlot() != null){ + if (chart.getPlot() != null) { Axis xAxis = chart.getPlot().getxAxis(); Axis yAxis = chart.getPlot().getyAxis(); ITContent content = ITContent.copy(chartContent); @@ -128,7 +231,7 @@ public class SearchChartCollectionFormulaAction { } private void searchChartPatternFormulaFromAxisValue(List formulaInfos, ITContent chartContent, Chart chart) { - if (chart.getPlot() != null){ + if (chart.getPlot() != null) { Axis xAxis = chart.getPlot().getxAxis(); Axis yAxis = chart.getPlot().getyAxis(); //样式-坐标轴-x轴 diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java index b7269318e5..bbcb960053 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java @@ -54,22 +54,24 @@ public class SearchChartJSAction { SearchJSUtils.addJSInfosFromNameJS(conditionContent, nameJavaScripts, jsInfos); //图表-特效-交互属性-监控刷新 - dealMonitorRefreshJS(conditionContent,chartCollection,jsInfos); + dealMonitorRefreshJS(conditionContent, chartCollection, jsInfos); for (int i = 0; i < chartCollection.getChartCount(); i++) { ITContent chartContent = ITContent.copy(content); chartContent.addOtherPos(chartCollection.getChart(i).getChartName()); + //坐标轴 searchAxisJS(jsInfos, chartContent, chartCollection.getChart(i)); - } + } } + private void dealMonitorRefreshJS(ITContent conditionContent, ChartCollection chartCollection, List jsInfos) { - for (int i = 0 ; i < chartCollection.getChartCount() ; i ++){ - if (chartCollection.getChart(i) instanceof VanChart){ + for (int i = 0; i < chartCollection.getChartCount(); i++) { + if (chartCollection.getChart(i) instanceof VanChart) { VanChart chart = (VanChart) chartCollection.getChart(i); - if (isMonitorValid(chart.getRefreshMoreLabel())){ + if (isMonitorValid(chart.getRefreshMoreLabel())) { VanChartHtmlLabel htmlLabel = chart.getRefreshMoreLabel().getAttrTooltip().getContent().getHtmlLabel(); - if (htmlLabel != null){ + if (htmlLabel != null) { ITContent content = ITContent.copy(conditionContent); content.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Moniter_refresh")); content.setReplaceObject(htmlLabel); @@ -80,12 +82,12 @@ public class SearchChartJSAction { } } - private boolean isMonitorValid(RefreshMoreLabel moreLabel){ + private boolean isMonitorValid(RefreshMoreLabel moreLabel) { return moreLabel.isMoreLabel() && moreLabel.getAttrTooltip() != null && moreLabel.getAttrTooltip().isEnable(); } private void searchAxisJS(List jsInfos, ITContent chartContent, Chart chart) { - if (chart.getPlot() != null){ + if (chart.getPlot() != null) { Axis xAxis = chart.getPlot().getxAxis(); Axis yAxis = chart.getPlot().getyAxis(); if (xAxis instanceof VanChartAxis) { diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java index d0bb7d9c13..dd5af938de 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java @@ -32,6 +32,7 @@ import java.util.Map; public class SearchWebJSAction implements SearchJS { private final static Map MAP = new HashMap<>(); + private final static Map SERVER_MAP = new HashMap<>(); private List arrayList = new ArrayList<>(); private SearchWebJSAction() { @@ -41,6 +42,9 @@ public class SearchWebJSAction implements SearchJS { MAP.put("WebPage", Toolkit.i18nText("Fine-Design_Report_Pagination_Setting")); MAP.put("WebWrite", Toolkit.i18nText("Fine-Design_Report_Write_Setting")); MAP.put("WebView", Toolkit.i18nText("Fine-Design_Report_Data_Analysis_Settings")); + SERVER_MAP.put("WebPage", Toolkit.i18nText("Fine-Design_Report_ReportServerP_Report_Server_Parameter") + "-" + Toolkit.i18nText("Fine-Design_Report_Pagination_Setting")); + SERVER_MAP.put("WebWrite", Toolkit.i18nText("Fine-Design_Report_ReportServerP_Report_Server_Parameter") + "-" + Toolkit.i18nText("Fine-Design_Report_Write_Setting")); + SERVER_MAP.put("WebView", Toolkit.i18nText("Fine-Design_Report_ReportServerP_Report_Server_Parameter") + "-" + Toolkit.i18nText("Fine-Design_Report_Data_Analysis_Settings")); } @@ -54,6 +58,27 @@ public class SearchWebJSAction implements SearchJS { private void addJSInfos2ListFromWeb(JTemplate jTemplate, List jsInfos) { + + + dealServerWebAttr(jTemplate, jsInfos); + dealTemplateWebAttr(jTemplate, jsInfos); + } + + private void dealServerWebAttr(JTemplate jTemplate, List jsInfos) { + ReportWebAttr webReportAttr = ReportWebAttr.getInstance(); + if (webReportAttr != null) { + webReportAttr.getWebWrite(); + ITContent content = new ITContent(); + content.setTemplateName(jTemplate.getTemplateName()); + content.setJumpAble(false); + addWebContent2Array(webReportAttr); + for (int i = 0; i < arrayList.size(); i++) { + addJSInfos2ListFromServerWebAttr(content, jsInfos, arrayList.get(i)); + } + } + } + + private void dealTemplateWebAttr(JTemplate jTemplate, List jsInfos) { if (jTemplate.getTarget() instanceof WorkBook) { WorkBook workBook = (WorkBook) jTemplate.getTarget(); ReportWebAttr webAttr = workBook.getReportWebAttr(); @@ -67,6 +92,15 @@ public class SearchWebJSAction implements SearchJS { } } + private void addJSInfos2ListFromServerWebAttr(ITContent content, List jsInfos, WebContent webContent) { + ITContent newContent = ITContent.copy(content); + if (SERVER_MAP.containsKey(webContent.getClass().getSimpleName())) { + newContent.addOtherPos(SERVER_MAP.get(webContent.getClass().getSimpleName())); + } + addJSInfos2ListFromWebButton(newContent, jsInfos, webContent); + addJSInfos2ListFromWebListener(newContent, jsInfos, webContent); + } + private void addJSInfos2ListFromArray(ITContent content, List jsInfos, WebContent webContent) { ITContent newContent = ITContent.copy(content); if (MAP.containsKey(webContent.getClass().getSimpleName())) { @@ -94,6 +128,7 @@ public class SearchWebJSAction implements SearchJS { } private void addWebContent2Array(ReportWebAttr webAttr) { + arrayList.clear(); if (webAttr != null) { addContent(arrayList, webAttr.getWebWrite()); addContent(arrayList, webAttr.getWebPage()); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java index ec57cfcc86..9f06a2d716 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java @@ -2,6 +2,7 @@ package com.fr.design.actions.replace.info; import com.fr.data.impl.DBTableData; import com.fr.design.actions.replace.utils.ShowValueUtils; +import com.fr.design.data.DesignTableDataManager; import com.fr.form.event.Listener; import com.fr.js.JavaScriptImpl; import com.fr.js.NameJavaScript; @@ -210,6 +211,7 @@ public enum ReplaceObject implements DealWithInfoValue { DBTableData dbTableData = (DBTableData) info.getContent().getReplaceObject(); info.updateOldStr(dbTableData.getQuery(), findStr); dbTableData.setQuery(ShowValueUtils.replaceAll(dbTableData.getQuery(), findStr, replaceStr)); + //todo DesignTableDataManager } @Override diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java index a1443d89f4..f145cae021 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java @@ -32,6 +32,8 @@ import java.util.ArrayList; import java.util.List; +import static com.fr.design.actions.replace.ui.ITTableEditorPane.getEditTable; + /** * 主面板 * @@ -98,7 +100,7 @@ public class ITReplaceMainDialog extends UIDialog { setSize(width, height); setLocation(new Point(point.x, point.y + jTemplate.getHeight() / 2 + jTemplate.getHeight() / 2 - 385)); - northPane.fitScreen(0, 0,width); + northPane.fitScreen(0, 0, width); } @@ -162,16 +164,14 @@ public class ITReplaceMainDialog extends UIDialog { for (Info info : searchResultList) { if (info.getContent().isSelected()) { info.setValue(info, searchStr, replaceStr, info.getContent().getOperatorArray()); - ShowValueUtils.updateHighlight(info, replaceStr); } } southPanel.getTableEditorPane().update(); northPane.refreshReplaceInputComboBoxItems(); ITTableEditorPane.getEditTable().repaint(); - HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().fireTabChange(); HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().fireTargetModified(true); setSearchFlag(false); - + search(); } else { Object[] options = new Object[]{Toolkit.i18nText("Fine-Design_Replace_Search_Again"), Toolkit.i18nText("Fine-Design_Basic_Cancel")}; int optionSelected = FineJOptionPane.showOptionDialog( @@ -291,6 +291,8 @@ public class ITReplaceMainDialog extends UIDialog { itTableEditor.add(searchResultList); northPane.getResultLabel().setText("" + Toolkit.i18nText("Fine-Design_Replace_Search_Finish") + "" + searchResultList.size() + "" + Toolkit.i18nText("Fine-Design_Replace_Result")); } + ITTableEditorPane.ITHeaderRenderer renderer = (ITTableEditorPane.ITHeaderRenderer) getEditTable().getTableHeader().getDefaultRenderer(); + renderer.refreshHeader(getEditTable()); itTableEditor.fireTableDataChanged(); northPane.refreshFindInputComboBoxItems(); setSearchFlag(true); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java index a0d2f7e017..4c94cc1147 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java @@ -5,11 +5,14 @@ import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.i18n.Toolkit; +import com.fr.design.mainframe.DesignerContext; +import com.fr.design.mainframe.ReportComponentComposite; import com.fr.general.GeneralUtils; import com.fr.stable.StringUtils; import javax.swing.AbstractCellEditor; import javax.swing.JTable; +import javax.swing.SwingUtilities; import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; import java.awt.Component; @@ -36,10 +39,11 @@ public class ITTableButton extends AbstractCellEditor implements TableCellEditor paraButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - ITContent content = (ITContent) getEditTable().getValueAt(getEditTable().getEditingRow(), 7); + ITContent content = (ITContent) getEditTable().getValueAt(getEditTable().getEditingRow(), 6); if (StringUtils.isNotEmpty(GeneralUtils.objectToString(content.getTrlString()))) { ITReplaceMainDialog.setITReplaceFlag(true); HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().navigate(new TRL(GeneralUtils.objectToString(content.getTrlString()))); + ReportComponentComposite composite = (ReportComponentComposite) HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getCurrentReportComponentPane(); } ITReplaceMainDialog.setITReplaceFlag(false); } @@ -60,7 +64,7 @@ public class ITTableButton extends AbstractCellEditor implements TableCellEditor */ @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { - ITContent content = (ITContent) table.getValueAt(row, 7); + ITContent content = (ITContent) table.getValueAt(row, 6); paraButton.setEnabled(content.isJumpAble()); return paraButton; } @@ -78,7 +82,7 @@ public class ITTableButton extends AbstractCellEditor implements TableCellEditor */ @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { - ITContent content = (ITContent) table.getValueAt(row, 7); + ITContent content = (ITContent) table.getValueAt(row, 6); paraButton.setEnabled(content.isJumpAble()); return paraButton; } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditor.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditor.java index 8097ad9174..45e209f3a8 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditor.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditor.java @@ -31,7 +31,6 @@ public class ITTableEditor extends UITableModelAdapter { Toolkit.i18nText("Fine-Design_Replace_Template_Name"), Toolkit.i18nText("Fine-Design_Replace_Sheet_Name"), Toolkit.i18nText("Fine-Design_Replace_Block_Name"), - Toolkit.i18nText("Fine-Design_Replace_Location"), Toolkit.i18nText("Fine-Design_Replace_Location_Info"), Toolkit.i18nText("Fine-Design_Replace_Operator"), }); @@ -43,14 +42,13 @@ public class ITTableEditor extends UITableModelAdapter { UILabel.class, UILabel.class, UILabel.class, - UILabel.class, ITTableButton.class, }); this.setDefaultEditor(ITTableButton.class, new ITTableButton()); this.setDefaultRenderer(ITTableButton.class, new ITTableButton()); - this.createTable().getColumnModel().getColumn(7).setMaxWidth(50); + this.createTable().getColumnModel().getColumn(6).setMaxWidth(50); this.createTable().getColumnModel().getColumn(0).setMaxWidth(50); } @@ -83,7 +81,7 @@ public class ITTableEditor extends UITableModelAdapter { */ @Override public boolean isCellEditable(int row, int col) { - return col == 7 || col == 0; + return col == 6 || col == 0; } /** @@ -157,21 +155,10 @@ public class ITTableEditor extends UITableModelAdapter { return " " + content.getBlockName(); } }, - /** - * 第六列,展示位置 + * 第六列,展示路径 */ INDEX_5(5) { - @Override - public Object returnContentObject(ITContent content) { - return " " + content.getShowObject(); - } - }, - - /** - * 第七列,展示路径 - */ - INDEX_6(6) { @Override public Object returnContentObject(ITContent content) { return " " + content.getOtherPos(); @@ -179,9 +166,9 @@ public class ITTableEditor extends UITableModelAdapter { }, /** - * 第八列,展示定位按钮 + * 第七列,展示定位按钮 */ - INDEX_7(7) { + INDEX_6(6) { @Override public Object returnContentObject(ITContent content) { return content; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java index 1acb5e2ba6..4dcbd3f2af 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java @@ -128,6 +128,12 @@ public class ITTableEditorPane extends BasicPane { }); } + public void refreshHeader(JTable table) { + selectBox.setSelected(true); + int rowHeight = table.getRowHeight(); + table.updateUI(); + table.setRowHeight(rowHeight); + } @Override public Component getTableCellRendererComponent(JTable table, @@ -149,6 +155,8 @@ public class ITTableEditorPane extends BasicPane { component.setBorder(UIManager.getBorder("TableHeader.cellBorder")); return component; } + + } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java index 13094fc5c8..a63dabeb77 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java @@ -73,7 +73,7 @@ public class SearchJSUtils { */ private static void addHtmlLabel2Array(List> arrayList, ChartCollection collection) { for (int i = 0; i < collection.getChartCount(); i++) { - if (collection.getChart(i) instanceof VanChart){ + if (collection.getChart(i) instanceof VanChart) { VanChart chart = ((VanChart) collection.getChart(i)); int size = chart.getPlot().getConditionCollection().getConditionAttrSize(); ConditionCollection conditionCollection = chart.getPlot().getConditionCollection(); @@ -152,23 +152,23 @@ public class SearchJSUtils { for (int t = 0; t < conditionSize; t++) { DataSeriesCondition condition = conditionAttr.getDataSeriesCondition(t); String str = Toolkit.i18nText("Fine-Design_Chart_Animation_Special") + "-" + Toolkit.i18nText("Fine-Design_Chart_Condition_Display"); - if (StringUtils.isNotEmpty(conditionAttr.getName())){ - str += "-"+conditionAttr.getName(); + if (StringUtils.isNotEmpty(conditionAttr.getName())) { + str += "-" + conditionAttr.getName(); } if (condition instanceof AttrTooltip) { - arrayList.add(new Pair<>(((AttrTooltip) condition).getContent().getHtmlLabel(), str+"-"+Toolkit.i18nText("Fine-Design_Chart_Data_Point_Tooltip"))); + arrayList.add(new Pair<>(((AttrTooltip) condition).getContent().getHtmlLabel(), str + "-" + Toolkit.i18nText("Fine-Design_Chart_Data_Point_Tooltip"))); } - if (condition instanceof AttrLabel){ + if (condition instanceof AttrLabel) { AttrLabel label = (AttrLabel) condition; - if (isAttrLabelValid(label)){ - arrayList.add(new Pair<>(label.getContent().getHtmlLabel(), str+"-"+Toolkit.i18nText("Fine-Design_Chart_Label"))); + if (isAttrLabelValid(label)) { + arrayList.add(new Pair<>(label.getContent().getHtmlLabel(), str + "-" + Toolkit.i18nText("Fine-Design_Chart_Label"))); } } } } - private static boolean isAttrLabelValid(AttrLabel label){ + private static boolean isAttrLabelValid(AttrLabel label) { return label.isEnable() && label.getContent() != null && label.getContent().getHtmlLabel() != null; } @@ -181,7 +181,7 @@ public class SearchJSUtils { public static List getNameJavaScript(ChartCollection chartCollection) { ArrayList nameJavaScriptArrayList = new ArrayList<>(); for (int i = 0; i < chartCollection.getChartCount(); i++) { - if (chartCollection.getChart(i) instanceof VanChart){ + if (chartCollection.getChart(i) instanceof VanChart) { VanChart chart = ((VanChart) chartCollection.getChart(i)); NameJavaScriptGroup nameJavaScriptGroup = chart.getPlot().getHotHyperLink(); addNameJavaScript2Array(nameJavaScriptArrayList, nameJavaScriptGroup); From e39770af013d01d5fb594c13063dd83024c06c81 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Fri, 23 Sep 2022 16:33:02 +0800 Subject: [PATCH 45/93] =?UTF-8?q?REPORT-75998=20=E8=A1=A5=E5=85=85?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E9=A2=84=E8=A7=88=E8=AE=BE=E7=BD=AE=E7=AD=89=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../actions/replace/action/content/js/SearchWebJSAction.java | 4 ++-- .../com/fr/design/actions/replace/ui/ITTableEditorPane.java | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java index dd5af938de..0e35fa525f 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java @@ -15,6 +15,7 @@ import com.fr.js.JavaScriptImpl; import com.fr.main.impl.WorkBook; import com.fr.report.web.ToolBarManager; import com.fr.report.web.WebContent; +import com.fr.report.web.util.ReportEngineEventMapping; import com.fr.web.attr.ReportWebAttr; import java.util.ArrayList; @@ -58,8 +59,6 @@ public class SearchWebJSAction implements SearchJS { private void addJSInfos2ListFromWeb(JTemplate jTemplate, List jsInfos) { - - dealServerWebAttr(jTemplate, jsInfos); dealTemplateWebAttr(jTemplate, jsInfos); } @@ -115,6 +114,7 @@ public class SearchWebJSAction implements SearchJS { Listener listener = webContent.getListener(i); ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(listener); + newContent.addOtherPos(Toolkit.i18nText(ReportEngineEventMapping.getLocaleName(listener.getEventName()))); SearchJSUtils.searchJSFromListener(jsInfos, newContent); } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java index 4dcbd3f2af..928c2da67d 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java @@ -128,6 +128,10 @@ public class ITTableEditorPane extends BasicPane { }); } + /** + * 刷新表头 + * @param table + */ public void refreshHeader(JTable table) { selectBox.setSelected(true); int rowHeight = table.getRowHeight(); From d04769a9105a47d61d1b1af8abb05c13fa299342 Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Fri, 23 Sep 2022 17:39:47 +0800 Subject: [PATCH 46/93] =?UTF-8?q?REPORT-80742=E3=80=90=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=E3=80=91=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E5=95=86=E5=9F=8E=E7=9A=84=E8=AF=B4=E6=98=8E=E5=AD=97?= =?UTF-8?q?=E4=BD=93=E5=A4=A7=E5=B0=8F=E4=BB=8D=E7=84=B6=E4=B8=8D=E7=BB=9F?= =?UTF-8?q?=E4=B8=80=20=E6=8E=A5=E5=8F=A3=E6=95=B0=E6=8D=AE=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E9=97=AE=E9=A2=98=20=E7=BB=9F=E4=B8=80=E8=BD=AC?= =?UTF-8?q?=E4=B8=BA=E7=BA=AF=E6=96=87=E6=9C=AC=EF=BC=8C=E4=BF=9D=E7=95=99?= =?UTF-8?q?a=E6=A0=87=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/TemplateResourceDetail.java | 48 ++++++++++++------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/model/TemplateResourceDetail.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/model/TemplateResourceDetail.java index 5065f6a2b4..0a1d98449c 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/model/TemplateResourceDetail.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/model/TemplateResourceDetail.java @@ -8,9 +8,10 @@ import com.fr.json.JSONObject; import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; -import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -169,7 +170,7 @@ public class TemplateResourceDetail { JSONObject resource = embedResources.getJSONObject(i); if (resourceId.equals(resource.getString(ID))) { detail.setInfo(resource.getString(INFO)); - detail.setHtmlText(resource.getString(DETAIL_INFO)); + detail.setHtmlText(reformat(resource.getString(DETAIL_INFO))); detail.setVendor(resource.getString(VENDOR)); detail.setPrice(resource.getDouble(PRICE)); detail.setResourceUrl(resource.getString(URL)); @@ -191,7 +192,7 @@ public class TemplateResourceDetail { // 1请求详细信息 JSONObject info = helper.getTemplateInfoById(resourceId); detail.setInfo(info.getString(INFO)); - detail.setHtmlText(info.getString(DETAIL_INFO)); + detail.setHtmlText(reformat(info.getString(DETAIL_INFO))); detail.setVendor(info.getString(VENDOR)); detail.setTagsId(info.getString(TAGS_ID).split(",")); detail.setPrice(info.getDouble(PRICE)); @@ -214,25 +215,36 @@ public class TemplateResourceDetail { return null; } + + static final String A_TAG_FORMAT = "%s"; + static final String HTML_TAG_REGX="<[^>]+>"; + static final Pattern A_TAG_PATTERN = Pattern.compile("]*href=(\\\"([^\\\"]*)\\\"|\\'([^\\']*)\\'|([^\\\\s>]*))[^>]*>(.*?)"); + static final Pattern HTML_TAG_PATTERN = Pattern.compile(HTML_TAG_REGX); + /** - * 这里做下数据转换 - * 原始数据是html标签写的,如下 - * "
  1. 该模板需用10.0及以上版本设计器预览

  2. 该模板为库存场景解决方案的部分内容,全部内容可下载库存场景解决方案查看

  3. 为保障模板预览效果,建议安装新自适应插件(FR11.0版本插件已内置,无需手动安装),有使用需求或疑问,请联系帆软技术支持咨询

", - * - * 转换的后的数据 是原始数据中所有

标签内的(包括标签)的字符串(List),如上字符串会转为如下 - * List [

该模板需用10.0及以上版本设计器预览

, - *

该模板为库存场景解决方案的部分内容,全部内容可下载库存场景解决方案查看

, - *

为保障模板预览效果,建议安装新自适应插件(FR11.0版本插件已内置,无需手动安装),有使用需求或疑问,请联系帆软技术支持咨询

- * ] + * 数据格式转换 + * 原始数据的格式不统一,纯文本、html都有; 统一转为纯文本,如果有a标签则保留 * */ - static final Pattern htmlPattern = Pattern.compile("

(.+?)

"); - static List parseDetailInfo(String htmlDetailInfo) { - List infos = new ArrayList<>(); - Matcher matcher = htmlPattern.matcher(htmlDetailInfo); + static String reformat(String htmlDetailInfo) { + String result = HTML_TAG_PATTERN.matcher(htmlDetailInfo).replaceAll(""); + Map aMap = getLink(htmlDetailInfo); + for (Map.Entry entry : aMap.entrySet()) { + String aTag = String.format(A_TAG_FORMAT, entry.getValue(), entry.getKey()); + result = result.replace(entry.getKey(), aTag); + } + return result; + } + + /** + * 读取dom中的a标签,转换为map + */ + static Map getLink(String html) { + Map map = new HashMap<>(); + Matcher matcher = A_TAG_PATTERN.matcher(html); while (matcher.find()) { - infos.add(matcher.group()); + map.put(matcher.group(5), matcher.group(1)); } - return infos; + return map; } } From 2f8216cd831e7ae6d83d323bfc75e19fb774a8c9 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Mon, 26 Sep 2022 13:45:48 +0800 Subject: [PATCH 47/93] =?UTF-8?q?REPORT-75998=20=E8=BF=9B=E5=85=A5?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E8=80=85=E8=B0=83=E8=AF=95&=E6=9D=83?= =?UTF-8?q?=E9=99=90=E7=BC=96=E8=BE=91=E6=A8=A1=E5=BC=8F=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E5=A4=84=E7=90=86=E3=80=81=E5=AE=8C=E5=96=84=E9=80=9A=E9=85=8D?= =?UTF-8?q?=E7=AC=A6=E3=80=81=E4=BC=98=E5=8C=96=E7=95=8C=E9=9D=A2=E3=80=81?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8B=BE=E9=80=89=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../actions/AllowAuthorityEditAction.java | 8 ++ .../fr/design/module/DesignModuleFactory.java | 13 +++ .../fr/design/preview/DeveloperPreview.java | 8 ++ .../action/ShowSearchResultAction.java | 4 +- .../replace/ui/ITReplaceMainDialog.java | 26 +++++- .../replace/ui/ITReplaceNorthPanel.java | 5 +- .../replace/ui/ITReplaceSouthPanel.java | 7 +- .../actions/replace/ui/ITTableButton.java | 1 - .../actions/replace/ui/ITTableEditorPane.java | 4 +- .../actions/replace/utils/ShowValueUtils.java | 79 +++++++++++++++---- .../fr/start/module/DesignerActivator.java | 2 + 11 files changed, 133 insertions(+), 24 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/AllowAuthorityEditAction.java b/designer-base/src/main/java/com/fr/design/actions/AllowAuthorityEditAction.java index 1a0509d267..bb26e17118 100644 --- a/designer-base/src/main/java/com/fr/design/actions/AllowAuthorityEditAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/AllowAuthorityEditAction.java @@ -4,11 +4,14 @@ import com.fr.base.svg.IconUtils; import com.fr.base.vcs.DesignerMode; import com.fr.design.constants.UIConstants; import com.fr.design.menu.KeySetUtils; +import com.fr.design.module.DesignModuleFactory; import com.fr.design.roleAuthority.ReportAndFSManagePane; import com.fr.design.roleAuthority.RolesAlreadyEditedPane; import com.fr.design.designer.TargetComponent; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.mainframe.*; +import com.fr.invoke.Reflect; +import com.fr.log.FineLoggerFactory; /** * Author : daisy @@ -61,6 +64,11 @@ public class AllowAuthorityEditAction extends TemplateComponentAction { DesignerContext.getDesignerFrame().refreshDottedLine(); EastRegionContainerPane.getInstance().replaceConfiguredRolesPane(RolesAlreadyEditedPane.getInstance()); EastRegionContainerPane.getInstance().removeParameterPane(); + try { + Reflect.on(DesignModuleFactory.getReplacePane().newInstance()).call("close"); + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } //画虚线 return true; diff --git a/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java b/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java index baed29be47..60a4dfcf18 100644 --- a/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java +++ b/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java @@ -50,6 +50,7 @@ public class DesignModuleFactory { private Class ITReplaceAction; private Class formParaDesigner; private Class paraPropertyPane; + private Class replacePane; private Class formHierarchyPaneCls; private Class widgetPropertyPane; private Class buttonDetailPaneClass; @@ -131,6 +132,18 @@ public class DesignModuleFactory { return instance.ITReplaceAction; } + /** + * 注册一下查找替换面板 + * @param r + */ + public static void registerReplacePane(Class r){ + instance.replacePane = r; + } + + public static Class getReplacePane(){ + return instance.replacePane; + } + public static void registerParaPropertyPaneClass(Class p) { instance.paraPropertyPane = p; } diff --git a/designer-form/src/main/java/com/fr/design/preview/DeveloperPreview.java b/designer-form/src/main/java/com/fr/design/preview/DeveloperPreview.java index 69e514b408..5c0a623857 100644 --- a/designer-form/src/main/java/com/fr/design/preview/DeveloperPreview.java +++ b/designer-form/src/main/java/com/fr/design/preview/DeveloperPreview.java @@ -6,9 +6,12 @@ import com.fr.design.fun.impl.AbstractPreviewProvider; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.JForm; import com.fr.design.mainframe.JTemplate; +import com.fr.design.module.DesignModuleFactory; import com.fr.design.worker.WorkerManager; import com.fr.design.worker.save.CallbackSaveWorker; import com.fr.general.web.ParameterConstants; +import com.fr.invoke.Reflect; +import com.fr.log.FineLoggerFactory; import java.util.HashMap; import java.util.Map; @@ -47,6 +50,11 @@ public class DeveloperPreview extends AbstractPreviewProvider { @Override public void onClick(JTemplate jt) { super.onClick(jt); + try { + Reflect.on(DesignModuleFactory.getReplacePane().newInstance()).call("close"); + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } SwingWorker worker = WorkerManager.getInstance().getWorker(jt.getRuntimeId()); if (worker instanceof CallbackSaveWorker) { CallbackSaveWorker callbackSaveWorker = (CallbackSaveWorker) worker; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java index 601b3d09e5..f555de9689 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java @@ -75,7 +75,7 @@ public enum ShowSearchResultAction implements ShowValue { } else { Map stringHashMap = info.getValue(); String content = stringHashMap.getOrDefault(objectContentKey, StringUtils.EMPTY); - if (content.contains(str) && StringUtils.isNotEmpty(content)) { + if (ShowValueUtils.contains(content,str) && StringUtils.isNotEmpty(content)) { info.getContent().setShowStr(ShowValueUtils.getCommonString(content, str)); info.getContent().setOldShowStr(content); info.getContent().setOperatorArray(ShowValueUtils.getStringStartAndEndIndex(content, str)); @@ -416,6 +416,6 @@ public enum ShowSearchResultAction implements ShowValue { * @return */ public boolean isTitleNameValid(Title title, String str){ - return title != null && GeneralUtils.objectToString(title.getTextObject()).contains(str) && StringUtils.isNotEmpty(GeneralUtils.objectToString(title.getTextObject())); + return title != null && ShowValueUtils.contains(GeneralUtils.objectToString(title.getTextObject()),str) && StringUtils.isNotEmpty(GeneralUtils.objectToString(title.getTextObject())); } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java index f145cae021..2a922902f7 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java @@ -52,8 +52,9 @@ public class ITReplaceMainDialog extends UIDialog { private ITReplaceWestPanel westPanel; private boolean searchFlag; private String searchStr; + private static boolean existed = false; - private ITReplaceMainDialog() { + public ITReplaceMainDialog() { super(DesignerContext.getDesignerFrame()); init(); } @@ -66,6 +67,7 @@ public class ITReplaceMainDialog extends UIDialog { initFrame(); fitScreen(); ITReplaceFlag = true; + existed = true; } /** @@ -309,6 +311,28 @@ public class ITReplaceMainDialog extends UIDialog { } } + /** + * 面板是否存在 + * @return + */ + public static boolean isExisted() { + return existed; + } + + public static void setExisted(boolean existed) { + ITReplaceMainDialog.existed = existed; + } + + + /** + * 进入权限编辑状态&开发者调试时关闭面板 + */ + public static void close(){ + if (isExisted()){ + getInstance().dispose(); + setExisted(false); + } + } /** * 检测结果是否合法 */ diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java index bc4e82255f..a4fe1fef0f 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java @@ -47,6 +47,7 @@ public class ITReplaceNorthPanel { private static final int HEIGHT = 161; private static final int BUTTON_WIDTH = 60; private static final int BUTTON_GAP = 20; + private static final int MATCH_WIDTH = 70; private int findLabelX, findLabelY, findLabelWidth, findLabelHeight; @@ -83,7 +84,7 @@ public class ITReplaceNorthPanel { resultLabel = new UILabel(); String[] rangeItems = new String[]{Toolkit.i18nText("Fine-Design_Basic_Export_JS_Template_Current")}; - String[] replaceInputItems = new String[]{""}; + String[] replaceInputItems = new String[]{StringUtils.EMPTY}; findCombobox = new UIComboBox(findItems.toArray()); rangeCombobox = new UIComboBox(rangeItems); findInputCombobox = new UIComboBox(findInputItems.toArray()) { @@ -247,7 +248,7 @@ public class ITReplaceNorthPanel { private void setUIRadioButtonBounds(int x, int y, int templateWidth) { matchX = x + templateWidth / 60; matchY = y + 90; - matchWidth = templateWidth; + matchWidth = MATCH_WIDTH; matchHeight = 25; matchRadioButton.setBounds(matchX, matchY, matchWidth, matchHeight); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceSouthPanel.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceSouthPanel.java index 7db6b52850..8921dce5ff 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceSouthPanel.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceSouthPanel.java @@ -18,7 +18,12 @@ public class ITReplaceSouthPanel { public ITReplaceSouthPanel() { itTableEditor = new ITTableEditor(); tableEditorPane = new ITTableEditorPane<>(itTableEditor); - RowSorter sorter = new TableRowSorter(itTableEditor); + RowSorter sorter = new TableRowSorter(itTableEditor){ + @Override + public boolean isSortable(int column) { + return column != 0 || column != 6; + } + }; tableEditorPane.getEditTable().setRowSorter(sorter); tableEditorPane.getEditTable().setSelectionBackground(new Color(217, 235, 254)); tableEditorPane.getEditTable().setRowHeight(tableEditorPane.getEditTable().getRowHeight() / 2 + tableEditorPane.getEditTable().getRowHeight()); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java index 4c94cc1147..03717a725c 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java @@ -43,7 +43,6 @@ public class ITTableButton extends AbstractCellEditor implements TableCellEditor if (StringUtils.isNotEmpty(GeneralUtils.objectToString(content.getTrlString()))) { ITReplaceMainDialog.setITReplaceFlag(true); HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().navigate(new TRL(GeneralUtils.objectToString(content.getTrlString()))); - ReportComponentComposite composite = (ReportComponentComposite) HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getCurrentReportComponentPane(); } ITReplaceMainDialog.setITReplaceFlag(false); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java index 928c2da67d..c35f2ef14d 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java @@ -71,7 +71,7 @@ public class ITTableEditorPane extends BasicPane { int row = ((JTable) e.getSource()).rowAtPoint(e.getPoint()); int col = ((JTable) e.getSource()).columnAtPoint(e.getPoint()); if (col == 0) { - ITContent content = (ITContent) editTable.getValueAt(row, 7); + ITContent content = (ITContent) editTable.getValueAt(row, 6); if (content.isSelected()) { content.setSelected(false); editTable.setValueAt(content.isSelected(), row, col); @@ -187,7 +187,7 @@ public class ITTableEditorPane extends BasicPane { */ public static void selectAllOrNull(Boolean value) { for (int i = 0; i < getEditTable().getRowCount(); i++) { - ((ITContent) (getEditTable().getValueAt(i, 7))).setSelected(value); + ((ITContent) (getEditTable().getValueAt(i, 6))).setSelected(value); } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java index b215a16c6d..b7da5fc23c 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java @@ -1,9 +1,8 @@ package com.fr.design.actions.replace.utils; -import com.fr.design.actions.replace.info.Info; - +import com.fr.design.actions.replace.ui.ITReplaceMainDialog; import com.fr.stable.StringUtils; import com.fr.stable.collections.combination.Pair; @@ -30,6 +29,20 @@ public class ShowValueUtils { public static final String ANY_THING_REGEX = "."; public static final String NUMBER_REGEX = "[0-9]"; public static final String ENGLISH_REGEX = "[a-zA-Z]"; + private static List specialCharList = new ArrayList<>(); + static { + //正则特殊字符:? * () [] {} ^ $ + //如果是? 并采用通配符 ,会自动转成“.” 所以 ? 不用处理 + //$同理 + specialCharList.add("*"); + specialCharList.add("("); + specialCharList.add(")"); + specialCharList.add("["); + specialCharList.add("]"); + specialCharList.add("{"); + specialCharList.add("}"); + specialCharList.add("^"); + } /** * 获取除内容外其他一次性展示所有的内容(名称、水印...) @@ -42,9 +55,7 @@ public class ShowValueUtils { if (StringUtils.isEmpty(searchStr)) { return str; } else { - return "
" + - replaceAll(str, searchStr, "" + searchStr + "") + - "
"; + return updateHighlight(str, searchStr); } } @@ -57,7 +68,11 @@ public class ShowValueUtils { * @return 替换后的字符串 */ public static String replaceAll(String str, String regex, String replacement) { - return str.replace(regex, replacement); + if (ITReplaceMainDialog.isMatched()) { + return str.replaceAll(changeRegex(regex), replacement); + } else { + return str.replace(regex, replacement); + } } /** @@ -70,6 +85,10 @@ public class ShowValueUtils { regex = regex.replace(NUMBER, NUMBER_REGEX); regex = regex.replace(ENGLISH, ENGLISH_REGEX); regex = regex.replace(ANY_THING, ANY_THING_REGEX); + String change = "\\"; + for (int i = 0 ; i < specialCharList.size() ; i ++){ + regex = regex.replace(specialCharList.get(i),change + specialCharList.get(i)); + } return regex; } @@ -101,18 +120,36 @@ public class ShowValueUtils { return pairs; } + /** - * 更新高亮状态 + * 更新高亮 * - * @param info - * @param replaceStr + * @param str + * @param searchStr + * @return */ - public static void updateHighlight(Info info, String replaceStr) { - String s = info.getInfoShowStr(info); - s = s.replace(info.getContent().getLastSearchStr(), "" + replaceStr + ""); - info.getContent().setShowStr( - "
" + s + "
" - ); + public static String updateHighlight(String str, String searchStr) { + if (ITReplaceMainDialog.isMatched()) { + String result = str; + Pattern pattern = Pattern.compile(changeRegex(searchStr)); + Matcher matcher = pattern.matcher(str); + String head = ""; + String tail = ""; + int size = head.length() + tail.length(); + int index = 0; + StringBuilder builder = new StringBuilder(str); + while (matcher.find()) { + builder.replace(matcher.start() + index, matcher.end() + index, head + matcher.group() + tail); + index += size; + } + return "
" + + builder.toString() + + "
"; + } else { + return "
" + + replaceAll(str, searchStr, "" + searchStr + "") + + "
"; + } } @@ -146,4 +183,16 @@ public class ShowValueUtils { } return failReturn; } + + public static boolean contains(String originStr, String matchStr) { + if (ITReplaceMainDialog.isMatched()) { + String str = changeRegex(matchStr); + Pattern pattern = Pattern.compile(str); + Matcher matcher = pattern.matcher(originStr); + return matcher.find(); + } else { + return originStr.contains(matchStr); + } + + } } diff --git a/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java b/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java index af32f596c4..1a04c79ac9 100644 --- a/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java +++ b/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java @@ -32,6 +32,7 @@ import com.fr.design.actions.insert.flot.FormulaFloatAction; import com.fr.design.actions.insert.flot.ImageFloatAction; import com.fr.design.actions.insert.flot.TextBoxFloatAction; import com.fr.design.actions.replace.ITReplaceAction; +import com.fr.design.actions.replace.ui.ITReplaceMainDialog; import com.fr.design.bridge.DesignToolbarProvider; import com.fr.design.constants.DesignerLaunchStatus; import com.fr.design.env.DesignerWorkspaceLoader; @@ -466,6 +467,7 @@ public class DesignerActivator extends Activator implements Prepare { DesignModuleFactory.registerNewFormActionClass(NewFormAction.class); DesignModuleFactory.registerReplaceActionClass(ITReplaceAction.class); + DesignModuleFactory.registerReplacePane(ITReplaceMainDialog.class); DesignModuleFactory.registerFormParaDesignerClass(FormParaDesigner.class); DesignModuleFactory.registerParaPropertyPaneClass(ParameterPropertyPane.class); DesignModuleFactory.registerFormHierarchyPaneClass(FormHierarchyTreePane.class); From 7f835f9f8f64067203ff4ed8bd54326c72a3c04b Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Mon, 26 Sep 2022 14:48:43 +0800 Subject: [PATCH 48/93] =?UTF-8?q?REPORT-75998=20=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=AF=8C=E6=96=87=E6=9C=AC=E9=80=BB=E8=BE=91=E3=80=81=E5=AE=8C?= =?UTF-8?q?=E5=96=84=E9=80=9A=E9=85=8D=E7=AC=A6=E3=80=81=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=82=AC=E6=B5=AE=E5=85=83=E7=B4=A0=E5=9B=BE=E7=89=87=E5=88=A4?= =?UTF-8?q?=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../replace/action/SearchManagerCenter.java | 2 +- .../action/ShowSearchResultAction.java | 31 ++++++++++------- .../action/content/cell/SearchCellAction.java | 1 + .../floatelement/SearchFloatAction.java | 5 ++- .../content/formula/FormulaReplaceObject.java | 34 ------------------- .../cell/SearchCellFormulaManager.java | 2 -- .../design/actions/replace/info/CellInfo.java | 28 --------------- .../actions/replace/utils/ShowValueUtils.java | 9 ++--- 8 files changed, 30 insertions(+), 82 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/SearchManagerCenter.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/SearchManagerCenter.java index 211ab41d66..0608bde483 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/SearchManagerCenter.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/SearchManagerCenter.java @@ -61,7 +61,7 @@ public class SearchManagerCenter { */ public enum ManagerType implements SearchManager { /** - * 注册单元格不同值类型中自己特有的公式(数据列、子报表、公式、富文本,可自己添加) + * 注册单元格不同值类型中自己特有的公式(数据列、子报表、公式,可自己添加) */ CELL_FORMULA(0) { @Override diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java index f555de9689..846263c5a9 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/ShowSearchResultAction.java @@ -24,6 +24,7 @@ import com.fr.design.mainframe.JTemplate; import com.fr.general.GeneralUtils; import com.fr.report.cell.CellElement; import com.fr.report.cell.FloatElement; +import com.fr.report.cell.cellattr.core.RichText; import com.fr.stable.StringUtils; import com.fr.stable.collections.combination.Pair; import org.jetbrains.annotations.Nullable; @@ -75,7 +76,7 @@ public enum ShowSearchResultAction implements ShowValue { } else { Map stringHashMap = info.getValue(); String content = stringHashMap.getOrDefault(objectContentKey, StringUtils.EMPTY); - if (ShowValueUtils.contains(content,str) && StringUtils.isNotEmpty(content)) { + if (isValueValid(content, str, info)) { info.getContent().setShowStr(ShowValueUtils.getCommonString(content, str)); info.getContent().setOldShowStr(content); info.getContent().setOperatorArray(ShowValueUtils.getStringStartAndEndIndex(content, str)); @@ -94,6 +95,11 @@ public enum ShowSearchResultAction implements ShowValue { cellInfo.getContent().setSelected(true); } + private boolean isValueValid(String content, String str, Info info) { + CellElement cellElement = (CellElement) info.getContent().getReplaceObject(); + return ShowValueUtils.contains(content, str) && StringUtils.isNotEmpty(content) && !(cellElement.getValue() instanceof RichText); + + } }, /** * 搜索JS事件 @@ -139,7 +145,7 @@ public enum ShowSearchResultAction implements ShowValue { private void searchMap4JS(Map map, List jsInfos, JSInfo info, String str) { if (map.containsKey(objectNameKey) && StringUtils.isNotEmpty(map.get(objectNameKey))) { String name = map.get(objectNameKey); - if (name.contains(str)) { + if (ShowValueUtils.contains(name,str)) { JSInfo nameJSInfo = info.copy(); nameJSInfo.getContent().setShowStr(ShowValueUtils.getCommonString(name, str)); nameJSInfo.getContent().setOperatorArray(ShowValueUtils.getStringStartAndEndIndex(name, str)); @@ -151,7 +157,7 @@ public enum ShowSearchResultAction implements ShowValue { } if (map.containsKey(objectContentKey) && StringUtils.isNotEmpty(map.get(objectContentKey))) { String content = map.get(objectContentKey); - if (content.contains(str)) { + if (ShowValueUtils.contains(content,str)) { JSInfo contentJSInfo = info.copy(); contentJSInfo.getContent().setShowStr(ShowValueUtils.getCommonString(content, str)); contentJSInfo.getContent().setOperatorArray(ShowValueUtils.getStringStartAndEndIndex(content, str)); @@ -195,7 +201,7 @@ public enum ShowSearchResultAction implements ShowValue { private void searchMap4SQLContent(Map map, List sqlInfos, SQLInfo info, String str) { if (map.containsKey(objectContentKey) && StringUtils.isNotEmpty(map.get(objectContentKey))) { String content = map.get(objectContentKey); - if (content.contains(str)) { + if (ShowValueUtils.contains(content,str)) { SQLInfo contentJSInfo = info.copy(); contentJSInfo.getContent().setShowStr(ShowValueUtils.getCommonString(content, str)); contentJSInfo.getContent().setOperatorArray(ShowValueUtils.getStringStartAndEndIndex(content, str)); @@ -231,7 +237,7 @@ public enum ShowSearchResultAction implements ShowValue { if (((FloatInfo) info).isChartExist()) { ChartCollection chartCollection = (ChartCollection) floatElement.getValue(); for (int i = 0; i < chartCollection.getChartCount(); i++) { - if (isTitleNameValid(chartCollection.getChart(i).getTitle(),str)) { + if (isTitleNameValid(chartCollection.getChart(i).getTitle(), str)) { String titleName = GeneralUtils.objectToString(chartCollection.getChart(i).getTitle().getTextObject()); FloatInfo floatInfo = ((FloatInfo) info).copy(); floatInfo.setFloatChartIndex(i); @@ -244,7 +250,7 @@ public enum ShowSearchResultAction implements ShowValue { } } } else { - if (GeneralUtils.objectToString(floatElement.getValue()).contains(str)) { + if (ShowValueUtils.contains(GeneralUtils.objectToString(floatElement.getValue()), str)) { FloatInfo floatInfo = ((FloatInfo) info).copy(); setShowInfo(floatInfo, GeneralUtils.objectToString(floatElement.getValue()), str); floatInfos.add(floatInfo); @@ -285,7 +291,7 @@ public enum ShowSearchResultAction implements ShowValue { private void searchMap4Component(Map stringHashMap, ArrayList componentInfos, ComponentInfo info, String str) { if (stringHashMap.containsKey(objectContentKey)) { String content = stringHashMap.get(objectContentKey); - if (content.contains(str)) { + if (ShowValueUtils.contains(content,str)) { info.getContent().setShowStr(ShowValueUtils.getCommonString(content, str)); info.getContent().setOldShowStr(stringHashMap.get(objectContentKey)); info.getContent().setOperatorArray(ShowValueUtils.getStringStartAndEndIndex(content, str)); @@ -319,7 +325,7 @@ public enum ShowSearchResultAction implements ShowValue { private void searchMap4Widget(Map map, List widgetInfos, WidgetInfo info, String str) { if (map.containsKey(objectNameKey)) { String name = map.get(objectNameKey); - if (StringUtils.isNotEmpty(name) && name.contains(str)) { + if (StringUtils.isNotEmpty(name) && ShowValueUtils.contains(name,str)) { WidgetInfo nameInfo = info.copy(info); nameInfo.getContent().setShowStr(ShowValueUtils.getCommonString(name, str)); nameInfo.getContent().setOldShowStr(map.get(objectNameKey)); @@ -331,7 +337,7 @@ public enum ShowSearchResultAction implements ShowValue { } if (map.containsKey(objectWaterMarkKey)) { String waterMark = map.get(objectWaterMarkKey); - if (StringUtils.isNotEmpty(waterMark) && waterMark.contains(str)) { + if (StringUtils.isNotEmpty(waterMark) && ShowValueUtils.contains(waterMark,str)) { WidgetInfo widgetInfo = info.copy(info); widgetInfo.getContent().setShowStr(ShowValueUtils.getCommonString(waterMark, str)); widgetInfo.getContent().setOldShowStr(map.get(objectWaterMarkKey)); @@ -368,7 +374,7 @@ public enum ShowSearchResultAction implements ShowValue { private void searchMap4Formula(Map stringHashMap, List formulaInfos, FormulaInfo info, String str) { if (stringHashMap.containsKey(objectContentKey)) { String name = stringHashMap.get(objectContentKey); - if (name.contains(str)) { + if (ShowValueUtils.contains(name,str)) { info.getContent().setShowStr(ShowValueUtils.getCommonString(name, str)); info.getContent().setOldShowStr(stringHashMap.get(objectContentKey)); info.getContent().setOperatorArray(ShowValueUtils.getStringStartAndEndIndex(name, str)); @@ -411,11 +417,12 @@ public enum ShowSearchResultAction implements ShowValue { /** * 标题是否可用 + * * @param title * @param str * @return */ - public boolean isTitleNameValid(Title title, String str){ - return title != null && ShowValueUtils.contains(GeneralUtils.objectToString(title.getTextObject()),str) && StringUtils.isNotEmpty(GeneralUtils.objectToString(title.getTextObject())); + public boolean isTitleNameValid(Title title, String str) { + return title != null && ShowValueUtils.contains(GeneralUtils.objectToString(title.getTextObject()), str) && StringUtils.isNotEmpty(GeneralUtils.objectToString(title.getTextObject())); } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/cell/SearchCellAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/cell/SearchCellAction.java index 826b247e0c..0f2f6d181a 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/cell/SearchCellAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/cell/SearchCellAction.java @@ -17,6 +17,7 @@ import com.fr.form.ui.widget.CRBoundsWidget; import com.fr.general.GeneralUtils; import com.fr.main.impl.WorkBook; import com.fr.report.cell.CellElement; +import com.fr.report.cell.cellattr.core.RichText; import com.fr.report.elementcase.ElementCase; import com.fr.report.poly.PolyECBlock; import com.fr.report.report.Report; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/floatelement/SearchFloatAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/floatelement/SearchFloatAction.java index 6f0a338b90..4a478b596e 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/floatelement/SearchFloatAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/floatelement/SearchFloatAction.java @@ -7,6 +7,7 @@ import com.fr.design.actions.replace.info.FloatInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.JTemplate; +import com.fr.general.ImageWithSuffix; import com.fr.main.impl.WorkBook; import com.fr.report.cell.FloatElement; import com.fr.report.elementcase.ElementCase; @@ -84,7 +85,9 @@ public class SearchFloatAction implements SearchAction { if (floatElement.getValue() instanceof ChartCollection) { floatInfo.setChartExist(true); } - result.add(floatInfo); + if (!(floatElement.getValue() instanceof ImageWithSuffix)){ + result.add(floatInfo); + } } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java index 720dbab1e8..e002832656 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java @@ -133,40 +133,6 @@ public enum FormulaReplaceObject implements DealWithInfoValue { return false; } }, - /** - * 富文本 - */ - RICH_CHAR("RichChar") { - @Override - public Map getValue(Object... o) { - HashMap map = new HashMap<>(); - if (o[0] instanceof RichChar) { - if (StringUtils.isNotEmpty(((RichChar) o[0]).getText())) { - map.put("content", (((RichChar) o[0]).getText())); - } - } - return map; - } - - @Override - public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { - Object replaceObject = info.getContent().getReplaceObject(); - if (replaceObject instanceof RichChar) { - RichChar richChar = (RichChar) replaceObject; - info.updateOldStr(richChar.getText(), findStr); - richChar.setText(ShowValueUtils.replaceAll(richChar.getText(), findStr, replaceStr)); - } - } - - @Override - public boolean check(Info info) { - if (info.getContent().getReplaceObject() instanceof RichChar){ - RichChar richChar = (RichChar) info.getContent().getReplaceObject(); - return StringUtils.equals(richChar.getText(), info.getContent().getOldShowStr()); - } - return false; - } - }, /** * KV */ diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaManager.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaManager.java index eee99bf203..59982245e3 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaManager.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaManager.java @@ -25,8 +25,6 @@ public class SearchCellFormulaManager implements SearchManager { register(DS_COLUMN, SearchDSColumnFormulaAction.getInstance()); //公式 register(FORMULA, SearchCellFormulaTypeAction.getInstance()); - //富文本 - register(RICH_TEXT, SearchRichFormulaAction.getInstance()); //子报表 register(SUB_REPORT, SearchSubReportFormulaAction.getInstance()); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/CellInfo.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/CellInfo.java index 94a8f73ce5..e5a6ce4fa2 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/CellInfo.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/CellInfo.java @@ -219,34 +219,6 @@ public class CellInfo implements Info { return ((DSColumn) o.getValue()).getDSName(); } }, - - /** - * 富文本形式 - * 为了不破坏富文本的格式,暂时不对样式不同的文本进行连接替换,每个样式不同的文本都是一个独立的个体 - */ - RICH_TEXT("RichText") { - @Override - public void setValue(CellInfo cellInfo, Object o, String findStr, String replaceStr) { - cellInfo.updateOldStr(GeneralUtils.objectToString(((RichText) o).getContent()), findStr); - Iterator it = ((RichText) o).charIterator(); - while (it.hasNext()) { - RichChar richChar = it.next(); - richChar.setText(ShowValueUtils.replaceAll(richChar.getText(), findStr, replaceStr)); - } - } - - @Override - public void addValue2Map(Object o, HashMap map) { - map.put("content", ((RichText) o).getContent()); - } - - @Override - public String getCheckValue(Info info) { - CellElement o = (CellElement) info.getContent().getReplaceObject(); - return ((RichText) o.getValue()).getContent(); - } - }, - /** * 公式类型 */ diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java index b7da5fc23c..c0d95e7079 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java @@ -31,7 +31,7 @@ public class ShowValueUtils { public static final String ENGLISH_REGEX = "[a-zA-Z]"; private static List specialCharList = new ArrayList<>(); static { - //正则特殊字符:? * () [] {} ^ $ + //正则特殊字符:? * () [] {} ^ $ . //如果是? 并采用通配符 ,会自动转成“.” 所以 ? 不用处理 //$同理 specialCharList.add("*"); @@ -42,6 +42,7 @@ public class ShowValueUtils { specialCharList.add("{"); specialCharList.add("}"); specialCharList.add("^"); + specialCharList.add("."); } /** @@ -82,13 +83,13 @@ public class ShowValueUtils { * @return */ public static String changeRegex(String regex) { - regex = regex.replace(NUMBER, NUMBER_REGEX); - regex = regex.replace(ENGLISH, ENGLISH_REGEX); - regex = regex.replace(ANY_THING, ANY_THING_REGEX); String change = "\\"; for (int i = 0 ; i < specialCharList.size() ; i ++){ regex = regex.replace(specialCharList.get(i),change + specialCharList.get(i)); } + regex = regex.replace(NUMBER, NUMBER_REGEX); + regex = regex.replace(ENGLISH, ENGLISH_REGEX); + regex = regex.replace(ANY_THING, ANY_THING_REGEX); return regex; } From 3df37c4bddd4e397e7f72ac4ed692863d46e1a6d Mon Sep 17 00:00:00 2001 From: kerry Date: Mon, 26 Sep 2022 15:49:51 +0800 Subject: [PATCH 49/93] =?UTF-8?q?REPORT-80444=20=E6=96=B0=E8=87=AA?= =?UTF-8?q?=E9=80=82=E5=BA=94=E6=8E=A7=E4=BB=B6=E6=A0=B7=E5=BC=8F=E6=95=88?= =?UTF-8?q?=E6=9E=9C=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designer/creator/XCreatorUtils.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java b/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java index 5e7807698a..9b30a42d45 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XCreatorUtils.java @@ -19,6 +19,7 @@ import com.fr.design.designer.creator.cardlayout.XWCardTagLayout; import com.fr.design.designer.creator.cardlayout.XWCardTitleLayout; import com.fr.design.designer.creator.cardlayout.XWTabFitLayout; import com.fr.design.file.HistoryTemplateListCache; +import com.fr.design.fit.common.TemplateTool; import com.fr.design.fun.ChartWidgetOptionProvider; import com.fr.design.fun.FormWidgetOptionProvider; import com.fr.design.fun.ParameterWidgetOptionProvider; @@ -39,6 +40,7 @@ import com.fr.form.ui.ComboCheckBox; import com.fr.form.ui.DateEditor; import com.fr.form.ui.EditorHolder; import com.fr.form.ui.ElementCaseEditor; +import com.fr.form.ui.FieldEditor; import com.fr.form.ui.FileEditor; import com.fr.form.ui.FreeButton; import com.fr.form.ui.IframeEditor; @@ -51,6 +53,7 @@ import com.fr.form.ui.Radio; import com.fr.form.ui.RadioGroup; import com.fr.form.ui.TextArea; import com.fr.form.ui.TextEditor; +import com.fr.form.ui.ToggleButton; import com.fr.form.ui.TreeComboBoxEditor; import com.fr.form.ui.TreeEditor; import com.fr.form.ui.Widget; @@ -236,14 +239,30 @@ public class XCreatorUtils { } public static XCreator createThemedXCreator(Widget widget) { + JTemplate template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); TemplateTheme theme = template.getTemplateTheme(); if (theme instanceof FormTheme) { widget = setupTemplateTheme(widget, true, (FormTheme) theme, TemplateThemeCompatible.NONE); } + if (TemplateTool.isCurrentEditingNewJForm()){ + resetWidgetDefaultProperty(widget); + } return createXCreator(widget); } + /** + * 新表单下控件的字体默认都为9pt + * @param widget 控件 + */ + private static void resetWidgetDefaultProperty(Widget widget) { + if (widget.acceptType(FieldEditor.class)) { + ((FieldEditor) widget).setFontSize(Widget.DEFAULT_FONT_PT_SIZE); + } else if (widget.acceptType(ToggleButton.class)) { + ((ToggleButton) widget).setFontSize(Widget.DEFAULT_FONT_PT_SIZE); + } + } + /** * 创建creator * From a3041d2f0ba102fd8a7c0215407cfcd75a626f8e Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Mon, 26 Sep 2022 16:05:39 +0800 Subject: [PATCH 50/93] =?UTF-8?q?REPORT-75998=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E7=BB=84=E5=90=88=E5=9B=BEJS=E3=80=81=E5=85=AC=E5=BC=8F?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SearchChartCollectionFormulaAction.java | 33 ++++++++++++++----- .../content/js/SearchChartJSAction.java | 29 ++++++++++++++++ .../actions/replace/info/ReplaceObject.java | 22 +++++-------- 3 files changed, 62 insertions(+), 22 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java index 6d85266228..40ff04006c 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java @@ -9,6 +9,7 @@ import com.fr.chart.base.AttrChangeConfig; import com.fr.chart.chartattr.Axis; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.ChartCollection; +import com.fr.chart.chartattr.Plot; import com.fr.chart.chartattr.SwitchTitle; import com.fr.chart.chartattr.Title; @@ -28,6 +29,9 @@ import com.fr.js.NameJavaScriptGroup; import com.fr.plugin.chart.attr.axis.VanChartAlertValue; import com.fr.plugin.chart.attr.axis.VanChartAxis; import com.fr.plugin.chart.attr.axis.VanChartValueAxis; +import com.fr.plugin.chart.custom.CustomPlotFactory; +import com.fr.plugin.chart.custom.VanChartCustomPlot; +import com.fr.plugin.chart.custom.type.CustomPlotType; import com.fr.report.cell.TemplateCellElement; import com.fr.stable.StringUtils; @@ -92,20 +96,31 @@ public class SearchChartCollectionFormulaAction { Toolkit.i18nText("Fine-Design_Chart_Animation_Special"), Toolkit.i18nText("Fine-Design_Chart_Interactive") ); - if (chart.getPlot() != null) { - NameJavaScriptGroup javaScriptGroup = chart.getPlot().getHotHyperLink(); - if (javaScriptGroup != null) { - for (int i = 0; i < javaScriptGroup.size(); i++) { - NameJavaScript javaScript = javaScriptGroup.getNameHyperlink(i); - conditionContent.addOtherPos(javaScript.getName()); - SearchJSHighlightAction action = SearchJSHighlightAction.getInstance(); - action.searchJSFormulaFromOther(formulaInfos, conditionContent, javaScript.getJavaScript()); - } + + if (chart.getPlot() instanceof VanChartCustomPlot){ + VanChartCustomPlot plot = chart.getPlot(); + for (int i = 0 ; i < plot.getCustomPlotList().size() ; i++){ + ITContent customContent = ITContent.copy(conditionContent); + customContent.addOtherPos(CustomPlotFactory.getTitle(CustomPlotFactory.getCustomType(plot.getCustomPlotList().get(i)))); + dealPlot(formulaInfos,customContent,plot.getCustomPlotList().get(i)); } + } else if (chart.getPlot() != null) { + dealPlot(formulaInfos,conditionContent,chart.getPlot()); } } + private void dealPlot(List formulaInfos, ITContent content, Plot plot){ + NameJavaScriptGroup javaScriptGroup = plot.getHotHyperLink(); + if (javaScriptGroup != null) { + for (int i = 0; i < javaScriptGroup.size(); i++) { + NameJavaScript javaScript = javaScriptGroup.getNameHyperlink(i); + content.addOtherPos(javaScript.getName()); + SearchJSHighlightAction action = SearchJSHighlightAction.getInstance(); + action.searchJSFormulaFromOther(formulaInfos, content, javaScript.getJavaScript()); + } + } + } private void searchFormulaFromChartPresent(List formulaInfos, ITContent content, TopDefinitionProvider provider) { searchPresent4Formula(provider.getCategoryPresent(), content, formulaInfos); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java index bbcb960053..069167260a 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java @@ -7,14 +7,20 @@ import com.fr.design.actions.replace.info.JSInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.actions.replace.utils.SearchJSUtils; import com.fr.design.i18n.Toolkit; +import com.fr.js.JavaScriptImpl; import com.fr.js.NameJavaScript; +import com.fr.js.NameJavaScriptGroup; import com.fr.plugin.chart.attr.axis.VanChartAxis; +import com.fr.plugin.chart.attr.plot.VanChartPlot; import com.fr.plugin.chart.base.RefreshMoreLabel; import com.fr.plugin.chart.base.VanChartHtmlLabel; +import com.fr.plugin.chart.custom.CustomPlotFactory; +import com.fr.plugin.chart.custom.VanChartCustomPlot; import com.fr.plugin.chart.vanchart.VanChart; import com.fr.stable.collections.combination.Pair; +import java.util.ArrayList; import java.util.List; /** @@ -60,7 +66,30 @@ public class SearchChartJSAction { chartContent.addOtherPos(chartCollection.getChart(i).getChartName()); //坐标轴 searchAxisJS(jsInfos, chartContent, chartCollection.getChart(i)); + //组合图表-条件属性-超链特判 + dealCustomPlot(jsInfos, conditionContent,chartCollection.getChart(i)); + } + } + private void dealCustomPlot(List jsInfos, ITContent conditionContent, Chart chart) { + if (chart.getPlot() instanceof VanChartCustomPlot){ + VanChartCustomPlot customPlot = chart.getPlot(); + for (VanChartPlot plot : customPlot.getCustomPlotList()){ + NameJavaScriptGroup javaScriptGroup = plot.getHotHyperLink(); + if (javaScriptGroup != null){ + for (int i = 0 ; i < javaScriptGroup.size();i++){ + if (javaScriptGroup.getNameHyperlink(i).getJavaScript() instanceof JavaScriptImpl){ + ITContent content = ITContent.copy(conditionContent); + content.addOtherPos( + CustomPlotFactory.getTitle(CustomPlotFactory.getCustomType(plot)), + javaScriptGroup.getNameHyperlink(i).getName() + ); + content.setReplaceObject(javaScriptGroup.getNameHyperlink(i)); + jsInfos.add(new JSInfo(content)); + } + } + } + } } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java index 9f06a2d716..240ac6ba36 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java @@ -46,7 +46,7 @@ public enum ReplaceObject implements DealWithInfoValue { } else { NameJavaScript javaScript = ((NameJavaScript) (info.getContent().getReplaceObject())); info.updateOldStr(javaScript.getName(), findStr); - javaScript.setName(javaScript.getName().replaceAll(findStr, replaceStr)); + javaScript.setName(ShowValueUtils.replaceAll(javaScript.getName(), findStr, replaceStr)); } } @@ -87,15 +87,13 @@ public enum ReplaceObject implements DealWithInfoValue { @Override public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { if (((JSInfo) info).isContent()) { - if (operatorArray.size() > 0) { - JavaScriptImpl javaScript = (JavaScriptImpl) ((Listener) (info.getContent().getReplaceObject())).getAction(); - info.updateOldStr(javaScript.getContent(), findStr); - javaScript.setContent(ShowValueUtils.replaceAll(javaScript.getContent(), findStr, replaceStr)); - } + JavaScriptImpl javaScript = (JavaScriptImpl) ((Listener) (info.getContent().getReplaceObject())).getAction(); + info.updateOldStr(javaScript.getContent(), findStr); + javaScript.setContent(ShowValueUtils.replaceAll(javaScript.getContent(), findStr, replaceStr)); } else { Listener listener = ((Listener) ((info.getContent().getReplaceObject()))); info.updateOldStr(listener.getName(), findStr); - listener.setName(listener.getName().replaceAll(findStr, replaceStr)); + listener.setName(ShowValueUtils.replaceAll(listener.getName(), findStr, replaceStr)); } } @@ -135,12 +133,10 @@ public enum ReplaceObject implements DealWithInfoValue { @Override public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { if (((JSInfo) info).isContent()) { - if (operatorArray.size() > 0) { - VanChartHtmlLabel htmlLabel = ((VanChartHtmlLabel) (info.getContent().getReplaceObject())); - StringBuilder stringBuilder = new StringBuilder(htmlLabel.getCustomText()); - info.updateOldStr(htmlLabel.getCustomText(), findStr); - htmlLabel.setCustomText(ShowValueUtils.replaceAll(htmlLabel.getCustomText(), findStr, replaceStr)); - } + VanChartHtmlLabel htmlLabel = ((VanChartHtmlLabel) (info.getContent().getReplaceObject())); + StringBuilder stringBuilder = new StringBuilder(htmlLabel.getCustomText()); + info.updateOldStr(htmlLabel.getCustomText(), findStr); + htmlLabel.setCustomText(ShowValueUtils.replaceAll(htmlLabel.getCustomText(), findStr, replaceStr)); } } From eca25b845df9100f487390816f1d9c90a78c9af0 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Mon, 26 Sep 2022 16:14:26 +0800 Subject: [PATCH 51/93] =?UTF-8?q?REPORT-75998=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=E3=80=81=E8=B0=83=E6=95=B4=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/content/cell/SearchCellAction.java | 1 - .../content/floatelement/SearchFloatAction.java | 2 +- .../chart/SearchChartCollectionFormulaAction.java | 10 +++++----- .../condition/SearchFormulaConditionAction.java | 1 - .../action/content/js/SearchChartJSAction.java | 12 ++++++------ .../design/actions/replace/utils/ShowValueUtils.java | 12 +++++++++--- 6 files changed, 21 insertions(+), 17 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/cell/SearchCellAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/cell/SearchCellAction.java index 0f2f6d181a..826b247e0c 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/cell/SearchCellAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/cell/SearchCellAction.java @@ -17,7 +17,6 @@ import com.fr.form.ui.widget.CRBoundsWidget; import com.fr.general.GeneralUtils; import com.fr.main.impl.WorkBook; import com.fr.report.cell.CellElement; -import com.fr.report.cell.cellattr.core.RichText; import com.fr.report.elementcase.ElementCase; import com.fr.report.poly.PolyECBlock; import com.fr.report.report.Report; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/floatelement/SearchFloatAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/floatelement/SearchFloatAction.java index 4a478b596e..4eaa574bea 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/floatelement/SearchFloatAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/floatelement/SearchFloatAction.java @@ -85,7 +85,7 @@ public class SearchFloatAction implements SearchAction { if (floatElement.getValue() instanceof ChartCollection) { floatInfo.setChartExist(true); } - if (!(floatElement.getValue() instanceof ImageWithSuffix)){ + if (!(floatElement.getValue() instanceof ImageWithSuffix)) { result.add(floatInfo); } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java index 40ff04006c..aadf2aee41 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/chart/SearchChartCollectionFormulaAction.java @@ -97,20 +97,20 @@ public class SearchChartCollectionFormulaAction { Toolkit.i18nText("Fine-Design_Chart_Interactive") ); - if (chart.getPlot() instanceof VanChartCustomPlot){ + if (chart.getPlot() instanceof VanChartCustomPlot) { VanChartCustomPlot plot = chart.getPlot(); - for (int i = 0 ; i < plot.getCustomPlotList().size() ; i++){ + for (int i = 0; i < plot.getCustomPlotList().size(); i++) { ITContent customContent = ITContent.copy(conditionContent); customContent.addOtherPos(CustomPlotFactory.getTitle(CustomPlotFactory.getCustomType(plot.getCustomPlotList().get(i)))); - dealPlot(formulaInfos,customContent,plot.getCustomPlotList().get(i)); + dealPlot(formulaInfos, customContent, plot.getCustomPlotList().get(i)); } } else if (chart.getPlot() != null) { - dealPlot(formulaInfos,conditionContent,chart.getPlot()); + dealPlot(formulaInfos, conditionContent, chart.getPlot()); } } - private void dealPlot(List formulaInfos, ITContent content, Plot plot){ + private void dealPlot(List formulaInfos, ITContent content, Plot plot) { NameJavaScriptGroup javaScriptGroup = plot.getHotHyperLink(); if (javaScriptGroup != null) { for (int i = 0; i < javaScriptGroup.size(); i++) { diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchFormulaConditionAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchFormulaConditionAction.java index c6b8533219..44d495018b 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchFormulaConditionAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/condition/SearchFormulaConditionAction.java @@ -21,7 +21,6 @@ public class SearchFormulaConditionAction implements SearchConditionFormula { } - @Override public void searchFormulaFromCondition(List formulaInfos, ITContent content, Condition condition) { if (((FormulaCondition) (condition)).getFormula() != null) { diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java index 069167260a..ad97655263 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchChartJSAction.java @@ -67,18 +67,18 @@ public class SearchChartJSAction { //坐标轴 searchAxisJS(jsInfos, chartContent, chartCollection.getChart(i)); //组合图表-条件属性-超链特判 - dealCustomPlot(jsInfos, conditionContent,chartCollection.getChart(i)); + dealCustomPlot(jsInfos, conditionContent, chartCollection.getChart(i)); } } private void dealCustomPlot(List jsInfos, ITContent conditionContent, Chart chart) { - if (chart.getPlot() instanceof VanChartCustomPlot){ + if (chart.getPlot() instanceof VanChartCustomPlot) { VanChartCustomPlot customPlot = chart.getPlot(); - for (VanChartPlot plot : customPlot.getCustomPlotList()){ + for (VanChartPlot plot : customPlot.getCustomPlotList()) { NameJavaScriptGroup javaScriptGroup = plot.getHotHyperLink(); - if (javaScriptGroup != null){ - for (int i = 0 ; i < javaScriptGroup.size();i++){ - if (javaScriptGroup.getNameHyperlink(i).getJavaScript() instanceof JavaScriptImpl){ + if (javaScriptGroup != null) { + for (int i = 0; i < javaScriptGroup.size(); i++) { + if (javaScriptGroup.getNameHyperlink(i).getJavaScript() instanceof JavaScriptImpl) { ITContent content = ITContent.copy(conditionContent); content.addOtherPos( CustomPlotFactory.getTitle(CustomPlotFactory.getCustomType(plot)), diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java index c0d95e7079..8f962667d3 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java @@ -1,7 +1,6 @@ package com.fr.design.actions.replace.utils; - import com.fr.design.actions.replace.ui.ITReplaceMainDialog; import com.fr.stable.StringUtils; import com.fr.stable.collections.combination.Pair; @@ -30,6 +29,7 @@ public class ShowValueUtils { public static final String NUMBER_REGEX = "[0-9]"; public static final String ENGLISH_REGEX = "[a-zA-Z]"; private static List specialCharList = new ArrayList<>(); + static { //正则特殊字符:? * () [] {} ^ $ . //如果是? 并采用通配符 ,会自动转成“.” 所以 ? 不用处理 @@ -84,8 +84,8 @@ public class ShowValueUtils { */ public static String changeRegex(String regex) { String change = "\\"; - for (int i = 0 ; i < specialCharList.size() ; i ++){ - regex = regex.replace(specialCharList.get(i),change + specialCharList.get(i)); + for (int i = 0; i < specialCharList.size(); i++) { + regex = regex.replace(specialCharList.get(i), change + specialCharList.get(i)); } regex = regex.replace(NUMBER, NUMBER_REGEX); regex = regex.replace(ENGLISH, ENGLISH_REGEX); @@ -185,6 +185,12 @@ public class ShowValueUtils { return failReturn; } + /** + * 支持通配符的contains + * @param originStr + * @param matchStr + * @return + */ public static boolean contains(String originStr, String matchStr) { if (ITReplaceMainDialog.isMatched()) { String str = changeRegex(matchStr); From b583847db8be588f2797de936ea9aaecb35511b6 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Mon, 26 Sep 2022 16:33:58 +0800 Subject: [PATCH 52/93] =?UTF-8?q?REPORT-75998=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E9=AD=94=E6=9C=AF=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../replace/ui/ITReplaceSouthPanel.java | 6 +++++- .../actions/replace/ui/ITTableEditor.java | 6 +++--- .../actions/replace/ui/ITTableEditorPane.java | 10 +++++----- .../actions/replace/utils/ShowValueUtils.java | 20 +++++++++---------- 4 files changed, 23 insertions(+), 19 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceSouthPanel.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceSouthPanel.java index 8921dce5ff..a240eba967 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceSouthPanel.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceSouthPanel.java @@ -14,6 +14,10 @@ import java.awt.Color; public class ITReplaceSouthPanel { ITTableEditorPane tableEditorPane; ITTableEditor itTableEditor; + //勾选框索引 + public static final int CHECKBOX_INDEX = 0; + //ITContent在表格的列索引 + public static final int CONTENT_INDEX = 6; public ITReplaceSouthPanel() { itTableEditor = new ITTableEditor(); @@ -21,7 +25,7 @@ public class ITReplaceSouthPanel { RowSorter sorter = new TableRowSorter(itTableEditor){ @Override public boolean isSortable(int column) { - return column != 0 || column != 6; + return column != CHECKBOX_INDEX || column != CONTENT_INDEX; } }; tableEditorPane.getEditTable().setRowSorter(sorter); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditor.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditor.java index 45e209f3a8..5c57e6d6a1 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditor.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditor.java @@ -48,8 +48,8 @@ public class ITTableEditor extends UITableModelAdapter { this.setDefaultEditor(ITTableButton.class, new ITTableButton()); this.setDefaultRenderer(ITTableButton.class, new ITTableButton()); - this.createTable().getColumnModel().getColumn(6).setMaxWidth(50); - this.createTable().getColumnModel().getColumn(0).setMaxWidth(50); + this.createTable().getColumnModel().getColumn(ITReplaceSouthPanel.CONTENT_INDEX).setMaxWidth(50); + this.createTable().getColumnModel().getColumn(ITReplaceSouthPanel.CHECKBOX_INDEX).setMaxWidth(50); } @@ -81,7 +81,7 @@ public class ITTableEditor extends UITableModelAdapter { */ @Override public boolean isCellEditable(int row, int col) { - return col == 6 || col == 0; + return col == ITReplaceSouthPanel.CONTENT_INDEX || col == ITReplaceSouthPanel.CHECKBOX_INDEX; } /** diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java index c35f2ef14d..a9fe470edd 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java @@ -70,8 +70,8 @@ public class ITTableEditorPane extends BasicPane { public void mouseClicked(MouseEvent e) { int row = ((JTable) e.getSource()).rowAtPoint(e.getPoint()); int col = ((JTable) e.getSource()).columnAtPoint(e.getPoint()); - if (col == 0) { - ITContent content = (ITContent) editTable.getValueAt(row, 6); + if (col == ITReplaceSouthPanel.CHECKBOX_INDEX) { + ITContent content = (ITContent) editTable.getValueAt(row, ITReplaceSouthPanel.CONTENT_INDEX); if (content.isSelected()) { content.setSelected(false); editTable.setValueAt(content.isSelected(), row, col); @@ -116,7 +116,7 @@ public class ITTableEditorPane extends BasicPane { if (e.getClickCount() > 0) { //获得选中列 int selectColumn = tableHeader.columnAtPoint(e.getPoint()); - if (selectColumn == 0) { + if (selectColumn == ITReplaceSouthPanel.CHECKBOX_INDEX) { boolean value = !selectBox.isSelected(); selectBox.setSelected(value); selectAllOrNull(value); @@ -152,7 +152,7 @@ public class ITTableEditorPane extends BasicPane { label.setHorizontalAlignment(SwingConstants.LEFT); selectBox.setHorizontalAlignment(SwingConstants.CENTER); selectBox.setBorderPainted(true); - JComponent component = (column == 0) ? selectBox : label; + JComponent component = (column == ITReplaceSouthPanel.CHECKBOX_INDEX) ? selectBox : label; component.setForeground(tableHeader.getForeground()); component.setBackground(tableHeader.getBackground()); component.setFont(tableHeader.getFont()); @@ -187,7 +187,7 @@ public class ITTableEditorPane extends BasicPane { */ public static void selectAllOrNull(Boolean value) { for (int i = 0; i < getEditTable().getRowCount(); i++) { - ((ITContent) (getEditTable().getValueAt(i, 6))).setSelected(value); + ((ITContent) (getEditTable().getValueAt(i, ITReplaceSouthPanel.CONTENT_INDEX))).setSelected(value); } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java index 8f962667d3..fa28c6de8b 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java @@ -79,18 +79,18 @@ public class ShowValueUtils { /** * 转换正则表达式 * - * @param regex + * @param regexStr * @return */ - public static String changeRegex(String regex) { + public static String changeRegex(String regexStr) { String change = "\\"; for (int i = 0; i < specialCharList.size(); i++) { - regex = regex.replace(specialCharList.get(i), change + specialCharList.get(i)); + regexStr = regexStr.replace(specialCharList.get(i), change + specialCharList.get(i)); } - regex = regex.replace(NUMBER, NUMBER_REGEX); - regex = regex.replace(ENGLISH, ENGLISH_REGEX); - regex = regex.replace(ANY_THING, ANY_THING_REGEX); - return regex; + regexStr = regexStr.replace(NUMBER, NUMBER_REGEX); + regexStr = regexStr.replace(ENGLISH, ENGLISH_REGEX); + regexStr = regexStr.replace(ANY_THING, ANY_THING_REGEX); + return regexStr; } /** @@ -170,13 +170,13 @@ public class ShowValueUtils { * 支持正则表达式的indexOf * * @param str - * @param regex + * @param regexStr * @return */ - public static int indexOf(String str, String regex) { + public static int indexOf(String str, String regexStr) { CharSequence inputStr = str; int failReturn = -1; - String patternStr = changeRegex(regex); + String patternStr = changeRegex(regexStr); Pattern pattern = Pattern.compile(patternStr); Matcher matcher = pattern.matcher(inputStr); if (matcher.find()) { From a0c4924612e8c9afb9f03d25a14e5988cdf6c4ba Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Mon, 26 Sep 2022 17:46:01 +0800 Subject: [PATCH 53/93] =?UTF-8?q?REPORT-75998=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E6=8E=A7=E4=BB=B6=E5=85=AC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SearchCommit2DBJSFormulaAction.java | 16 ++++++++ .../SearchExportJSFormulaAction.java | 15 +++++++ .../widget/SearchDateEditorFormulaAction.java | 4 +- .../widget/SearchTreeEditorFormulaAction.java | 40 +++++++++++++------ 4 files changed, 60 insertions(+), 15 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java index 76ad5ee2bb..dec08034ab 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java @@ -1,5 +1,6 @@ package com.fr.design.actions.replace.action.content.formula.highlight.javascript; +import com.fr.base.Formula; import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchConditionFormula; import com.fr.design.actions.replace.action.content.formula.highlight.condition.SearchConditionManager; import com.fr.design.actions.replace.info.FormulaInfo; @@ -10,6 +11,7 @@ import com.fr.js.Commit2DBJavaScript; import com.fr.js.JavaScript; import com.fr.write.DBManipulation; import com.fr.write.DMLConfigJob; +import com.fr.write.config.ColumnConfig; import com.fr.write.config.DMLConfig; import java.util.List; @@ -41,12 +43,26 @@ public class SearchCommit2DBJSFormulaAction implements SearchJSFormula { private void dealWithDBManipulation(List formulaInfos, ITContent content, DBManipulation dbManipulation) { DMLConfig dmlConfig = dbManipulation.getDmlConfig(); + //值中的公式 + dealWithColumnValue(formulaInfos, content, dmlConfig); //处理提交条件中的公式 dealWithCommit2DBCondition(formulaInfos, content, dmlConfig); //处理DBManipulation dealWithSubmitJob(formulaInfos, content, dmlConfig); } + private void dealWithColumnValue(List formulaInfos, ITContent content, DMLConfig dmlConfig) { + for (int i = 0; i < dmlConfig.getColumnConfigCount(); i++) { + ColumnConfig columnConfig = dmlConfig.getColumnConfig(i); + if (columnConfig.getColumnValue() instanceof Formula) { + ITContent configContent = ITContent.copy(content); + configContent.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Base_Value")); + configContent.setReplaceObject(columnConfig.getColumnValue()); + formulaInfos.add(new FormulaInfo(configContent)); + } + } + } + private void dealWithSubmitJob(List formulaInfos, ITContent content, DMLConfig dmlConfig) { for (int i = 0; i < dmlConfig.getSubmitJobCount(); i++) { //这边自定义事件不需要处理,只处理提交事件 diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchExportJSFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchExportJSFormulaAction.java index 716c2d908f..d19970c218 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchExportJSFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchExportJSFormulaAction.java @@ -1,11 +1,14 @@ package com.fr.design.actions.replace.action.content.formula.highlight.javascript; +import com.fr.base.Formula; +import com.fr.base.Parameter; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; import com.fr.js.ExportJavaScript; import com.fr.js.JavaScript; import com.fr.js.SingleJavaScript; +import com.fr.stable.ParameterProvider; import java.util.List; @@ -26,8 +29,10 @@ public class SearchExportJSFormulaAction implements SearchJSFormula { public void searchJSFormulaFromOther(List formulaInfos, ITContent content, JavaScript javaScript) { //如果导出当前模板,可以存公式的地方就是命名方式-自定义 if (((ExportJavaScript) javaScript).isCurrentTemplate()) { + content.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Export_JS_Template_Current")); dealSingleJavaScript(formulaInfos, content, ((ExportJavaScript) javaScript).getCurrentTemplateJavaScript()); } else { + content.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Export_JS_Template_Other")); List list = ((ExportJavaScript) javaScript).getJsListForOtherTemplates(); if (isListExist(list)) { for (SingleJavaScript singleJavaScript : list) { @@ -51,6 +56,16 @@ public class SearchExportJSFormulaAction implements SearchJSFormula { ); formulaInfos.add(new FormulaInfo(newContent)); } + if (!javaScript.isExtendParameters()) { + ITContent paraContent = ITContent.copy(content); + for (ParameterProvider parameter : javaScript.getParameters()) { + if (parameter.getValue() instanceof Formula) { + paraContent.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Base_Value")); + paraContent.setReplaceObject(parameter.getValue()); + formulaInfos.add(new FormulaInfo(paraContent)); + } + } + } } /** diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java index 67548b4157..28bd17c9b5 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchDateEditorFormulaAction.java @@ -34,7 +34,7 @@ public class SearchDateEditorFormulaAction extends AbstractSearchWidgetFormulaAc if (dateEditor.getEndDateFM() != null && StringUtils.isNotEmpty(dateEditor.getEndDateFM().getContent())) { ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(dateEditor.getEndDateFM()); - newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_End_Time")); + newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Report_FS_End_Date")); formulaInfos.add(new FormulaInfo(newContent)); } } @@ -44,7 +44,7 @@ public class SearchDateEditorFormulaAction extends AbstractSearchWidgetFormulaAc if (dateEditor.getStartDateFM() != null && StringUtils.isNotEmpty(dateEditor.getStartDateFM().getContent())) { ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(dateEditor.getStartDateFM()); - newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Chart_Start_Time")); + newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Report_FS_Start_Date")); formulaInfos.add(new FormulaInfo(newContent)); } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java index d1251c5b8c..3a36eb510c 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/SearchTreeEditorFormulaAction.java @@ -1,11 +1,15 @@ package com.fr.design.actions.replace.action.content.formula.widget; +import com.fr.data.Dictionary; +import com.fr.data.impl.FormulaDictionary; import com.fr.data.impl.FormulaDisplayDictionary; +import com.fr.data.impl.TableDataDictionary; import com.fr.data.impl.TreeNodeAttr; import com.fr.data.impl.TreeNodeWrapper; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; +import com.fr.form.ui.DictionaryContainer; import com.fr.form.ui.TreeEditor; import com.fr.form.ui.tree.LayerConfig; import com.fr.stable.StringUtils; @@ -37,28 +41,38 @@ public class SearchTreeEditorFormulaAction extends AbstractSearchWidgetFormulaAc if (((TreeEditor) content.getReplaceObject()).getBuildModelConfig() != null) { //LayerConfig[] 急速分层构建 //TreeNodeWrapper 普通分层构建 - if (((TreeEditor) content.getReplaceObject()).getBuildModelConfig() instanceof LayerConfig[]) { - LayerConfig[] layerConfigs = (LayerConfig[]) ((TreeEditor) content.getReplaceObject()).getBuildModelConfig(); + //TableDataDictionary 自动构建 + Object object = ((TreeEditor) content.getReplaceObject()).getBuildModelConfig(); + if (object instanceof LayerConfig[]) { + LayerConfig[] layerConfigs = (LayerConfig[]) object; dealWithLayerConfigs(layerConfigs, content, formulaInfos); - } else if (((TreeEditor) content.getReplaceObject()).getBuildModelConfig() instanceof TreeNodeWrapper) { - TreeNodeWrapper wrapper = (TreeNodeWrapper) ((TreeEditor) content.getReplaceObject()).getBuildModelConfig(); + } else if (object instanceof TreeNodeWrapper) { + TreeNodeWrapper wrapper = (TreeNodeWrapper) object; dealWithTreeNodeWrapper(wrapper, content, formulaInfos); + } else if (object instanceof TableDataDictionary) { + TableDataDictionary tableDataDictionary = (TableDataDictionary) object; + if (tableDataDictionary.getFormula() != null) { + ITContent autoContent = ITContent.copy(content); + autoContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_Auto_Build"), + Toolkit.i18nText("Fine-Design_Basic_Display_Value") + ); + autoContent.setReplaceObject(tableDataDictionary.getFormula()); + formulaInfos.add(new FormulaInfo(autoContent)); + } } + } } } private void dealWithTreeNodeWrapper(TreeNodeWrapper wrapper, ITContent content, List formulaInfos) { for (TreeNodeAttr attr : wrapper.getTreeNodeAttrs()) { - if (((FormulaDisplayDictionary) attr.getDictionary()).getFormula() != null - && StringUtils.isNotEmpty(((FormulaDisplayDictionary) attr.getDictionary()).getFormula().getContent())) { - ITContent newContent = ITContent.copy(content); - newContent.setReplaceObject(((FormulaDisplayDictionary) attr.getDictionary()).getFormula()); - newContent.addOtherPos( - Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary"), - Toolkit.i18nText("Fine-Design_Basic_Layer_Build") - ); - formulaInfos.add(new FormulaInfo(newContent)); + if (attr.getDictionary() != null) { + DictionaryType type = DictionaryType.match(attr.getDictionary().getClass().getSimpleName()); + if (type != null) { + type.searchFormulaFromDictionary(content, formulaInfos, attr.getDictionary()); + } } } } From d64049244c7723940aa9e24d40bfa778c20f029f Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 27 Sep 2022 10:06:10 +0800 Subject: [PATCH 54/93] =?UTF-8?q?REPORT-75998=20=E6=94=B9=E5=8F=98?= =?UTF-8?q?=E5=BA=95=E5=B1=82=E5=85=B3=E9=97=AD=E9=9D=A2=E6=9D=BF=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../actions/AllowAuthorityEditAction.java | 11 ++------ .../actions/help/replace/ITReplaceHelper.java | 19 ++++++++++++++ .../actions/help/replace/ITReplaceUtils.java | 26 +++++++++++++++++++ .../fr/design/preview/DeveloperPreview.java | 9 +++---- .../SearchCommit2DBJSFormulaAction.java | 4 +-- .../replace/ui/ITReplaceMainDialog.java | 11 ++++---- .../actions/replace/utils/ShowValueUtils.java | 10 +++++-- 7 files changed, 65 insertions(+), 25 deletions(-) create mode 100644 designer-base/src/main/java/com/fr/design/actions/help/replace/ITReplaceHelper.java create mode 100644 designer-base/src/main/java/com/fr/design/actions/help/replace/ITReplaceUtils.java diff --git a/designer-base/src/main/java/com/fr/design/actions/AllowAuthorityEditAction.java b/designer-base/src/main/java/com/fr/design/actions/AllowAuthorityEditAction.java index bb26e17118..c7287ad838 100644 --- a/designer-base/src/main/java/com/fr/design/actions/AllowAuthorityEditAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/AllowAuthorityEditAction.java @@ -1,17 +1,14 @@ package com.fr.design.actions; -import com.fr.base.svg.IconUtils; import com.fr.base.vcs.DesignerMode; +import com.fr.design.actions.help.replace.ITReplaceUtils; import com.fr.design.constants.UIConstants; import com.fr.design.menu.KeySetUtils; -import com.fr.design.module.DesignModuleFactory; import com.fr.design.roleAuthority.ReportAndFSManagePane; import com.fr.design.roleAuthority.RolesAlreadyEditedPane; import com.fr.design.designer.TargetComponent; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.mainframe.*; -import com.fr.invoke.Reflect; -import com.fr.log.FineLoggerFactory; /** * Author : daisy @@ -64,11 +61,7 @@ public class AllowAuthorityEditAction extends TemplateComponentAction { DesignerContext.getDesignerFrame().refreshDottedLine(); EastRegionContainerPane.getInstance().replaceConfiguredRolesPane(RolesAlreadyEditedPane.getInstance()); EastRegionContainerPane.getInstance().removeParameterPane(); - try { - Reflect.on(DesignModuleFactory.getReplacePane().newInstance()).call("close"); - } catch (Exception e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); - } + ITReplaceUtils.close(); //画虚线 return true; diff --git a/designer-base/src/main/java/com/fr/design/actions/help/replace/ITReplaceHelper.java b/designer-base/src/main/java/com/fr/design/actions/help/replace/ITReplaceHelper.java new file mode 100644 index 0000000000..755a69ef63 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/actions/help/replace/ITReplaceHelper.java @@ -0,0 +1,19 @@ +package com.fr.design.actions.help.replace; + + +/** + * 定义一些底层操作 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-27 + */ +public interface ITReplaceHelper { + + + /** + * 关闭面板 + */ + void close(); + +} diff --git a/designer-base/src/main/java/com/fr/design/actions/help/replace/ITReplaceUtils.java b/designer-base/src/main/java/com/fr/design/actions/help/replace/ITReplaceUtils.java new file mode 100644 index 0000000000..fe7ba9d8c3 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/actions/help/replace/ITReplaceUtils.java @@ -0,0 +1,26 @@ +package com.fr.design.actions.help.replace; + +import com.fr.design.module.DesignModuleFactory; +import com.fr.log.FineLoggerFactory; + +/** + * 工具类 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-27 + */ +public class ITReplaceUtils { + + + /** + * 进入权限编辑&开发者调试时要关闭面板 + */ + public static void close(){ + try { + DesignModuleFactory.getReplacePane().newInstance().close(); + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + } +} diff --git a/designer-form/src/main/java/com/fr/design/preview/DeveloperPreview.java b/designer-form/src/main/java/com/fr/design/preview/DeveloperPreview.java index 5c0a623857..e8be79b641 100644 --- a/designer-form/src/main/java/com/fr/design/preview/DeveloperPreview.java +++ b/designer-form/src/main/java/com/fr/design/preview/DeveloperPreview.java @@ -1,5 +1,7 @@ package com.fr.design.preview; +import com.fr.design.actions.help.replace.ITReplaceHelper; +import com.fr.design.actions.help.replace.ITReplaceUtils; import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.file.MutilTempalteTabPane; import com.fr.design.fun.impl.AbstractPreviewProvider; @@ -10,7 +12,6 @@ import com.fr.design.module.DesignModuleFactory; import com.fr.design.worker.WorkerManager; import com.fr.design.worker.save.CallbackSaveWorker; import com.fr.general.web.ParameterConstants; -import com.fr.invoke.Reflect; import com.fr.log.FineLoggerFactory; import java.util.HashMap; @@ -50,11 +51,7 @@ public class DeveloperPreview extends AbstractPreviewProvider { @Override public void onClick(JTemplate jt) { super.onClick(jt); - try { - Reflect.on(DesignModuleFactory.getReplacePane().newInstance()).call("close"); - } catch (Exception e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); - } + ITReplaceUtils.close(); SwingWorker worker = WorkerManager.getInstance().getWorker(jt.getRuntimeId()); if (worker instanceof CallbackSaveWorker) { CallbackSaveWorker callbackSaveWorker = (CallbackSaveWorker) worker; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java index dec08034ab..946dc0d31c 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java @@ -52,7 +52,7 @@ public class SearchCommit2DBJSFormulaAction implements SearchJSFormula { } private void dealWithColumnValue(List formulaInfos, ITContent content, DMLConfig dmlConfig) { - for (int i = 0; i < dmlConfig.getColumnConfigCount(); i++) { + for (int i = 0, len = dmlConfig.getColumnConfigCount(); i < len; i++) { ColumnConfig columnConfig = dmlConfig.getColumnConfig(i); if (columnConfig.getColumnValue() instanceof Formula) { ITContent configContent = ITContent.copy(content); @@ -64,7 +64,7 @@ public class SearchCommit2DBJSFormulaAction implements SearchJSFormula { } private void dealWithSubmitJob(List formulaInfos, ITContent content, DMLConfig dmlConfig) { - for (int i = 0; i < dmlConfig.getSubmitJobCount(); i++) { + for (int i = 0, len = dmlConfig.getColumnConfigCount(); i < len; i++) { //这边自定义事件不需要处理,只处理提交事件 if (dmlConfig.getSubmitJob(i) instanceof DMLConfigJob) { ITContent newContent = ITContent.copy(content); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java index 2a922902f7..f6c82d8890 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java @@ -1,16 +1,14 @@ package com.fr.design.actions.replace.ui; +import com.fr.design.actions.help.replace.ITReplaceHelper; import com.fr.design.actions.replace.action.ShowSearchResultAction; import com.fr.design.actions.replace.info.Info; -import com.fr.design.actions.replace.utils.ShowValueUtils; - import com.fr.design.dialog.FineJOptionPane; import com.fr.design.dialog.UIDialog; import com.fr.design.file.HistoryTemplateListCache; -import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.DesignerContext; @@ -41,7 +39,7 @@ import static com.fr.design.actions.replace.ui.ITTableEditorPane.getEditTable; * @version 11.0 * created by Destiny.Lin on 2022-08-10 */ -public class ITReplaceMainDialog extends UIDialog { +public class ITReplaceMainDialog extends UIDialog implements ITReplaceHelper { List searchResultList = new ArrayList<>(); private static boolean ITReplaceFlag = false; private static boolean matched = false; @@ -315,7 +313,7 @@ public class ITReplaceMainDialog extends UIDialog { * 面板是否存在 * @return */ - public static boolean isExisted() { + public boolean isExisted() { return existed; } @@ -327,7 +325,8 @@ public class ITReplaceMainDialog extends UIDialog { /** * 进入权限编辑状态&开发者调试时关闭面板 */ - public static void close(){ + @Override + public void close(){ if (isExisted()){ getInstance().dispose(); setExisted(false); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java index fa28c6de8b..7ea1bdbbd0 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java @@ -140,7 +140,7 @@ public class ShowValueUtils { int index = 0; StringBuilder builder = new StringBuilder(str); while (matcher.find()) { - builder.replace(matcher.start() + index, matcher.end() + index, head + matcher.group() + tail); + builder.replace(matcher.start() + index, matcher.end() + index, head + changeHtmlStr(matcher.group()) + tail); index += size; } return "
" + @@ -148,12 +148,18 @@ public class ShowValueUtils { "
"; } else { return "
" + - replaceAll(str, searchStr, "" + searchStr + "") + + replaceAll(str, searchStr, "" + changeHtmlStr(searchStr) + "") + "
"; } } + private static String changeHtmlStr(String searchStr){ + String showStr = searchStr; + showStr = showStr.replace("<","<"); + showStr = showStr.replace(">", ">"); + return showStr; + } /** * 集合是否不为空 From 2162f3568574a8f8cea9c430d2521ff931856074 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 27 Sep 2022 10:08:08 +0800 Subject: [PATCH 55/93] =?UTF-8?q?REPORT-75998=20=E6=94=B9=E5=8F=98?= =?UTF-8?q?=E5=BA=95=E5=B1=82=E5=85=B3=E9=97=AD=E9=9D=A2=E6=9D=BF=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/module/DesignModuleFactory.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java b/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java index 60a4dfcf18..2c75509f52 100644 --- a/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java +++ b/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java @@ -1,6 +1,7 @@ package com.fr.design.module; import com.fr.base.chart.BaseChartCollection; +import com.fr.design.actions.help.replace.ITReplaceHelper; import com.fr.design.gui.chart.BaseChartPropertyPane; import com.fr.design.gui.chart.MiddleChartComponent; import com.fr.design.gui.chart.MiddleChartDialog; @@ -136,11 +137,11 @@ public class DesignModuleFactory { * 注册一下查找替换面板 * @param r */ - public static void registerReplacePane(Class r){ + public static void registerReplacePane(Class r) { instance.replacePane = r; } - public static Class getReplacePane(){ + public static Class getReplacePane() { return instance.replacePane; } From a35cfde57c6883266c66b7b3f0cfd12c249d8853 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 27 Sep 2022 11:16:14 +0800 Subject: [PATCH 56/93] =?UTF-8?q?REPORT-75998=20=E6=94=B9=E5=8F=98?= =?UTF-8?q?=E5=BA=95=E5=B1=82=E5=85=B3=E9=97=AD=E9=9D=A2=E6=9D=BF=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=E3=80=81=E4=BF=AE=E6=94=B9=E6=AD=A3=E5=88=99=E8=A1=A8?= =?UTF-8?q?=E8=BE=BE=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../actions/AllowAuthorityEditAction.java | 4 +- .../actions/help/replace/ITReplaceUtils.java | 26 ------------ .../fr/design/module/DesignModuleFactory.java | 12 +++--- .../fr/design/preview/DeveloperPreview.java | 5 +-- .../replace/ui/ITReplaceMainDialog.java | 20 ++++----- .../replace/utils/ReplaceOperator.java | 41 +++++++++++++++++++ .../actions/replace/utils/ShowValueUtils.java | 7 ++-- .../fr/start/module/DesignerActivator.java | 5 ++- 8 files changed, 63 insertions(+), 57 deletions(-) delete mode 100644 designer-base/src/main/java/com/fr/design/actions/help/replace/ITReplaceUtils.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/utils/ReplaceOperator.java diff --git a/designer-base/src/main/java/com/fr/design/actions/AllowAuthorityEditAction.java b/designer-base/src/main/java/com/fr/design/actions/AllowAuthorityEditAction.java index c7287ad838..2b1ad225ac 100644 --- a/designer-base/src/main/java/com/fr/design/actions/AllowAuthorityEditAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/AllowAuthorityEditAction.java @@ -1,9 +1,9 @@ package com.fr.design.actions; import com.fr.base.vcs.DesignerMode; -import com.fr.design.actions.help.replace.ITReplaceUtils; import com.fr.design.constants.UIConstants; import com.fr.design.menu.KeySetUtils; +import com.fr.design.module.DesignModuleFactory; import com.fr.design.roleAuthority.ReportAndFSManagePane; import com.fr.design.roleAuthority.RolesAlreadyEditedPane; import com.fr.design.designer.TargetComponent; @@ -61,7 +61,7 @@ public class AllowAuthorityEditAction extends TemplateComponentAction { DesignerContext.getDesignerFrame().refreshDottedLine(); EastRegionContainerPane.getInstance().replaceConfiguredRolesPane(RolesAlreadyEditedPane.getInstance()); EastRegionContainerPane.getInstance().removeParameterPane(); - ITReplaceUtils.close(); + DesignModuleFactory.getReplaceOperator().close(); //画虚线 return true; diff --git a/designer-base/src/main/java/com/fr/design/actions/help/replace/ITReplaceUtils.java b/designer-base/src/main/java/com/fr/design/actions/help/replace/ITReplaceUtils.java deleted file mode 100644 index fe7ba9d8c3..0000000000 --- a/designer-base/src/main/java/com/fr/design/actions/help/replace/ITReplaceUtils.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.fr.design.actions.help.replace; - -import com.fr.design.module.DesignModuleFactory; -import com.fr.log.FineLoggerFactory; - -/** - * 工具类 - * - * @author Destiny.Lin - * @version 11.0 - * created by Destiny.Lin on 2022-09-27 - */ -public class ITReplaceUtils { - - - /** - * 进入权限编辑&开发者调试时要关闭面板 - */ - public static void close(){ - try { - DesignModuleFactory.getReplacePane().newInstance().close(); - } catch (Exception e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); - } - } -} diff --git a/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java b/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java index 2c75509f52..166ea80b1f 100644 --- a/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java +++ b/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java @@ -51,7 +51,7 @@ public class DesignModuleFactory { private Class ITReplaceAction; private Class formParaDesigner; private Class paraPropertyPane; - private Class replacePane; + private static ITReplaceHelper replaceHelper; private Class formHierarchyPaneCls; private Class widgetPropertyPane; private Class buttonDetailPaneClass; @@ -135,14 +135,14 @@ public class DesignModuleFactory { /** * 注册一下查找替换面板 - * @param r + * @param */ - public static void registerReplacePane(Class r) { - instance.replacePane = r; + public static void registerReplace(ITReplaceHelper replace) { + replaceHelper = replace; } - public static Class getReplacePane() { - return instance.replacePane; + public static ITReplaceHelper getReplaceOperator() { + return replaceHelper; } public static void registerParaPropertyPaneClass(Class p) { diff --git a/designer-form/src/main/java/com/fr/design/preview/DeveloperPreview.java b/designer-form/src/main/java/com/fr/design/preview/DeveloperPreview.java index e8be79b641..07d40053c1 100644 --- a/designer-form/src/main/java/com/fr/design/preview/DeveloperPreview.java +++ b/designer-form/src/main/java/com/fr/design/preview/DeveloperPreview.java @@ -1,7 +1,5 @@ package com.fr.design.preview; -import com.fr.design.actions.help.replace.ITReplaceHelper; -import com.fr.design.actions.help.replace.ITReplaceUtils; import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.file.MutilTempalteTabPane; import com.fr.design.fun.impl.AbstractPreviewProvider; @@ -12,7 +10,6 @@ import com.fr.design.module.DesignModuleFactory; import com.fr.design.worker.WorkerManager; import com.fr.design.worker.save.CallbackSaveWorker; import com.fr.general.web.ParameterConstants; -import com.fr.log.FineLoggerFactory; import java.util.HashMap; import java.util.Map; @@ -51,7 +48,7 @@ public class DeveloperPreview extends AbstractPreviewProvider { @Override public void onClick(JTemplate jt) { super.onClick(jt); - ITReplaceUtils.close(); + DesignModuleFactory.getReplaceOperator().close(); SwingWorker worker = WorkerManager.getInstance().getWorker(jt.getRuntimeId()); if (worker instanceof CallbackSaveWorker) { CallbackSaveWorker callbackSaveWorker = (CallbackSaveWorker) worker; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java index f6c82d8890..784821b8fd 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java @@ -6,6 +6,7 @@ import com.fr.design.actions.replace.action.ShowSearchResultAction; import com.fr.design.actions.replace.info.Info; +import com.fr.design.actions.replace.utils.ShowValueUtils; import com.fr.design.dialog.FineJOptionPane; import com.fr.design.dialog.UIDialog; import com.fr.design.file.HistoryTemplateListCache; @@ -29,6 +30,7 @@ import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; +import java.util.regex.Pattern; import static com.fr.design.actions.replace.ui.ITTableEditorPane.getEditTable; @@ -39,7 +41,7 @@ import static com.fr.design.actions.replace.ui.ITTableEditorPane.getEditTable; * @version 11.0 * created by Destiny.Lin on 2022-08-10 */ -public class ITReplaceMainDialog extends UIDialog implements ITReplaceHelper { +public class ITReplaceMainDialog extends UIDialog { List searchResultList = new ArrayList<>(); private static boolean ITReplaceFlag = false; private static boolean matched = false; @@ -81,7 +83,7 @@ public class ITReplaceMainDialog extends UIDialog implements ITReplaceHelper { } } } - instance.fitScreen(); + setExisted(true); return instance; } @@ -285,6 +287,7 @@ public class ITReplaceMainDialog extends UIDialog implements ITReplaceHelper { itTableEditor.clear(); String searchStr = ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).getText(); setSearchStr(searchStr); + ShowValueUtils.containPattern = Pattern.compile(ShowValueUtils.changeRegex(searchStr)); ShowSearchResultAction searchAction = ShowSearchResultAction.match(GeneralUtils.objectToString(northPane.getFindCombobox().getSelectedItem())); if (searchAction != null) { searchResultList = searchAction.addMatchResult(searchStr, searchAction.showSearchValue(jTemplate)); @@ -313,7 +316,7 @@ public class ITReplaceMainDialog extends UIDialog implements ITReplaceHelper { * 面板是否存在 * @return */ - public boolean isExisted() { + public static boolean isExisted() { return existed; } @@ -322,16 +325,7 @@ public class ITReplaceMainDialog extends UIDialog implements ITReplaceHelper { } - /** - * 进入权限编辑状态&开发者调试时关闭面板 - */ - @Override - public void close(){ - if (isExisted()){ - getInstance().dispose(); - setExisted(false); - } - } + /** * 检测结果是否合法 */ diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ReplaceOperator.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ReplaceOperator.java new file mode 100644 index 0000000000..4ce50e4ef4 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ReplaceOperator.java @@ -0,0 +1,41 @@ +package com.fr.design.actions.replace.utils; + +import com.fr.design.actions.help.replace.ITReplaceHelper; +import com.fr.design.actions.replace.ui.ITReplaceMainDialog; + +/** + * 操作面板 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-27 + */ +public class ReplaceOperator implements ITReplaceHelper { + + /** + * 进入权限编辑状态&开发者调试时关闭面板 + */ + @Override + public void close(){ + if (isExisted()){ + ITReplaceMainDialog.getInstance().dispose(); + setExisted(false); + } + } + + /** + * 面板是否存在 + * @return + */ + public boolean isExisted(){ + return ITReplaceMainDialog.isExisted(); + } + + /** + * 设置面板存在属性 + * @param existed + */ + public void setExisted(boolean existed){ + ITReplaceMainDialog.setExisted(existed); + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java index 7ea1bdbbd0..438c3d98c7 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java @@ -28,6 +28,7 @@ public class ShowValueUtils { public static final String ANY_THING_REGEX = "."; public static final String NUMBER_REGEX = "[0-9]"; public static final String ENGLISH_REGEX = "[a-zA-Z]"; + public static Pattern containPattern; private static List specialCharList = new ArrayList<>(); static { @@ -182,8 +183,7 @@ public class ShowValueUtils { public static int indexOf(String str, String regexStr) { CharSequence inputStr = str; int failReturn = -1; - String patternStr = changeRegex(regexStr); - Pattern pattern = Pattern.compile(patternStr); + Pattern pattern = containPattern; Matcher matcher = pattern.matcher(inputStr); if (matcher.find()) { return matcher.start(); @@ -199,8 +199,7 @@ public class ShowValueUtils { */ public static boolean contains(String originStr, String matchStr) { if (ITReplaceMainDialog.isMatched()) { - String str = changeRegex(matchStr); - Pattern pattern = Pattern.compile(str); + Pattern pattern = containPattern; Matcher matcher = pattern.matcher(originStr); return matcher.find(); } else { diff --git a/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java b/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java index 1a04c79ac9..7e937911c3 100644 --- a/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java +++ b/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java @@ -32,7 +32,7 @@ import com.fr.design.actions.insert.flot.FormulaFloatAction; import com.fr.design.actions.insert.flot.ImageFloatAction; import com.fr.design.actions.insert.flot.TextBoxFloatAction; import com.fr.design.actions.replace.ITReplaceAction; -import com.fr.design.actions.replace.ui.ITReplaceMainDialog; +import com.fr.design.actions.replace.utils.ReplaceOperator; import com.fr.design.bridge.DesignToolbarProvider; import com.fr.design.constants.DesignerLaunchStatus; import com.fr.design.env.DesignerWorkspaceLoader; @@ -467,12 +467,13 @@ public class DesignerActivator extends Activator implements Prepare { DesignModuleFactory.registerNewFormActionClass(NewFormAction.class); DesignModuleFactory.registerReplaceActionClass(ITReplaceAction.class); - DesignModuleFactory.registerReplacePane(ITReplaceMainDialog.class); DesignModuleFactory.registerFormParaDesignerClass(FormParaDesigner.class); DesignModuleFactory.registerParaPropertyPaneClass(ParameterPropertyPane.class); DesignModuleFactory.registerFormHierarchyPaneClass(FormHierarchyTreePane.class); DesignModuleFactory.registerWidgetPropertyPaneClass(WidgetPropertyPane.class); DesignModuleFactory.registerButtonDetailPaneClass(FormSubmitButtonDetailPane.class); + + DesignModuleFactory.registerReplace(new ReplaceOperator()); DesignModuleFactory.registerParameterReader(new FormParameterReader()); StableFactory.registerMarkedClass(BaseJForm.XML_TAG, NewJForm.class); From 69ae4d6c1159eb4edc0ef43f1c8e3cf61b175550 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 27 Sep 2022 11:19:21 +0800 Subject: [PATCH 57/93] =?UTF-8?q?REPORT-75998=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=AD=A3=E5=88=99=E8=A1=A8=E8=BE=BE=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/actions/replace/utils/ShowValueUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java index 438c3d98c7..19ab2758f3 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java @@ -133,7 +133,7 @@ public class ShowValueUtils { public static String updateHighlight(String str, String searchStr) { if (ITReplaceMainDialog.isMatched()) { String result = str; - Pattern pattern = Pattern.compile(changeRegex(searchStr)); + Pattern pattern = containPattern; Matcher matcher = pattern.matcher(str); String head = ""; String tail = ""; From 77ee617fe3e38b1bd1152112dd06572dfca825b1 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 27 Sep 2022 11:27:34 +0800 Subject: [PATCH 58/93] =?UTF-8?q?REPORT-75998=20=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=85=A5=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../highlight/javascript/SearchCommit2DBJSFormulaAction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java index 946dc0d31c..99ed9774ce 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java @@ -64,7 +64,7 @@ public class SearchCommit2DBJSFormulaAction implements SearchJSFormula { } private void dealWithSubmitJob(List formulaInfos, ITContent content, DMLConfig dmlConfig) { - for (int i = 0, len = dmlConfig.getColumnConfigCount(); i < len; i++) { + for (int i = 0, len = dmlConfig.getSubmitJobCount(); i < len; i++) { //这边自定义事件不需要处理,只处理提交事件 if (dmlConfig.getSubmitJob(i) instanceof DMLConfigJob) { ITContent newContent = ITContent.copy(content); From c1c17b85932d5138940757dfc8c6648d93c64aee Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 27 Sep 2022 12:05:19 +0800 Subject: [PATCH 59/93] =?UTF-8?q?REPORT-75998=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=A0=BC=E5=B1=9E=E6=80=A7-=E6=8E=92=E5=BA=8F=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E5=85=AC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../actions/AllowAuthorityEditAction.java | 1 + .../fr/design/module/DesignModuleFactory.java | 4 +++ .../fr/design/preview/DeveloperPreview.java | 1 + .../actions/replace/ITReplaceAction.java | 1 + .../content/formula/FormulaReplaceObject.java | 30 +++++++++++++++++++ .../replace/ui/ITReplaceMainDialog.java | 14 --------- .../replace/utils/ReplaceOperator.java | 22 ++------------ 7 files changed, 40 insertions(+), 33 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/AllowAuthorityEditAction.java b/designer-base/src/main/java/com/fr/design/actions/AllowAuthorityEditAction.java index 2b1ad225ac..546a702979 100644 --- a/designer-base/src/main/java/com/fr/design/actions/AllowAuthorityEditAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/AllowAuthorityEditAction.java @@ -61,6 +61,7 @@ public class AllowAuthorityEditAction extends TemplateComponentAction { DesignerContext.getDesignerFrame().refreshDottedLine(); EastRegionContainerPane.getInstance().replaceConfiguredRolesPane(RolesAlreadyEditedPane.getInstance()); EastRegionContainerPane.getInstance().removeParameterPane(); + //进入时要关闭查找替换面板 DesignModuleFactory.getReplaceOperator().close(); //画虚线 diff --git a/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java b/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java index 166ea80b1f..272daa7f5c 100644 --- a/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java +++ b/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java @@ -141,6 +141,10 @@ public class DesignModuleFactory { replaceHelper = replace; } + /** + * 获取查找替换面板的操作类 + * @return + */ public static ITReplaceHelper getReplaceOperator() { return replaceHelper; } diff --git a/designer-form/src/main/java/com/fr/design/preview/DeveloperPreview.java b/designer-form/src/main/java/com/fr/design/preview/DeveloperPreview.java index 07d40053c1..176c44fe01 100644 --- a/designer-form/src/main/java/com/fr/design/preview/DeveloperPreview.java +++ b/designer-form/src/main/java/com/fr/design/preview/DeveloperPreview.java @@ -48,6 +48,7 @@ public class DeveloperPreview extends AbstractPreviewProvider { @Override public void onClick(JTemplate jt) { super.onClick(jt); + //进入时要关闭查找替换面板 DesignModuleFactory.getReplaceOperator().close(); SwingWorker worker = WorkerManager.getInstance().getWorker(jt.getRuntimeId()); if (worker instanceof CallbackSaveWorker) { diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ITReplaceAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ITReplaceAction.java index 1a9f67bb8a..358dc19652 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ITReplaceAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ITReplaceAction.java @@ -55,6 +55,7 @@ public class ITReplaceAction extends UpdateAction { */ public void actionPerformed(ActionEvent event) { ITReplaceMainDialog mainFrame = ITReplaceMainDialog.getInstance(); + mainFrame.fitScreen(); mainFrame.setVisible(true); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java index e002832656..6260565551 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java @@ -22,6 +22,7 @@ import com.fr.main.impl.WorkBook; import com.fr.report.cell.cellattr.CellInsertPolicyAttr; import com.fr.report.cell.cellattr.core.RichChar; import com.fr.report.cell.cellattr.core.group.DSColumn; +import com.fr.report.core.sort.sortexpression.FormulaSortExpression; import com.fr.stable.FormulaProvider; import com.fr.stable.ParameterProvider; import com.fr.stable.StringUtils; @@ -495,6 +496,35 @@ public enum FormulaReplaceObject implements DealWithInfoValue { public boolean check(Info info) { return true; } + }, + /** + * 排序 + */ + FORMULA_SORT_EXPRESSION("FormulaSortExpression"){ + @Override + public Map getValue(Object... o) { + HashMap map = new HashMap<>(); + if (StringUtils.isNotEmpty(((FormulaSortExpression) o[0]).getFormula())) { + map.put("content", ((FormulaSortExpression) o[0]).getFormula()); + } + return map; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { + Object replaceObject = info.getContent().getReplaceObject(); + info.updateOldStr((((FormulaSortExpression) replaceObject).getFormula()), findStr); + ((FormulaSortExpression) replaceObject).setFormula(ShowValueUtils.replaceAll((((FormulaSortExpression) replaceObject).getFormula()), findStr, replaceStr)); + } + + @Override + public boolean check(Info info) { + if (info.getContent().getReplaceObject() instanceof FormulaSortExpression){ + FormulaSortExpression sortExpression = (FormulaSortExpression) info.getContent().getReplaceObject(); + return StringUtils.equals(sortExpression.getFormula(), info.getContent().getOldShowStr()); + } + return false; + } } ; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java index 784821b8fd..f6fd8b6dc4 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java @@ -52,7 +52,6 @@ public class ITReplaceMainDialog extends UIDialog { private ITReplaceWestPanel westPanel; private boolean searchFlag; private String searchStr; - private static boolean existed = false; public ITReplaceMainDialog() { super(DesignerContext.getDesignerFrame()); @@ -67,7 +66,6 @@ public class ITReplaceMainDialog extends UIDialog { initFrame(); fitScreen(); ITReplaceFlag = true; - existed = true; } /** @@ -83,7 +81,6 @@ public class ITReplaceMainDialog extends UIDialog { } } } - setExisted(true); return instance; } @@ -312,17 +309,6 @@ public class ITReplaceMainDialog extends UIDialog { } } - /** - * 面板是否存在 - * @return - */ - public static boolean isExisted() { - return existed; - } - - public static void setExisted(boolean existed) { - ITReplaceMainDialog.existed = existed; - } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ReplaceOperator.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ReplaceOperator.java index 4ce50e4ef4..e405c6be5f 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ReplaceOperator.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ReplaceOperator.java @@ -13,29 +13,13 @@ import com.fr.design.actions.replace.ui.ITReplaceMainDialog; public class ReplaceOperator implements ITReplaceHelper { /** - * 进入权限编辑状态&开发者调试时关闭面板 + * 关闭面板 + * (当前关闭时机:进入权限编辑状态&开发者调试) */ @Override public void close(){ - if (isExisted()){ - ITReplaceMainDialog.getInstance().dispose(); - setExisted(false); - } + ITReplaceMainDialog.getInstance().dispose(); } - /** - * 面板是否存在 - * @return - */ - public boolean isExisted(){ - return ITReplaceMainDialog.isExisted(); - } - /** - * 设置面板存在属性 - * @param existed - */ - public void setExisted(boolean existed){ - ITReplaceMainDialog.setExisted(existed); - } } From b4e8ed97828082f02625541dee39c59acbf0a540 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 27 Sep 2022 15:59:02 +0800 Subject: [PATCH 60/93] =?UTF-8?q?REPORT-75998=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E6=8A=A5=E8=A1=A8=E5=A1=AB=E6=8A=A5=E5=B1=9E?= =?UTF-8?q?=E6=80=A7=EF=BC=8C=E4=BF=AE=E6=94=B9=E6=8E=A5=E5=8F=A3=E5=90=8D?= =?UTF-8?q?=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...laceHelper.java => ITReplaceOperator.java} | 2 +- .../content/formula/FormulaReplaceObject.java | 2 +- .../action/content/formula/FormulaTag.java | 13 +++ .../formula/cell/SearchCellFormulaAction.java | 3 + .../SearchHighlightFormulaManager.java | 16 ++- .../SearchCommit2DBJSFormulaAction.java | 17 ++- .../javascript/SearchJSHighlightAction.java | 6 +- .../present/SearchPresentHighlightAction.java | 91 ++++++++++++++++ .../value/SearchValueHighlightAction.java | 70 ++++++++++++ .../template/SearchTemplateFormulaAction.java | 101 ++++++++++++++++-- .../action/content/js/SearchWebJSAction.java | 3 +- .../action/content/sql/SearchSQLAction.java | 3 +- .../actions/replace/info/ReplaceObject.java | 1 - .../actions/replace/info/base/SearchTag.java | 4 + .../replace/ui/ITReplaceMainDialog.java | 1 - .../replace/utils/ReplaceOperator.java | 4 +- 16 files changed, 306 insertions(+), 31 deletions(-) rename designer-base/src/main/java/com/fr/design/actions/help/replace/{ITReplaceHelper.java => ITReplaceOperator.java} (85%) create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/present/SearchPresentHighlightAction.java create mode 100644 designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/value/SearchValueHighlightAction.java diff --git a/designer-base/src/main/java/com/fr/design/actions/help/replace/ITReplaceHelper.java b/designer-base/src/main/java/com/fr/design/actions/help/replace/ITReplaceOperator.java similarity index 85% rename from designer-base/src/main/java/com/fr/design/actions/help/replace/ITReplaceHelper.java rename to designer-base/src/main/java/com/fr/design/actions/help/replace/ITReplaceOperator.java index 755a69ef63..bbaaedd651 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/replace/ITReplaceHelper.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/replace/ITReplaceOperator.java @@ -8,7 +8,7 @@ package com.fr.design.actions.help.replace; * @version 11.0 * created by Destiny.Lin on 2022-09-27 */ -public interface ITReplaceHelper { +public interface ITReplaceOperator { /** diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java index 6260565551..02cd18810e 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaReplaceObject.java @@ -196,7 +196,7 @@ public enum FormulaReplaceObject implements DealWithInfoValue { /** * present */ - PRESENT("Present") { + FORMULA_PRESENT("FormulaPresent") { @Override public Map getValue(Object... o) { HashMap map = new HashMap<>(); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaTag.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaTag.java index c5c12d3bfc..532a530883 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaTag.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaTag.java @@ -1,6 +1,7 @@ package com.fr.design.actions.replace.action.content.formula; import com.fr.chart.chartdata.MeterReportDefinition; +import com.fr.data.VerifyItem; import com.fr.design.actions.replace.info.DealWithInfoValue; import com.fr.design.actions.replace.info.Info; import com.fr.design.actions.replace.info.base.SearchTag; @@ -92,6 +93,18 @@ public enum FormulaTag implements DealWithInfoValue { definition.setEndAreaName(ShowValueUtils.replaceAll(GeneralUtils.objectToString(definition.getEndAreaName()), findStr, replaceStr)); } } + }, + /** + * 模板填报属性数据校验提示 + */ + WRITE_ATTR_MESSAGE(SearchTag.WRITE_ATTR_MESSAGE) { + @Override + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { + if (info.getContent().getHoldObject() instanceof VerifyItem) { + VerifyItem item = (VerifyItem) info.getContent().getHoldObject(); + item.setMessage(ShowValueUtils.replaceAll(item.getMessage(), findStr, replaceStr)); + } + } }; int index; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java index 9cfdd43433..b58008e7bc 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java @@ -106,6 +106,9 @@ public class SearchCellFormulaAction implements SearchCellFormula { //处理HighlightAction SearchHighlightFormulaAction searchHighlightAction = SearchHighlightFormulaAction.getInstance(); ITContent newContent = ITContent.copy(cellInfo.getContent()); + newContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_Condition_Attributes"), + highlightGroup.getHighlight(i).getName()); searchHighlightAction.dealWithHighlightAction(newContent, formulaInfos, highlightAction); } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaManager.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaManager.java index 28a5b752a9..290731f8f6 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaManager.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/SearchHighlightFormulaManager.java @@ -3,6 +3,8 @@ package com.fr.design.actions.replace.action.content.formula.highlight; import com.fr.design.actions.replace.action.SearchAction; import com.fr.design.actions.replace.action.SearchManager; import com.fr.design.actions.replace.action.content.formula.highlight.javascript.SearchJSHighlightAction; +import com.fr.design.actions.replace.action.content.formula.highlight.present.SearchPresentHighlightAction; +import com.fr.design.actions.replace.action.content.formula.highlight.value.SearchValueHighlightAction; import java.util.HashMap; import java.util.Map; @@ -17,19 +19,23 @@ import java.util.Map; public class SearchHighlightFormulaManager implements SearchManager { private Map highlightType = new HashMap<>(); public static final String HYPERLINK_HIGHLIGHT_ACTION = "HyperlinkHighlightAction"; + public static final String PRESENT_HIGHLIGHT_ACTION = "PresentHighlightAction"; + public static final String VALUE_HIGHLIGHT_ACTION = "ValueHighlightAction"; + private SearchHighlightFormulaManager() { //这边控件类型不做处理,在SearchWidgetFormulaAction统一处理即可 //条件属性-超级链接 register(HYPERLINK_HIGHLIGHT_ACTION, SearchJSHighlightAction.getInstance()); - //条件属性-... - // TODO: 2022/9/14 条件属性的其他类型 + //条件属性-形态 + register(PRESENT_HIGHLIGHT_ACTION, SearchPresentHighlightAction.getInstance()); + //条件属性-新值 + register(VALUE_HIGHLIGHT_ACTION, SearchValueHighlightAction.getInstance()); } - @Override public void registerAction(String tag, SearchAction searchAction) { - if (searchAction instanceof SearchHighlightFormula){ + if (searchAction instanceof SearchHighlightFormula) { register(tag, (SearchHighlightFormula) searchAction); } } @@ -42,7 +48,7 @@ public class SearchHighlightFormulaManager implements SearchManager { /** * 注册 * - * @param tag 用于匹配的类型tag + * @param tag 用于匹配的类型tag * @param searchHighlightFormula 对应的实现类 */ private void register(String tag, SearchHighlightFormula searchHighlightFormula) { diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java index 99ed9774ce..1b1c352741 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java @@ -11,6 +11,7 @@ import com.fr.js.Commit2DBJavaScript; import com.fr.js.JavaScript; import com.fr.write.DBManipulation; import com.fr.write.DMLConfigJob; +import com.fr.write.NameSubmitJob; import com.fr.write.config.ColumnConfig; import com.fr.write.config.DMLConfig; @@ -41,7 +42,13 @@ public class SearchCommit2DBJSFormulaAction implements SearchJSFormula { } } - private void dealWithDBManipulation(List formulaInfos, ITContent content, DBManipulation dbManipulation) { + /** + * 处理DBManipulation + * @param formulaInfos + * @param content + * @param dbManipulation + */ + public void dealWithDBManipulation(List formulaInfos, ITContent content, DBManipulation dbManipulation) { DMLConfig dmlConfig = dbManipulation.getDmlConfig(); //值中的公式 dealWithColumnValue(formulaInfos, content, dmlConfig); @@ -66,12 +73,14 @@ public class SearchCommit2DBJSFormulaAction implements SearchJSFormula { private void dealWithSubmitJob(List formulaInfos, ITContent content, DMLConfig dmlConfig) { for (int i = 0, len = dmlConfig.getSubmitJobCount(); i < len; i++) { //这边自定义事件不需要处理,只处理提交事件 - if (dmlConfig.getSubmitJob(i) instanceof DMLConfigJob) { + NameSubmitJob job = dmlConfig.getNameSubmitJob(i); + if (job != null && job.getSubmitJob() instanceof DMLConfigJob) { ITContent newContent = ITContent.copy(content); newContent.addOtherPos( - Toolkit.i18nText("Fine-Design_Basic_Write_Submit_Event") + Toolkit.i18nText("Fine-Design_Basic_Write_Submit_Event"), + job.getName() ); - dealWithDBManipulation(formulaInfos, newContent, (((DMLConfigJob) dmlConfig.getSubmitJob(i)).getDBManipulation())); + dealWithDBManipulation(formulaInfos, newContent, (((DMLConfigJob) job.getSubmitJob()).getDBManipulation())); } } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSHighlightAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSHighlightAction.java index 4d2bd573b8..40c31abe9e 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSHighlightAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchJSHighlightAction.java @@ -34,11 +34,7 @@ public class SearchJSHighlightAction implements SearchJSFormula { for (int i = 0; i < nameJavaScriptGroup.size(); i++) { //单元格条件属性-属性-超级链接里面参数的公式统一判断获取一下 ITContent newContent = ITContent.copy(content); - newContent.addOtherPos( - Toolkit.i18nText("Fine-Design_Basic_Cell"), - Toolkit.i18nText("Fine-Design_Basic_Condition_Attributes"), - nameJavaScriptGroup.getNameHyperlink(i).getName() - ); + newContent.addOtherPos(nameJavaScriptGroup.getNameHyperlink(i).getName()); addFormulaInfosFromJSPara(formulaInfos, newContent, nameJavaScriptGroup.getNameHyperlink(i).getJavaScript()); } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/present/SearchPresentHighlightAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/present/SearchPresentHighlightAction.java new file mode 100644 index 0000000000..6826ff3fd1 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/present/SearchPresentHighlightAction.java @@ -0,0 +1,91 @@ +package com.fr.design.actions.replace.action.content.formula.highlight.present; + +import com.fr.base.Formula; +import com.fr.base.present.DictPresent; +import com.fr.base.present.FormulaPresent; +import com.fr.design.actions.replace.action.content.formula.highlight.SearchHighlightFormula; +import com.fr.design.actions.replace.action.content.formula.highlight.javascript.SearchJSHighlightAction; +import com.fr.design.actions.replace.action.content.formula.widget.DictionaryType; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; +import com.fr.report.cell.TemplateCellElement; +import com.fr.report.cell.cellattr.highlight.HighlightAction; +import com.fr.report.cell.cellattr.highlight.PresentHighlightAction; + +import java.util.List; + +/** + * 条件属性-属性-形态 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-27 + */ +public class SearchPresentHighlightAction implements SearchHighlightFormula { + + private SearchPresentHighlightAction() { + } + + + @Override + public void dealWithHighlightAction(ITContent content, List formulaInfos, HighlightAction highlightAction) { + if (highlightAction instanceof PresentHighlightAction) { + ITContent newContent = ITContent.copy(content); + newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Report_Present")); + PresentHighlightAction action = (PresentHighlightAction) highlightAction; + //公式形态 + if (action.getPresent() instanceof FormulaPresent) { + newContent.setReplaceObject(action.getPresent()); + formulaInfos.add(new FormulaInfo(newContent)); + } else if (action.getPresent() instanceof DictPresent) { + //数据字典 + DictPresent present = (DictPresent) action.getPresent(); + if (present.getDictionary() != null) { + DictionaryType type = DictionaryType.match(present.getDictionary().getClass().getSimpleName()); + if (type != null) { + type.searchFormulaFromDictionary(newContent, formulaInfos, present.getDictionary()); + } + } + } else if (action.getValue() instanceof Formula) { + //普通 + newContent.setReplaceObject(action.getValue()); + formulaInfos.add(new FormulaInfo(newContent)); + + } + } + } + + /** + * 获取单例 + * + * @return + */ + public static SearchPresentHighlightAction getInstance() { + return SearchPresentHighlightActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchPresentHighlightActionEnum { + /** + * 单例实现 + */ + SINGLETON; + private SearchPresentHighlightAction instance; + + SearchPresentHighlightActionEnum() { + instance = new SearchPresentHighlightAction(); + } + + /** + * 拿到对象 + * + * @return + */ + public SearchPresentHighlightAction getInstance() { + return instance; + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/value/SearchValueHighlightAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/value/SearchValueHighlightAction.java new file mode 100644 index 0000000000..1d692c197a --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/value/SearchValueHighlightAction.java @@ -0,0 +1,70 @@ +package com.fr.design.actions.replace.action.content.formula.highlight.value; + +import com.fr.base.Formula; +import com.fr.design.actions.replace.action.content.formula.highlight.SearchHighlightFormula; +import com.fr.design.actions.replace.action.content.formula.highlight.javascript.SearchMobileHyperlinkFormulaAction; +import com.fr.design.actions.replace.info.FormulaInfo; +import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.i18n.Toolkit; +import com.fr.report.cell.cellattr.highlight.HighlightAction; +import com.fr.report.cell.cellattr.highlight.ValueHighlightAction; + +import java.util.List; + +/** + * 条件属性-新值-公式 + * + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-27 + */ +public class SearchValueHighlightAction implements SearchHighlightFormula { + private SearchValueHighlightAction() { + } + + @Override + public void dealWithHighlightAction(ITContent content, List formulaInfos, HighlightAction highlightAction) { + if (highlightAction instanceof ValueHighlightAction) { + ValueHighlightAction action = (ValueHighlightAction) highlightAction; + if (action.getValue() instanceof Formula) { + ITContent valueContent = ITContent.copy(content); + valueContent.addOtherPos(Toolkit.i18nText("Fine-Design_Report_New_Value")); + valueContent.setReplaceObject(action.getValue()); + formulaInfos.add(new FormulaInfo(valueContent)); + } + } + } + + /** + * 获取单例 + * + * @return + */ + public static SearchValueHighlightAction getInstance() { + return SearchValueHighlightActionEnum.SINGLETON.getInstance(); + } + + /** + * 枚举实现单例 + */ + private enum SearchValueHighlightActionEnum { + /** + * 单例实现 + */ + SINGLETON; + private SearchValueHighlightAction instance; + + SearchValueHighlightActionEnum() { + instance = new SearchValueHighlightAction(); + } + + /** + * 拿到对象 + * + * @return + */ + public SearchValueHighlightAction getInstance() { + return instance; + } + } +} diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java index 39c98dda3f..9c57f2ad00 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java @@ -5,11 +5,22 @@ import com.fr.base.Parameter; import com.fr.base.ParameterConfig; import com.fr.base.io.AttrMark; import com.fr.base.iofile.attr.WatermarkAttr; +import com.fr.data.Verifier; +import com.fr.data.VerifyItem; +import com.fr.design.actions.replace.action.content.formula.highlight.javascript.SearchCommit2DBJSFormulaAction; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.JTemplate; +import com.fr.main.impl.WorkBook; import com.fr.report.core.ReportUtils; +import com.fr.report.report.Report; +import com.fr.report.worksheet.WorkSheet; +import com.fr.report.write.BuiltInSQLSubmiter; +import com.fr.report.write.ReportWriteAttr; +import com.fr.report.write.SubmitVisitor; +import com.fr.report.write.ValueVerifier; +import com.fr.stable.CommonUtils; import java.util.List; @@ -33,8 +44,79 @@ public class SearchTemplateFormulaAction implements SearchTemplateFormula { ITContent content = new ITContent(); content.setTemplateName(jTemplate.getTemplateName()); content.setJumpAble(false); + //参数 searchTemplateParaFormula(jTemplate, formulaInfos, content); + //水印 searchTemplateWaterMarkFormula(jTemplate, formulaInfos, content); + //报表填报属性 + searchTemplateWriteAttrFormula(jTemplate, formulaInfos, content); + } + + private void searchTemplateWriteAttrFormula(JTemplate jTemplate, List formulaInfos, ITContent content) { + if (jTemplate.getTarget() instanceof WorkBook) { + WorkBook workBook = (WorkBook) jTemplate.getTarget(); + for (int i = 0, len = workBook.getReportCount(); i < len; i++) { + Report report = workBook.getReport(i); + if (report instanceof WorkSheet) { + ITContent sheetContent = ITContent.copy(content); + sheetContent.setSheetName(workBook.getReportName(i)); + sheetContent.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Report_Write_Attributes")); + dealWorkSheetAttr(formulaInfos, sheetContent, (WorkSheet) report); + } + } + } + } + + private void dealWorkSheetAttr(List formulaInfos, ITContent sheetContent, WorkSheet report) { + ReportWriteAttr attr = report.getAttributeTarget(ReportWriteAttr.XML_TAG); + if (attr != null){ + //提交 + for (int i = 0 ,len = attr.getSubmitVisitorCount(); i < len ; i ++){ + SubmitVisitor visitor = attr.getSubmitVisitor(i); + ITContent submitContent = ITContent.copy(sheetContent); + submitContent.addOtherPos(Toolkit.i18nText("FIne-Design_Basic_Submit")); + dealBuiltSQLSubmiter4Formula(formulaInfos, submitContent, visitor); + } + + //数据校验 + for (int i = 0 , len = attr.getValueVerifierCount() ;i < len ; i++){ + Verifier verifier = attr.getVerifier(i); + if (verifier instanceof ValueVerifier){ + ITContent content = ITContent.copy(sheetContent); + content.addOtherPos(Toolkit.i18nText("Fine-Design_Report_Verify_Data_Verify")); + dealValueVerifier4Formula(formulaInfos,content, (ValueVerifier) verifier); + } + } + } + + } + + private void dealValueVerifier4Formula(List formulaInfos, ITContent content, ValueVerifier verifier) { + ITContent verifyContent = ITContent.copy(content); + verifyContent.addOtherPos(verifier.getName()); + for (int i = 0,len = verifier.getVerifyItemsCount() ;i < len ; i ++){ + VerifyItem item = verifier.getVerifyItem(i); + if (item.getFormula() != null){ + ITContent formulaContent = ITContent.copy(verifyContent); + formulaContent.setReplaceObject(item.getFormula()); + formulaInfos.add(new FormulaInfo(formulaContent)); + } + if (CommonUtils.canBeFormula(item.getMessage())){ + ITContent messageContent = ITContent.copy(verifyContent); + messageContent.setReplaceObject(item.getMessage()); + messageContent.setHoldObject(item); + formulaInfos.add(new FormulaInfo(messageContent)); + } + } + } + + private void dealBuiltSQLSubmiter4Formula(List formulaInfos, ITContent submitContent, SubmitVisitor visitor) { + if (visitor instanceof BuiltInSQLSubmiter){ + BuiltInSQLSubmiter submiter = (BuiltInSQLSubmiter) visitor; + ITContent content = ITContent.copy(submitContent); + content.addOtherPos(submiter.getName()); + SearchCommit2DBJSFormulaAction.getInstance().dealWithDBManipulation(formulaInfos,content, submiter.getDBManipulation()); + } } @Override @@ -60,15 +142,16 @@ public class SearchTemplateFormulaAction implements SearchTemplateFormula { } } - Parameter[] globalParameters = ParameterConfig.getInstance().getGlobalParameters(); - for (Parameter parameter : globalParameters) { - if (parameter.getValue() instanceof Formula) { - ITContent paraContent = ITContent.copy(content); - paraContent.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Parameter_Source_Type_Server")); - paraContent.setReplaceObject(parameter); - formulaInfos.add(new FormulaInfo(paraContent)); - } - } + ////全局类二期再做 + //Parameter[] globalParameters = ParameterConfig.getInstance().getGlobalParameters(); + //for (Parameter parameter : globalParameters) { + // if (parameter.getValue() instanceof Formula) { + // ITContent paraContent = ITContent.copy(content); + // paraContent.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Parameter_Source_Type_Server")); + // paraContent.setReplaceObject(parameter); + // formulaInfos.add(new FormulaInfo(paraContent)); + // } + //} } /** diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java index 0e35fa525f..0ceec53617 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java @@ -59,7 +59,8 @@ public class SearchWebJSAction implements SearchJS { private void addJSInfos2ListFromWeb(JTemplate jTemplate, List jsInfos) { - dealServerWebAttr(jTemplate, jsInfos); + ////服务器相关二期再做 + //dealServerWebAttr(jTemplate, jsInfos); dealTemplateWebAttr(jTemplate, jsInfos); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/sql/SearchSQLAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/sql/SearchSQLAction.java index f37f6acac1..f36e3afbeb 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/sql/SearchSQLAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/sql/SearchSQLAction.java @@ -36,7 +36,8 @@ public class SearchSQLAction implements SearchAction { content.setTemplateName(jTemplate.getTemplateName()); content.setJumpAble(false); addModelDataInfos2Array(jTemplate, content, sqlInfos); - addServerDataInfos2Array(content, sqlInfos); + ////服务器的数据二期再查询 + //addServerDataInfos2Array(content, sqlInfos); setSqlInfos(sqlInfos); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java index 240ac6ba36..3d615e18a9 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java @@ -2,7 +2,6 @@ package com.fr.design.actions.replace.info; import com.fr.data.impl.DBTableData; import com.fr.design.actions.replace.utils.ShowValueUtils; -import com.fr.design.data.DesignTableDataManager; import com.fr.form.event.Listener; import com.fr.js.JavaScriptImpl; import com.fr.js.NameJavaScript; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java index 2106c51c0f..f7bbff40e7 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java @@ -32,6 +32,10 @@ public class SearchTag { * 终点区域名 */ public static final int CHART_AREA_END_NAME = 5; + /** + * 模板填报属性数据校验提示 + */ + public static final int WRITE_ATTR_MESSAGE = 6; } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java index f6fd8b6dc4..de4628b590 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java @@ -1,7 +1,6 @@ package com.fr.design.actions.replace.ui; -import com.fr.design.actions.help.replace.ITReplaceHelper; import com.fr.design.actions.replace.action.ShowSearchResultAction; import com.fr.design.actions.replace.info.Info; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ReplaceOperator.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ReplaceOperator.java index e405c6be5f..be6dc6eb1d 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ReplaceOperator.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ReplaceOperator.java @@ -1,6 +1,6 @@ package com.fr.design.actions.replace.utils; -import com.fr.design.actions.help.replace.ITReplaceHelper; +import com.fr.design.actions.help.replace.ITReplaceOperator; import com.fr.design.actions.replace.ui.ITReplaceMainDialog; /** @@ -10,7 +10,7 @@ import com.fr.design.actions.replace.ui.ITReplaceMainDialog; * @version 11.0 * created by Destiny.Lin on 2022-09-27 */ -public class ReplaceOperator implements ITReplaceHelper { +public class ReplaceOperator implements ITReplaceOperator { /** * 关闭面板 From 49ac7e25e38f59e5f7b7c992d44cc5ea19576bbf Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 27 Sep 2022 16:06:53 +0800 Subject: [PATCH 61/93] =?UTF-8?q?REPORT-75998=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SearchCommit2DBJSFormulaAction.java | 1 + .../template/SearchTemplateFormulaAction.java | 20 +++++++++---------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java index 1b1c352741..54e971ee3e 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchCommit2DBJSFormulaAction.java @@ -44,6 +44,7 @@ public class SearchCommit2DBJSFormulaAction implements SearchJSFormula { /** * 处理DBManipulation + * * @param formulaInfos * @param content * @param dbManipulation diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java index 9c57f2ad00..6c8419512d 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java @@ -69,9 +69,9 @@ public class SearchTemplateFormulaAction implements SearchTemplateFormula { private void dealWorkSheetAttr(List formulaInfos, ITContent sheetContent, WorkSheet report) { ReportWriteAttr attr = report.getAttributeTarget(ReportWriteAttr.XML_TAG); - if (attr != null){ + if (attr != null) { //提交 - for (int i = 0 ,len = attr.getSubmitVisitorCount(); i < len ; i ++){ + for (int i = 0, len = attr.getSubmitVisitorCount(); i < len; i++) { SubmitVisitor visitor = attr.getSubmitVisitor(i); ITContent submitContent = ITContent.copy(sheetContent); submitContent.addOtherPos(Toolkit.i18nText("FIne-Design_Basic_Submit")); @@ -79,12 +79,12 @@ public class SearchTemplateFormulaAction implements SearchTemplateFormula { } //数据校验 - for (int i = 0 , len = attr.getValueVerifierCount() ;i < len ; i++){ + for (int i = 0, len = attr.getValueVerifierCount(); i < len; i++) { Verifier verifier = attr.getVerifier(i); - if (verifier instanceof ValueVerifier){ + if (verifier instanceof ValueVerifier) { ITContent content = ITContent.copy(sheetContent); content.addOtherPos(Toolkit.i18nText("Fine-Design_Report_Verify_Data_Verify")); - dealValueVerifier4Formula(formulaInfos,content, (ValueVerifier) verifier); + dealValueVerifier4Formula(formulaInfos, content, (ValueVerifier) verifier); } } } @@ -94,14 +94,14 @@ public class SearchTemplateFormulaAction implements SearchTemplateFormula { private void dealValueVerifier4Formula(List formulaInfos, ITContent content, ValueVerifier verifier) { ITContent verifyContent = ITContent.copy(content); verifyContent.addOtherPos(verifier.getName()); - for (int i = 0,len = verifier.getVerifyItemsCount() ;i < len ; i ++){ + for (int i = 0, len = verifier.getVerifyItemsCount(); i < len; i++) { VerifyItem item = verifier.getVerifyItem(i); - if (item.getFormula() != null){ + if (item.getFormula() != null) { ITContent formulaContent = ITContent.copy(verifyContent); formulaContent.setReplaceObject(item.getFormula()); formulaInfos.add(new FormulaInfo(formulaContent)); } - if (CommonUtils.canBeFormula(item.getMessage())){ + if (CommonUtils.canBeFormula(item.getMessage())) { ITContent messageContent = ITContent.copy(verifyContent); messageContent.setReplaceObject(item.getMessage()); messageContent.setHoldObject(item); @@ -111,11 +111,11 @@ public class SearchTemplateFormulaAction implements SearchTemplateFormula { } private void dealBuiltSQLSubmiter4Formula(List formulaInfos, ITContent submitContent, SubmitVisitor visitor) { - if (visitor instanceof BuiltInSQLSubmiter){ + if (visitor instanceof BuiltInSQLSubmiter) { BuiltInSQLSubmiter submiter = (BuiltInSQLSubmiter) visitor; ITContent content = ITContent.copy(submitContent); content.addOtherPos(submiter.getName()); - SearchCommit2DBJSFormulaAction.getInstance().dealWithDBManipulation(formulaInfos,content, submiter.getDBManipulation()); + SearchCommit2DBJSFormulaAction.getInstance().dealWithDBManipulation(formulaInfos, content, submiter.getDBManipulation()); } } From 8cb8c26b26d67e93fdc8543abc156ad50537113a Mon Sep 17 00:00:00 2001 From: "Jimmy.Zheng" Date: Tue, 27 Sep 2022 16:35:10 +0800 Subject: [PATCH 62/93] =?UTF-8?q?REPORT-70593=20=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E6=8E=A7=E4=BB=B6=E5=90=88=E5=B9=B6=E4=B8=BB=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/designer/ui/ImgPanel.java | 56 ++++++++++--------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/designer/ui/ImgPanel.java b/designer-form/src/main/java/com/fr/design/designer/ui/ImgPanel.java index 05aa8ba465..1c17c56c34 100644 --- a/designer-form/src/main/java/com/fr/design/designer/ui/ImgPanel.java +++ b/designer-form/src/main/java/com/fr/design/designer/ui/ImgPanel.java @@ -1,17 +1,17 @@ package com.fr.design.designer.ui; import com.fr.general.ImageWithSuffix; +import com.fr.stable.Constants; import java.awt.Graphics; import java.awt.Image; import javax.swing.JComponent; /** -* -*

图片控件中的已选图片展示面板

-* -* @author Jimmy.Zheng created on 2022/8/11 21:17 -**/ + *

图片控件中的已选图片展示面板

+ * + * @author Jimmy.Zheng created on 2022/8/11 21:17 + **/ public class ImgPanel extends JComponent { private static final long serialVersionUID = 1L; private Image backgroundImage; @@ -27,40 +27,41 @@ public class ImgPanel extends JComponent { setImageDisplayMode(modeName); } + public Image getBackgroundImage() { + return this.backgroundImage; + } + public void setBackgroundImage(Image image) { this.backgroundImage = image; repaint(); } - public Image getBackgroundImage() { - return this.backgroundImage; + public int getImageDisplayMode() { + return this.imageDisplayMode; } public void setImageDisplayMode(int modeName) { - if (modeName == 1) { - this.modeIndex = 0; - } - - if (modeName == 0) { - this.imageDisplayMode = 0; - this.modeIndex = 1; - } - - if (modeName == 2) { - this.imageDisplayMode = 2; - this.modeIndex = 2; - } - if (modeName == 4) { - this.imageDisplayMode = 4; - this.modeIndex = 3; + switch (modeName) { + case Constants.IMAGE_CENTER: + this.modeIndex = 0; + break; + case Constants.IMAGE_TILED: + this.imageDisplayMode = 0; + this.modeIndex = 1; + break; + case Constants.IMAGE_EXTEND: + this.imageDisplayMode = 2; + this.modeIndex = 2; + break; + case Constants.IMAGE_ADJUST: + this.imageDisplayMode = 4; + this.modeIndex = 3; + break; + default: } repaint(); } - public int getImageDisplayMode() { - return this.imageDisplayMode; - } - @Override protected void paintComponent(Graphics g) { super.paintComponent(g); @@ -105,6 +106,7 @@ public class ImgPanel extends JComponent { int xx = (getWidth() - width) / 2; int yy = (getHeight() - height) / 2; g.drawImage(this.backgroundImage, xx, yy, width, height, this); + default: } } } From ac73c3f1699f26a23ed742cad05e380a678fe5dd Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Wed, 28 Sep 2022 10:58:20 +0800 Subject: [PATCH 63/93] =?UTF-8?q?REPORT-81231=E3=80=90=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=E3=80=91alphafine?= =?UTF-8?q?=E4=B8=8D=E9=80=89=E6=8B=A9=E4=BB=BB=E4=BD=95TAB=EF=BC=8C?= =?UTF-8?q?=E7=82=B9=E5=87=BBalphafine,=E6=97=A5=E5=BF=97=E4=B8=AD?= =?UTF-8?q?=E5=87=BA=E7=8E=B0=E6=8A=A5=E9=94=99=20REPORT-81241=E3=80=90?= =?UTF-8?q?=E8=BF=90=E8=90=A5=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F?= =?UTF-8?q?=E3=80=91=E6=8F=92=E4=BB=B6=E4=B8=AD=E5=BF=83=E6=96=AD=E7=BD=91?= =?UTF-8?q?=E5=90=8E=E7=9A=84=E9=87=8D=E6=96=B0=E5=8A=A0=E8=BD=BD=E6=97=A0?= =?UTF-8?q?=E5=8F=8D=E5=BA=94=20REPORT-80752=E3=80=90=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=E3=80=91=E5=8A=A8?= =?UTF-8?q?=E6=80=81=E6=97=A0=E6=B3=95=E6=98=BE=E7=A4=BA=E5=87=BA=E6=9D=A5?= =?UTF-8?q?=EF=BC=8C=E8=8B=A5=E6=8F=92=E4=BB=B6=E4=B8=AD=E5=BF=83=E5=9C=A8?= =?UTF-8?q?=E9=A6=96=E4=B8=AA=E4=B9=9F=E6=97=A0=E6=B3=95=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=20REPORT-81211=E3=80=90=E8=BF=90=E8=90=A5=E4=BA=A7=E5=93=81?= =?UTF-8?q?=E5=8C=96=E4=BA=8C=E6=9C=9F=E3=80=91=E6=8F=92=E4=BB=B6=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E6=9F=A5=E8=AF=A2=E7=9A=84=E6=8E=A8=E8=8D=90=E4=B8=8E?= =?UTF-8?q?=E8=A7=86=E8=A7=89=E5=9B=BEUI=E4=B8=8D=E4=B8=80=E8=87=B4=201?= =?UTF-8?q?=E3=80=81=E5=B1=8F=E8=94=BD=E6=8A=A5=E9=94=99=202=E3=80=81?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E8=AE=BE=E7=BD=AEreload=E6=96=B9=E6=B3=95=20?= =?UTF-8?q?3=E3=80=81=E6=94=B9=E4=B8=8Bui?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alphafine/AlphaFineConfigManager.java | 8 +++ .../fr/design/remote/button/IconButton.java | 10 +++- .../mainframe/alphafine/AlphaFineHelper.java | 2 +- .../alphafine/component/AlphaFineFrame.java | 1 + .../component/RecommendSearchLabel.java | 2 +- .../alphafine/component/SearchHintPane.java | 5 +- .../download/FineMarketDownloadManager.java | 9 +-- .../alphafine/preview/DefaultContentPane.java | 8 +++ .../preview/DefaultPluginContentPane.java | 58 ++++++++++++++++--- .../alphafine/search/SearchWorkerManager.java | 3 +- 10 files changed, 83 insertions(+), 23 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigManager.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigManager.java index c74ddaa65a..2e78d1062d 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigManager.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineConfigManager.java @@ -484,6 +484,14 @@ public class AlphaFineConfigManager implements XMLable { this.showTemplateShop = showTemplateShop; } + /** + * 是否展示alphafine窗口,设置-搜索范围 0勾选,则不显示 + */ + public boolean needShowAlphaFineDialog() { + return hasTemplateShop() || isContainDocument() || isContainPlugin() || + isContainAction() || isProductDynamics() || isContainMyTemplate(); + } + /** * 返回tab显示顺序 */ diff --git a/designer-base/src/main/java/com/fr/design/remote/button/IconButton.java b/designer-base/src/main/java/com/fr/design/remote/button/IconButton.java index 598ec7f057..d2d04b8d4c 100644 --- a/designer-base/src/main/java/com/fr/design/remote/button/IconButton.java +++ b/designer-base/src/main/java/com/fr/design/remote/button/IconButton.java @@ -4,6 +4,7 @@ import com.fr.base.BaseUtils; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.stable.StringUtils; +import javax.swing.Icon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; @@ -15,14 +16,19 @@ import java.awt.Graphics2D; import java.awt.Point; public final class IconButton extends JButton { - public IconButton() { + + public IconButton(Icon icon) { super(StringUtils.EMPTY); setContentAreaFilled(false); setFocusPainted(false); - setIcon(BaseUtils.readIcon("com/fr/design/remote/images/icon_tab_close_normal.png")); + setIcon(icon); setBorder(null); } + public IconButton() { + this(BaseUtils.readIcon("com/fr/design/remote/images/icon_tab_close_normal.png")); + } + @Override protected void paintBorder(Graphics g) { } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/AlphaFineHelper.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/AlphaFineHelper.java index 441bd03ac6..126e883d9b 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/AlphaFineHelper.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/AlphaFineHelper.java @@ -58,7 +58,7 @@ public class AlphaFineHelper { * 弹出alphafine搜索面板 */ public static void showAlphaFineDialog(boolean forceOpen) { - if (!AlphaFineConfigManager.isALPHALicAvailable()) { + if (!AlphaFineConfigManager.isALPHALicAvailable() || !AlphaFineConfigManager.getInstance().needShowAlphaFineDialog()) { return; } if (alphaFineDialog == null) { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineFrame.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineFrame.java index 8e9a4d3cdd..0269480b60 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineFrame.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineFrame.java @@ -920,6 +920,7 @@ public class AlphaFineFrame extends JFrame { this.productNewsSearchWorkerManager.doSearch(searchTextBean); this.documentWorkerManager.doSearch(searchTextBean); this.pluginSearchWorkerManager.doSearch(searchTextBean); + this.templateResourceSearchWorkerManager.doSearch(searchTextBean); } /** diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/RecommendSearchLabel.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/RecommendSearchLabel.java index 8d3b760706..f7e017024f 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/RecommendSearchLabel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/RecommendSearchLabel.java @@ -23,7 +23,7 @@ public class RecommendSearchLabel extends JPanel { private static final Color RECOMMEND_SEARCH_KEY_BLUE = new Color(0x419bf9); public RecommendSearchLabel(String title, @NotNull List tips) { - this.setLayout(new FlowLayout(FlowLayout.LEFT)); + this.setLayout(new FlowLayout(FlowLayout.CENTER)); this.setBackground(Color.WHITE); JLabel recommend = new JLabel(title); this.add(recommend); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchHintPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchHintPane.java index adc5fc8352..83a2fdffcd 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchHintPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/SearchHintPane.java @@ -31,8 +31,9 @@ public class SearchHintPane extends JPanel { private static final String TITLE = Toolkit.i18nText("Fine-Design_Report_AlphaFine_Search_Title"); private static final String RECOMMEND = Toolkit.i18nText("Fine-Design_Report_AlphaFine_Recommend_Search"); private static final Icon ICON = IconUtils.readIcon("com/fr/design/mainframe/alphafine/images/search_hint.svg"); - private static final int HEIGHT = 305; + private static final int HEIGHT = 200; private static final int WIDTH = 300; + private static final int TITLE_LABEL_HEIGHT = 30; private static final int TITLE_FONT_SIZE = 14; public SearchHintPane() { @@ -45,6 +46,7 @@ public class SearchHintPane extends JPanel { public SearchHintPane(List hints, Icon icon, String title) { setLayout(new BorderLayout()); + setBorder(BorderFactory.createEmptyBorder(40,0,0,0)); setBackground(Color.white); setPreferredSize(new Dimension(WIDTH, HEIGHT)); setAlignmentY(SwingConstants.CENTER); @@ -64,6 +66,7 @@ public class SearchHintPane extends JPanel { description.setFont(DesignUtils.getDefaultGUIFont().applySize(TITLE_FONT_SIZE)); description.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); description.setHorizontalAlignment(SwingConstants.CENTER); + description.setPreferredSize(new Dimension(WIDTH, TITLE_LABEL_HEIGHT)); return description; } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/download/FineMarketDownloadManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/download/FineMarketDownloadManager.java index 29172f94ef..127d2002b0 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/download/FineMarketDownloadManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/download/FineMarketDownloadManager.java @@ -2,7 +2,6 @@ package com.fr.design.mainframe.alphafine.download; import com.fr.base.svg.IconUtils; import com.fr.common.util.Strings; -import com.fr.decision.webservice.v10.log.download.utils.LogZipUtils; import com.fr.design.DesignerEnvManager; import com.fr.design.extra.Process; import com.fr.design.i18n.Toolkit; @@ -14,7 +13,6 @@ import com.fr.design.mainframe.alphafine.search.helper.FineMarketClientHelper; import com.fr.design.mainframe.toast.SimpleToast; import com.fr.general.IOUtils; import com.fr.log.FineLoggerFactory; -import com.fr.stable.pinyin.ChineseHelper; import javax.swing.SwingUtilities; import javax.swing.filechooser.FileSystemView; @@ -82,11 +80,8 @@ public class FineMarketDownloadManager { if (fileName.endsWith(FineMarketConstants.ZIP)) { File file = new File(fileName); File parentDir = file.getParentFile(); - if (ChineseHelper.containChinese(fileName)) { - IOUtils.unzip(file, parentDir.getAbsolutePath(), LogZipUtils.GBK); - } else { - IOUtils.unzip(file, parentDir.getAbsolutePath()); - } + // TODO:之前用的gbk解码太容易乱码了。这里应该自动识别编码,然后解压,但是要添加1个三方包,可能会赶不上发布。所以先暂时用utf8顶着。 + IOUtils.unzip(file, parentDir.getAbsolutePath(), "UTF-8"); } } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultContentPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultContentPane.java index 56c14dc28a..99c312e882 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultContentPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultContentPane.java @@ -35,6 +35,14 @@ public class DefaultContentPane extends JPanel { this.searchWorkerManager.showDefault(this); } + /** + * 显示搜索结果 + */ + public void showResult(JPanel result) { + add(result); + repaint(); + } + public DefaultContentPane() { } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultPluginContentPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultPluginContentPane.java index fc9838e9fb..9ed5003d36 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultPluginContentPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/DefaultPluginContentPane.java @@ -10,8 +10,9 @@ import com.fr.design.mainframe.alphafine.search.manager.SearchProviderRegistry; import com.fr.general.CloudCenter; import com.fr.log.FineLoggerFactory; +import javax.swing.JPanel; import javax.swing.SwingWorker; -import java.awt.BorderLayout; +import java.awt.CardLayout; import java.util.ArrayList; import java.util.List; @@ -25,18 +26,46 @@ import java.util.List; public class DefaultPluginContentPane extends DefaultContentPane { private static final String[] HINTS = CloudCenter.getInstance().acquireConf("alphafine.plugin.recommend", "JS,API,JSON").split(","); - // 左边展示内容,右边展示搜索提示 + private static final String LOADING_PANE = "loading"; + private static final String NETWORK_ERROR = "networkError"; + private static final String RESULT_PANE = "result"; private SearchWorkerManager searchWorkerManager; private CellType cellType; + private AlphaFineFrame parentWindow; + private CardLayout cardLayout; + private SearchLoadingPane searchLoadingPane; + private NetWorkFailedPane netWorkFailedPane; + private SwingWorker worker; + public DefaultPluginContentPane(CellType cellType, AlphaFineFrame parentWindow) { super(); - this.setLayout(new BorderLayout()); + this.cellType = cellType; + this.parentWindow = parentWindow; + this.cardLayout = new CardLayout(); + this.setLayout(cardLayout); this.setPreferredSize(AlphaFineConstants.PREVIEW_SIZE); - new SwingWorker() { + initPanel(); + add(searchLoadingPane, LOADING_PANE); + add(netWorkFailedPane, NETWORK_ERROR); + worker = createWorker(); + worker.execute(); + } + + private void initPanel() { + this.searchLoadingPane = new SearchLoadingPane(); + this.netWorkFailedPane = new NetWorkFailedPane(()-> reload()); + } + + private void switchPane(String tag) { + cardLayout.show(this, tag); + } + + private SwingWorker createWorker() { + return new SwingWorker() { @Override protected Boolean doInBackground() throws Exception { - add(new SearchLoadingPane()); + switchPane(LOADING_PANE); return AlphaFineHelper.isNetworkOk(); } @@ -45,9 +74,8 @@ public class DefaultPluginContentPane extends DefaultContentPane { super.done(); try { boolean networkOk = get(); - removeAll(); if (!networkOk) { - add(new NetWorkFailedPane()); + switchPane(NETWORK_ERROR); } else { List searchKeys = new ArrayList<>(); for (String s : HINTS) { @@ -64,10 +92,22 @@ public class DefaultPluginContentPane extends DefaultContentPane { } catch (Exception e) { FineLoggerFactory.getLogger().error(e, e.getMessage()); } - } - }.execute(); + }; + } + + @Override + public void showResult(JPanel result) { + add(result, RESULT_PANE); + switchPane(RESULT_PANE); + } + /** + * 网络异常时,重新加载 + */ + public void reload() { + worker = createWorker(); + worker.execute(); } public CellType getCellType() { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchWorkerManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchWorkerManager.java index bca8904a13..cdacd681d7 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchWorkerManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/SearchWorkerManager.java @@ -135,8 +135,7 @@ public class SearchWorkerManager implements SearchManager { searchResultPane.getSearchResultList().setModel(searchListModel); searchResultPane.getSearchResultList().setSelectedIndex(0); searchResultPane.getSearchResultList().requestFocus(); - defaultContentPane.add(searchResultPane); - SwingUtilities.invokeLater(()->defaultContentPane.repaint()); + SwingUtilities.invokeLater(()->defaultContentPane.showResult(searchResultPane)); } @Override From 1c781a2c9be59d2b5a8829d9cb8afd2bf2d3a30e Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Wed, 28 Sep 2022 11:02:33 +0800 Subject: [PATCH 64/93] =?UTF-8?q?REPORT-81231=E3=80=90=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=E3=80=91alphafine?= =?UTF-8?q?=E4=B8=8D=E9=80=89=E6=8B=A9=E4=BB=BB=E4=BD=95TAB=EF=BC=8C?= =?UTF-8?q?=E7=82=B9=E5=87=BBalphafine,=E6=97=A5=E5=BF=97=E4=B8=AD?= =?UTF-8?q?=E5=87=BA=E7=8E=B0=E6=8A=A5=E9=94=99=20REPORT-81241=E3=80=90?= =?UTF-8?q?=E8=BF=90=E8=90=A5=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F?= =?UTF-8?q?=E3=80=91=E6=8F=92=E4=BB=B6=E4=B8=AD=E5=BF=83=E6=96=AD=E7=BD=91?= =?UTF-8?q?=E5=90=8E=E7=9A=84=E9=87=8D=E6=96=B0=E5=8A=A0=E8=BD=BD=E6=97=A0?= =?UTF-8?q?=E5=8F=8D=E5=BA=94=20REPORT-80752=E3=80=90=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=E3=80=91=E5=8A=A8?= =?UTF-8?q?=E6=80=81=E6=97=A0=E6=B3=95=E6=98=BE=E7=A4=BA=E5=87=BA=E6=9D=A5?= =?UTF-8?q?=EF=BC=8C=E8=8B=A5=E6=8F=92=E4=BB=B6=E4=B8=AD=E5=BF=83=E5=9C=A8?= =?UTF-8?q?=E9=A6=96=E4=B8=AA=E4=B9=9F=E6=97=A0=E6=B3=95=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=20REPORT-81211=E3=80=90=E8=BF=90=E8=90=A5=E4=BA=A7=E5=93=81?= =?UTF-8?q?=E5=8C=96=E4=BA=8C=E6=9C=9F=E3=80=91=E6=8F=92=E4=BB=B6=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E6=9F=A5=E8=AF=A2=E7=9A=84=E6=8E=A8=E8=8D=90=E4=B8=8E?= =?UTF-8?q?=E8=A7=86=E8=A7=89=E5=9B=BEUI=E4=B8=8D=E4=B8=80=E8=87=B4=201?= =?UTF-8?q?=E3=80=81=E4=BF=AE=E6=94=B9pr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alphafine/download/FineMarketDownloadManager.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/download/FineMarketDownloadManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/download/FineMarketDownloadManager.java index 127d2002b0..bc195865ac 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/download/FineMarketDownloadManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/download/FineMarketDownloadManager.java @@ -11,6 +11,7 @@ import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.model.TemplateResource; import com.fr.design.mainframe.alphafine.search.helper.FineMarketClientHelper; import com.fr.design.mainframe.toast.SimpleToast; +import com.fr.file.FileCommonUtils; import com.fr.general.IOUtils; import com.fr.log.FineLoggerFactory; @@ -81,7 +82,7 @@ public class FineMarketDownloadManager { File file = new File(fileName); File parentDir = file.getParentFile(); // TODO:之前用的gbk解码太容易乱码了。这里应该自动识别编码,然后解压,但是要添加1个三方包,可能会赶不上发布。所以先暂时用utf8顶着。 - IOUtils.unzip(file, parentDir.getAbsolutePath(), "UTF-8"); + IOUtils.unzip(file, FileCommonUtils.getAbsolutePath(parentDir), "UTF-8"); } } From e24487da1e02f7369dd2e239d958524cfe586c2a Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Wed, 28 Sep 2022 11:07:44 +0800 Subject: [PATCH 65/93] =?UTF-8?q?REPORT-75998=20=E8=A1=A5=E5=85=85?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/module/DesignModuleFactory.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java b/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java index 272daa7f5c..bab9bb1ac8 100644 --- a/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java +++ b/designer-base/src/main/java/com/fr/design/module/DesignModuleFactory.java @@ -1,7 +1,7 @@ package com.fr.design.module; import com.fr.base.chart.BaseChartCollection; -import com.fr.design.actions.help.replace.ITReplaceHelper; +import com.fr.design.actions.help.replace.ITReplaceOperator; import com.fr.design.gui.chart.BaseChartPropertyPane; import com.fr.design.gui.chart.MiddleChartComponent; import com.fr.design.gui.chart.MiddleChartDialog; @@ -51,7 +51,7 @@ public class DesignModuleFactory { private Class ITReplaceAction; private Class formParaDesigner; private Class paraPropertyPane; - private static ITReplaceHelper replaceHelper; + private static ITReplaceOperator replaceHelper; private Class formHierarchyPaneCls; private Class widgetPropertyPane; private Class buttonDetailPaneClass; @@ -137,7 +137,7 @@ public class DesignModuleFactory { * 注册一下查找替换面板 * @param */ - public static void registerReplace(ITReplaceHelper replace) { + public static void registerReplace(ITReplaceOperator replace) { replaceHelper = replace; } @@ -145,7 +145,7 @@ public class DesignModuleFactory { * 获取查找替换面板的操作类 * @return */ - public static ITReplaceHelper getReplaceOperator() { + public static ITReplaceOperator getReplaceOperator() { return replaceHelper; } From a0a92ce1c472388a467e99e7339aba29598c227b Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Wed, 28 Sep 2022 14:38:43 +0800 Subject: [PATCH 66/93] =?UTF-8?q?REPORT-75998=20=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E6=9C=8D=E5=8A=A1=E5=99=A8=E5=85=AC=E5=BC=8F?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E3=80=81=E5=A2=9E=E5=8A=A0=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E9=AB=98=E4=BA=AE=E3=80=81=E6=8C=89=E9=92=AE=E7=BD=AE=E7=81=B0?= =?UTF-8?q?=E3=80=81=E6=90=9C=E7=B4=A2sheet=E5=90=8D=E7=A7=B0=E5=85=AC?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/content/formula/FormulaTag.java | 12 ++++++++ .../formula/data/SearchDataFormulaAction.java | 4 +-- .../template/SearchTemplateFormulaAction.java | 25 ++++++++++++++++ .../actions/replace/info/base/SearchTag.java | 5 ++++ .../replace/ui/ITReplaceMainDialog.java | 29 +++++++++++++++++++ .../actions/replace/ui/ITTableEditorPane.java | 16 +++++++++- 6 files changed, 88 insertions(+), 3 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaTag.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaTag.java index 532a530883..0a20c503ce 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaTag.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaTag.java @@ -7,6 +7,7 @@ import com.fr.design.actions.replace.info.Info; import com.fr.design.actions.replace.info.base.SearchTag; import com.fr.design.actions.replace.utils.ShowValueUtils; import com.fr.general.GeneralUtils; +import com.fr.main.impl.WorkBook; import com.fr.plugin.chart.map.data.VanMapReportDefinition; import com.fr.stable.collections.combination.Pair; import org.jetbrains.annotations.Nullable; @@ -105,6 +106,17 @@ public enum FormulaTag implements DealWithInfoValue { item.setMessage(ShowValueUtils.replaceAll(item.getMessage(), findStr, replaceStr)); } } + }, + SHEET_NAME(SearchTag.SHEET_NAME) { + @Override + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { + if (info.getContent().getHoldObject() instanceof WorkBook) { + WorkBook workBook = (WorkBook) info.getContent().getHoldObject(); + int sheetId = Integer.parseInt(info.getContent().getSheetID()); + String name = workBook.getReportName(sheetId); + workBook.setReportName(sheetId, ShowValueUtils.replaceAll(name, findStr, replaceStr)); + } + } }; int index; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormulaAction.java index aa296a0721..3d4c66adc0 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/data/SearchDataFormulaAction.java @@ -31,8 +31,8 @@ public class SearchDataFormulaAction implements SearchFormula { //模板数据集 dealTemplateData(jTemplate, formulaInfos); - //服务器数据集 - dealServerData(formulaInfos); + ////服务器数据集二期再考虑 + //dealServerData(formulaInfos); } private void dealServerData(List fomulaInfos) { diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java index 6c8419512d..de653dd706 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java @@ -10,8 +10,13 @@ import com.fr.data.VerifyItem; import com.fr.design.actions.replace.action.content.formula.highlight.javascript.SearchCommit2DBJSFormulaAction; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.actions.replace.info.base.SearchTag; +import com.fr.design.file.HistoryTemplateListCache; +import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.JTemplate; +import com.fr.design.mainframe.ReportComponentComposite; +import com.fr.design.mainframe.SheetNameTabPane; import com.fr.main.impl.WorkBook; import com.fr.report.core.ReportUtils; import com.fr.report.report.Report; @@ -50,6 +55,26 @@ public class SearchTemplateFormulaAction implements SearchTemplateFormula { searchTemplateWaterMarkFormula(jTemplate, formulaInfos, content); //报表填报属性 searchTemplateWriteAttrFormula(jTemplate, formulaInfos, content); + //sheet名称 + searchTemplateSheetNameFormula(jTemplate, formulaInfos, content); + } + + private void searchTemplateSheetNameFormula(JTemplate jTemplate, List formulaInfos, ITContent content) { + if (jTemplate.getTarget() instanceof WorkBook) { + WorkBook workBook = (WorkBook) jTemplate.getTarget(); + for (int i = 0, len = workBook.getReportCount(); i < len; i++) { + String name = workBook.getReportName(i); + if (CommonUtils.canBeFormula(name)) { + ITContent sheetContent = ITContent.copy(content); + sheetContent.addOtherPos(Toolkit.i18nText("Fine-Design_Replace_Sheet")); + sheetContent.setReplaceObject(name); + sheetContent.setHoldObject(workBook); + sheetContent.setTag(SearchTag.SHEET_NAME); + sheetContent.setSheetID(String.valueOf(i)); + formulaInfos.add(new FormulaInfo(sheetContent)); + } + } + } } private void searchTemplateWriteAttrFormula(JTemplate jTemplate, List formulaInfos, ITContent content) { diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java index f7bbff40e7..b4163f57bf 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java @@ -36,6 +36,11 @@ public class SearchTag { * 模板填报属性数据校验提示 */ public static final int WRITE_ATTR_MESSAGE = 6; + /** + * sheet名称 + */ + public static final int SHEET_NAME = 7; + } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java index de4628b590..96ee17b6cd 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java @@ -51,6 +51,8 @@ public class ITReplaceMainDialog extends UIDialog { private ITReplaceWestPanel westPanel; private boolean searchFlag; private String searchStr; + private static final int FIRST_ROW = 0; + public static int selectCount = 0; public ITReplaceMainDialog() { super(DesignerContext.getDesignerFrame()); @@ -117,6 +119,7 @@ public class ITReplaceMainDialog extends UIDialog { northPane.getFindInputCombobox().setEditable(true); northPane.getReplaceInputCombobox().setEditable(false); + northPane.getReplaceButton().setEnabled(false); ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).setPlaceholder(Toolkit.i18nText("Fine-Design_Replace_Search_Input")); ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).setPlaceholder(Toolkit.i18nText("Fine-Design_Replace_Input")); @@ -282,9 +285,13 @@ public class ITReplaceMainDialog extends UIDialog { templateID = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getTarget().getTemplateID(); itTableEditor.clear(); String searchStr = ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).getText(); + //更新搜索内容 setSearchStr(searchStr); + //处理通配符的regexStr ShowValueUtils.containPattern = Pattern.compile(ShowValueUtils.changeRegex(searchStr)); + //获取搜索目标 ShowSearchResultAction searchAction = ShowSearchResultAction.match(GeneralUtils.objectToString(northPane.getFindCombobox().getSelectedItem())); + //搜索 if (searchAction != null) { searchResultList = searchAction.addMatchResult(searchStr, searchAction.showSearchValue(jTemplate)); itTableEditor.add(searchResultList); @@ -295,7 +302,15 @@ public class ITReplaceMainDialog extends UIDialog { itTableEditor.fireTableDataChanged(); northPane.refreshFindInputComboBoxItems(); setSearchFlag(true); + selectCount = searchResultList.size(); + //如果有结果,默认选中第一行 + if (searchResultList.size() > 0){ + getEditTable().addRowSelectionInterval(FIRST_ROW,FIRST_ROW); + northPane.getReplaceButton().setEnabled(true); + } + + //设置替换输入框的可用性 if (StringUtils.isNotEmpty(searchStr)) { ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).setEditable(true); northPane.getReplaceInputCombobox().setEditable(true); @@ -309,7 +324,21 @@ public class ITReplaceMainDialog extends UIDialog { } + public ITReplaceSouthPanel getSouthPanel() { + return southPanel; + } + + public void setSouthPanel(ITReplaceSouthPanel southPanel) { + this.southPanel = southPanel; + } + + public ITReplaceNorthPanel getNorthPane() { + return northPane; + } + public void setNorthPane(ITReplaceNorthPanel northPane) { + this.northPane = northPane; + } /** * 检测结果是否合法 diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java index a9fe470edd..4d2f39718d 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java @@ -75,9 +75,13 @@ public class ITTableEditorPane extends BasicPane { if (content.isSelected()) { content.setSelected(false); editTable.setValueAt(content.isSelected(), row, col); + ITReplaceMainDialog.selectCount--; + ITReplaceMainDialog.getInstance().getNorthPane().getReplaceButton().setEnabled(ITReplaceMainDialog.selectCount > 0); } else { content.setSelected(true); editTable.setValueAt(content.isSelected(), row, col); + ITReplaceMainDialog.selectCount++; + ITReplaceMainDialog.getInstance().getNorthPane().getReplaceButton().setEnabled(true); } } @@ -120,6 +124,11 @@ public class ITTableEditorPane extends BasicPane { boolean value = !selectBox.isSelected(); selectBox.setSelected(value); selectAllOrNull(value); + if (value) { + ITReplaceMainDialog.selectCount = getEditTable().getRowCount(); + } else { + ITReplaceMainDialog.selectCount = 0; + } tableHeader.repaint(); table.repaint(); } @@ -130,6 +139,7 @@ public class ITTableEditorPane extends BasicPane { /** * 刷新表头 + * * @param table */ public void refreshHeader(JTable table) { @@ -186,7 +196,11 @@ public class ITTableEditorPane extends BasicPane { * @param value */ public static void selectAllOrNull(Boolean value) { - for (int i = 0; i < getEditTable().getRowCount(); i++) { + int len = getEditTable().getRowCount(); + if (len > 0) { + ITReplaceMainDialog.getInstance().getNorthPane().getReplaceButton().setEnabled(value); + } + for (int i = 0; i < len; i++) { ((ITContent) (getEditTable().getValueAt(i, ITReplaceSouthPanel.CONTENT_INDEX))).setSelected(value); } } From dfa49d772c205e419d1473a3df5e497d1f450214 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Wed, 28 Sep 2022 14:41:51 +0800 Subject: [PATCH 67/93] =?UTF-8?q?REPORT-75998=20=E8=A1=A5=E5=85=85?= =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../actions/replace/action/content/formula/FormulaTag.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaTag.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaTag.java index 0a20c503ce..fd2367f3be 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaTag.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaTag.java @@ -107,6 +107,9 @@ public enum FormulaTag implements DealWithInfoValue { } } }, + /** + * sheet名称 + */ SHEET_NAME(SearchTag.SHEET_NAME) { @Override public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { From cd7fa16fa186189d2e8edcab23a24b6895ae7f6f Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Wed, 28 Sep 2022 16:13:21 +0800 Subject: [PATCH 68/93] =?UTF-8?q?REPORT-81241=E3=80=90=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=E3=80=91=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E4=B8=AD=E5=BF=83=E6=96=AD=E7=BD=91=E5=90=8E=E7=9A=84?= =?UTF-8?q?=E9=87=8D=E6=96=B0=E5=8A=A0=E8=BD=BD=E6=97=A0=E5=8F=8D=E5=BA=94?= =?UTF-8?q?=201=E3=80=81=E4=BF=AE=E6=94=B9=E8=8E=B7=E5=8F=96=E4=BA=91?= =?UTF-8?q?=E7=AB=AF=E5=8F=98=E9=87=8F=E7=9A=84=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alphafine/AlphaFineCloudConstants.java | 204 +++++++++++++----- .../alphafine/cell/model/BottomModel.java | 2 +- .../alphafine/cell/model/DocumentModel.java | 4 +- .../alphafine/cell/model/PluginModel.java | 6 +- .../alphafine/cell/model/RobotModel.java | 4 +- .../alphafine/component/AlphaFineDialog.java | 2 +- .../preview/HelpDocumentNoResultPane.java | 2 +- .../preview/NoResultWithLinkPane.java | 2 +- .../alphafine/preview/RobotPreviewPane.java | 2 +- .../manager/impl/ComplementAdviceManager.java | 2 +- .../search/manager/impl/HotIssuesManager.java | 2 +- .../manager/impl/PluginSearchManager.java | 6 +- .../impl/ProductNewsSearchManager.java | 4 +- .../manager/impl/RecommendSearchManager.java | 2 +- .../manager/impl/SimilarSearchManager.java | 2 +- .../alphafine/cell/model/ModelTest.java | 4 +- 16 files changed, 174 insertions(+), 76 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java index 5e527d9916..b1ff5d8606 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java @@ -3,8 +3,7 @@ package com.fr.design.actions.help.alphafine; import com.fr.general.CloudCenter; /** - * 需要从云端获取的常量单独放一起 - * 以防AlphaFineConstants被加载时,CloudCenter还没启动,导致常量获取不到。 + * 云端变量统一管理 * * @author Link * @version 11.0 @@ -12,55 +11,154 @@ import com.fr.general.CloudCenter; */ public class AlphaFineCloudConstants { - public static final String PLUGIN_SEARCH_URL = CloudCenter.getInstance().acquireUrlByKind("plugin.searchAPI"); - - public static final String SEARCH_ALL_PLUGIN_URL = CloudCenter.getInstance().acquireUrlByKind("plugin.all.searchAPI"); - - public static final String PLUGIN_URL = CloudCenter.getInstance().acquireUrlByKind("af.pluginInfo"); - - public static final String REUSE_URL = CloudCenter.getInstance().acquireUrlByKind("af.reuseInfo"); - - public static final String DOCUMENT_DOC_URL = CloudCenter.getInstance().acquireUrlByKind("af.doc_view"); - - public static final String DOCUMENT_SEARCH_URL = CloudCenter.getInstance().acquireUrlByKind("af.doc_search"); - - public static final String DOCUMENT_INFORMATION_URL = CloudCenter.getInstance().acquireUrlByKind("af.doc_info"); - - public static final String PLUGIN_IMAGE_URL = CloudCenter.getInstance().acquireUrlByKind("af.plugin_image"); - - public static final String CLOUD_SERVER_URL = CloudCenter.getInstance().acquireUrlByKind("af.record"); - - public static final String SEARCH_API = CloudCenter.getInstance().acquireUrlByKind("af.cloud_search"); - - public static final String SIMILAR_SEARCH_URL_PREFIX = CloudCenter.getInstance().acquireUrlByKind("af.similar_search"); - - public static final String COMPLEMENT_ADVICE_SEARCH_URL_PREFIX = CloudCenter.getInstance().acquireUrlByKind("af.advice_search"); - - public static final String ALPHA_HOT_SEARCH = CloudCenter.getInstance().acquireUrlByKind("af.hot_search"); - - public static final String ALPHA_GO_TO_FORUM = CloudCenter.getInstance().acquireUrlByKind("af.go_fourm"); - - public static final String ALPHA_GO_TO_WEB = CloudCenter.getInstance().acquireUrlByKind("af.go_web"); - - public static final String ALPHA_PREVIEW = CloudCenter.getInstance().acquireUrlByKind("af.preview"); - - public static final String ALPHA_CID = CloudCenter.getInstance().acquireUrlByKind("af.cid.new"); - - public static final String ALPHA_CID_USER_GROUP_INFO = CloudCenter.getInstance().acquireUrlByKind("af.cid.user.group.info"); - - private static final String QUICK_START_URL = CloudCenter.getInstance().acquireUrlByKind("af.help.quick.start"); - - private static final String REPORT_LEARNING_PATH = CloudCenter.getInstance().acquireUrlByKind("af.help.report.learning.path"); - - private static final String PARAMETER_LEARNING_PATH = CloudCenter.getInstance().acquireUrlByKind("af.help.param.learning.path"); - - private static final String FILL_LEARNING_PATH = CloudCenter.getInstance().acquireUrlByKind("af.help.fill.learning.path"); - - private static final String API_SUMMARY = CloudCenter.getInstance().acquireUrlByKind("af.help.api.summary"); - - private static final String MONTHLY_DOCUMENT = CloudCenter.getInstance().acquireUrlByKind("af.help.monthly.document"); - - private static final String DEFAULT_RECOMMEND = "[ { \"name\":\"快速入门指南\", \"link\":\"" + QUICK_START_URL + "\" }, { \"name\":\"报表应用学习路径\", \"link\":\"" + REPORT_LEARNING_PATH + "\" }, { \"name\":\"参数应用学习路径\", \"link\":\"" + PARAMETER_LEARNING_PATH + "\" }, { \"name\":\"填报学习路径\", \"link\":\"" + FILL_LEARNING_PATH + "\" }, { \"name\":\"API接口汇总\", \"link\":\"" + API_SUMMARY + "\" }, { \"name\":\"文档月刊\", \"link\":\"" + MONTHLY_DOCUMENT + "\" } ]"; - - public static final String ALPHA_HELP_RECOMMEND = CloudCenter.getInstance().acquireUrlByKind("af.recommend", DEFAULT_RECOMMEND); + /** + * get PluginSearchUrl + */ + public static String getPluginSearchUrl() { + return CloudCenter.getInstance().acquireUrlByKind("plugin.searchAPI"); + }; + + /** + * get SearchAllPluginUrl + */ + public static String getSearchAllPluginUrl() { + return CloudCenter.getInstance().acquireUrlByKind("plugin.all.searchAPI"); + } + + /** + * get PluginUrl + */ + public static String getPluginUrl() { + return CloudCenter.getInstance().acquireUrlByKind("af.pluginInfo"); + } + + /** + * get ReuseUrl + */ + public static String getReuseUrl() { + return CloudCenter.getInstance().acquireUrlByKind("af.reuseInfo"); + } + + /** + * get DocumentDocUrl + */ + public static String getDocumentDocUrl() { + return CloudCenter.getInstance().acquireUrlByKind("af.doc_view"); + } + + /** + * get DocumentSearchUrl + */ + public static String getDocumentSearchUrl() { + return CloudCenter.getInstance().acquireUrlByKind("af.doc_search"); + } + + /** + * get DocumentInformationUrl + */ + public static String getDocumentInformationUrl() { + return CloudCenter.getInstance().acquireUrlByKind("af.doc_info"); + } + + /** + * get PluginImageUrl + */ + public static String getPluginImageUrl() { + return CloudCenter.getInstance().acquireUrlByKind("af.plugin_image"); + } + + /** + * get CloudServerUrl + */ + public static String getCloudServerUrl() { + return CloudCenter.getInstance().acquireUrlByKind("af.record"); + } + + /** + * get SearchApi + */ + public static String getSearchApi() { + return CloudCenter.getInstance().acquireUrlByKind("af.cloud_search"); + } + + /** + * get SimilarSearchUrlPrefix + */ + public static String getSimilarSearchUrlPrefix() { + return CloudCenter.getInstance().acquireUrlByKind("af.similar_search"); + } + + /** + * get ComplementAdviceSearchUrlPrefix + */ + public static String getComplementAdviceSearchUrlPrefix() { + return CloudCenter.getInstance().acquireUrlByKind("af.advice_search"); + } + + /** + * get AlphaHotSearch + */ + public static String getAlphaHotSearch() { + return CloudCenter.getInstance().acquireUrlByKind("af.hot_search"); + } + + /** + * get AlphaGoToForum + */ + public static String getAlphaGoToForum() { + return CloudCenter.getInstance().acquireUrlByKind("af.go_fourm"); + } + + /** + * get AlphaGoToWeb + */ + public static String getAlphaGoToWeb() { + return CloudCenter.getInstance().acquireUrlByKind("af.go_web"); + } + + /** + * get AlphaPreview + */ + public static String getAlphaPreview() { + return CloudCenter.getInstance().acquireUrlByKind("af.preview"); + } + + /** + * get AlphaCid + */ + public static String getAlphaCid() { + return CloudCenter.getInstance().acquireUrlByKind("af.cid.new"); + } + + /** + * get AlphaCidUserGroupInfo + */ + public static String getAlphaCidUserGroupInfo() { + return CloudCenter.getInstance().acquireUrlByKind("af.cid.user.group.info"); + } + + /** + * get DefaultRecommend + */ + public static String getDefaultRecommend() { + String quickStartUrl = CloudCenter.getInstance().acquireUrlByKind("af.help.quick.start"); + String reportLearningPath = CloudCenter.getInstance().acquireUrlByKind("af.help.report.learning.path"); + String parameterLearningPath = CloudCenter.getInstance().acquireUrlByKind("af.help.param.learning.path"); + String fillLearningPath = CloudCenter.getInstance().acquireUrlByKind("af.help.fill.learning.path"); + String apiSummary = CloudCenter.getInstance().acquireUrlByKind("af.help.api.summary"); + String monthlyDocument = CloudCenter.getInstance().acquireUrlByKind("af.help.monthly.document"); + return "[{\"name\":\"快速入门指南\", \"link\":\"" + quickStartUrl + "\"}," + + "{\"name\":\"报表应用学习路径\", \"link\":\"" + reportLearningPath + "\"}," + + "{\"name\":\"参数应用学习路径\", \"link\":\"" + parameterLearningPath + "\"}," + + "{\"name\":\"填报学习路径\", \"link\":\"" + fillLearningPath + "\"}," + + "{\"name\":\"API接口汇总\", \"link\":\"" + apiSummary + "\"}," + + "{\"name\":\"文档月刊\", \"link\":\"" + monthlyDocument + "\"} ]"; + } + + /** + * get AlphaHelpRecommend + */ + public static String getAlphaHelpRecommend() { + return CloudCenter.getInstance().acquireUrlByKind("af.recommend", getDefaultRecommend()); + } } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/BottomModel.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/BottomModel.java index fff60ea1f6..7699879484 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/BottomModel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/BottomModel.java @@ -48,7 +48,7 @@ public class BottomModel extends AlphaCellModel { @Override public void doAction() { try { - Desktop.getDesktop().browse(new URI(AlphaFineCloudConstants.ALPHA_GO_TO_FORUM)); + Desktop.getDesktop().browse(new URI(AlphaFineCloudConstants.getAlphaGoToForum())); } catch (IOException | URISyntaxException e) { FineLoggerFactory.getLogger().error(e.getMessage()); } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/DocumentModel.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/DocumentModel.java index 8fa7ca2515..e5c1638f75 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/DocumentModel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/DocumentModel.java @@ -26,8 +26,8 @@ public class DocumentModel extends AlphaCellModel { public DocumentModel(String name, String content, int documentId) { super(name, content, CellType.DOCUMENT); this.documentId = documentId; - this.informationUrl = AlphaFineCloudConstants.DOCUMENT_INFORMATION_URL + documentId; - this.documentUrl = AlphaFineCloudConstants.DOCUMENT_DOC_URL + documentId + ".html"; + this.informationUrl = AlphaFineCloudConstants.getDocumentInformationUrl() + documentId; + this.documentUrl = AlphaFineCloudConstants.getDocumentDocUrl() + documentId + ".html"; } public DocumentModel(String name, String content, int documentId, int searchCount) { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java index 7eda90015d..f936376bb2 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java @@ -36,9 +36,9 @@ public class PluginModel extends AlphaCellModel { this.price = price; this.pluginId = pluginId; if (getType() == CellType.PLUGIN) { - this.informationUrl = AlphaFineCloudConstants.PLUGIN_URL + id; + this.informationUrl = AlphaFineCloudConstants.getPluginUrl() + id; } else { - this.informationUrl = AlphaFineCloudConstants.REUSE_URL + id; + this.informationUrl = AlphaFineCloudConstants.getReuseUrl() + id; } } @@ -99,7 +99,7 @@ public class PluginModel extends AlphaCellModel { @Override public void doAction() { - if (StringUtils.isBlank(this.pluginId) || !WorkContext.getCurrent().isLocal()) { + if ((StringUtils.isBlank(this.pluginId) && StringUtils.isBlank(this.getName())) || !WorkContext.getCurrent().isLocal()) { return; } WebViewDlgHelper.createPluginDialog(getName()); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/RobotModel.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/RobotModel.java index 79e02f18e0..4c304d107f 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/RobotModel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/RobotModel.java @@ -47,7 +47,7 @@ public class RobotModel extends AlphaCellModel { public static String getContent(String titleStr) { String token = DigestUtils.md5Hex(AlphaFineConstants.ALPHA_ROBOT_SEARCH_TOKEN + titleStr); - String url = AlphaFineCloudConstants.ALPHA_GO_TO_WEB + titleStr + "&token=" + token; + String url = AlphaFineCloudConstants.getAlphaGoToWeb() + titleStr + "&token=" + token; try { String result = HttpToolbox.get(url); @@ -84,7 +84,7 @@ public class RobotModel extends AlphaCellModel { @Override public void doAction() { try { - Desktop.getDesktop().browse(new URI(AlphaFineCloudConstants.ALPHA_PREVIEW + URLEncoder.encode(super.getName(), EncodeConstants.ENCODING_UTF_8))); + Desktop.getDesktop().browse(new URI(AlphaFineCloudConstants.getAlphaPreview() + URLEncoder.encode(super.getName(), EncodeConstants.ENCODING_UTF_8))); } catch (IOException e) { FineLoggerFactory.getLogger().error(e.getMessage()); } catch (URISyntaxException e) { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java index f7112c27a6..dab1051258 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java @@ -969,7 +969,7 @@ public class AlphaFineDialog extends UIDialog { String date = new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime()); para.put("token", CodeUtils.md5Encode(date, StringUtils.EMPTY, "MD5")); para.put("content", object.toString()); - HttpClient httpClient = new HttpClient(AlphaFineCloudConstants.CLOUD_SERVER_URL, para, true); + HttpClient httpClient = new HttpClient(AlphaFineCloudConstants.getCloudServerUrl(), para, true); httpClient.asGet(); if (!httpClient.isServerAlive()) { FineLoggerFactory.getLogger().error("Failed to sent data to server!"); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/HelpDocumentNoResultPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/HelpDocumentNoResultPane.java index 87a27cd29d..bee71f5859 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/HelpDocumentNoResultPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/HelpDocumentNoResultPane.java @@ -98,7 +98,7 @@ public class HelpDocumentNoResultPane extends JPanel { private Map generateMap() { - JSONArray jsonArray = JSONFactory.createJSON(JSON.ARRAY, AlphaFineCloudConstants.ALPHA_HELP_RECOMMEND); + JSONArray jsonArray = JSONFactory.createJSON(JSON.ARRAY, AlphaFineCloudConstants.getAlphaHelpRecommend()); Map linkMap = new LinkedHashMap<>(); for (int i = 0, len = jsonArray.size(); i < len; i++) { JSONObject json = jsonArray.getJSONObject(i); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/NoResultWithLinkPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/NoResultWithLinkPane.java index 31082f9e44..0159959de2 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/NoResultWithLinkPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/NoResultWithLinkPane.java @@ -34,7 +34,7 @@ public class NoResultWithLinkPane extends NoResultPane { String[] para1 = title.split(TAG_A_START); String[] para2 = para1[1].split(TAG_A_END); - MessageWithLink messageWithLink = new MessageWithLink(para1[0], para2[0], AlphaFineCloudConstants.ALPHA_GO_TO_FORUM, para2[1], Color.WHITE, DesignUtils.getDefaultGUIFont().applySize(14), AlphaFineConstants.MEDIUM_GRAY) { + MessageWithLink messageWithLink = new MessageWithLink(para1[0], para2[0], AlphaFineCloudConstants.getAlphaGoToForum(), para2[1], Color.WHITE, DesignUtils.getDefaultGUIFont().applySize(14), AlphaFineConstants.MEDIUM_GRAY) { @Override protected void initListener(String link) { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/RobotPreviewPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/RobotPreviewPane.java index 7df9e3d4cc..2340766925 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/RobotPreviewPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/RobotPreviewPane.java @@ -61,7 +61,7 @@ public class RobotPreviewPane extends JPanel { .replaceAll("\\('", StringUtils.EMPTY) .replaceAll("'\\)", StringUtils.EMPTY); try { - Desktop.getDesktop().browse(new URI(AlphaFineCloudConstants.ALPHA_PREVIEW + URLEncoder.encode(s, EncodeConstants.ENCODING_UTF_8))); + Desktop.getDesktop().browse(new URI(AlphaFineCloudConstants.getAlphaPreview() + URLEncoder.encode(s, EncodeConstants.ENCODING_UTF_8))); } catch (IOException | URISyntaxException e1) { FineLoggerFactory.getLogger().error(e1.getMessage()); } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java index 8a9acb87c6..8aaa0abd5e 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java @@ -41,7 +41,7 @@ public class ComplementAdviceManager { SearchResult searchResult = new SearchResult(); for (int j = 0; j < searchText.length; j++) { String token = DigestUtils.md5Hex(AlphaFineConstants.ALPHA_ROBOT_SEARCH_TOKEN + searchText[j]); - String url = AlphaFineCloudConstants.COMPLEMENT_ADVICE_SEARCH_URL_PREFIX + "msg=" + searchText[j] + "&token=" + token; + String url = AlphaFineCloudConstants.getComplementAdviceSearchUrlPrefix() + "msg=" + searchText[j] + "&token=" + token; try { String result = HttpToolbox.get(url); AlphaFineHelper.checkCancel(); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/HotIssuesManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/HotIssuesManager.java index 5346e05ec1..a0815c2e3b 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/HotIssuesManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/HotIssuesManager.java @@ -75,7 +75,7 @@ public class HotIssuesManager { public String[][] getHotIssues() { try { - String result = HttpToolbox.get(AlphaFineCloudConstants.ALPHA_HOT_SEARCH); + String result = HttpToolbox.get(AlphaFineCloudConstants.getAlphaHotSearch()); JSONArray jsonArray = JSONFactory.createJSON(JSON.ARRAY, result); if(jsonArray != null){ for (int i = 0; i < HOT_ITEM_NUM; i++) { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java index f9729d1712..babf9f4865 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/PluginSearchManager.java @@ -74,7 +74,7 @@ public class PluginSearchManager implements AlphaFineSearchProvider { int searchCount = object.optInt("searchCount"); String imageUrl = null; try { - imageUrl = isFromCloud ? AlphaFineCloudConstants.PLUGIN_IMAGE_URL + URLEncoder.encode(object.optString("pic").toString().substring(AlphaFineCloudConstants.PLUGIN_IMAGE_URL.length()), "utf8") : object.optString("pic"); + imageUrl = isFromCloud ? AlphaFineCloudConstants.getPluginImageUrl() + URLEncoder.encode(object.optString("pic").toString().substring(AlphaFineCloudConstants.getPluginImageUrl().length()), "utf8") : object.optString("pic"); } catch (UnsupportedEncodingException e) { FineLoggerFactory.getLogger().error("plugin icon error: " + e.getMessage()); } @@ -126,7 +126,7 @@ public class PluginSearchManager implements AlphaFineSearchProvider { for (int j = 0; j < searchText.length; j++) { try { String encodedKey = URLEncoder.encode(searchText[j], EncodeConstants.ENCODING_UTF_8); - String url = AlphaFineCloudConstants.PLUGIN_SEARCH_URL + "?keyword=" + encodedKey; + String url = AlphaFineCloudConstants.getPluginSearchUrl() + "?keyword=" + encodedKey; String result = HttpToolbox.get(url); AlphaFineHelper.checkCancel(); JSONObject jsonObject = new JSONObject(result); @@ -174,7 +174,7 @@ public class PluginSearchManager implements AlphaFineSearchProvider { public SearchResult getDefaultResult() { this.defaultModelList = new SearchResult(); try { - String url = AlphaFineCloudConstants.SEARCH_ALL_PLUGIN_URL; + String url = AlphaFineCloudConstants.getSearchAllPluginUrl(); String result = HttpToolbox.get(url); AlphaFineHelper.checkCancel(); JSONObject jsonObject = new JSONObject(result); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ProductNewsSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ProductNewsSearchManager.java index c20d3bb48b..f4299fc7e3 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ProductNewsSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ProductNewsSearchManager.java @@ -83,7 +83,7 @@ public class ProductNewsSearchManager { public List getProductNewsList() throws Exception { productNewsList = new ArrayList<>(); idSet = new HashSet<>(); - String jsonStr = HttpToolbox.get(AlphaFineCloudConstants.ALPHA_CID); + String jsonStr = HttpToolbox.get(AlphaFineCloudConstants.getAlphaCid()); AlphaFineHelper.checkCancel(); JSONObject cidJSON = JSONFactory.createJSON(JSON.OBJECT, jsonStr); JSONArray jsonArray = cidJSON.getJSONArray("data"); @@ -151,7 +151,7 @@ public class ProductNewsSearchManager { * 根据用户组id,查询用户组信息(改用户组中的所有设计器id) * */ private Set searchUserGroupInfo(String userGroupId) { - String url = AlphaFineCloudConstants.ALPHA_CID_USER_GROUP_INFO + AlphaFineConstants.SEARCH_BY_ID + userGroupId; + String url = AlphaFineCloudConstants.getAlphaCidUserGroupInfo() + AlphaFineConstants.SEARCH_BY_ID + userGroupId; Set idSet = new HashSet<>(); try { String jsonStr = HttpToolbox.get(url); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java index 88872d2d8b..d0fcbd3b0c 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java @@ -60,7 +60,7 @@ public class RecommendSearchManager implements AlphaFineSearchProvider { for (int j = 0; j < searchText.length; j++) { searchText[j] = searchText[j].replaceAll(StringUtils.BLANK, StringUtils.EMPTY); try { - String url = AlphaFineCloudConstants.SEARCH_API + CodeUtils.cjkEncode(searchText[j]); + String url = AlphaFineCloudConstants.getSearchApi() + CodeUtils.cjkEncode(searchText[j]); String result = HttpToolbox.get(url); AlphaFineHelper.checkCancel(); JSONObject jsonObject = new JSONObject(result); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManager.java index 5e08795ef1..18afdcaeba 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManager.java @@ -48,7 +48,7 @@ public class SimilarSearchManager implements AlphaFineSearchProvider { SearchResult allModelList = new SearchResult(); for (int j = 0; j < searchText.length; j++) { String token = DigestUtils.md5Hex(AlphaFineConstants.ALPHA_ROBOT_SEARCH_TOKEN + searchText[j]); - String url = AlphaFineCloudConstants.SIMILAR_SEARCH_URL_PREFIX + "msg=" + searchText[j] + "&token=" + token; + String url = AlphaFineCloudConstants.getSimilarSearchUrlPrefix() + "msg=" + searchText[j] + "&token=" + token; try { String result = HttpToolbox.get(url); AlphaFineHelper.checkCancel(); diff --git a/designer-realize/src/test/java/com.fr/design/mainframe/alphafine/cell/model/ModelTest.java b/designer-realize/src/test/java/com.fr/design/mainframe/alphafine/cell/model/ModelTest.java index 2311514d17..8c62b827ee 100644 --- a/designer-realize/src/test/java/com.fr/design/mainframe/alphafine/cell/model/ModelTest.java +++ b/designer-realize/src/test/java/com.fr/design/mainframe/alphafine/cell/model/ModelTest.java @@ -14,8 +14,8 @@ public class ModelTest { Assert.assertEquals("name", documentModel.getName()); Assert.assertEquals("content", documentModel.getContent()); Assert.assertEquals(1, documentModel.getDocumentId()); - Assert.assertEquals(AlphaFineCloudConstants.DOCUMENT_DOC_URL + documentModel.getDocumentId() + ".html", documentModel.getDocumentUrl()); - Assert.assertEquals(AlphaFineCloudConstants.DOCUMENT_INFORMATION_URL + documentModel.getDocumentId(), documentModel.getInformationUrl()); + Assert.assertEquals(AlphaFineCloudConstants.getDocumentDocUrl() + documentModel.getDocumentId() + ".html", documentModel.getDocumentUrl()); + Assert.assertEquals(AlphaFineCloudConstants.getDocumentInformationUrl() + documentModel.getDocumentId(), documentModel.getInformationUrl()); Assert.assertEquals(documentModel.getStoreInformation(), documentModel.getInformationUrl()); Assert.assertEquals(CellType.DOCUMENT, documentModel.getType()); Assert.assertEquals(true, documentModel.hasAction()); From f4b7b83f913d786320f748449b65a6e9676bca59 Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Wed, 28 Sep 2022 16:17:45 +0800 Subject: [PATCH 69/93] =?UTF-8?q?REPORT-81241=E3=80=90=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=E3=80=91=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E4=B8=AD=E5=BF=83=E6=96=AD=E7=BD=91=E5=90=8E=E7=9A=84?= =?UTF-8?q?=E9=87=8D=E6=96=B0=E5=8A=A0=E8=BD=BD=E6=97=A0=E5=8F=8D=E5=BA=94?= =?UTF-8?q?=20=E4=BF=AE=E6=94=B9pr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/mainframe/alphafine/cell/model/PluginModel.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java index f936376bb2..0bdb1ec669 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java @@ -98,8 +98,10 @@ public class PluginModel extends AlphaCellModel { @Override public void doAction() { - - if ((StringUtils.isBlank(this.pluginId) && StringUtils.isBlank(this.getName())) || !WorkContext.getCurrent().isLocal()) { + if (StringUtils.isBlank(this.pluginId) && StringUtils.isBlank(this.getName())) { + return; + } + if (!WorkContext.getCurrent().isLocal()) { return; } WebViewDlgHelper.createPluginDialog(getName()); From 4cb4577ceac45a2461bdfca6c907932fe7d7b9e9 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Wed, 28 Sep 2022 16:29:05 +0800 Subject: [PATCH 70/93] =?UTF-8?q?REPORT-75998=20=E8=A1=A5=E5=85=85sheet?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E3=80=81=E4=BF=AE=E5=A4=8D=E5=AE=9A=E4=BD=8D?= =?UTF-8?q?=E5=90=8E=E6=BB=9A=E5=8A=A8=E4=B8=8D=E5=88=B0=E4=BD=8D=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../formula/template/SearchTemplateFormulaAction.java | 5 ++++- .../main/java/com/fr/design/mainframe/WorkSheetDesigner.java | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java index de653dd706..0f9124721f 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java @@ -66,7 +66,10 @@ public class SearchTemplateFormulaAction implements SearchTemplateFormula { String name = workBook.getReportName(i); if (CommonUtils.canBeFormula(name)) { ITContent sheetContent = ITContent.copy(content); - sheetContent.addOtherPos(Toolkit.i18nText("Fine-Design_Replace_Sheet")); + sheetContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Replace_Sheet"), + name + ); sheetContent.setReplaceObject(name); sheetContent.setHoldObject(workBook); sheetContent.setTag(SearchTag.SHEET_NAME); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/WorkSheetDesigner.java b/designer-realize/src/main/java/com/fr/design/mainframe/WorkSheetDesigner.java index 0529cf82a3..629f71b6bb 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/WorkSheetDesigner.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/WorkSheetDesigner.java @@ -217,9 +217,9 @@ public class WorkSheetDesigner extends ReportComponent Date: Wed, 28 Sep 2022 16:55:11 +0800 Subject: [PATCH 71/93] =?UTF-8?q?REPORT-75998=20=E8=A1=A5=E5=85=85?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E5=8D=95=E5=85=83=E6=A0=BC=E5=B1=9E=E6=80=A7?= =?UTF-8?q?-=E5=85=B6=E4=BB=96-=E5=86=85=E5=AE=B9=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E7=9A=84=E5=85=AC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/content/formula/FormulaTag.java | 13 +++++++++ .../formula/cell/SearchCellFormulaAction.java | 27 +++++++++++++++++++ .../actions/replace/info/base/SearchTag.java | 4 +++ 3 files changed, 44 insertions(+) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaTag.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaTag.java index fd2367f3be..ff8755974b 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaTag.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaTag.java @@ -9,6 +9,7 @@ import com.fr.design.actions.replace.utils.ShowValueUtils; import com.fr.general.GeneralUtils; import com.fr.main.impl.WorkBook; import com.fr.plugin.chart.map.data.VanMapReportDefinition; +import com.fr.report.cell.cellattr.CellGUIAttr; import com.fr.stable.collections.combination.Pair; import org.jetbrains.annotations.Nullable; @@ -120,6 +121,18 @@ public enum FormulaTag implements DealWithInfoValue { workBook.setReportName(sheetId, ShowValueUtils.replaceAll(name, findStr, replaceStr)); } } + }, + /** + * 单元格属性-其他-内容提示 + */ + CELL_TOOL_TIP(SearchTag.CELL_TOOL_TIP) { + @Override + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { + if (info.getContent().getHoldObject() instanceof CellGUIAttr) { + CellGUIAttr attr = (CellGUIAttr) info.getContent().getHoldObject(); + attr.setTooltipText(ShowValueUtils.replaceAll(attr.getTooltipText(), findStr, replaceStr)); + } + } }; int index; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java index b58008e7bc..67593b12a7 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java @@ -20,12 +20,14 @@ import com.fr.general.data.Condition; import com.fr.js.NameJavaScriptGroup; import com.fr.report.cell.CellElement; import com.fr.report.cell.TemplateCellElement; +import com.fr.report.cell.cellattr.CellGUIAttr; import com.fr.report.cell.cellattr.highlight.DefaultHighlight; import com.fr.report.cell.cellattr.highlight.HighlightAction; import com.fr.report.cell.cellattr.highlight.HighlightGroup; import com.fr.report.core.sort.common.CellSortAttr; import com.fr.report.core.sort.sortexpression.FormulaSortExpression; import com.fr.report.core.sort.sortexpression.SortExpression; +import com.fr.stable.CommonUtils; import java.util.List; @@ -69,6 +71,8 @@ public class SearchCellFormulaAction implements SearchCellFormula { searchCellSortAttr4Formula(cellInfo, formulaInfos); //单元格属性-形态 searchCellPresent4Formula(cellInfo, formulaInfos); + //单元格属性-其他-内容提示-自定义 + searchCellToolTip4Formula(cellInfo, formulaInfos); //单元格属性-其他-插入策略 searchCellInsertPolicy4Formula(cellInfo, formulaInfos); //单元格条件属性-参数-公式 @@ -84,6 +88,29 @@ public class SearchCellFormulaAction implements SearchCellFormula { } + private void searchCellToolTip4Formula(CellInfo cellInfo, List formulaInfos) { + if (cellInfo.getContent().getReplaceObject() instanceof TemplateCellElement) { + TemplateCellElement cellElement = (TemplateCellElement) cellInfo.getContent().getReplaceObject(); + if (isCellGUIAttrValid(cellElement.getCellGUIAttr())) { + CellGUIAttr attr = cellElement.getCellGUIAttr(); + ITContent attrContent = ITContent.copy(cellInfo.getContent()); + attrContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_Cell_Attributes"), + Toolkit.i18nText("Fine-Design_Report_Other"), + Toolkit.i18nText("Fine-Design_Report_CellWrite_ToolTip"), + Toolkit.i18nText("Fine-Design_Basic_Custom") + ); + attrContent.setReplaceObject(attr.getTooltipText()); + attrContent.setHoldObject(attr); + formulaInfos.add(new FormulaInfo(attrContent)); + } + } + } + + private boolean isCellGUIAttrValid(CellGUIAttr attr) { + return attr != null && attr.isCustomTooltip() && CommonUtils.canBeFormula(attr.getTooltipText()); + } + private void searchCellHyperLink4Formula(CellInfo cellInfo, List formulaInfos) { NameJavaScriptGroup nameJavaScriptGroup = ((CellElement) cellInfo.getContent().getReplaceObject()).getNameHyperlinkGroup(); if (nameJavaScriptGroup != null) { diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java index b4163f57bf..1bbba05b35 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java @@ -40,6 +40,10 @@ public class SearchTag { * sheet名称 */ public static final int SHEET_NAME = 7; + /** + * 单元格属性-其他-内容提示 + */ + public static final int CELL_TOOL_TIP = 8; From 22d54f426c60f698d8eafc551f487cfd7bc3eb37 Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Wed, 28 Sep 2022 16:57:51 +0800 Subject: [PATCH 72/93] =?UTF-8?q?REPORT-81324=20alphafine=E9=80=82?= =?UTF-8?q?=E9=85=8D=E5=B8=86=E8=BD=AF=E5=B8=82=E5=9C=BA=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=2011=E4=B8=8D=E8=83=BD=E6=90=9C=E5=88=B010=E7=9A=84=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E8=B5=84=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alphafine/search/helper/FineMarketClientHelper.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/helper/FineMarketClientHelper.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/helper/FineMarketClientHelper.java index f4add755e5..22c6b4c45c 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/helper/FineMarketClientHelper.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/helper/FineMarketClientHelper.java @@ -48,6 +48,7 @@ public class FineMarketClientHelper { private static final String CERTIFICATE_PUBLIC_KEY = FineMarketPublicKeyHolder.getInstance().getDefaultKey(); public static final String FINE_MARKET_TEMPLATE_INFO = CloudCenter.getInstance().acquireUrlByKind("market.template.info"); public static final String FINE_MARKET_TEMPLATE_URL = CloudCenter.getInstance().acquireUrlByKind("market.template.url"); + public static final String VERSION = "&version=11.0"; public static final String FILE_DOWNLOAD = "file/download/"; public static final String PACKAGE_DOWNLOAD = "package/download/"; public static final String TEMPLATES_PARENT_PACKAGE = "parent/"; @@ -268,7 +269,7 @@ public class FineMarketClientHelper { } public @Nullable JSONArray getTemplateInfoByName(String name) throws IOException { - String url = FINE_MARKET_TEMPLATE_INFO + NAME_SEARCH + name; + String url = FINE_MARKET_TEMPLATE_INFO + NAME_SEARCH + name + VERSION; String jsonString = HttpToolbox.get(url); JSONObject jsonObject = new JSONObject(jsonString); String responseState = (String) jsonObject.get(RESPONSE_STATE); From c032eb0d0c35294c0033cb1f72e13d89bc04cf28 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Wed, 28 Sep 2022 16:58:03 +0800 Subject: [PATCH 73/93] =?UTF-8?q?REPORT-75998=20=E8=A1=A5=E5=85=85?= =?UTF-8?q?=E5=AD=97=E7=AC=A6=E4=B8=B2=E5=A4=84=E7=90=86=E7=9A=84Tag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/content/formula/cell/SearchCellFormulaAction.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java index 67593b12a7..39ccf32585 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/cell/SearchCellFormulaAction.java @@ -14,6 +14,7 @@ import com.fr.design.actions.replace.info.CellInfo; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.actions.replace.info.base.SearchTag; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.JTemplate; import com.fr.general.data.Condition; @@ -102,6 +103,7 @@ public class SearchCellFormulaAction implements SearchCellFormula { ); attrContent.setReplaceObject(attr.getTooltipText()); attrContent.setHoldObject(attr); + attrContent.setTag(SearchTag.CELL_TOOL_TIP); formulaInfos.add(new FormulaInfo(attrContent)); } } From da5b635450794685b542129bb48ec3b8aec4c231 Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Wed, 28 Sep 2022 21:40:20 +0800 Subject: [PATCH 74/93] =?UTF-8?q?REPORT-81241=E3=80=90=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=E3=80=91=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E4=B8=AD=E5=BF=83=E6=96=AD=E7=BD=91=E5=90=8E=E7=9A=84?= =?UTF-8?q?=E9=87=8D=E6=96=B0=E5=8A=A0=E8=BD=BD=E6=97=A0=E5=8F=8D=E5=BA=94?= =?UTF-8?q?=20=E4=BF=AE=E6=94=B9pr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alphafine/AlphaFineCloudConstants.java | 25 ++++++++----------- .../search/helper/FineMarketClientHelper.java | 11 +++++--- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java index b1ff5d8606..ee85b7078d 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java @@ -12,14 +12,14 @@ import com.fr.general.CloudCenter; public class AlphaFineCloudConstants { /** - * get PluginSearchUrl + * 获取插件搜索api */ public static String getPluginSearchUrl() { return CloudCenter.getInstance().acquireUrlByKind("plugin.searchAPI"); }; /** - * get SearchAllPluginUrl + * 帆软市场里全部插件api */ public static String getSearchAllPluginUrl() { return CloudCenter.getInstance().acquireUrlByKind("plugin.all.searchAPI"); @@ -47,21 +47,21 @@ public class AlphaFineCloudConstants { } /** - * get DocumentSearchUrl + * 帮助文档搜索api */ public static String getDocumentSearchUrl() { return CloudCenter.getInstance().acquireUrlByKind("af.doc_search"); } /** - * get DocumentInformationUrl + * 帮助文档信息api */ public static String getDocumentInformationUrl() { return CloudCenter.getInstance().acquireUrlByKind("af.doc_info"); } /** - * get PluginImageUrl + * 插件图片api */ public static String getPluginImageUrl() { return CloudCenter.getInstance().acquireUrlByKind("af.plugin_image"); @@ -96,14 +96,14 @@ public class AlphaFineCloudConstants { } /** - * get AlphaHotSearch + * 获取热门问题 */ public static String getAlphaHotSearch() { return CloudCenter.getInstance().acquireUrlByKind("af.hot_search"); } /** - * get AlphaGoToForum + * 跳转论坛url */ public static String getAlphaGoToForum() { return CloudCenter.getInstance().acquireUrlByKind("af.go_fourm"); @@ -124,23 +124,20 @@ public class AlphaFineCloudConstants { } /** - * get AlphaCid + * cid系统的产品动态api */ public static String getAlphaCid() { return CloudCenter.getInstance().acquireUrlByKind("af.cid.new"); } /** - * get AlphaCidUserGroupInfo + * cid系统的 用户组信息api */ public static String getAlphaCidUserGroupInfo() { return CloudCenter.getInstance().acquireUrlByKind("af.cid.user.group.info"); } - /** - * get DefaultRecommend - */ - public static String getDefaultRecommend() { + private static String getDefaultRecommend() { String quickStartUrl = CloudCenter.getInstance().acquireUrlByKind("af.help.quick.start"); String reportLearningPath = CloudCenter.getInstance().acquireUrlByKind("af.help.report.learning.path"); String parameterLearningPath = CloudCenter.getInstance().acquireUrlByKind("af.help.param.learning.path"); @@ -156,7 +153,7 @@ public class AlphaFineCloudConstants { } /** - * get AlphaHelpRecommend + * 获取默认推荐帮助文档url */ public static String getAlphaHelpRecommend() { return CloudCenter.getInstance().acquireUrlByKind("af.recommend", getDefaultRecommend()); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/helper/FineMarketClientHelper.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/helper/FineMarketClientHelper.java index 22c6b4c45c..1f9d5fb09a 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/helper/FineMarketClientHelper.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/helper/FineMarketClientHelper.java @@ -48,12 +48,13 @@ public class FineMarketClientHelper { private static final String CERTIFICATE_PUBLIC_KEY = FineMarketPublicKeyHolder.getInstance().getDefaultKey(); public static final String FINE_MARKET_TEMPLATE_INFO = CloudCenter.getInstance().acquireUrlByKind("market.template.info"); public static final String FINE_MARKET_TEMPLATE_URL = CloudCenter.getInstance().acquireUrlByKind("market.template.url"); - public static final String VERSION = "&version=11.0"; + public static final String VERSION = "version"; + private static final String CURRENT_VERSION = "11.0"; public static final String FILE_DOWNLOAD = "file/download/"; public static final String PACKAGE_DOWNLOAD = "package/download/"; public static final String TEMPLATES_PARENT_PACKAGE = "parent/"; public static final String TEMPLATES_TAGS = "filter"; - public static final String NAME_SEARCH = "?searchKeyword="; + public static final String NAME_SEARCH = "searchKeyword"; public static final String RESPONSE_STATE = "state"; public static final String RESPONSE_SUCCESS = "ok"; @@ -269,8 +270,10 @@ public class FineMarketClientHelper { } public @Nullable JSONArray getTemplateInfoByName(String name) throws IOException { - String url = FINE_MARKET_TEMPLATE_INFO + NAME_SEARCH + name + VERSION; - String jsonString = HttpToolbox.get(url); + Map params = new HashMap(); + params.put(NAME_SEARCH, name); + params.put(VERSION, CURRENT_VERSION); + String jsonString = HttpToolbox.get(FINE_MARKET_TEMPLATE_INFO, params); JSONObject jsonObject = new JSONObject(jsonString); String responseState = (String) jsonObject.get(RESPONSE_STATE); if (RESPONSE_SUCCESS.equals(responseState)) { From c726fd6c071148ff4bc8d4b3c362a4799a9aebb9 Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Thu, 29 Sep 2022 11:47:49 +0800 Subject: [PATCH 75/93] =?UTF-8?q?REPORT-81241=E3=80=90=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=E3=80=91=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E4=B8=AD=E5=BF=83=E6=96=AD=E7=BD=91=E5=90=8E=E7=9A=84?= =?UTF-8?q?=E9=87=8D=E6=96=B0=E5=8A=A0=E8=BD=BD=E6=97=A0=E5=8F=8D=E5=BA=94?= =?UTF-8?q?=20=E6=B7=BB=E5=8A=A0url=E7=BC=96=E7=A0=81=20=E6=8F=90=E5=8F=96?= =?UTF-8?q?=E5=B8=B8=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alphafine/AlphaFineCloudConstants.java | 76 +++++++++++++------ .../alphafine/cell/model/PluginModel.java | 10 ++- .../search/helper/FineMarketClientHelper.java | 4 +- .../manager/impl/ComplementAdviceManager.java | 7 +- .../manager/impl/DocumentSearchManager.java | 2 +- .../manager/impl/SimilarSearchManager.java | 7 +- 6 files changed, 74 insertions(+), 32 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java index ee85b7078d..35b363eb71 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java @@ -11,139 +11,165 @@ import com.fr.general.CloudCenter; */ public class AlphaFineCloudConstants { + private static final String PLUGIN_SEARCH_API = "plugin.searchAPI"; + private static final String PLUGIN_ALL_SEARCH_API = "plugin.all.searchAPI"; + private static final String AF_PLUGIN_INFO = "af.pluginInfo"; + private static final String AF_REUSE_INFO = "af.reuseInfo"; + private static final String AF_DOC_VIEW = "af.doc_view"; + private static final String AF_DOC_SEARCH = "af.doc_search"; + private static final String AF_DOC_INFO = "af.doc_info"; + private static final String AF_PLUGIN_IMAGE = "af.plugin_image"; + private static final String AF_RECORD = "af.record"; + private static final String AF_CLOUD_SEARCH = "af.cloud_search"; + private static final String AF_SIMILAR_SEARCH = "af.similar_search"; + private static final String AF_ADVICE_SEARCH = "af.advice_search"; + private static final String AF_HOT_SEARCH = "af.hot_search"; + private static final String AF_GO_FORUM = "af.go_fourm"; + private static final String AF_GO_WEB = "af.go_web"; + private static final String AF_PREVIEW = "af.preview"; + private static final String AF_CID_NEW = "af.cid.new"; + private static final String AF_CID_USER_GROUP_INFO = "af.cid.user.group.info"; + private static final String AF_HELP_QUICK_START = "af.help.quick.start"; + private static final String AF_HELP_REPORT_LEARNING_PATH = "af.help.report.learning.path"; + private static final String AF_HELP_PARAM_LEARNING_PATH = "af.help.param.learning.path"; + private static final String AF_HELP_FILL_LEARNING_PATH = "af.help.fill.learning.path"; + private static final String AF_HELP_API_SUMMARY = "af.help.api.summary"; + private static final String AF_HELP_MONTHLY_DOCUMENT = "af.help.monthly.document"; + private static final String AF_RECOMMEND = "af.recommend"; + /** * 获取插件搜索api */ public static String getPluginSearchUrl() { - return CloudCenter.getInstance().acquireUrlByKind("plugin.searchAPI"); + return CloudCenter.getInstance().acquireUrlByKind(PLUGIN_SEARCH_API); }; /** * 帆软市场里全部插件api */ public static String getSearchAllPluginUrl() { - return CloudCenter.getInstance().acquireUrlByKind("plugin.all.searchAPI"); + return CloudCenter.getInstance().acquireUrlByKind(PLUGIN_ALL_SEARCH_API); } /** * get PluginUrl */ public static String getPluginUrl() { - return CloudCenter.getInstance().acquireUrlByKind("af.pluginInfo"); + return CloudCenter.getInstance().acquireUrlByKind(AF_PLUGIN_INFO); } /** * get ReuseUrl */ public static String getReuseUrl() { - return CloudCenter.getInstance().acquireUrlByKind("af.reuseInfo"); + return CloudCenter.getInstance().acquireUrlByKind(AF_REUSE_INFO); } /** * get DocumentDocUrl */ public static String getDocumentDocUrl() { - return CloudCenter.getInstance().acquireUrlByKind("af.doc_view"); + return CloudCenter.getInstance().acquireUrlByKind(AF_DOC_VIEW); } /** * 帮助文档搜索api */ public static String getDocumentSearchUrl() { - return CloudCenter.getInstance().acquireUrlByKind("af.doc_search"); + return CloudCenter.getInstance().acquireUrlByKind(AF_DOC_SEARCH); } /** * 帮助文档信息api */ public static String getDocumentInformationUrl() { - return CloudCenter.getInstance().acquireUrlByKind("af.doc_info"); + return CloudCenter.getInstance().acquireUrlByKind(AF_DOC_INFO); } /** * 插件图片api */ public static String getPluginImageUrl() { - return CloudCenter.getInstance().acquireUrlByKind("af.plugin_image"); + return CloudCenter.getInstance().acquireUrlByKind(AF_PLUGIN_IMAGE); } /** * get CloudServerUrl */ public static String getCloudServerUrl() { - return CloudCenter.getInstance().acquireUrlByKind("af.record"); + return CloudCenter.getInstance().acquireUrlByKind(AF_RECORD); } /** * get SearchApi */ public static String getSearchApi() { - return CloudCenter.getInstance().acquireUrlByKind("af.cloud_search"); + return CloudCenter.getInstance().acquireUrlByKind(AF_CLOUD_SEARCH); } /** * get SimilarSearchUrlPrefix */ public static String getSimilarSearchUrlPrefix() { - return CloudCenter.getInstance().acquireUrlByKind("af.similar_search"); + return CloudCenter.getInstance().acquireUrlByKind(AF_SIMILAR_SEARCH); } /** * get ComplementAdviceSearchUrlPrefix */ public static String getComplementAdviceSearchUrlPrefix() { - return CloudCenter.getInstance().acquireUrlByKind("af.advice_search"); + return CloudCenter.getInstance().acquireUrlByKind(AF_ADVICE_SEARCH); } /** * 获取热门问题 */ public static String getAlphaHotSearch() { - return CloudCenter.getInstance().acquireUrlByKind("af.hot_search"); + return CloudCenter.getInstance().acquireUrlByKind(AF_HOT_SEARCH); } /** * 跳转论坛url */ public static String getAlphaGoToForum() { - return CloudCenter.getInstance().acquireUrlByKind("af.go_fourm"); + return CloudCenter.getInstance().acquireUrlByKind(AF_GO_FORUM); } /** * get AlphaGoToWeb */ public static String getAlphaGoToWeb() { - return CloudCenter.getInstance().acquireUrlByKind("af.go_web"); + return CloudCenter.getInstance().acquireUrlByKind(AF_GO_WEB); } /** * get AlphaPreview */ public static String getAlphaPreview() { - return CloudCenter.getInstance().acquireUrlByKind("af.preview"); + return CloudCenter.getInstance().acquireUrlByKind(AF_PREVIEW); } /** * cid系统的产品动态api */ public static String getAlphaCid() { - return CloudCenter.getInstance().acquireUrlByKind("af.cid.new"); + return CloudCenter.getInstance().acquireUrlByKind(AF_CID_NEW); } /** * cid系统的 用户组信息api */ public static String getAlphaCidUserGroupInfo() { - return CloudCenter.getInstance().acquireUrlByKind("af.cid.user.group.info"); + return CloudCenter.getInstance().acquireUrlByKind(AF_CID_USER_GROUP_INFO); } private static String getDefaultRecommend() { - String quickStartUrl = CloudCenter.getInstance().acquireUrlByKind("af.help.quick.start"); - String reportLearningPath = CloudCenter.getInstance().acquireUrlByKind("af.help.report.learning.path"); - String parameterLearningPath = CloudCenter.getInstance().acquireUrlByKind("af.help.param.learning.path"); - String fillLearningPath = CloudCenter.getInstance().acquireUrlByKind("af.help.fill.learning.path"); - String apiSummary = CloudCenter.getInstance().acquireUrlByKind("af.help.api.summary"); - String monthlyDocument = CloudCenter.getInstance().acquireUrlByKind("af.help.monthly.document"); + String quickStartUrl = CloudCenter.getInstance().acquireUrlByKind(AF_HELP_QUICK_START); + String reportLearningPath = CloudCenter.getInstance().acquireUrlByKind(AF_HELP_REPORT_LEARNING_PATH); + String parameterLearningPath = CloudCenter.getInstance().acquireUrlByKind(AF_HELP_PARAM_LEARNING_PATH); + String fillLearningPath = CloudCenter.getInstance().acquireUrlByKind(AF_HELP_FILL_LEARNING_PATH); + String apiSummary = CloudCenter.getInstance().acquireUrlByKind(AF_HELP_API_SUMMARY); + String monthlyDocument = CloudCenter.getInstance().acquireUrlByKind(AF_HELP_MONTHLY_DOCUMENT); return "[{\"name\":\"快速入门指南\", \"link\":\"" + quickStartUrl + "\"}," + "{\"name\":\"报表应用学习路径\", \"link\":\"" + reportLearningPath + "\"}," + "{\"name\":\"参数应用学习路径\", \"link\":\"" + parameterLearningPath + "\"}," + @@ -156,6 +182,6 @@ public class AlphaFineCloudConstants { * 获取默认推荐帮助文档url */ public static String getAlphaHelpRecommend() { - return CloudCenter.getInstance().acquireUrlByKind("af.recommend", getDefaultRecommend()); + return CloudCenter.getInstance().acquireUrlByKind(AF_RECOMMEND, getDefaultRecommend()); } } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java index 0bdb1ec669..9c60db3192 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/PluginModel.java @@ -104,7 +104,15 @@ public class PluginModel extends AlphaCellModel { if (!WorkContext.getCurrent().isLocal()) { return; } - WebViewDlgHelper.createPluginDialog(getName()); + openPluginStore(getName()); + } + + /** + * 打开插件商城 + * 方便埋点 + */ + private void openPluginStore(String name) { + WebViewDlgHelper.createPluginDialog(name); } @Override diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/helper/FineMarketClientHelper.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/helper/FineMarketClientHelper.java index 1f9d5fb09a..42b28cfe8a 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/helper/FineMarketClientHelper.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/helper/FineMarketClientHelper.java @@ -1,5 +1,6 @@ package com.fr.design.mainframe.alphafine.search.helper; +import com.fr.base.login.ClientHelper; import com.fr.design.DesignerEnvManager; import com.fr.design.extra.PluginConstants; import com.fr.design.mainframe.alphafine.download.FineMarketDownloadManager; @@ -12,6 +13,7 @@ import com.fr.json.JSONObject; import com.fr.log.FineLoggerFactory; import com.fr.market.key.FineMarketPublicKeyHolder; import com.fr.security.SecurityToolbox; +import com.fr.stable.EncodeConstants; import com.fr.stable.StableUtils; import com.fr.third.org.apache.http.HttpEntity; import com.fr.third.org.apache.http.HttpException; @@ -327,7 +329,7 @@ public class FineMarketClientHelper { * */ private void initTags() throws IOException { tags = new HashMap<>(); - String url = FINE_MARKET_TEMPLATE_INFO + TEMPLATES_TAGS; + String url = FINE_MARKET_TEMPLATE_INFO + ClientHelper.urlEncode(TEMPLATES_TAGS, EncodeConstants.ENCODING_UTF_8); String jsonString = HttpToolbox.get(url); JSONObject jsonObject = new JSONObject(jsonString); String responseState = (String) jsonObject.get(RESPONSE_STATE); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java index 8aaa0abd5e..a00803210e 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java @@ -1,5 +1,6 @@ package com.fr.design.mainframe.alphafine.search.manager.impl; +import com.fr.base.login.ClientHelper; import com.fr.design.DesignerEnvManager; import com.fr.design.actions.help.alphafine.AlphaFineCloudConstants; import com.fr.design.actions.help.alphafine.AlphaFineConstants; @@ -7,6 +8,7 @@ import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.model.SearchResult; import com.fr.general.http.HttpToolbox; import com.fr.log.FineLoggerFactory; +import com.fr.stable.EncodeConstants; import com.fr.third.org.apache.commons.codec.digest.DigestUtils; @@ -40,8 +42,9 @@ public class ComplementAdviceManager { if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isNeedIntelligentCustomerService()) { SearchResult searchResult = new SearchResult(); for (int j = 0; j < searchText.length; j++) { - String token = DigestUtils.md5Hex(AlphaFineConstants.ALPHA_ROBOT_SEARCH_TOKEN + searchText[j]); - String url = AlphaFineCloudConstants.getComplementAdviceSearchUrlPrefix() + "msg=" + searchText[j] + "&token=" + token; + String msg = ClientHelper.urlEncode(searchText[j], EncodeConstants.ENCODING_UTF_8); + String token = DigestUtils.md5Hex(AlphaFineConstants.ALPHA_ROBOT_SEARCH_TOKEN + msg); + String url = AlphaFineCloudConstants.getComplementAdviceSearchUrlPrefix() + "msg=" + msg + "&token=" + ClientHelper.urlEncode(token, EncodeConstants.ENCODING_UTF_8); try { String result = HttpToolbox.get(url); AlphaFineHelper.checkCancel(); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java index 0c8ef70536..69c34ba61c 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/DocumentSearchManager.java @@ -71,7 +71,7 @@ public class DocumentSearchManager implements AlphaFineSearchProvider { searchResult = new SearchResult(); for (int j = 0; j < searchText.length; j++) { long start = System.currentTimeMillis(); - String url = AlphaFineCloudConstants.DOCUMENT_SEARCH_URL + searchText[j]; + String url = AlphaFineCloudConstants.getDocumentSearchUrl() + searchText[j]; try { String result = HttpToolbox.get(url); AlphaFineHelper.checkCancel(); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManager.java index 18afdcaeba..102ead1bb2 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManager.java @@ -1,5 +1,6 @@ package com.fr.design.mainframe.alphafine.search.manager.impl; +import com.fr.base.login.ClientHelper; import com.fr.design.DesignerEnvManager; import com.fr.design.actions.help.alphafine.AlphaFineCloudConstants; import com.fr.design.actions.help.alphafine.AlphaFineConstants; @@ -13,6 +14,7 @@ import com.fr.general.http.HttpToolbox; import com.fr.json.JSONObject; import com.fr.log.FineLoggerFactory; import com.fr.stable.ArrayUtils; +import com.fr.stable.EncodeConstants; import com.fr.third.org.apache.commons.codec.digest.DigestUtils; /** @@ -47,8 +49,9 @@ public class SimilarSearchManager implements AlphaFineSearchProvider { } SearchResult allModelList = new SearchResult(); for (int j = 0; j < searchText.length; j++) { - String token = DigestUtils.md5Hex(AlphaFineConstants.ALPHA_ROBOT_SEARCH_TOKEN + searchText[j]); - String url = AlphaFineCloudConstants.getSimilarSearchUrlPrefix() + "msg=" + searchText[j] + "&token=" + token; + String msg = ClientHelper.urlEncode(searchText[j], EncodeConstants.ENCODING_UTF_8); + String token = DigestUtils.md5Hex(AlphaFineConstants.ALPHA_ROBOT_SEARCH_TOKEN + msg); + String url = AlphaFineCloudConstants.getSimilarSearchUrlPrefix() + "msg=" + msg + "&token=" + ClientHelper.urlEncode(token, EncodeConstants.ENCODING_UTF_8); try { String result = HttpToolbox.get(url); AlphaFineHelper.checkCancel(); From c7f87592a4bbfac239d8cdf4b76f9fdfd8b72fa3 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Thu, 29 Sep 2022 13:40:36 +0800 Subject: [PATCH 76/93] =?UTF-8?q?REPORT-75998=20=E6=9B=B4=E6=94=B9?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=AD=97=E5=85=B8-=E5=85=AC=E5=BC=8F?= =?UTF-8?q?=E7=9A=84=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91=E3=80=81=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=8B=BE=E9=80=89=E6=A1=86=E7=9A=84=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E3=80=81=E6=9F=A5=E6=89=BE=E6=A1=86=E6=97=A0?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E6=97=B6=E6=9B=BF=E6=8D=A2=E6=A1=86=E7=A6=81?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/content/formula/FormulaTag.java | 19 ++++++++ .../formula/widget/DictionaryType.java | 9 +++- .../actions/replace/info/FormulaInfo.java | 16 ++----- .../actions/replace/info/base/SearchTag.java | 8 ++++ .../replace/ui/ITReplaceMainDialog.java | 27 +++++++----- .../actions/replace/ui/ITTableEditorPane.java | 44 +++++++++++++------ 6 files changed, 83 insertions(+), 40 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaTag.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaTag.java index ff8755974b..c3f3c83a1d 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaTag.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/FormulaTag.java @@ -2,6 +2,7 @@ package com.fr.design.actions.replace.action.content.formula; import com.fr.chart.chartdata.MeterReportDefinition; import com.fr.data.VerifyItem; +import com.fr.data.impl.FormulaDictionary; import com.fr.design.actions.replace.info.DealWithInfoValue; import com.fr.design.actions.replace.info.Info; import com.fr.design.actions.replace.info.base.SearchTag; @@ -133,6 +134,24 @@ public enum FormulaTag implements DealWithInfoValue { attr.setTooltipText(ShowValueUtils.replaceAll(attr.getTooltipText(), findStr, replaceStr)); } } + }, + DICT_EXCUTE(SearchTag.DICT_EXCUTE) { + @Override + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { + if (info.getContent().getHoldObject() instanceof FormulaDictionary) { + FormulaDictionary dictionary = (FormulaDictionary) info.getContent().getHoldObject(); + dictionary.setExcuteFormula(ShowValueUtils.replaceAll(dictionary.getExcuteFormula(), findStr, replaceStr)); + } + } + }, + DICT_PRODUCE(SearchTag.DICT_PRODUCE) { + @Override + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { + if (info.getContent().getHoldObject() instanceof FormulaDictionary) { + FormulaDictionary dictionary = (FormulaDictionary) info.getContent().getHoldObject(); + dictionary.setProduceFormula(ShowValueUtils.replaceAll(dictionary.getProduceFormula(), findStr, replaceStr)); + } + } }; int index; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/DictionaryType.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/DictionaryType.java index 22d4cb3959..6a55aebf9b 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/DictionaryType.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/widget/DictionaryType.java @@ -6,6 +6,7 @@ import com.fr.data.impl.FormulaDictionary; import com.fr.data.impl.TableDataDictionary; import com.fr.design.actions.replace.info.FormulaInfo; import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.actions.replace.info.base.SearchTag; import com.fr.design.i18n.Toolkit; import org.jetbrains.annotations.Nullable; @@ -32,23 +33,27 @@ public enum DictionaryType implements DictionaryAction { //显示值 if (formulaDictionary.getExcuteFormula() != null) { ITContent excuteContent = ITContent.copy(content); - excuteContent.setReplaceObject(dictionary); + excuteContent.setReplaceObject(formulaDictionary.getExcuteFormula()); excuteContent.addOtherPos( Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary"), Toolkit.i18nText("Fine-Design_Basic_Formula"), Toolkit.i18nText("Fine-Design_Basic_Display_Value") ); + excuteContent.setHoldObject(dictionary); + excuteContent.setTag(SearchTag.DICT_EXCUTE); formulaInfos.add(new FormulaInfo(excuteContent)); } //实际值 if (formulaDictionary.getProduceFormula() != null) { ITContent produceContent = ITContent.copy(content); - produceContent.setReplaceObject(dictionary); + produceContent.setReplaceObject(formulaDictionary.getProduceFormula()); produceContent.addOtherPos( Toolkit.i18nText("Fine-Design_Basic_DS_Dictionary"), Toolkit.i18nText("Fine-Design_Basic_Formula"), Toolkit.i18nText("Fine-Design_Basic_Actual_Value") ); + produceContent.setHoldObject(dictionary); + produceContent.setTag(SearchTag.DICT_PRODUCE); formulaInfos.add(new FormulaInfo(produceContent)); } } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/FormulaInfo.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/FormulaInfo.java index 73a0750cb8..ce2ecd36c6 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/FormulaInfo.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/FormulaInfo.java @@ -40,14 +40,7 @@ public class FormulaInfo implements Info { @Override public Map getValue(Object... o) { Map map = new HashMap<>(); - //这边比较特殊,存的都是FormulaDictionary ,特殊判断一下 - if (this.content.getOtherPos().contains(DISPLAY)) { - map.put("content", ((FormulaDictionary) this.getContent().getReplaceObject()).getExcuteFormula()); - } else if (this.content.getOtherPos().contains(ACTUAL)) { - map.put("content", ((FormulaDictionary) this.getContent().getReplaceObject()).getProduceFormula()); - } else { - map = getCommonValue(); - } + map = getCommonValue(); return map; } @@ -70,11 +63,8 @@ public class FormulaInfo implements Info { @Override public Boolean checkValid() { - FormulaReplaceObject formulaReplaceObject = FormulaReplaceObject.match(this.content.getReplaceObject().getClass().getSimpleName()); - if (formulaReplaceObject != null) { - return formulaReplaceObject.check(this); - } - return false; + //校验二期才完善,目前都给过 + return true; } private Map getCommonValue() { diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java index 1bbba05b35..956d3ff386 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java @@ -44,6 +44,14 @@ public class SearchTag { * 单元格属性-其他-内容提示 */ public static final int CELL_TOOL_TIP = 8; + /** + * 数据字典-公式-显示值 + */ + public static final int DICT_EXCUTE = 9; + /** + * 数据字典-公式-实际值 + */ + public static final int DICT_PRODUCE = 10; diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java index 96ee17b6cd..4843df57f4 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java @@ -9,6 +9,7 @@ import com.fr.design.actions.replace.utils.ShowValueUtils; import com.fr.design.dialog.FineJOptionPane; import com.fr.design.dialog.UIDialog; import com.fr.design.file.HistoryTemplateListCache; +import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.DesignerContext; @@ -22,6 +23,7 @@ import com.fr.stable.StringUtils; import javax.swing.JOptionPane; import javax.swing.JPanel; import java.awt.BorderLayout; +import java.awt.Color; import java.awt.Dimension; import java.awt.Point; import java.awt.event.ActionEvent; @@ -117,8 +119,10 @@ public class ITReplaceMainDialog extends UIDialog { JPanel center = new JPanel(new BorderLayout()); + UIComboBox replaceComboBox = northPane.getReplaceInputCombobox(); northPane.getFindInputCombobox().setEditable(true); - northPane.getReplaceInputCombobox().setEditable(false); + replaceComboBox.setEnabled(false); + replaceComboBox.setEditable(true); northPane.getReplaceButton().setEnabled(false); ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).setPlaceholder(Toolkit.i18nText("Fine-Design_Replace_Search_Input")); @@ -160,7 +164,8 @@ public class ITReplaceMainDialog extends UIDialog { private void replace() { String searchStr = ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).getText(); String replaceStr = ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).getText(); - if (StringUtils.equals(getSearchStr(), searchStr)) { + //替换内容为空需要触发搜索 + if (StringUtils.equals(getSearchStr(), searchStr) && StringUtils.isNotEmpty(replaceStr)) { if (isITReplaceValid() && checkTemplateChanged(searchResultList)) { for (Info info : searchResultList) { if (info.getContent().isSelected()) { @@ -298,7 +303,8 @@ public class ITReplaceMainDialog extends UIDialog { northPane.getResultLabel().setText("" + Toolkit.i18nText("Fine-Design_Replace_Search_Finish") + "" + searchResultList.size() + "" + Toolkit.i18nText("Fine-Design_Replace_Result")); } ITTableEditorPane.ITHeaderRenderer renderer = (ITTableEditorPane.ITHeaderRenderer) getEditTable().getTableHeader().getDefaultRenderer(); - renderer.refreshHeader(getEditTable()); + //刷新表头,并且重新勾选中表头全选框 + renderer.refreshHeader(getEditTable(), true); itTableEditor.fireTableDataChanged(); northPane.refreshFindInputComboBoxItems(); setSearchFlag(true); @@ -306,18 +312,17 @@ public class ITReplaceMainDialog extends UIDialog { //如果有结果,默认选中第一行 if (searchResultList.size() > 0){ getEditTable().addRowSelectionInterval(FIRST_ROW,FIRST_ROW); - northPane.getReplaceButton().setEnabled(true); } - - //设置替换输入框的可用性 - if (StringUtils.isNotEmpty(searchStr)) { - ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).setEditable(true); - northPane.getReplaceInputCombobox().setEditable(true); + //更新替换按钮可用性 + if (StringUtils.isEmpty(searchStr) || searchResultList.size() == 0){ + northPane.getReplaceButton().setEnabled(false); } else { - ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).setEditable(false); - northPane.getReplaceInputCombobox().setEditable(false); + northPane.getReplaceButton().setEnabled(true); } + + //设置替换输入框的可用性 + northPane.getReplaceInputCombobox().setEnabled(StringUtils.isNotEmpty(searchStr)); } else { //todo } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java index 4d2f39718d..0a743d34eb 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java @@ -72,17 +72,8 @@ public class ITTableEditorPane extends BasicPane { int col = ((JTable) e.getSource()).columnAtPoint(e.getPoint()); if (col == ITReplaceSouthPanel.CHECKBOX_INDEX) { ITContent content = (ITContent) editTable.getValueAt(row, ITReplaceSouthPanel.CONTENT_INDEX); - if (content.isSelected()) { - content.setSelected(false); - editTable.setValueAt(content.isSelected(), row, col); - ITReplaceMainDialog.selectCount--; - ITReplaceMainDialog.getInstance().getNorthPane().getReplaceButton().setEnabled(ITReplaceMainDialog.selectCount > 0); - } else { - content.setSelected(true); - editTable.setValueAt(content.isSelected(), row, col); - ITReplaceMainDialog.selectCount++; - ITReplaceMainDialog.getInstance().getNorthPane().getReplaceButton().setEnabled(true); - } + //改变面板的各个状态 + changeComponentStatus(content, row, col); } } @@ -90,10 +81,35 @@ public class ITTableEditorPane extends BasicPane { UIScrollPane scrollPane = new UIScrollPane(editTable); scrollPane.setBorder(new UIRoundedBorder(UIConstants.TITLED_BORDER_COLOR, 1, UIConstants.ARC)); pane.add(scrollPane, BorderLayout.CENTER); + } - + /** + * 改变面板的各个状态(替换按钮、表头勾选框) + * @param content + * @param row + * @param col + */ + public void changeComponentStatus(ITContent content, int row, int col) { + if (content.isSelected()) { + content.setSelected(false); + editTable.setValueAt(content.isSelected(), row, col); + ITReplaceMainDialog.selectCount--; + //如果没有选中,替换按钮需要置灰 + ITReplaceMainDialog.getInstance().getNorthPane().getReplaceButton().setEnabled(ITReplaceMainDialog.selectCount > 0); + } else { + content.setSelected(true); + editTable.setValueAt(content.isSelected(), row, col); + ITReplaceMainDialog.selectCount++; + ITReplaceMainDialog.getInstance().getNorthPane().getReplaceButton().setEnabled(true); + } + //更新表头的勾选框状态 + if (editTable.getTableHeader().getDefaultRenderer() instanceof ITHeaderRenderer) { + ITHeaderRenderer renderer = (ITHeaderRenderer) editTable.getTableHeader().getDefaultRenderer(); + renderer.refreshHeader(editTable, ITReplaceMainDialog.selectCount >= editTable.getRowCount()); + } } + public UITableModelAdapter getTableModel() { return tableModel; } @@ -142,8 +158,8 @@ public class ITTableEditorPane extends BasicPane { * * @param table */ - public void refreshHeader(JTable table) { - selectBox.setSelected(true); + public void refreshHeader(JTable table, boolean value) { + selectBox.setSelected(value); int rowHeight = table.getRowHeight(); table.updateUI(); table.setRowHeight(rowHeight); From 9f293a456bbf5956f3bc72f8b5eeaf524bba9c9b Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Thu, 29 Sep 2022 14:11:34 +0800 Subject: [PATCH 77/93] =?UTF-8?q?REPORT-75998=20=E6=9B=B4=E6=94=B9?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=AD=97=E5=85=B8-=E5=85=AC=E5=BC=8F?= =?UTF-8?q?=E7=9A=84=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91=E3=80=81=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=8B=BE=E9=80=89=E6=A1=86=E7=9A=84=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E3=80=81=E6=9F=A5=E6=89=BE=E6=A1=86=E6=97=A0?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E6=97=B6=E6=9B=BF=E6=8D=A2=E6=A1=86=E7=A6=81?= =?UTF-8?q?=E7=94=A8=20REPORT-75998=20=E5=A2=9E=E5=8A=A0=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E6=A8=A1=E6=9D=BFWeb=E5=B1=9E=E6=80=A7=E5=BC=95=E7=94=A8JS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/content/js/SearchWebJSAction.java | 20 +++++++ .../actions/replace/info/ReplaceObject.java | 58 ++++++++++++++++--- .../actions/replace/info/base/SearchTag.java | 4 ++ 3 files changed, 75 insertions(+), 7 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java index 0ceec53617..725d1280db 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java @@ -4,6 +4,7 @@ import com.fr.design.actions.replace.info.JSInfo; import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.actions.replace.info.base.SearchTag; import com.fr.design.actions.replace.utils.SearchJSUtils; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.JTemplate; @@ -19,6 +20,7 @@ import com.fr.report.web.util.ReportEngineEventMapping; import com.fr.web.attr.ReportWebAttr; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -86,12 +88,30 @@ public class SearchWebJSAction implements SearchJS { content.setTemplateName(jTemplate.getTemplateName()); content.setJumpAble(false); addWebContent2Array(webAttr); + //处理引用JS + dealImportJS(content,jsInfos,webAttr); for (int i = 0; i < arrayList.size(); i++) { addJSInfos2ListFromArray(content, jsInfos, arrayList.get(i)); } } } + private void dealImportJS(ITContent content, List jsInfos, ReportWebAttr webAttr) { + if (webAttr != null){ + for (String jsStr : webAttr.getJSImport()){ + ITContent jsContent = ITContent.copy(content); + jsContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_Report_Web_Attributes"), + Toolkit.i18nText("Fine-Design_Report_Import_JavaScript") + ); + jsContent.setReplaceObject(jsStr); + jsContent.setHoldObject(webAttr); + jsContent.setTag(SearchTag.IMPORT_JS); + jsInfos.add(new JSInfo(jsContent)); + } + } + } + private void addJSInfos2ListFromServerWebAttr(ITContent content, List jsInfos, WebContent webContent) { ITContent newContent = ITContent.copy(content); if (SERVER_MAP.containsKey(webContent.getClass().getSimpleName())) { diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java index 3d615e18a9..d803f31012 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java @@ -3,13 +3,16 @@ package com.fr.design.actions.replace.info; import com.fr.data.impl.DBTableData; import com.fr.design.actions.replace.utils.ShowValueUtils; import com.fr.form.event.Listener; +import com.fr.general.GeneralUtils; import com.fr.js.JavaScriptImpl; import com.fr.js.NameJavaScript; import com.fr.plugin.chart.base.VanChartHtmlLabel; import com.fr.stable.StringUtils; import com.fr.stable.collections.combination.Pair; +import com.fr.web.attr.ReportWebAttr; import org.jetbrains.annotations.Nullable; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -184,36 +187,77 @@ public enum ReplaceObject implements DealWithInfoValue { return StringUtils.equals(javaScript.getContent(), info.getContent().getOldShowStr()); } }, + /** + * 模板Web属性——引用JS + */ + IMPORT_JS("String") { + @Override + public Map getValue(Object... o) { + HashMap map = new HashMap<>(); + addValue2Map(contentKey, GeneralUtils.objectToString(o[0]), map); + return map; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { + if (info.getContent().getHoldObject() instanceof ReportWebAttr) { + ReportWebAttr attr = (ReportWebAttr) info.getContent().getHoldObject(); + List jsImports = Arrays.asList(attr.getJSImport()); + String jsName = GeneralUtils.objectToString(info.getContent().getReplaceObject()); + for (int i = 0, len = jsImports.size(); i < len; i++) { + if (StringUtils.equals(jsImports.get(i), jsName)) { + jsImports.set(i, ShowValueUtils.replaceAll(jsName, findStr, replaceStr)); + } + } + attr.clearJSImportList(); + for (int i = 0, len = jsImports.size(); i < len; i++) { + attr.addJSImport(jsImports.get(i)); + } + } + } + + @Override + public String getInfoShowStr(Info info) { + return GeneralUtils.objectToString(info.getContent().getReplaceObject()); + } + + @Override + boolean check(Info info) { + return true; + } + }, /** * DBTableData——SQL */ DB_TABLE_DATA("DBTableData") { @Override - boolean check(Info info) { + boolean check (Info info){ DBTableData dbTableData = (DBTableData) info.getContent().getReplaceObject(); return StringUtils.equals(dbTableData.getQuery(), info.getContent().getOldShowStr()); } @Override - public Map getValue(Object... o) { + public Map getValue (Object...o){ HashMap map = new HashMap<>(); addValue2Map(contentKey, ((DBTableData) o[0]).getQuery(), map); return map; } @Override - public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { + public void setValue (Info info, String findStr, String + replaceStr, List < Pair < Integer, Integer >> operatorArray){ DBTableData dbTableData = (DBTableData) info.getContent().getReplaceObject(); info.updateOldStr(dbTableData.getQuery(), findStr); dbTableData.setQuery(ShowValueUtils.replaceAll(dbTableData.getQuery(), findStr, replaceStr)); - //todo DesignTableDataManager } @Override - public String getInfoShowStr(Info info) { + public String getInfoShowStr (Info info){ return info.getInfoShowStr(info); } - }; + } + + ; String name; @@ -256,4 +300,4 @@ public enum ReplaceObject implements DealWithInfoValue { abstract boolean check(Info info); -} + } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java index 956d3ff386..b5e202bcb1 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java @@ -52,6 +52,10 @@ public class SearchTag { * 数据字典-公式-实际值 */ public static final int DICT_PRODUCE = 10; + /** + * 引用JS + */ + public static final int IMPORT_JS = 11; From 9094e69ddf871eb27bde8e3d2843dac3eac98b24 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Thu, 29 Sep 2022 14:11:34 +0800 Subject: [PATCH 78/93] =?UTF-8?q?REPORT-75998=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E6=A8=A1=E6=9D=BFWeb=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E5=BC=95=E7=94=A8JS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/content/js/SearchWebJSAction.java | 20 +++++++ .../actions/replace/info/ReplaceObject.java | 58 ++++++++++++++++--- .../actions/replace/info/base/SearchTag.java | 4 ++ 3 files changed, 75 insertions(+), 7 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java index 0ceec53617..725d1280db 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/js/SearchWebJSAction.java @@ -4,6 +4,7 @@ import com.fr.design.actions.replace.info.JSInfo; import com.fr.design.actions.replace.info.base.ITContent; +import com.fr.design.actions.replace.info.base.SearchTag; import com.fr.design.actions.replace.utils.SearchJSUtils; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.JTemplate; @@ -19,6 +20,7 @@ import com.fr.report.web.util.ReportEngineEventMapping; import com.fr.web.attr.ReportWebAttr; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -86,12 +88,30 @@ public class SearchWebJSAction implements SearchJS { content.setTemplateName(jTemplate.getTemplateName()); content.setJumpAble(false); addWebContent2Array(webAttr); + //处理引用JS + dealImportJS(content,jsInfos,webAttr); for (int i = 0; i < arrayList.size(); i++) { addJSInfos2ListFromArray(content, jsInfos, arrayList.get(i)); } } } + private void dealImportJS(ITContent content, List jsInfos, ReportWebAttr webAttr) { + if (webAttr != null){ + for (String jsStr : webAttr.getJSImport()){ + ITContent jsContent = ITContent.copy(content); + jsContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_Report_Web_Attributes"), + Toolkit.i18nText("Fine-Design_Report_Import_JavaScript") + ); + jsContent.setReplaceObject(jsStr); + jsContent.setHoldObject(webAttr); + jsContent.setTag(SearchTag.IMPORT_JS); + jsInfos.add(new JSInfo(jsContent)); + } + } + } + private void addJSInfos2ListFromServerWebAttr(ITContent content, List jsInfos, WebContent webContent) { ITContent newContent = ITContent.copy(content); if (SERVER_MAP.containsKey(webContent.getClass().getSimpleName())) { diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java index 3d615e18a9..d803f31012 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java @@ -3,13 +3,16 @@ package com.fr.design.actions.replace.info; import com.fr.data.impl.DBTableData; import com.fr.design.actions.replace.utils.ShowValueUtils; import com.fr.form.event.Listener; +import com.fr.general.GeneralUtils; import com.fr.js.JavaScriptImpl; import com.fr.js.NameJavaScript; import com.fr.plugin.chart.base.VanChartHtmlLabel; import com.fr.stable.StringUtils; import com.fr.stable.collections.combination.Pair; +import com.fr.web.attr.ReportWebAttr; import org.jetbrains.annotations.Nullable; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -184,36 +187,77 @@ public enum ReplaceObject implements DealWithInfoValue { return StringUtils.equals(javaScript.getContent(), info.getContent().getOldShowStr()); } }, + /** + * 模板Web属性——引用JS + */ + IMPORT_JS("String") { + @Override + public Map getValue(Object... o) { + HashMap map = new HashMap<>(); + addValue2Map(contentKey, GeneralUtils.objectToString(o[0]), map); + return map; + } + + @Override + public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { + if (info.getContent().getHoldObject() instanceof ReportWebAttr) { + ReportWebAttr attr = (ReportWebAttr) info.getContent().getHoldObject(); + List jsImports = Arrays.asList(attr.getJSImport()); + String jsName = GeneralUtils.objectToString(info.getContent().getReplaceObject()); + for (int i = 0, len = jsImports.size(); i < len; i++) { + if (StringUtils.equals(jsImports.get(i), jsName)) { + jsImports.set(i, ShowValueUtils.replaceAll(jsName, findStr, replaceStr)); + } + } + attr.clearJSImportList(); + for (int i = 0, len = jsImports.size(); i < len; i++) { + attr.addJSImport(jsImports.get(i)); + } + } + } + + @Override + public String getInfoShowStr(Info info) { + return GeneralUtils.objectToString(info.getContent().getReplaceObject()); + } + + @Override + boolean check(Info info) { + return true; + } + }, /** * DBTableData——SQL */ DB_TABLE_DATA("DBTableData") { @Override - boolean check(Info info) { + boolean check (Info info){ DBTableData dbTableData = (DBTableData) info.getContent().getReplaceObject(); return StringUtils.equals(dbTableData.getQuery(), info.getContent().getOldShowStr()); } @Override - public Map getValue(Object... o) { + public Map getValue (Object...o){ HashMap map = new HashMap<>(); addValue2Map(contentKey, ((DBTableData) o[0]).getQuery(), map); return map; } @Override - public void setValue(Info info, String findStr, String replaceStr, List> operatorArray) { + public void setValue (Info info, String findStr, String + replaceStr, List < Pair < Integer, Integer >> operatorArray){ DBTableData dbTableData = (DBTableData) info.getContent().getReplaceObject(); info.updateOldStr(dbTableData.getQuery(), findStr); dbTableData.setQuery(ShowValueUtils.replaceAll(dbTableData.getQuery(), findStr, replaceStr)); - //todo DesignTableDataManager } @Override - public String getInfoShowStr(Info info) { + public String getInfoShowStr (Info info){ return info.getInfoShowStr(info); } - }; + } + + ; String name; @@ -256,4 +300,4 @@ public enum ReplaceObject implements DealWithInfoValue { abstract boolean check(Info info); -} + } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java index 956d3ff386..b5e202bcb1 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/SearchTag.java @@ -52,6 +52,10 @@ public class SearchTag { * 数据字典-公式-实际值 */ public static final int DICT_PRODUCE = 10; + /** + * 引用JS + */ + public static final int IMPORT_JS = 11; From 8548304e6266631af204bc8ff46a68c1fe79f5c3 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Thu, 29 Sep 2022 14:22:14 +0800 Subject: [PATCH 79/93] =?UTF-8?q?REPORT-75998=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E9=83=A8=E5=88=86=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/actions/replace/info/ReplaceObject.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java index d803f31012..53bd77a4d1 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java @@ -244,8 +244,7 @@ public enum ReplaceObject implements DealWithInfoValue { } @Override - public void setValue (Info info, String findStr, String - replaceStr, List < Pair < Integer, Integer >> operatorArray){ + public void setValue (Info info, String findStr, String replaceStr, List < Pair < Integer, Integer >> operatorArray){ DBTableData dbTableData = (DBTableData) info.getContent().getReplaceObject(); info.updateOldStr(dbTableData.getQuery(), findStr); dbTableData.setQuery(ShowValueUtils.replaceAll(dbTableData.getQuery(), findStr, replaceStr)); @@ -255,9 +254,7 @@ public enum ReplaceObject implements DealWithInfoValue { public String getInfoShowStr (Info info){ return info.getInfoShowStr(info); } - } - - ; + }; String name; From c0ebf7f3cf9cabc0c550dd56d27277b630f2814b Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Thu, 29 Sep 2022 14:44:01 +0800 Subject: [PATCH 80/93] =?UTF-8?q?REPORT-75998=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=A0=A1=E9=AA=8C=E8=AE=A1=E6=95=B0=E9=94=99?= =?UTF-8?q?=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../content/formula/template/SearchTemplateFormulaAction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java index 0f9124721f..0dd6919558 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/template/SearchTemplateFormulaAction.java @@ -107,7 +107,7 @@ public class SearchTemplateFormulaAction implements SearchTemplateFormula { } //数据校验 - for (int i = 0, len = attr.getValueVerifierCount(); i < len; i++) { + for (int i = 0, len = attr.getVerifierCount(); i < len; i++) { Verifier verifier = attr.getVerifier(i); if (verifier instanceof ValueVerifier) { ITContent content = ITContent.copy(sheetContent); From 34750dd81b6c50f2e67b2b388def15a0a0076345 Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Thu, 29 Sep 2022 15:18:33 +0800 Subject: [PATCH 81/93] =?UTF-8?q?REPORT-81241=E3=80=90=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=E3=80=91=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E4=B8=AD=E5=BF=83=E6=96=AD=E7=BD=91=E5=90=8E=E7=9A=84?= =?UTF-8?q?=E9=87=8D=E6=96=B0=E5=8A=A0=E8=BD=BD=E6=97=A0=E5=8F=8D=E5=BA=94?= =?UTF-8?q?=20=E4=BF=AE=E6=94=B9=E4=B8=80=E4=BA=9Burl=E7=BC=96=E7=A0=81=20?= =?UTF-8?q?=E7=BB=99=E4=B8=80=E4=BA=9B=E5=B8=B8=E9=87=8F=E5=8A=A0=E6=B3=A8?= =?UTF-8?q?=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alphafine/AlphaFineCloudConstants.java | 31 ++++++++++--------- .../alphafine/cell/model/RobotModel.java | 4 ++- .../manager/impl/ComplementAdviceManager.java | 2 +- .../manager/impl/SimilarSearchManager.java | 2 +- 4 files changed, 21 insertions(+), 18 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java index 35b363eb71..6f8b296aaa 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java @@ -1,5 +1,6 @@ package com.fr.design.actions.help.alphafine; +import com.fr.design.i18n.Toolkit; import com.fr.general.CloudCenter; /** @@ -52,21 +53,21 @@ public class AlphaFineCloudConstants { } /** - * get PluginUrl + * 获取插件信息api */ public static String getPluginUrl() { return CloudCenter.getInstance().acquireUrlByKind(AF_PLUGIN_INFO); } /** - * get ReuseUrl + * 获取组件信息api */ public static String getReuseUrl() { return CloudCenter.getInstance().acquireUrlByKind(AF_REUSE_INFO); } /** - * get DocumentDocUrl + * 获取帮助文档url */ public static String getDocumentDocUrl() { return CloudCenter.getInstance().acquireUrlByKind(AF_DOC_VIEW); @@ -94,28 +95,28 @@ public class AlphaFineCloudConstants { } /** - * get CloudServerUrl + * 获取云端接口,用于上传alphafine搜索记录 */ public static String getCloudServerUrl() { return CloudCenter.getInstance().acquireUrlByKind(AF_RECORD); } /** - * get SearchApi + * 获取搜索api,输入搜索词,返回fr的相关功能 */ public static String getSearchApi() { return CloudCenter.getInstance().acquireUrlByKind(AF_CLOUD_SEARCH); } /** - * get SimilarSearchUrlPrefix + * 获取模糊搜索api前缀,输入搜索词,返回alphaFine相关内容,插件,文档,功能等 */ public static String getSimilarSearchUrlPrefix() { return CloudCenter.getInstance().acquireUrlByKind(AF_SIMILAR_SEARCH); } /** - * get ComplementAdviceSearchUrlPrefix + * 补全建议搜索结果 api,与AF_SIMILAR_SEARCH接口类似,但是返回的信息更全 */ public static String getComplementAdviceSearchUrlPrefix() { return CloudCenter.getInstance().acquireUrlByKind(AF_ADVICE_SEARCH); @@ -136,14 +137,14 @@ public class AlphaFineCloudConstants { } /** - * get AlphaGoToWeb + * 推荐搜索api,输入搜索词,返回猜你想搜的内容(html格式) */ public static String getAlphaGoToWeb() { return CloudCenter.getInstance().acquireUrlByKind(AF_GO_WEB); } /** - * get AlphaPreview + * 帆软智能客服页面url */ public static String getAlphaPreview() { return CloudCenter.getInstance().acquireUrlByKind(AF_PREVIEW); @@ -170,12 +171,12 @@ public class AlphaFineCloudConstants { String fillLearningPath = CloudCenter.getInstance().acquireUrlByKind(AF_HELP_FILL_LEARNING_PATH); String apiSummary = CloudCenter.getInstance().acquireUrlByKind(AF_HELP_API_SUMMARY); String monthlyDocument = CloudCenter.getInstance().acquireUrlByKind(AF_HELP_MONTHLY_DOCUMENT); - return "[{\"name\":\"快速入门指南\", \"link\":\"" + quickStartUrl + "\"}," + - "{\"name\":\"报表应用学习路径\", \"link\":\"" + reportLearningPath + "\"}," + - "{\"name\":\"参数应用学习路径\", \"link\":\"" + parameterLearningPath + "\"}," + - "{\"name\":\"填报学习路径\", \"link\":\"" + fillLearningPath + "\"}," + - "{\"name\":\"API接口汇总\", \"link\":\"" + apiSummary + "\"}," + - "{\"name\":\"文档月刊\", \"link\":\"" + monthlyDocument + "\"} ]"; + return "[{\"name\":\"" + Toolkit.i18nText("Fine-Design_Report_AlphaFine_Doc_Quick_Start") + "\", \"link\":\"" + quickStartUrl + "\"}," + + "{\"name\":\"" + Toolkit.i18nText("Fine-Design_Report_AlphaFine_Doc_Report_Learning") + "\", \"link\":\"" + reportLearningPath + "\"}," + + "{\"name\":\"" + Toolkit.i18nText("Fine-Design_Report_AlphaFine_Doc_Parameter_Learning") + "\", \"link\":\"" + parameterLearningPath + "\"}," + + "{\"name\":\"" + Toolkit.i18nText("Fine-Design_Report_AlphaFine_Doc_Fill_Learning") + "\", \"link\":\"" + fillLearningPath + "\"}," + + "{\"name\":\"" + Toolkit.i18nText("Fine-Design_Report_AlphaFine_Doc_Api_Summary") + "\", \"link\":\"" + apiSummary + "\"}," + + "{\"name\":\"" + Toolkit.i18nText("Fine-Design_Report_AlphaFine_Doc_Monthly_Document") + "\", \"link\":\"" + monthlyDocument + "\"} ]"; } /** diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/RobotModel.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/RobotModel.java index 4c304d107f..493bf0de7b 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/RobotModel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/RobotModel.java @@ -1,5 +1,6 @@ package com.fr.design.mainframe.alphafine.cell.model; +import com.fr.base.login.ClientHelper; import com.fr.design.actions.help.alphafine.AlphaFineCloudConstants; import com.fr.design.actions.help.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.CellType; @@ -46,8 +47,9 @@ public class RobotModel extends AlphaCellModel { } public static String getContent(String titleStr) { + String encodedTitleStr = ClientHelper.urlEncode(titleStr, EncodeConstants.ENCODING_UTF_8); String token = DigestUtils.md5Hex(AlphaFineConstants.ALPHA_ROBOT_SEARCH_TOKEN + titleStr); - String url = AlphaFineCloudConstants.getAlphaGoToWeb() + titleStr + "&token=" + token; + String url = AlphaFineCloudConstants.getAlphaGoToWeb() + encodedTitleStr + "&token=" + token; try { String result = HttpToolbox.get(url); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java index a00803210e..dbe810c8ea 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java @@ -43,7 +43,7 @@ public class ComplementAdviceManager { SearchResult searchResult = new SearchResult(); for (int j = 0; j < searchText.length; j++) { String msg = ClientHelper.urlEncode(searchText[j], EncodeConstants.ENCODING_UTF_8); - String token = DigestUtils.md5Hex(AlphaFineConstants.ALPHA_ROBOT_SEARCH_TOKEN + msg); + String token = DigestUtils.md5Hex(AlphaFineConstants.ALPHA_ROBOT_SEARCH_TOKEN + searchText[j]); String url = AlphaFineCloudConstants.getComplementAdviceSearchUrlPrefix() + "msg=" + msg + "&token=" + ClientHelper.urlEncode(token, EncodeConstants.ENCODING_UTF_8); try { String result = HttpToolbox.get(url); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManager.java index 102ead1bb2..dc7866301e 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManager.java @@ -50,7 +50,7 @@ public class SimilarSearchManager implements AlphaFineSearchProvider { SearchResult allModelList = new SearchResult(); for (int j = 0; j < searchText.length; j++) { String msg = ClientHelper.urlEncode(searchText[j], EncodeConstants.ENCODING_UTF_8); - String token = DigestUtils.md5Hex(AlphaFineConstants.ALPHA_ROBOT_SEARCH_TOKEN + msg); + String token = DigestUtils.md5Hex(AlphaFineConstants.ALPHA_ROBOT_SEARCH_TOKEN + searchText[j]); String url = AlphaFineCloudConstants.getSimilarSearchUrlPrefix() + "msg=" + msg + "&token=" + ClientHelper.urlEncode(token, EncodeConstants.ENCODING_UTF_8); try { String result = HttpToolbox.get(url); From 3d8e0d5e6336e4b25c51fa072cd8b08d15d0c8cb Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Thu, 29 Sep 2022 15:58:03 +0800 Subject: [PATCH 82/93] =?UTF-8?q?REPORT-81241=E3=80=90=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=E3=80=91=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E4=B8=AD=E5=BF=83=E6=96=AD=E7=BD=91=E5=90=8E=E7=9A=84?= =?UTF-8?q?=E9=87=8D=E6=96=B0=E5=8A=A0=E8=BD=BD=E6=97=A0=E5=8F=8D=E5=BA=94?= =?UTF-8?q?=20=E5=88=A0=E9=99=A4json=E5=AD=97=E7=AC=A6=E4=B8=B2=EF=BC=8C?= =?UTF-8?q?=E7=94=A8jsonarry=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alphafine/AlphaFineCloudConstants.java | 36 ++++++++++++------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java index 6f8b296aaa..9fb243d1e8 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/AlphaFineCloudConstants.java @@ -2,6 +2,10 @@ package com.fr.design.actions.help.alphafine; import com.fr.design.i18n.Toolkit; import com.fr.general.CloudCenter; +import com.fr.json.JSONArray; + +import java.util.HashMap; +import java.util.Map; /** * 云端变量统一管理 @@ -38,6 +42,9 @@ public class AlphaFineCloudConstants { private static final String AF_HELP_MONTHLY_DOCUMENT = "af.help.monthly.document"; private static final String AF_RECOMMEND = "af.recommend"; + private static final String LINK_NAME = "name"; + private static final String LINK_URL = "link"; + /** * 获取插件搜索api */ @@ -165,18 +172,23 @@ public class AlphaFineCloudConstants { } private static String getDefaultRecommend() { - String quickStartUrl = CloudCenter.getInstance().acquireUrlByKind(AF_HELP_QUICK_START); - String reportLearningPath = CloudCenter.getInstance().acquireUrlByKind(AF_HELP_REPORT_LEARNING_PATH); - String parameterLearningPath = CloudCenter.getInstance().acquireUrlByKind(AF_HELP_PARAM_LEARNING_PATH); - String fillLearningPath = CloudCenter.getInstance().acquireUrlByKind(AF_HELP_FILL_LEARNING_PATH); - String apiSummary = CloudCenter.getInstance().acquireUrlByKind(AF_HELP_API_SUMMARY); - String monthlyDocument = CloudCenter.getInstance().acquireUrlByKind(AF_HELP_MONTHLY_DOCUMENT); - return "[{\"name\":\"" + Toolkit.i18nText("Fine-Design_Report_AlphaFine_Doc_Quick_Start") + "\", \"link\":\"" + quickStartUrl + "\"}," + - "{\"name\":\"" + Toolkit.i18nText("Fine-Design_Report_AlphaFine_Doc_Report_Learning") + "\", \"link\":\"" + reportLearningPath + "\"}," + - "{\"name\":\"" + Toolkit.i18nText("Fine-Design_Report_AlphaFine_Doc_Parameter_Learning") + "\", \"link\":\"" + parameterLearningPath + "\"}," + - "{\"name\":\"" + Toolkit.i18nText("Fine-Design_Report_AlphaFine_Doc_Fill_Learning") + "\", \"link\":\"" + fillLearningPath + "\"}," + - "{\"name\":\"" + Toolkit.i18nText("Fine-Design_Report_AlphaFine_Doc_Api_Summary") + "\", \"link\":\"" + apiSummary + "\"}," + - "{\"name\":\"" + Toolkit.i18nText("Fine-Design_Report_AlphaFine_Doc_Monthly_Document") + "\", \"link\":\"" + monthlyDocument + "\"} ]"; + String[][] links = new String[][]{ + {Toolkit.i18nText("Fine-Design_Report_AlphaFine_Doc_Quick_Start"), CloudCenter.getInstance().acquireUrlByKind(AF_HELP_QUICK_START)}, + {Toolkit.i18nText("Fine-Design_Report_AlphaFine_Doc_Report_Learning"), CloudCenter.getInstance().acquireUrlByKind(AF_HELP_REPORT_LEARNING_PATH)}, + {Toolkit.i18nText("Fine-Design_Report_AlphaFine_Doc_Parameter_Learning"), CloudCenter.getInstance().acquireUrlByKind(AF_HELP_PARAM_LEARNING_PATH)}, + {Toolkit.i18nText("Fine-Design_Report_AlphaFine_Doc_Fill_Learning"), CloudCenter.getInstance().acquireUrlByKind(AF_HELP_FILL_LEARNING_PATH)}, + {Toolkit.i18nText("Fine-Design_Report_AlphaFine_Doc_Api_Summary"), CloudCenter.getInstance().acquireUrlByKind(AF_HELP_API_SUMMARY)}, + {Toolkit.i18nText("Fine-Design_Report_AlphaFine_Doc_Monthly_Document"), CloudCenter.getInstance().acquireUrlByKind(AF_HELP_MONTHLY_DOCUMENT)} + }; + JSONArray jsonArray = new JSONArray(); + for (String[] link : links) { + Map map = new HashMap<>(); + map.put(LINK_NAME, link[0]); + map.put(LINK_URL, link[1]); + jsonArray.put(map); + } + + return jsonArray.toString(); } /** From 5c716eb147fc6032a824395baa85f9de91c7181e Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Thu, 29 Sep 2022 17:36:40 +0800 Subject: [PATCH 83/93] =?UTF-8?q?REPORT-75998=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=9F=A5=E6=89=BE=E5=AE=8C=E6=88=90=E5=90=8E=E6=89=93=E5=BC=80?= =?UTF-8?q?=E6=96=B0=E6=A8=A1=E6=9D=BF=E6=97=A0=E6=9F=A5=E6=89=BE=E5=86=85?= =?UTF-8?q?=E5=AE=B9=E4=B8=8D=E7=AC=A6=E7=9A=84=E6=8F=90=E7=A4=BA=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=BE=93=E5=85=A5img=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E7=BB=93=E6=9E=9C=E4=B8=8D=E6=AD=A3=E7=A1=AE=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../replace/ui/ITReplaceMainDialog.java | 55 ++++----- .../actions/replace/ui/ITTableButton.java | 9 +- .../actions/replace/utils/ShowValueUtils.java | 108 ++++++++++++++++-- 3 files changed, 130 insertions(+), 42 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java index 4843df57f4..54e6a3bff4 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java @@ -48,13 +48,14 @@ public class ITReplaceMainDialog extends UIDialog { private static boolean matched = false; private static volatile ITReplaceMainDialog instance = null; private static String templateID; + private static String templateName; private ITReplaceNorthPanel northPane; private ITReplaceSouthPanel southPanel; private ITReplaceWestPanel westPanel; private boolean searchFlag; private String searchStr; private static final int FIRST_ROW = 0; - public static int selectCount = 0; + public static int selectCount = 0; public ITReplaceMainDialog() { super(DesignerContext.getDesignerFrame()); @@ -165,8 +166,9 @@ public class ITReplaceMainDialog extends UIDialog { String searchStr = ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).getText(); String replaceStr = ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).getText(); //替换内容为空需要触发搜索 - if (StringUtils.equals(getSearchStr(), searchStr) && StringUtils.isNotEmpty(replaceStr)) { - if (isITReplaceValid() && checkTemplateChanged(searchResultList)) { + if (isITReplaceValid() && checkTemplateChanged(searchResultList)) { + if (StringUtils.equals(getSearchStr(), searchStr) && StringUtils.isNotEmpty(replaceStr)) { + HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().fireTargetModified(true); for (Info info : searchResultList) { if (info.getContent().isSelected()) { info.setValue(info, searchStr, replaceStr, info.getContent().getOperatorArray()); @@ -175,29 +177,26 @@ public class ITReplaceMainDialog extends UIDialog { southPanel.getTableEditorPane().update(); northPane.refreshReplaceInputComboBoxItems(); ITTableEditorPane.getEditTable().repaint(); - HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().fireTargetModified(true); setSearchFlag(false); - search(); - } else { - Object[] options = new Object[]{Toolkit.i18nText("Fine-Design_Replace_Search_Again"), Toolkit.i18nText("Fine-Design_Basic_Cancel")}; - int optionSelected = FineJOptionPane.showOptionDialog( - ITReplaceMainDialog.this, - Toolkit.i18nText("Fine-Design_Replace_Message"), - Toolkit.i18nText("Fine-Design_Basic_Tool_Tips"), - JOptionPane.YES_NO_CANCEL_OPTION, - JOptionPane.ERROR_MESSAGE, - null, - // 如果传null, 则按钮为 optionType 类型所表示的按钮(也就是确认对话框) - options, - options[0] - ); - //如果选择了重新查找,则再查找一遍 - if (optionSelected == 0) { - search(); - } } - } else { search(); + } else { + Object[] options = new Object[]{Toolkit.i18nText("Fine-Design_Replace_Search_Again"), Toolkit.i18nText("Fine-Design_Basic_Cancel")}; + int optionSelected = FineJOptionPane.showOptionDialog( + ITReplaceMainDialog.this, + Toolkit.i18nText("Fine-Design_Replace_Message"), + Toolkit.i18nText("Fine-Design_Basic_Tool_Tips"), + JOptionPane.YES_NO_CANCEL_OPTION, + JOptionPane.ERROR_MESSAGE, + null, + // 如果传null, 则按钮为 optionType 类型所表示的按钮(也就是确认对话框) + options, + options[0] + ); + //如果选择了重新查找,则再查找一遍 + if (optionSelected == 0) { + search(); + } } @@ -220,7 +219,8 @@ public class ITReplaceMainDialog extends UIDialog { */ public boolean isITReplaceValid() { if (JTemplate.isValid(HistoryTemplateListCache.getInstance().getCurrentEditingTemplate())) { - return StringUtils.equals(HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getTarget().getTemplateID(), templateID); + return StringUtils.equals(HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getTarget().getTemplateID(), templateID) + && StringUtils.equals(HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getTemplateName(), templateName); } else { return false; } @@ -288,6 +288,7 @@ public class ITReplaceMainDialog extends UIDialog { if (JTemplate.isValid(HistoryTemplateListCache.getInstance().getCurrentEditingTemplate())) { JTemplate jTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); templateID = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getTarget().getTemplateID(); + templateName = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getTemplateName(); itTableEditor.clear(); String searchStr = ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).getText(); //更新搜索内容 @@ -310,12 +311,12 @@ public class ITReplaceMainDialog extends UIDialog { setSearchFlag(true); selectCount = searchResultList.size(); //如果有结果,默认选中第一行 - if (searchResultList.size() > 0){ - getEditTable().addRowSelectionInterval(FIRST_ROW,FIRST_ROW); + if (searchResultList.size() > 0) { + getEditTable().addRowSelectionInterval(FIRST_ROW, FIRST_ROW); } //更新替换按钮可用性 - if (StringUtils.isEmpty(searchStr) || searchResultList.size() == 0){ + if (StringUtils.isEmpty(searchStr) || searchResultList.size() == 0) { northPane.getReplaceButton().setEnabled(false); } else { northPane.getReplaceButton().setEnabled(true); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java index 03717a725c..d64946d09d 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java @@ -6,13 +6,14 @@ import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.DesignerContext; -import com.fr.design.mainframe.ReportComponentComposite; +import com.fr.file.FILEFactory; import com.fr.general.GeneralUtils; import com.fr.stable.StringUtils; +import com.fr.stable.project.ProjectConstants; + import javax.swing.AbstractCellEditor; import javax.swing.JTable; -import javax.swing.SwingUtilities; import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; import java.awt.Component; @@ -42,7 +43,9 @@ public class ITTableButton extends AbstractCellEditor implements TableCellEditor ITContent content = (ITContent) getEditTable().getValueAt(getEditTable().getEditingRow(), 6); if (StringUtils.isNotEmpty(GeneralUtils.objectToString(content.getTrlString()))) { ITReplaceMainDialog.setITReplaceFlag(true); - HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().navigate(new TRL(GeneralUtils.objectToString(content.getTrlString()))); + TRL trl = new TRL(GeneralUtils.objectToString(content.getTrlString())); + DesignerContext.getDesignerFrame().openTemplate(FILEFactory.createFILE(ProjectConstants.REPORTLETS_NAME + FILEFactory.SEPARATOR + content.getTemplateName())); + HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().navigate(trl); } ITReplaceMainDialog.setITReplaceFlag(false); } diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java index 19ab2758f3..6c7b16cdd1 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java @@ -28,6 +28,25 @@ public class ShowValueUtils { public static final String ANY_THING_REGEX = "."; public static final String NUMBER_REGEX = "[0-9]"; public static final String ENGLISH_REGEX = "[a-zA-Z]"; + public static final char LEFT_HTML_CHAR = '<'; + public static final char RIGHT_HTML_CHAR = '>'; + public static final String HEAD = ""; + public static final String TAIL = ""; + public static final String FONT_HEAD = ""; + public static final String FONT_TAIL = ""; + public static final String HTML = ""; + public static final String NOBR = ""; + public static final String HTML_TAIL = ""; + public static final String NOBR_TAIL = ""; + public static final int HEAD_LEN = HEAD.length(); + public static final int TAIL_LEN = TAIL.length(); + public static final int FONT_HEAD_LEN = FONT_HEAD.length(); + public static final int FONT_TAIL_LEN = FONT_TAIL.length(); + public static final int HTML_LEN = HTML.length(); + public static final int HTML_TAIL_LEN = HTML_TAIL.length(); + public static final int NOBR_LEN = NOBR.length(); + public static final int NOBR_TAIL_LEN = NOBR_TAIL.length(); + public static Pattern containPattern; private static List specialCharList = new ArrayList<>(); @@ -135,33 +154,97 @@ public class ShowValueUtils { String result = str; Pattern pattern = containPattern; Matcher matcher = pattern.matcher(str); - String head = ""; - String tail = ""; - int size = head.length() + tail.length(); + int size = FONT_HEAD.length() + FONT_TAIL.length(); int index = 0; StringBuilder builder = new StringBuilder(str); while (matcher.find()) { - builder.replace(matcher.start() + index, matcher.end() + index, head + changeHtmlStr(matcher.group()) + tail); + builder.replace(matcher.start() + index, matcher.end() + index, FONT_HEAD + changeHtmlStr(matcher.group()) + FONT_TAIL); index += size; + index += getIncreaseCount(matcher.group()); } - return "
" + - builder.toString() + - "
"; + + return changeOriginHtmlStr(HEAD + builder.toString() + TAIL); } else { - return "
" + - replaceAll(str, searchStr, "" + changeHtmlStr(searchStr) + "") + - "
"; + String ans = HEAD + replaceAll(str, searchStr, FONT_HEAD + changeHtmlStr(searchStr) + FONT_TAIL) + TAIL; + return changeOriginHtmlStr(ans); + } + + } + + /** + * 用于处理原字符串中的尖括号 + */ + private static String changeOriginHtmlStr(String str) { + int count = 0; + int different = 3; + StringBuilder builder = new StringBuilder(str); + for (int i = 0; i < str.length(); i++) { + char c = str.charAt(i); + if (c == LEFT_HTML_CHAR) { + if (!checkValid(str, i)) { + builder.replace(i + count, i + count + 1, "<"); + count += different; + } + } } + return builder.toString(); + } + private static boolean checkValid(String str, int i) { + int leftLen = str.length() - (i + 1); + return checkStrValid(str, i, leftLen, HTML_LEN, HTML) || + checkStrValid(str, i, leftLen, HTML_TAIL_LEN, HTML_TAIL) || + checkStrValid(str, i, leftLen, FONT_HEAD_LEN, FONT_HEAD) || + checkStrValid(str, i, leftLen, FONT_TAIL_LEN, FONT_TAIL) || + checkStrValid(str, i, leftLen, NOBR_LEN, NOBR) || + checkStrValid(str, i, leftLen, NOBR_TAIL_LEN, NOBR_TAIL); } - private static String changeHtmlStr(String searchStr){ + /** + * 是否是所指定的字符串 + * + * @param str + * @param i + * @param leftLen + * @return + */ + private static boolean checkStrValid(String str, int i, int leftLen, int len, String checkStr) { + if (leftLen < len - 1) { + return false; + } else { + return StringUtils.equals(str.substring(i, i + len), checkStr); + } + } + + + /** + * 用于处理搜索的字符中的尖括号 + * + * @param searchStr + * @return + */ + private static String changeHtmlStr(String searchStr) { String showStr = searchStr; - showStr = showStr.replace("<","<"); + showStr = showStr.replace("<", "<"); showStr = showStr.replace(">", ">"); return showStr; } + private static int getIncreaseCount(String str) { + int count = 0; + int leftDifferent = 3; + int rightDifferent = 2; + for (int i = 0; i < str.length(); i++) { + if (str.charAt(i) == LEFT_HTML_CHAR) { + count += leftDifferent; + } + if (str.charAt(i) == RIGHT_HTML_CHAR) { + count += rightDifferent; + } + } + return count; + } + /** * 集合是否不为空 * @@ -193,6 +276,7 @@ public class ShowValueUtils { /** * 支持通配符的contains + * * @param originStr * @param matchStr * @return From 0afa23c3c33303301601d293090b6e3e9fe38acd Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Fri, 30 Sep 2022 10:32:30 +0800 Subject: [PATCH 84/93] =?UTF-8?q?REPORT-75998=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E9=9D=A2=E6=9D=BF=E4=B8=8D=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E7=9A=84bug=E3=80=81=E4=BC=98=E5=8C=96=E9=AD=94?= =?UTF-8?q?=E6=9C=AF=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../actions/replace/info/ReplaceObject.java | 7 +++++++ .../actions/replace/utils/ShowValueUtils.java | 18 +++++++++++------- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java index 53bd77a4d1..48a4dbf644 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/ReplaceObject.java @@ -1,7 +1,10 @@ package com.fr.design.actions.replace.info; import com.fr.data.impl.DBTableData; +import com.fr.design.DesignModelAdapter; import com.fr.design.actions.replace.utils.ShowValueUtils; +import com.fr.design.data.DesignTableDataManager; +import com.fr.design.data.datapane.TableDataTreePane; import com.fr.form.event.Listener; import com.fr.general.GeneralUtils; import com.fr.js.JavaScriptImpl; @@ -248,6 +251,10 @@ public enum ReplaceObject implements DealWithInfoValue { DBTableData dbTableData = (DBTableData) info.getContent().getReplaceObject(); info.updateOldStr(dbTableData.getQuery(), findStr); dbTableData.setQuery(ShowValueUtils.replaceAll(dbTableData.getQuery(), findStr, replaceStr)); + //清除缓存 + DesignTableDataManager.removeSelectedColumnNames(dbTableData.getName()); + //收缩菜单 + TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter()).refreshDockingView(); } @Override diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java index 6c7b16cdd1..d7baa0a733 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java @@ -46,6 +46,14 @@ public class ShowValueUtils { public static final int HTML_TAIL_LEN = HTML_TAIL.length(); public static final int NOBR_LEN = NOBR.length(); public static final int NOBR_TAIL_LEN = NOBR_TAIL.length(); + /** + * <转变为<的长度差 + */ + public static final int LEFT_DIFFERENT = 3; + /** + * >转变为>的长度差 + */ + public static final int RIGHT_DIFFERENT = 2; public static Pattern containPattern; private static List specialCharList = new ArrayList<>(); @@ -168,7 +176,6 @@ public class ShowValueUtils { String ans = HEAD + replaceAll(str, searchStr, FONT_HEAD + changeHtmlStr(searchStr) + FONT_TAIL) + TAIL; return changeOriginHtmlStr(ans); } - } /** @@ -176,14 +183,13 @@ public class ShowValueUtils { */ private static String changeOriginHtmlStr(String str) { int count = 0; - int different = 3; StringBuilder builder = new StringBuilder(str); for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (c == LEFT_HTML_CHAR) { if (!checkValid(str, i)) { builder.replace(i + count, i + count + 1, "<"); - count += different; + count += LEFT_DIFFERENT; } } } @@ -232,14 +238,12 @@ public class ShowValueUtils { private static int getIncreaseCount(String str) { int count = 0; - int leftDifferent = 3; - int rightDifferent = 2; for (int i = 0; i < str.length(); i++) { if (str.charAt(i) == LEFT_HTML_CHAR) { - count += leftDifferent; + count += LEFT_DIFFERENT; } if (str.charAt(i) == RIGHT_HTML_CHAR) { - count += rightDifferent; + count += RIGHT_DIFFERENT; } } return count; From ac7943ba9acb7bc079e6b331901135d1fff8146a Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Fri, 30 Sep 2022 10:56:56 +0800 Subject: [PATCH 85/93] =?UTF-8?q?REPORT-81483=E3=80=90=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=E3=80=9111.0?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E5=99=A8=E9=9C=80=E8=A6=81=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E6=90=9C=E7=B4=A210.0&11.0=E7=9A=84=E6=A8=A1=E6=9D=BF=201?= =?UTF-8?q?=E3=80=81=E4=BF=AE=E6=94=B9=E4=BA=86=E8=AF=B7=E6=B1=82=E5=8F=82?= =?UTF-8?q?=E6=95=B0=202=E3=80=81=E4=BF=AE=E6=94=B9=E4=BA=86=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E7=BC=96=E7=A0=81=E6=96=B9=E5=BC=8F=203=E3=80=81?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E9=87=8D=E8=BD=BD=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=EF=BC=8C=E6=B7=BB=E5=8A=A0=E9=87=8D=E8=BD=BD=E5=8A=A8=E7=94=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alphafine/component/AlphaFineFrame.java | 2 +- .../search/helper/FineMarketClientHelper.java | 13 ++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineFrame.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineFrame.java index 0269480b60..e74108fee9 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineFrame.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineFrame.java @@ -915,7 +915,7 @@ public class AlphaFineFrame extends JFrame { if (StringUtils.isEmpty(text)) { return; } - searchLoadingPane = new SearchLoadingPane(); + initSearchLoadingPane(); SearchTextBean searchTextBean = new SearchTextBean(text, segmentationResult); this.productNewsSearchWorkerManager.doSearch(searchTextBean); this.documentWorkerManager.doSearch(searchTextBean); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/helper/FineMarketClientHelper.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/helper/FineMarketClientHelper.java index 42b28cfe8a..817a47cca4 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/helper/FineMarketClientHelper.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/helper/FineMarketClientHelper.java @@ -50,13 +50,11 @@ public class FineMarketClientHelper { private static final String CERTIFICATE_PUBLIC_KEY = FineMarketPublicKeyHolder.getInstance().getDefaultKey(); public static final String FINE_MARKET_TEMPLATE_INFO = CloudCenter.getInstance().acquireUrlByKind("market.template.info"); public static final String FINE_MARKET_TEMPLATE_URL = CloudCenter.getInstance().acquireUrlByKind("market.template.url"); - public static final String VERSION = "version"; - private static final String CURRENT_VERSION = "11.0"; public static final String FILE_DOWNLOAD = "file/download/"; public static final String PACKAGE_DOWNLOAD = "package/download/"; public static final String TEMPLATES_PARENT_PACKAGE = "parent/"; public static final String TEMPLATES_TAGS = "filter"; - public static final String NAME_SEARCH = "searchKeyword"; + public static final String NAME_SEARCH = "?searchKeyword="; public static final String RESPONSE_STATE = "state"; public static final String RESPONSE_SUCCESS = "ok"; @@ -271,11 +269,12 @@ public class FineMarketClientHelper { } } + /** + * 通过名字搜索模板信息 + */ public @Nullable JSONArray getTemplateInfoByName(String name) throws IOException { - Map params = new HashMap(); - params.put(NAME_SEARCH, name); - params.put(VERSION, CURRENT_VERSION); - String jsonString = HttpToolbox.get(FINE_MARKET_TEMPLATE_INFO, params); + String url = FINE_MARKET_TEMPLATE_INFO + NAME_SEARCH + ClientHelper.urlEncode(name, EncodeConstants.ENCODING_UTF_8); + String jsonString = HttpToolbox.get(url); JSONObject jsonObject = new JSONObject(jsonString); String responseState = (String) jsonObject.get(RESPONSE_STATE); if (RESPONSE_SUCCESS.equals(responseState)) { From 03e4e616d290e63c7c9d2e1d8aacdd44c738ad9c Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Fri, 30 Sep 2022 11:30:46 +0800 Subject: [PATCH 86/93] =?UTF-8?q?REPORT-81416=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E9=97=AA=E9=80=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/carton/EventDispatchThreadHangMonitor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/carton/EventDispatchThreadHangMonitor.java b/designer-base/src/main/java/com/fr/design/carton/EventDispatchThreadHangMonitor.java index f472d901a1..56ccaa2c48 100644 --- a/designer-base/src/main/java/com/fr/design/carton/EventDispatchThreadHangMonitor.java +++ b/designer-base/src/main/java/com/fr/design/carton/EventDispatchThreadHangMonitor.java @@ -7,7 +7,6 @@ import com.fr.stable.ArrayUtils; import com.fr.stable.ProductConstantsBase; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; -import com.fr.third.ibm.icu.text.SimpleDateFormat; import org.jetbrains.annotations.NotNull; import javax.swing.SwingUtilities; @@ -22,6 +21,7 @@ import java.io.IOException; import java.lang.management.ManagementFactory; import java.lang.management.ThreadInfo; import java.lang.management.ThreadMXBean; +import java.text.SimpleDateFormat; import java.util.LinkedList; import java.util.Timer; import java.util.TimerTask; From 1023ff0713ac4c656b370f9620ea9644b032f66d Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Fri, 30 Sep 2022 14:36:14 +0800 Subject: [PATCH 87/93] =?UTF-8?q?REPORT-81222=E3=80=90=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=E3=80=91=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E6=8E=92=E5=BA=8F=E5=85=88=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E9=A6=96=E4=B8=AA=E5=86=8D=E7=82=B9=E5=87=BB=E6=9C=80=E5=90=8E?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=EF=BC=8C=E4=B8=8A=E4=B8=8B=E7=AE=AD=E5=A4=B4?= =?UTF-8?q?=E7=BD=AE=E7=81=B0=E6=98=BE=E7=A4=BA=E6=9C=89=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 按钮交互逻bug --- .../actions/help/alphafine/component/CustomSortPane.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java index 747b8d8ce0..adb63730de 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java @@ -153,7 +153,11 @@ public class CustomSortPane extends JPanel { if (order == 0) { top.setEnabled(false); up.setEnabled(false); + down.setEnabled(true); + bottom.setEnabled(true); } else if (order == sortItemPane.getComponentCount() - 1) { + up.setEnabled(true); + top.setEnabled(true); down.setEnabled(false); bottom.setEnabled(false); } else { From 3ce6caba58ad04bfb4abf8250f472ed240241fd8 Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Fri, 30 Sep 2022 14:46:03 +0800 Subject: [PATCH 88/93] =?UTF-8?q?REPORT-81222=E3=80=90=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=8C=96=E4=BA=8C=E6=9C=9F=E3=80=91=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E6=8E=92=E5=BA=8F=E5=85=88=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E9=A6=96=E4=B8=AA=E5=86=8D=E7=82=B9=E5=87=BB=E6=9C=80=E5=90=8E?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=EF=BC=8C=E4=B8=8A=E4=B8=8B=E7=AE=AD=E5=A4=B4?= =?UTF-8?q?=E7=BD=AE=E7=81=B0=E6=98=BE=E7=A4=BA=E6=9C=89=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 按钮交互逻bug --- .../alphafine/component/CustomSortPane.java | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java index adb63730de..c544bbac0b 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/alphafine/component/CustomSortPane.java @@ -85,6 +85,7 @@ public class CustomSortPane extends JPanel { top.addActionListener(e -> { SwingUtilities.invokeLater(() -> { sortItemPane.setComponentZOrder(selectedLabel, 0); + setToolbarEnable(false, false, true, true); CustomSortPane.this.revalidate(); CustomSortPane.this.repaint(); refreshCurrentOrder(); @@ -94,6 +95,7 @@ public class CustomSortPane extends JPanel { bottom.addActionListener(e -> { SwingUtilities.invokeLater(() -> { sortItemPane.setComponentZOrder(selectedLabel, sortItemPane.getComponentCount() - 1); + setToolbarEnable(true, true, false, false); CustomSortPane.this.revalidate(); CustomSortPane.this.repaint(); refreshCurrentOrder(); @@ -103,6 +105,7 @@ public class CustomSortPane extends JPanel { up.addActionListener(e -> { SwingUtilities.invokeLater(() -> { sortItemPane.setComponentZOrder(selectedLabel, sortItemPane.getComponentZOrder(selectedLabel) - 1); + setToolbarEnable(true, true, true, true); CustomSortPane.this.revalidate(); CustomSortPane.this.repaint(); refreshCurrentOrder(); @@ -112,6 +115,7 @@ public class CustomSortPane extends JPanel { down.addActionListener(e -> { SwingUtilities.invokeLater(() -> { sortItemPane.setComponentZOrder(selectedLabel, sortItemPane.getComponentZOrder(selectedLabel) + 1); + setToolbarEnable(true, true, true, true); CustomSortPane.this.revalidate(); CustomSortPane.this.repaint(); refreshCurrentOrder(); @@ -151,23 +155,26 @@ public class CustomSortPane extends JPanel { private void disableButton() { int order = sortItemPane.getComponentZOrder(selectedLabel); if (order == 0) { - top.setEnabled(false); - up.setEnabled(false); - down.setEnabled(true); - bottom.setEnabled(true); + setToolbarEnable(false, false, true, true); } else if (order == sortItemPane.getComponentCount() - 1) { - up.setEnabled(true); - top.setEnabled(true); - down.setEnabled(false); - bottom.setEnabled(false); + setToolbarEnable(true, true, false, false); } else { - up.setEnabled(true); - top.setEnabled(true); - down.setEnabled(true); - bottom.setEnabled(true); + setToolbarEnable(true, true, true, true); } } + /** + * 设置 置顶,上移,下移,置底 按钮的状态 + * true:启用 + * false:关闭 + */ + private void setToolbarEnable(boolean top, boolean up, boolean down, boolean bottom) { + this.top.setEnabled(top); + this.up.setEnabled(up); + this.down.setEnabled(down); + this.bottom.setEnabled(bottom); + } + private void refreshCurrentOrder() { String[] currentTabOrder = parentPane.getCurrentOrder(); HashSet selectedTab = new HashSet<>(); From 9d4d5f6473a2c1b6b52aa3cf124a90a856014074 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Fri, 30 Sep 2022 14:55:57 +0800 Subject: [PATCH 89/93] =?UTF-8?q?REPORT-75998=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=A4=9A=E7=BA=A7=E8=8F=9C=E5=8D=95=E4=B8=8B=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E8=B7=B3=E8=BD=AC=E7=9A=84=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../replace/action/content/cell/SearchCellAction.java | 1 + .../content/component/SearchComponentAction.java | 1 + .../content/floatelement/SearchFloatAction.java | 1 + .../action/content/widget/SearchWidgetAction.java | 1 + .../design/actions/replace/info/base/ITContent.java | 11 +++++++++++ .../fr/design/actions/replace/ui/ITTableButton.java | 2 +- 6 files changed, 16 insertions(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/cell/SearchCellAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/cell/SearchCellAction.java index 826b247e0c..2711069847 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/cell/SearchCellAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/cell/SearchCellAction.java @@ -61,6 +61,7 @@ public class SearchCellAction implements SearchAction { ITContent content = new ITContent(); content.setTemplateName(jTemplate.getTemplateName()); content.addTRL(jTemplate.getTemplateName()); + content.setTemplatePath(jTemplate.getPath()); if (jTemplate.getTarget() instanceof Form) { setCellInfos(dealForm(jTemplate)); } else if (jTemplate.getTarget() instanceof WorkBook) { diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java index 336aa93745..fd741fdf7e 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/component/SearchComponentAction.java @@ -50,6 +50,7 @@ public class SearchComponentAction implements SearchAction { Form form = (Form) jTemplate.getTarget(); ITContent content = new ITContent(); content.setTemplateName(jTemplate.getTemplateName()); + content.setTemplatePath(jTemplate.getPath()); content.addTRL(jTemplate.getTemplateName()); content.setFrmFlag(true); //处理最底层form组件 diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/floatelement/SearchFloatAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/floatelement/SearchFloatAction.java index 4eaa574bea..13398be1f1 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/floatelement/SearchFloatAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/floatelement/SearchFloatAction.java @@ -44,6 +44,7 @@ public class SearchFloatAction implements SearchAction { Report report = workBook.getReport(i); ITContent content = new ITContent(); content.setTemplateName(jTemplate.getTemplateName()); + content.setTemplatePath(jTemplate.getPath()); content.setSheetID(String.valueOf(i)); content.setSheetName(workBook.getReportName(i)); content.addTRL(jTemplate.getTemplateName()); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchWidgetAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchWidgetAction.java index 66ca91dd15..32a21bee54 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchWidgetAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/widget/SearchWidgetAction.java @@ -44,6 +44,7 @@ public class SearchWidgetAction implements SearchAction { ArrayList widgetInfos = new ArrayList<>(); ITContent content = new ITContent(); content.setTemplateName(jTemplate.getTemplateName()); + content.setTemplatePath(jTemplate.getPath()); //这边拿SearchCellAction里的CellInfo来查找,由于在SearchCellAction里面已经考虑了决策报表和普通报表两种情况了,这边就不用再做区分 addCellWidget2Array(widgetInfos, jTemplate); content.addTRL(jTemplate.getTemplateName()); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java index afa9847f37..ee83e77534 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/info/base/ITContent.java @@ -19,6 +19,7 @@ public class ITContent implements Cloneable { private String sheetID; private String sheetName; private String templateName; + private String templatePath; private String blockName; /** * 一些不好定位的位置先用字符串展示出来就好 @@ -90,6 +91,7 @@ public class ITContent implements Cloneable { this.trlString = StringUtils.EMPTY; this.operatorArray = new ArrayList<>(); this.holdObject = new Object(); + this.templatePath = StringUtils.EMPTY; } @@ -117,6 +119,7 @@ public class ITContent implements Cloneable { result.setJumpAble(content.isJumpAble()); result.setHoldObject(content.getHoldObject()); result.setTag(content.getTag()); + result.setTemplatePath(content.getTemplatePath()); } return result; } @@ -205,6 +208,14 @@ public class ITContent implements Cloneable { this.showObject = showObject; } + public String getTemplatePath() { + return templatePath; + } + + public void setTemplatePath(String templatePath) { + this.templatePath = templatePath; + } + /** * 添加位置信息 * diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java index d64946d09d..1a73d3fcb3 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java @@ -44,7 +44,7 @@ public class ITTableButton extends AbstractCellEditor implements TableCellEditor if (StringUtils.isNotEmpty(GeneralUtils.objectToString(content.getTrlString()))) { ITReplaceMainDialog.setITReplaceFlag(true); TRL trl = new TRL(GeneralUtils.objectToString(content.getTrlString())); - DesignerContext.getDesignerFrame().openTemplate(FILEFactory.createFILE(ProjectConstants.REPORTLETS_NAME + FILEFactory.SEPARATOR + content.getTemplateName())); + DesignerContext.getDesignerFrame().openTemplate(FILEFactory.createFILE(content.getTemplatePath())); HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().navigate(trl); } ITReplaceMainDialog.setITReplaceFlag(false); From 05aad1deddada9f60b4474d1b7c5cfc588ac0e36 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Fri, 30 Sep 2022 16:19:17 +0800 Subject: [PATCH 90/93] =?UTF-8?q?REPORT-75998=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E6=AD=A3=E5=88=99=E8=A1=A8=E8=BE=BE=E5=BC=8F=E5=8C=B9=E9=85=8D?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E3=80=81=E5=A2=9E=E5=8A=A0=E6=8E=A7=E4=BB=B6=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E5=9B=9E=E8=B0=83=E5=87=BD=E6=95=B0=E4=B8=AD?= =?UTF-8?q?=E7=9A=84JS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SearchExportJSFormulaAction.java | 6 +- .../actions/replace/utils/SearchJSUtils.java | 25 ++++ .../actions/replace/utils/ShowValueUtils.java | 8 +- .../replace/utils/ShowValueUtilsTest.java | 107 ++++++++++++++++++ 4 files changed, 143 insertions(+), 3 deletions(-) create mode 100644 designer-realize/src/test/java/com/fr/design/actions/replace/utils/ShowValueUtilsTest.java diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchExportJSFormulaAction.java b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchExportJSFormulaAction.java index d19970c218..32b5721a52 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchExportJSFormulaAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/action/content/formula/highlight/javascript/SearchExportJSFormulaAction.java @@ -27,7 +27,7 @@ public class SearchExportJSFormulaAction implements SearchJSFormula { @Override public void searchJSFormulaFromOther(List formulaInfos, ITContent content, JavaScript javaScript) { - //如果导出当前模板,可以存公式的地方就是命名方式-自定义 + //如果导出当前模板,可以存公式的地方就是命名方式-自定义、参数设置 if (((ExportJavaScript) javaScript).isCurrentTemplate()) { content.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Export_JS_Template_Current")); dealSingleJavaScript(formulaInfos, content, ((ExportJavaScript) javaScript).getCurrentTemplateJavaScript()); @@ -42,6 +42,8 @@ public class SearchExportJSFormulaAction implements SearchJSFormula { } } + + public boolean isListExist(List list) { return list != null && list.size() > 0; } @@ -57,8 +59,8 @@ public class SearchExportJSFormulaAction implements SearchJSFormula { formulaInfos.add(new FormulaInfo(newContent)); } if (!javaScript.isExtendParameters()) { - ITContent paraContent = ITContent.copy(content); for (ParameterProvider parameter : javaScript.getParameters()) { + ITContent paraContent = ITContent.copy(content); if (parameter.getValue() instanceof Formula) { paraContent.addOtherPos(Toolkit.i18nText("Fine-Design_Basic_Base_Value")); paraContent.setReplaceObject(parameter.getValue()); diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java index a63dabeb77..d04b02aa26 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/SearchJSUtils.java @@ -12,6 +12,7 @@ import com.fr.design.i18n.Toolkit; import com.fr.form.event.Listener; import com.fr.form.ui.Widget; import com.fr.general.GeneralUtils; +import com.fr.js.Commit2DBJavaScript; import com.fr.js.JavaScript; import com.fr.js.JavaScriptImpl; import com.fr.js.NameJavaScript; @@ -49,10 +50,34 @@ public class SearchJSUtils { ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(listener); SearchJSUtils.addJSInfos(jsInfos, new JSInfo(newContent)); + } else if (javaScript instanceof Commit2DBJavaScript){ + dealCommit2DBJS(jsInfos, content, (Commit2DBJavaScript) javaScript); } } } + private static void dealCommit2DBJS(List jsInfos, ITContent content, Commit2DBJavaScript javaScript) { + if (!javaScript.getDBManipulation().isEmpty()) { + //处理回调函数 + dealWithCallBack(jsInfos, content, javaScript); + } + } + + private static void dealWithCallBack(List jsInfos, ITContent content, Commit2DBJavaScript commit2DBJavaScript) { + JavaScript javaScript = commit2DBJavaScript.getCallBack(); + ITContent newContent = ITContent.copy(content); + newContent.addOtherPos( + Toolkit.i18nText("Fine-Design_Basic_Set_Callback_Function") + ); + if (javaScript instanceof JavaScriptImpl) { + newContent.setReplaceObject(javaScript); + jsInfos.add(new JSInfo(newContent)); + } else if (javaScript instanceof Commit2DBJavaScript){ + dealCommit2DBJS(jsInfos, newContent, (Commit2DBJavaScript) javaScript); + } + } + + /** * 获取HtmlLabel数组 * diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java index d7baa0a733..b7b46539b3 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ShowValueUtils.java @@ -59,9 +59,11 @@ public class ShowValueUtils { private static List specialCharList = new ArrayList<>(); static { - //正则特殊字符:? * () [] {} ^ $ . + //正则特殊字符:? * () [] {} ^ $ . \ + | //如果是? 并采用通配符 ,会自动转成“.” 所以 ? 不用处理 //$同理 + specialCharList.add("\\"); + specialCharList.add("/"); specialCharList.add("*"); specialCharList.add("("); specialCharList.add(")"); @@ -71,6 +73,10 @@ public class ShowValueUtils { specialCharList.add("}"); specialCharList.add("^"); specialCharList.add("."); + specialCharList.add("+"); + specialCharList.add("|"); + specialCharList.add("!"); + } /** diff --git a/designer-realize/src/test/java/com/fr/design/actions/replace/utils/ShowValueUtilsTest.java b/designer-realize/src/test/java/com/fr/design/actions/replace/utils/ShowValueUtilsTest.java new file mode 100644 index 0000000000..d31511bddc --- /dev/null +++ b/designer-realize/src/test/java/com/fr/design/actions/replace/utils/ShowValueUtilsTest.java @@ -0,0 +1,107 @@ +package com.fr.design.actions.replace.utils; + +import junit.framework.TestCase; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * @author Destiny.Lin + * @version 11.0 + * created by Destiny.Lin on 2022-09-30 + */ +public class ShowValueUtilsTest extends TestCase { + + + public void testChangeRegex() { + + /** + * 字符"." + */ + String regex = "."; + String str = "=\"通配符:我(){}[]是*cu/r?y+单!^个字|+符串/?\\?.\""; + Pattern pattern = Pattern.compile(ShowValueUtils.changeRegex(regex)); + Matcher matcher = pattern.matcher(str); + assertTrue(matcher.find()); + while (matcher.find()){ + assertEquals(".", matcher.group()); + } + + /** + * 字符"?" + */ + regex = "??."; + pattern =Pattern.compile(ShowValueUtils.changeRegex(regex)); + Matcher matcher1 = pattern.matcher(str); + assertTrue(matcher1.find()); + while (matcher1.find()){ + assertEquals("\\?.", matcher1.group()); + } + + /** + * 字符"\" + */ + regex = "?\\"; + pattern =Pattern.compile(ShowValueUtils.changeRegex(regex)); + Matcher matcher2 = pattern.matcher(str); + assertTrue(matcher2.find()); + while (matcher2.find()){ + assertEquals("?\\", matcher2.group()); + } + + /** + * 字符"/" + */ + regex = "/"; + pattern =Pattern.compile(ShowValueUtils.changeRegex(regex)); + Matcher matcher3 = pattern.matcher(str); + assertTrue(matcher3.find()); + while (matcher3.find()){ + assertEquals("/", matcher3.group()); + } + + /** + * 字符"*" + */ + regex = "*"; + pattern =Pattern.compile(ShowValueUtils.changeRegex(regex)); + Matcher matcher4 = pattern.matcher(str); + assertTrue(matcher4.find()); + while (matcher4.find()){ + assertEquals("*", matcher4.group()); + } + + /** + * 字符"(){}[]" + */ + regex = "(){}[]"; + pattern =Pattern.compile(ShowValueUtils.changeRegex(regex)); + Matcher matcher5 = pattern.matcher(str); + assertTrue(matcher5.find()); + while (matcher5.find()){ + assertEquals("(){}[]", matcher5.group()); + } + + /** + * 字符"^" + */ + regex = "!^"; + pattern =Pattern.compile(ShowValueUtils.changeRegex(regex)); + Matcher matcher6 = pattern.matcher(str); + assertTrue(matcher6.find()); + while (matcher6.find()){ + assertEquals("!^", matcher6.group()); + } + + /** + * 字符"|+" + */ + regex = "|+"; + pattern =Pattern.compile(ShowValueUtils.changeRegex(regex)); + Matcher matcher7 = pattern.matcher(str); + assertTrue(matcher7.find()); + while (matcher7.find()){ + assertEquals("|+", matcher7.group()); + } + } +} \ No newline at end of file From ca7d8f0bb0c3d19a3537fc836303b988cd8d3f6c Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Sun, 9 Oct 2022 11:21:36 +0800 Subject: [PATCH 91/93] =?UTF-8?q?REPORT-81307=20A=E5=88=97=E5=88=97?= =?UTF-8?q?=E5=AE=BD=E6=A6=82=E7=8E=87=E6=98=BE=E7=A4=BA=E4=B8=BAB?= =?UTF-8?q?=E5=88=97=E5=88=97=E5=AE=BD=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../grid/AbstractGridHeaderMouseHandler.java | 35 ++++++++++++------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/grid/AbstractGridHeaderMouseHandler.java b/designer-realize/src/main/java/com/fr/grid/AbstractGridHeaderMouseHandler.java index 97e95a34f4..193d056f02 100644 --- a/designer-realize/src/main/java/com/fr/grid/AbstractGridHeaderMouseHandler.java +++ b/designer-realize/src/main/java/com/fr/grid/AbstractGridHeaderMouseHandler.java @@ -38,6 +38,8 @@ import java.lang.reflect.Method; public abstract class AbstractGridHeaderMouseHandler extends MouseInputAdapter { protected static final int FUZZY_EDGE = 10; protected static final int SEPARATOR_GAP = 5; + //只选中一个 + private static final int ONLY_SELECT_ONE = 1; protected GridHeader gHeader; private int dragType = GridUtils.DRAG_NONE; @@ -109,7 +111,7 @@ public abstract class AbstractGridHeaderMouseHandler extends MouseInputAdapter { if (between(evt, tmpSize1, tmpSize2)) { if (index >= dragIndex) { try { - if(method != null) { + if (method != null) { method.invoke(report, dragIndex, FU.valueOfPix(evtOffset(evt, oldEndValueSize), resolution)); } } catch (Exception e) { @@ -118,7 +120,7 @@ public abstract class AbstractGridHeaderMouseHandler extends MouseInputAdapter { //sizeList.set(dragIndex, FU.valueOfPix(evtOffset(evt, oldEndValueSize), resolution)); } else { try { - if(method != null) { + if (method != null) { method.invoke(report, index, FU.valueOfPix(evtOffset(evt, (int) tmpSize1), resolution)); } } catch (Exception e) { @@ -128,7 +130,7 @@ public abstract class AbstractGridHeaderMouseHandler extends MouseInputAdapter { // from all to do. for (int h = (dragIndex - 1); h > index; h--) { try { - if(method != null) { + if (method != null) { method.invoke(report, h, UNIT.ZERO); } } catch (Exception e) { @@ -219,7 +221,7 @@ public abstract class AbstractGridHeaderMouseHandler extends MouseInputAdapter { ePane.getGrid().stopEditing();// james 停止当前的所有编辑 // peter:选中格子位置. - ColumnRow selectedCellPoint = GridUtils.getAdjustEventColumnRow_withresolution(ePane, evt.getX(), evt.getY(),resolution); + ColumnRow selectedCellPoint = GridUtils.getAdjustEventColumnRow_withresolution(ePane, evt.getX(), evt.getY(), resolution); iterateScrollBar(ePane, evt, PRESS_ACTION); @@ -227,7 +229,7 @@ public abstract class AbstractGridHeaderMouseHandler extends MouseInputAdapter { if (SwingUtilities.isRightMouseButton(evt)) { Selection cs = ePane.getSelection(); resetSelectionByRightButton(selectedCellPoint, cs, ePane); - + checkEndMultiSelectIndex(cs); UIPopupMenu popupMenu = createPopupMenu(ePane, evt, Math.max(dragIndex, Math.max(this.startMultiSelectIndex, this.endMultiSelectIndex))); if (popupMenu != null) { GUICoreUtils.showPopupMenu(popupMenu, gHeader, evt.getX() + 1, evt.getY() + 1); @@ -246,6 +248,16 @@ public abstract class AbstractGridHeaderMouseHandler extends MouseInputAdapter { ePane.repaint(); } + /** + * 如果行列中有只选中一个的情况,更新下endIndex,防止列宽或行宽不匹配 + * @param selection + */ + private void checkEndMultiSelectIndex(Selection selection) { + if (selection.getSelectedColumns().length == ONLY_SELECT_ONE || selection.getSelectedRows().length == ONLY_SELECT_ONE) { + this.endMultiSelectIndex = this.startMultiSelectIndex; + } + } + protected abstract void resetSelectionByRightButton(ColumnRow mouseSelectedColumnRow, Selection cs, ElementCasePane ePane); @@ -305,14 +317,11 @@ public abstract class AbstractGridHeaderMouseHandler extends MouseInputAdapter { StringBuilder sb = new StringBuilder(); sb.append(String.format("%.2f", new Double(len))) .append('/').append(String.format("%.2f", new Double(tlen))) - .append(unit); - if(!DesignerUIModeConfig.getInstance().simulateWebUIMode()){ - sb.append('(') - .append((int)(unitValue.toPixD(resolution))).append('/') - .append((int)(totalUnitValue.toPixD(resolution))) - .append(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Px")) - .append(')'); - } + .append(unit).append('(') + .append((int) (unitValue.toPixD(resolution))).append('/') + .append((int) (totalUnitValue.toPixD(resolution))) + .append(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Px")) + .append(')'); return sb.toString(); } From f9d77fac63cfc1403d34b29330487249f5742901 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Sun, 9 Oct 2022 11:26:31 +0800 Subject: [PATCH 92/93] =?UTF-8?q?REPORT-81307=20A=E5=88=97=E5=88=97?= =?UTF-8?q?=E5=AE=BD=E6=A6=82=E7=8E=87=E6=98=BE=E7=A4=BA=E4=B8=BAB?= =?UTF-8?q?=E5=88=97=E5=88=97=E5=AE=BD=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/grid/AbstractGridHeaderMouseHandler.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/grid/AbstractGridHeaderMouseHandler.java b/designer-realize/src/main/java/com/fr/grid/AbstractGridHeaderMouseHandler.java index 193d056f02..760c1f04a3 100644 --- a/designer-realize/src/main/java/com/fr/grid/AbstractGridHeaderMouseHandler.java +++ b/designer-realize/src/main/java/com/fr/grid/AbstractGridHeaderMouseHandler.java @@ -317,11 +317,14 @@ public abstract class AbstractGridHeaderMouseHandler extends MouseInputAdapter { StringBuilder sb = new StringBuilder(); sb.append(String.format("%.2f", new Double(len))) .append('/').append(String.format("%.2f", new Double(tlen))) - .append(unit).append('(') - .append((int) (unitValue.toPixD(resolution))).append('/') - .append((int) (totalUnitValue.toPixD(resolution))) - .append(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Px")) - .append(')'); + .append(unit); + if(!DesignerUIModeConfig.getInstance().simulateWebUIMode()){ + sb.append('(') + .append((int)(unitValue.toPixD(resolution))).append('/') + .append((int)(totalUnitValue.toPixD(resolution))) + .append(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Px")) + .append(')'); + } return sb.toString(); } From 7cca9c2f571cd69bfd16910f14cd150a54041cbd Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Sun, 9 Oct 2022 11:50:51 +0800 Subject: [PATCH 93/93] =?UTF-8?q?REPORT-81307=20=E8=A1=A5=E5=85=85?= =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/grid/AbstractGridHeaderMouseHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/grid/AbstractGridHeaderMouseHandler.java b/designer-realize/src/main/java/com/fr/grid/AbstractGridHeaderMouseHandler.java index 760c1f04a3..2927f74d69 100644 --- a/designer-realize/src/main/java/com/fr/grid/AbstractGridHeaderMouseHandler.java +++ b/designer-realize/src/main/java/com/fr/grid/AbstractGridHeaderMouseHandler.java @@ -250,7 +250,7 @@ public abstract class AbstractGridHeaderMouseHandler extends MouseInputAdapter { /** * 如果行列中有只选中一个的情况,更新下endIndex,防止列宽或行宽不匹配 - * @param selection + * @param selection 与ElementCasePane绑定的选择对象 */ private void checkEndMultiSelectIndex(Selection selection) { if (selection.getSelectedColumns().length == ONLY_SELECT_ONE || selection.getSelectedRows().length == ONLY_SELECT_ONE) {