From 0f010b22ca539f2fba8588b85d858d81e1c63ddb Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Thu, 27 Oct 2022 15:34:07 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-80695=20=E3=80=90=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E5=85=A8=E5=B1=80=E7=BA=A7=E5=88=AB=E6=9F=A5=E6=89=BE=E6=9B=BF?= =?UTF-8?q?=E6=8D=A2=E4=BA=8C=E6=9C=9F=E3=80=91=E5=B7=A5=E5=85=B7=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../actions/replace/utils/SearchJSUtils.java | 7 +- .../actions/replace/utils/ShowValueUtils.java | 86 +++++++++++++++++++ 2 files changed, 91 insertions(+), 2 deletions(-) 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 5bb27c6686..ef2909db6b 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 @@ -5,6 +5,7 @@ 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.JSCheckTag; 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; @@ -68,7 +69,7 @@ public class SearchJSUtils { ITContent newContent = ITContent.copy(content); newContent.setReplaceObject(listener); SearchJSUtils.addJSInfos(jsInfos, new JSInfo(newContent)); - } else if (javaScript instanceof Commit2DBJavaScript){ + } else if (javaScript instanceof Commit2DBJavaScript) { dealCommit2DBJS(jsInfos, content, (Commit2DBJavaScript) javaScript); } } @@ -90,7 +91,7 @@ public class SearchJSUtils { if (javaScript instanceof JavaScriptImpl) { newContent.setReplaceObject(javaScript); jsInfos.add(new JSInfo(newContent)); - } else if (javaScript instanceof Commit2DBJavaScript){ + } else if (javaScript instanceof Commit2DBJavaScript) { dealCommit2DBJS(jsInfos, newContent, (Commit2DBJavaScript) javaScript); } } @@ -362,6 +363,8 @@ public class SearchJSUtils { newContent.addOtherPos(Toolkit.i18nText("Fine-Design_Report_Hyperlink")); newContent.setReplaceObject(nameJavaScript); newContent.addOtherPos(nameJavaScript.getName()); + newContent.setHoldObject(elem); + newContent.setTag(JSCheckTag.CELL_HYPERLINK); SearchJSUtils.addJSInfos(jsInfos, new JSInfo(newContent)); } else if (isChartHyperPopLinkValid(javaScript)) { ITContent chartContent = ITContent.copy(content); 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 191a08eefc..8f1174e8fc 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,9 @@ 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.design.i18n.Toolkit; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.collections.combination.Pair; @@ -97,6 +99,22 @@ public class ShowValueUtils { } } + /** + * 获取高亮后用于展示的搜索后内容 + * + * @param str 原内容 + * @param searchStr 搜索内容 + * @param replaceStr 替换内容 + * @return 处理完的文本 + */ + public static String getReplaceString(String str, String searchStr, String replaceStr) { + if (StringUtils.isEmpty(searchStr)) { + return str; + } else { + return updateReplaceHighlight(str, searchStr, replaceStr); + } + } + /** * 替换策略 * @@ -187,6 +205,40 @@ public class ShowValueUtils { } } + /** + * 更新替换后的高亮 + * + * @param str + * @param searchStr + * @param replaceStr + * @return + */ + public static String updateReplaceHighlight(String str, String searchStr, String replaceStr) { + if (ITReplaceMainDialog.isMatched()) { + String result = str; + Pattern pattern = containPattern; + Matcher matcher = pattern.matcher(str); + int size = FONT_HEAD.length() + FONT_TAIL.length(); + int different = getDifferent(searchStr.length(), replaceStr.length()); + int index = 0; + StringBuilder builder = new StringBuilder(str); + while (matcher.find()) { + builder.replace(matcher.start() + index, matcher.end() + index, FONT_HEAD + changeHtmlStr(replaceStr) + FONT_TAIL); + index += getDifferent(size, different); + index += getIncreaseCount(replaceStr); + } + + return changeOriginHtmlStr(HEAD + builder.toString() + TAIL); + } else { + String ans = HEAD + replaceAll(str, searchStr, FONT_HEAD + changeHtmlStr(replaceStr) + FONT_TAIL) + TAIL; + return changeOriginHtmlStr(ans); + } + } + + private static int getDifferent(int searchLength, int replaceLength) { + return searchLength - replaceLength; + } + /** * 用于处理原字符串中的尖括号 */ @@ -315,4 +367,38 @@ public class ShowValueUtils { public static String joinStr4Position(String... strings) { return StableUtils.join(strings, JOIN_GAP_STRING); } + + /** + * 更新替换后内容的高亮 + * + * @param info 存储信息的数据结构 + * @param str 原内容 + * @param searchStr 搜索内容 + * @param replacedStr 替换内容 + */ + public static void updateAfterReplaceStr(Info info, String str, String searchStr, String replacedStr) { + info.getContent().setAfterReplaceStr(ShowValueUtils.getReplaceString(str, searchStr, replacedStr)); + } + + + /** + * 获取搜索或替换后的提示 + * + * @param findCount + * @param replaceCount + * @param failedCount + * @return + */ + public static String getResultTip(int findCount, int replaceCount, int failedCount) { + StringBuilder str = new StringBuilder(); + str.append("").append(Toolkit.i18nText("Fine-Design_Replace_Search_Finish")).append("").append(findCount).append("").append(Toolkit.i18nText("Fine-Design_Replace_Result")); + if (replaceCount != 0) { + str.append(Toolkit.i18nText("Fine-Design_Replace_Also_Finish")).append("").append(replaceCount).append("").append(Toolkit.i18nText("Fine-Design_Replace_Result_Count")); + if (failedCount != 0) { + str.append(Toolkit.i18nText("Fine-Design_Replace_Have")).append("").append(replaceCount).append("").append(Toolkit.i18nText("Fine-Design_Replace_Can_Not_Replace")); + } + } + + return str.toString(); + } }