From 8f558213782d082501aa3dcacf66aaf64ccef75c Mon Sep 17 00:00:00 2001 From: "stan.yang" Date: Fri, 17 Jul 2020 10:21:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=90=9C=E7=B4=A2=E6=96=B9=E6=B3=95=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 搜索方法修改 --- .../design/formula/ui/GroupFormulaPane.java | 33 +++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/fr/solution/plugin/design/formula/ui/GroupFormulaPane.java b/src/main/java/com/fr/solution/plugin/design/formula/ui/GroupFormulaPane.java index fe90b8c..ab50be8 100644 --- a/src/main/java/com/fr/solution/plugin/design/formula/ui/GroupFormulaPane.java +++ b/src/main/java/com/fr/solution/plugin/design/formula/ui/GroupFormulaPane.java @@ -64,7 +64,10 @@ import java.io.StringReader; import java.util.HashMap; import java.util.Locale; import java.util.Map; - +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; /** * 组合了普通公式和脚本公式的编辑器面板 @@ -244,15 +247,19 @@ public class GroupFormulaPane extends BasicPane implements UIFormula, OperateLis if (keyWord.length() != 0) { NameAndDescription[] descriptions = FunctionConstants.ALL.getDescriptions(); int lengthOfDes = descriptions.length; + List list = new ArrayList(); for (int i = 0; i < lengthOfDes; i++) { NameAndDescription and = descriptions[i]; String functionName = and.searchResult(keyWord, findDescription); if (StringKit.isNotBlank(functionName)) { - listModel.addElement(functionName); + list.add(functionName); } } - + Collections.sort(list, new SimilarComparator(keyWord)); + for (String name : list) { + listModel.addElement(name); + } if (!listModel.isEmpty()) { tipsList.setSelectedIndex(0); refreshDescriptionTextArea((String) listModel.getElementAt(0)); @@ -773,6 +780,26 @@ public class GroupFormulaPane extends BasicPane implements UIFormula, OperateLis } } + public static class SimilarComparator implements Comparator { + + private String searchKey; + + public SimilarComparator(String searchKey) { + this.searchKey = searchKey.toLowerCase(); + } + + @Override + public int compare(String o1, String o2) { + if (o1.toLowerCase().startsWith(searchKey)) { + return -1; + } + if (o2.toLowerCase().startsWith(searchKey)) { + return 1; + } + return o2.compareTo(o1); + } + } + public static class TextUserObject { public TextUserObject(String text) {