diff --git a/pom.xml b/pom.xml index bba9648..91700c5 100644 --- a/pom.xml +++ b/pom.xml @@ -3,6 +3,14 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 + + + com.fanruan.api + finekit + RELEASE + compile + + com.fr.plugin diff --git a/src/main/java/com/fr/solution/plugin/design/formula/compat/FunctionDefNAD.java b/src/main/java/com/fr/solution/plugin/design/formula/compat/FunctionDefNAD.java index 20de8ab..4657c9e 100644 --- a/src/main/java/com/fr/solution/plugin/design/formula/compat/FunctionDefNAD.java +++ b/src/main/java/com/fr/solution/plugin/design/formula/compat/FunctionDefNAD.java @@ -1,15 +1,28 @@ package com.fr.solution.plugin.design.formula.compat; +import com.fr.design.formula.AbstractNameAndDescription; import com.fr.stable.script.FunctionDef; /** * 函数名和描述 + * * @author Kalven * @version 10.0 * Created by Kalven on 2019/8/31 */ -public class FunctionDefNAD extends com.fr.design.formula.FunctionDefNAD { - public FunctionDefNAD(FunctionDef functionDef) { - super(functionDef); +public class FunctionDefNAD extends AbstractNameAndDescription { + + private FunctionDef def; + + public FunctionDefNAD(FunctionDef def) { + this.def = def; + } + + public String getName() { + return this.def == null ? "" : this.def.getName(); + } + + public String getDesc() { + return this.def == null ? "" : this.def.getDescription(); } } diff --git a/src/main/java/com/fr/solution/plugin/design/formula/compat/FunctionNAD.java b/src/main/java/com/fr/solution/plugin/design/formula/compat/FunctionNAD.java new file mode 100644 index 0000000..cc75d60 --- /dev/null +++ b/src/main/java/com/fr/solution/plugin/design/formula/compat/FunctionNAD.java @@ -0,0 +1,51 @@ +package com.fr.solution.plugin.design.formula.compat; + +import com.fr.design.formula.AbstractNameAndDescription; +import com.fr.general.GeneralContext; +import com.fr.script.CalculatorEmbeddedFunction; +import com.fr.stable.StringUtils; +import com.fr.stable.script.Function; + +import java.util.Locale; + +/** + * @author richie + * @version 10.0 + * Created by richie on 2019-09-03 + */ +public class FunctionNAD extends AbstractNameAndDescription { + + private Function fn; + + FunctionNAD(Function fn) { + this.fn = fn; + } + + public String getName() { + return fn == null ? StringUtils.EMPTY : fn.getClass().getSimpleName(); + } + + public String getDesc() { + if (fn == null) { + return StringUtils.EMPTY; + } + Locale locale = GeneralContext.getLocale(); + String describtion = fn.getDescription(locale); + if (describtion.startsWith(CalculatorEmbeddedFunction.LOCALE_PREFIX)) { + return Locale.CHINA.equals(locale) ? fn.getCN() : fn.getEN(); + } + + return describtion; + } + + @Override + public String searchResult(String keyWord, boolean findDescription) { + String functionName = getName(); + String des = getDesc(); + if (findDescription && des.contains(keyWord)) { + return functionName; + } else { + return super.searchResult(keyWord, findDescription); + } + } +} diff --git a/src/main/java/com/fr/solution/plugin/design/formula/compat/NameAndFunctionList.java b/src/main/java/com/fr/solution/plugin/design/formula/compat/NameAndFunctionList.java index 12c6a18..2c41448 100644 --- a/src/main/java/com/fr/solution/plugin/design/formula/compat/NameAndFunctionList.java +++ b/src/main/java/com/fr/solution/plugin/design/formula/compat/NameAndFunctionList.java @@ -1,16 +1,42 @@ package com.fr.solution.plugin.design.formula.compat; +import com.fr.design.formula.FunctionGroup; +import com.fr.design.formula.NameAndDescription; import com.fr.stable.script.Function; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + /** * 名称对应的函数列表 + * * @author Kalven * @version 10.0 * Created by Kalven on 2019/8/31 */ -public class NameAndFunctionList extends com.fr.design.formula.NameAndFunctionList { - public NameAndFunctionList(String name, Function[] fns) { - super(name, fns); +public class NameAndFunctionList implements FunctionGroup { + + protected String name; + protected List fnList = new ArrayList<>(); + + public NameAndFunctionList(String var1, Function[] var2) { + this.name = var1; + this.fnList.addAll(Arrays.asList(var2)); + } + + public String getGroupName() { + return this.name; + } + + public NameAndDescription[] getDescriptions() { + NameAndDescription[] var1 = new NameAndDescription[this.fnList.size()]; + + for (int var2 = 0; var2 < var1.length; ++var2) { + var1[var2] = new FunctionNAD(this.fnList.get(var2)); + } + + return var1; } } diff --git a/src/main/java/com/fr/solution/plugin/design/formula/compat/NameAndTypeAndFunctionList.java b/src/main/java/com/fr/solution/plugin/design/formula/compat/NameAndTypeAndFunctionList.java index f8220ce..e2b4b1d 100644 --- a/src/main/java/com/fr/solution/plugin/design/formula/compat/NameAndTypeAndFunctionList.java +++ b/src/main/java/com/fr/solution/plugin/design/formula/compat/NameAndTypeAndFunctionList.java @@ -4,12 +4,26 @@ import com.fr.stable.script.Function; /** * 名字和类型对应的函数列表 + * * @author Kalven * @version 10.0 * Created by Kalven on 2019/8/31 */ -public class NameAndTypeAndFunctionList extends com.fr.design.formula.NameAndTypeAndFunctionList { +public class NameAndTypeAndFunctionList extends NameAndFunctionList { + + private Function.Type type; + public NameAndTypeAndFunctionList(String name, Function.Type type) { - super(name, type); + super(name, new Function[0]); + + this.type = type; + } + + public boolean test(Function fn) { + if (fn != null && fn.getType() == this.type) { + return fnList.add(fn); + } + + return false; } } 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 938cb00..55cfe2e 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 @@ -3,53 +3,39 @@ package com.fr.solution.plugin.design.formula.ui; import com.fanruan.api.cal.CalculatorKit; import com.fanruan.api.cal.ParameterKit; import com.fanruan.api.design.DesignKit; -import com.fanruan.api.design.ui.component.*; -import com.fanruan.api.design.ui.container.BasicPane; +import com.fanruan.api.design.macro.UIConstants; import com.fanruan.api.design.ui.action.UpdateAction; -import com.fanruan.api.design.work.ParameterInputPane; -import com.fanruan.api.design.ui.container.UIScrollPane; +import com.fanruan.api.design.ui.component.UIButton; +import com.fanruan.api.design.ui.component.UILabel; import com.fanruan.api.design.ui.component.UIQuickList; +import com.fanruan.api.design.ui.component.UIRoundedBorder; +import com.fanruan.api.design.ui.component.UITextArea; +import com.fanruan.api.design.ui.component.UITextField; +import com.fanruan.api.design.ui.container.BasicPane; +import com.fanruan.api.design.ui.container.UIScrollPane; +import com.fanruan.api.design.util.GUICoreKit; +import com.fanruan.api.design.work.ParameterInputPane; +import com.fanruan.api.log.LogKit; import com.fanruan.api.macro.EncodeConstants; +import com.fanruan.api.util.ArrayKit; +import com.fanruan.api.util.GeneralKit; import com.fanruan.api.util.IOKit; -import com.fanruan.api.design.util.GUICoreKit; -import com.fanruan.api.util.*; - -/** - * 接口 - */ +import com.fanruan.api.util.StringKit; import com.fr.base.BaseFormula; import com.fr.data.TableDataSource; -import com.fr.design.constants.UIConstants; +import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.DialogActionAdapter; -import com.fr.design.formula.UIFormula; -import com.fr.design.formula.VariableResolver; -import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.general.FRLogger; -import com.fr.stable.ParameterProvider; -import com.fr.stable.script.CalculatorProvider; import com.fr.design.formula.FunctionGroup; -/** - * 调用了其他函数的方法,返回值是父类,无法赋值给子类 - */ -import com.fr.design.dialog.BasicDialog; import com.fr.design.formula.NameAndDescription; +import com.fr.design.formula.UIFormula; +import com.fr.design.formula.VariableResolver; import com.fr.design.mainframe.JTemplate; - -/** - * 类似于上一个问题,不过是无法获取父类异常 - */ -import com.fr.stable.UtilEvalError; - -/** - * IOFile更改后悔出错不敢换,有instance,可能出错 - */ -//import com.fr.base.io.IOFile; - import com.fr.solution.plugin.design.formula.compat.DesignToolkit; import com.fr.solution.plugin.design.formula.compat.FunctionConstants; import com.fr.solution.plugin.design.formula.ui.evt.OperateListener; import com.fr.solution.plugin.design.formula.ui.type.CategoryFormulaPane; - +import com.fr.stable.ParameterProvider; +import com.fr.stable.script.CalculatorProvider; import javax.swing.*; import javax.swing.event.ListSelectionEvent; @@ -79,6 +65,44 @@ import java.util.HashMap; import java.util.Locale; import java.util.Map; +/** + * 接口 + *

+ * 调用了其他函数的方法,返回值是父类,无法赋值给子类 + *

+ * 类似于上一个问题,不过是无法获取父类异常 + *

+ * IOFile更改后悔出错不敢换,有instance,可能出错 + *

+ * 调用了其他函数的方法,返回值是父类,无法赋值给子类 + *

+ * 类似于上一个问题,不过是无法获取父类异常 + *

+ * IOFile更改后悔出错不敢换,有instance,可能出错 + *

+ * 调用了其他函数的方法,返回值是父类,无法赋值给子类 + *

+ * 类似于上一个问题,不过是无法获取父类异常 + *

+ * IOFile更改后悔出错不敢换,有instance,可能出错 + *

+ * 调用了其他函数的方法,返回值是父类,无法赋值给子类 + *

+ * 类似于上一个问题,不过是无法获取父类异常 + *

+ * IOFile更改后悔出错不敢换,有instance,可能出错 + */ +/** + * 调用了其他函数的方法,返回值是父类,无法赋值给子类 + */ +/** + * 类似于上一个问题,不过是无法获取父类异常 + */ +/** + * IOFile更改后悔出错不敢换,有instance,可能出错 + */ +//import com.fr.base.io.IOFile; + /** * 组合了普通公式和脚本公式的编辑器面板 */ @@ -129,9 +153,9 @@ public class GroupFormulaPane extends BasicPane implements UIFormula, OperateLis protected void initComponents() { this.setLayout(new BorderLayout(4, 4)); // text - JPanel textPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + JPanel textPane = GUICoreKit.createBorderLayoutPane(); this.add(textPane, BorderLayout.CENTER); - JPanel checkBoxAndButtonPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); + JPanel checkBoxAndButtonPane = GUICoreKit.createFlowPane(); UILabel formulaLabel = new UILabel(DesignToolkit.getLocText("Plugin-Design_Basic_FormulaD_Input_Formula_In_The_Text_Area_Below") + ":" + " "); formulaLabel.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4)); @@ -151,7 +175,7 @@ public class GroupFormulaPane extends BasicPane implements UIFormula, OperateLis UIButton calculateButton = new UIButton(DesignToolkit.getLocText("Plugin-Design_Group_Formula_Calculate")); calculateButton.addActionListener(calculateActionListener); - JPanel checkBoxPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); + JPanel checkBoxPane = GUICoreKit.createFlowPane(); checkBoxPane.setPreferredSize(new Dimension(450, 30)); checkBoxAndButtonPane.add(checkBoxPane, BorderLayout.WEST); checkBoxAndButtonPane.add(GUICoreKit.createFlowPane(checkValidButton, calculateButton), BorderLayout.EAST); @@ -360,7 +384,7 @@ public class GroupFormulaPane extends BasicPane implements UIFormula, OperateLis try { Object result = formula.evalValue(calculator); message = DesignToolkit.getLocText("Plugin-Design_Group_Formula_Result") + ":" + GeneralKit.objectToString(result); - } catch (UtilEvalError utilEvalError) { + } catch (Exception utilEvalError) { message = DesignToolkit.getLocText("Plugin-Design_Group_Formula_Calculate_Error") + ":" + utilEvalError.getMessage(); } return message; @@ -567,7 +591,7 @@ public class GroupFormulaPane extends BasicPane implements UIFormula, OperateLis desBuf = getText((TextUserObject) selectedValue, path); } } catch (IOException exp) { - FRLogger.getLogger().error(exp.getMessage(), exp); + LogKit.error(exp.getMessage(), exp); } descriptionTextArea.setText(desBuf.toString()); descriptionTextArea.moveCaretPosition(0); @@ -628,9 +652,8 @@ public class GroupFormulaPane extends BasicPane implements UIFormula, OperateLis return DesignToolkit.getLocText("Plugin-Design_Basic_FormulaPane_Function_Detail"); } }; - basicPane.setLayout(FRGUIPaneFactory.createBorderLayout()); + basicPane.setLayout(new BorderLayout()); UITextArea desArea = new UITextArea(); -// desArea。setEnabled(false); desArea.setText(this.getTextAreaText()); basicPane.add(new UIScrollPane(desArea), BorderLayout.CENTER); BasicDialog dialog = basicPane.showWindow(DesignKit.getDesignerFrame()); diff --git a/src/main/java/com/fr/solution/plugin/design/formula/ui/type/CategoryFormulaPane.java b/src/main/java/com/fr/solution/plugin/design/formula/ui/type/CategoryFormulaPane.java index 0520298..e674ac5 100644 --- a/src/main/java/com/fr/solution/plugin/design/formula/ui/type/CategoryFormulaPane.java +++ b/src/main/java/com/fr/solution/plugin/design/formula/ui/type/CategoryFormulaPane.java @@ -33,7 +33,7 @@ public class CategoryFormulaPane extends UIRadioPane { list.add(script); if (events == null) { - events = new ArrayList(); + events = new ArrayList<>(); } events.add(normal); events.add(script); diff --git a/src/main/java/com/fr/solution/plugin/design/formula/ui/type/impl/ScriptFormulaPane.java b/src/main/java/com/fr/solution/plugin/design/formula/ui/type/impl/ScriptFormulaPane.java index 26eba05..9b57c8a 100644 --- a/src/main/java/com/fr/solution/plugin/design/formula/ui/type/impl/ScriptFormulaPane.java +++ b/src/main/java/com/fr/solution/plugin/design/formula/ui/type/impl/ScriptFormulaPane.java @@ -4,14 +4,12 @@ import com.fanruan.api.cal.CalculatorKit; import com.fanruan.api.cal.ParameterKit; import com.fanruan.api.design.ui.component.code.UISyntaxTextArea; import com.fanruan.api.i18n.I18nKit; +import com.fanruan.api.log.LogKit; import com.fanruan.api.script.ScriptKit; -import com.fanruan.api.util.StringKit; import com.fanruan.api.util.RenderKit; - - +import com.fanruan.api.util.StringKit; import com.fr.base.ScriptFormula; import com.fr.design.gui.syntax.ui.rsyntaxtextarea.SyntaxConstants; -import com.fr.general.FRLogger; import com.fr.solution.plugin.design.formula.ui.type.BaseFormulaPane; import com.fr.stable.ParameterProvider; import com.fr.stable.script.CalculatorProvider; @@ -104,7 +102,7 @@ public class ScriptFormulaPane extends BaseFormulaPane { String content = RenderKit.renderParameter4Tpl(formula.getPureContent(), map); ScriptKit.newScriptEngine().eval(String.format(FUN_TPL, content)); } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage(), e); + LogKit.error(e.getMessage(), e); return false; } return true;