diff --git a/build.xml b/build.xml index b15eec1..85dc654 100644 --- a/build.xml +++ b/build.xml @@ -88,8 +88,8 @@ - - + + diff --git a/pom.xml b/pom.xml index 5c01230..bba9648 100644 --- a/pom.xml +++ b/pom.xml @@ -20,8 +20,8 @@ org.apache.maven.plugins maven-compiler-plugin - 6 - 6 + 8 + 8 diff --git a/src/main/java/com/fr/solution/plugin/design/formula/compat/DesignToolkit.java b/src/main/java/com/fr/solution/plugin/design/formula/compat/DesignToolkit.java index c6740e7..302418a 100644 --- a/src/main/java/com/fr/solution/plugin/design/formula/compat/DesignToolkit.java +++ b/src/main/java/com/fr/solution/plugin/design/formula/compat/DesignToolkit.java @@ -1,7 +1,8 @@ package com.fr.solution.plugin.design.formula.compat; -import com.fr.general.Inter; -import com.fr.stable.ProductConstants; +import com.fanruan.api.i18n.I18nKit; +import com.fanruan.api.macro.ProductConstants; + /** * @author richie @@ -14,7 +15,7 @@ public class DesignToolkit { public static String getLocText(String key) { if (version < 10) { - return Inter.getLocText(key); + return I18nKit.getLocText(key); } else { try { return (String) Class.forName("com.fr.design.i18n.Toolkit").getMethod("i18nText", new Class[]{String.class}).invoke(null, key); diff --git a/src/main/java/com/fr/solution/plugin/design/formula/compat/FunctionConstants.java b/src/main/java/com/fr/solution/plugin/design/formula/compat/FunctionConstants.java index 8efe0dc..32aa766 100644 --- a/src/main/java/com/fr/solution/plugin/design/formula/compat/FunctionConstants.java +++ b/src/main/java/com/fr/solution/plugin/design/formula/compat/FunctionConstants.java @@ -1,11 +1,18 @@ package com.fr.solution.plugin.design.formula.compat; -import com.fr.design.formula.FunctionDefNAD; +import com.fanruan.api.function.FunctionKit; +import com.fanruan.api.macro.EncodeConstants; +import com.fanruan.api.macro.OperatingSystem; +import com.fanruan.api.util.GeneralKit; +import com.fanruan.api.util.StringKit; +import com.fanruan.api.util.TypeKit; + +import com.fr.plugin.ExtraClassManager; +import com.fr.stable.script.Function; +import com.fr.stable.fun.FunctionDefContainer; import com.fr.design.formula.FunctionGroup; +import com.fr.stable.fun.mark.Mutable; import com.fr.design.formula.NameAndDescription; -import com.fr.design.formula.NameAndFunctionList; -import com.fr.design.formula.NameAndTypeAndFunctionList; -import com.fr.file.FunctionManager; import com.fr.function.AVERAGE; import com.fr.function.CHAR; import com.fr.function.COUNT; @@ -15,17 +22,11 @@ import com.fr.function.MIN; import com.fr.function.RANGE; import com.fr.function.SUM; import com.fr.function.TIME; -import com.fr.general.ComparatorUtils; + +//先不改 import com.fr.general.FRLogger; -import com.fr.general.GeneralUtils; -import com.fr.plugin.ExtraClassManager; -import com.fr.stable.EncodeConstants; -import com.fr.stable.OperatingSystem; -import com.fr.stable.StableUtils; -import com.fr.stable.StringUtils; -import com.fr.stable.fun.FunctionDefContainer; -import com.fr.stable.fun.mark.Mutable; -import com.fr.stable.script.Function; + +//有问题 import com.fr.stable.script.FunctionDef; import javax.swing.*; @@ -96,7 +97,7 @@ public final class FunctionConstants { for (String fileName : findClassNamesUnderFilePath(classFilePath)) { try { Class cls = Class.forName(pkgName + "." + fileName.substring(0, fileName.length() - 6)); - if (StableUtils.classInstanceOf(cls, iface)) { + if (TypeKit.classInstanceOf(cls, iface)) { Function inst; inst = (Function)cls.newInstance(); for (NameAndTypeAndFunctionList EMBFUNCTION : EMBFUNCTIONS) { @@ -119,7 +120,7 @@ public final class FunctionConstants { } private static boolean isNotDebugMode() { - return GeneralUtils.readBuildNO().contains("-"); + return GeneralKit.readBuildNO().contains("-"); } private static boolean isJarPath(String classFilePath) { @@ -181,7 +182,7 @@ public final class FunctionConstants { } if (!OperatingSystem.isWindows()){ //windows里substring后是d:\123\456, mac下substring后是Application/123/456 - jarPath = StringUtils.perfectStart(jarPath, "/"); + jarPath = StringKit.perfectStart(jarPath, "/"); } ZipFile zip; @@ -249,19 +250,7 @@ public final class FunctionConstants { @Override public NameAndDescription[] getDescriptions() { - FunctionManager funtionManager = FunctionManager.getInstance(); - if (funtionManager != null) { - int functionDefCount = funtionManager.getFunctionDefCount(); - - FunctionDefNAD[] nads = new FunctionDefNAD[functionDefCount]; - for (int i = 0; i < functionDefCount; i++) { - nads[i] = new FunctionDefNAD(funtionManager.getFunctionDef(i)); - } - - return nads; - } - - return new NameAndDescription[0]; + return FunctionKit.getDescription(); } }; } @@ -311,7 +300,7 @@ public final class FunctionConstants { Collections.sort(all, new Comparator() { @Override public int compare(NameAndDescription o1, NameAndDescription o2) { - return ComparatorUtils.compare(o1.getName(), o2.getName()); + return GeneralKit.compare(o1.getName(), o2.getName()); } }); 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 new file mode 100644 index 0000000..20de8ab --- /dev/null +++ b/src/main/java/com/fr/solution/plugin/design/formula/compat/FunctionDefNAD.java @@ -0,0 +1,15 @@ +package com.fr.solution.plugin.design.formula.compat; + +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); + } +} 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 new file mode 100644 index 0000000..12c6a18 --- /dev/null +++ b/src/main/java/com/fr/solution/plugin/design/formula/compat/NameAndFunctionList.java @@ -0,0 +1,16 @@ +package com.fr.solution.plugin.design.formula.compat; + +import com.fr.stable.script.Function; + + +/** + * 名称对应的函数列表 + * @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); + } +} 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 new file mode 100644 index 0000000..f8220ce --- /dev/null +++ b/src/main/java/com/fr/solution/plugin/design/formula/compat/NameAndTypeAndFunctionList.java @@ -0,0 +1,15 @@ +package com.fr.solution.plugin.design.formula.compat; + +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 NameAndTypeAndFunctionList(String name, Function.Type type) { + super(name, type); + } +} 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 a0301f5..938cb00 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 @@ -1,46 +1,55 @@ 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.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.UIQuickList; +import com.fanruan.api.macro.EncodeConstants; +import com.fanruan.api.util.IOKit; +import com.fanruan.api.design.util.GUICoreKit; +import com.fanruan.api.util.*; + +/** + * 接口 + */ import com.fr.base.BaseFormula; -import com.fr.base.BaseUtils; -import com.fr.base.FRContext; -import com.fr.base.Parameter; -import com.fr.base.ParameterMapNameSpace; -import com.fr.base.io.IOFile; import com.fr.data.TableDataSource; -import com.fr.design.actions.UpdateAction; -import com.fr.design.border.UIRoundedBorder; import com.fr.design.constants.UIConstants; -import com.fr.design.dialog.BasicDialog; -import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; -import com.fr.design.file.HistoryTemplateListPane; -import com.fr.design.formula.FunctionGroup; -import com.fr.design.formula.NameAndDescription; import com.fr.design.formula.UIFormula; import com.fr.design.formula.VariableResolver; -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.gui.ilist.QuickList; -import com.fr.design.gui.itextarea.UITextArea; -import com.fr.design.gui.itextfield.UITextField; import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.mainframe.DesignerContext; -import com.fr.design.mainframe.JTemplate; -import com.fr.design.parameter.ParameterInputPane; -import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.FRLogger; -import com.fr.general.GeneralUtils; -import com.fr.report.core.namespace.SimpleCellValueNameSpace; -import com.fr.script.Calculator; +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.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.ArrayUtils; -import com.fr.stable.EncodeConstants; -import com.fr.stable.StringUtils; -import com.fr.stable.UtilEvalError; + import javax.swing.*; import javax.swing.event.ListSelectionEvent; @@ -85,7 +94,7 @@ public class GroupFormulaPane extends BasicPane implements UIFormula, OperateLis private DefaultListModel listModel = new DefaultListModel(); private DefaultListModel functionTypeListModel = new DefaultListModel(); - private QuickList functionTypeList; + private UIQuickList functionTypeList; private DefaultListModel functionNameModel; private JList functionNameList; @@ -145,7 +154,7 @@ public class GroupFormulaPane extends BasicPane implements UIFormula, OperateLis JPanel checkBoxPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); checkBoxPane.setPreferredSize(new Dimension(450, 30)); checkBoxAndButtonPane.add(checkBoxPane, BorderLayout.WEST); - checkBoxAndButtonPane.add(GUICoreUtils.createFlowPane(checkValidButton, calculateButton), BorderLayout.EAST); + checkBoxAndButtonPane.add(GUICoreKit.createFlowPane(checkValidButton, calculateButton), BorderLayout.EAST); extendCheckBoxPane(checkBoxPane); variableTreeAndDescriptionArea = new VariableTreeAndDescriptionArea(); this.add(variableTreeAndDescriptionArea, BorderLayout.SOUTH); @@ -252,7 +261,7 @@ public class GroupFormulaPane extends BasicPane implements UIFormula, OperateLis NameAndDescription and = descriptions[i]; String functionName = and.searchResult(keyWord, findDescription); - if (StringUtils.isNotBlank(functionName)) { + if (StringKit.isNotBlank(functionName)) { listModel.addElement(functionName); } } @@ -322,35 +331,35 @@ public class GroupFormulaPane extends BasicPane implements UIFormula, OperateLis private ActionListener calculateActionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - Calculator calculator = Calculator.createCalculator(); - JTemplate template = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); + CalculatorProvider calculator = CalculatorKit.createCalculator(); + JTemplate template = DesignKit.getCurrentEditingTemplate(); if (template != null) { - IOFile file = (IOFile) template.getTarget(); + TableDataSource file = (TableDataSource) template.getTarget(); calculator.setAttribute(TableDataSource.class, file); - calculator.pushNameSpace(SimpleCellValueNameSpace.getInstance()); + calculator.pushNameSpace(CalculatorKit.createSimpleCellValueNameSpace()); } BaseFormula formula = GroupFormulaPane.this.update(); String message = calculate(formula, formulaPane.analyze4Parameters(calculator), calculator); - JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), message); + JOptionPane.showMessageDialog(DesignKit.getDesignerFrame(), message); } }; - private String calculate(BaseFormula formula, Parameter[] parameters, Calculator calculator) { + private String calculate(BaseFormula formula, ParameterProvider[] parameters, CalculatorProvider calculator) { final Map parameterMap = new HashMap(); - if (ArrayUtils.isNotEmpty(parameters)) { + if (ArrayKit.isNotEmpty(parameters)) { final ParameterInputPane pPane = new ParameterInputPane(parameters); - pPane.showSmallWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { + pPane.showSmallWindow(DesignKit.getDesignerFrame(), new DialogActionAdapter() { @Override public void doOk() { parameterMap.putAll(pPane.update()); } }).setVisible(true); } - calculator.pushNameSpace(ParameterMapNameSpace.create(parameterMap)); + calculator.pushNameSpace(ParameterKit.createParameterMapNameSpace(parameterMap)); String message; try { Object result = formula.evalValue(calculator); - message = DesignToolkit.getLocText("Plugin-Design_Group_Formula_Result") + ":" + GeneralUtils.objectToString(result); + message = DesignToolkit.getLocText("Plugin-Design_Group_Formula_Result") + ":" + GeneralKit.objectToString(result); } catch (UtilEvalError utilEvalError) { message = DesignToolkit.getLocText("Plugin-Design_Group_Formula_Calculate_Error") + ":" + utilEvalError.getMessage(); } @@ -367,7 +376,7 @@ public class GroupFormulaPane extends BasicPane implements UIFormula, OperateLis } private void initFunctionTypeList(JPanel functionPane) { - functionTypeList = new QuickList(functionTypeListModel); + functionTypeList = new UIQuickList(functionTypeListModel); UIScrollPane functionTypeScrollPane = new UIScrollPane(functionTypeList); functionTypeScrollPane.setBorder(new UIRoundedBorder(UIConstants.LINE_COLOR, 1, UIConstants.ARC)); functionTypeScrollPane.setPreferredSize(new Dimension(140, 200)); @@ -474,7 +483,7 @@ public class GroupFormulaPane extends BasicPane implements UIFormula, OperateLis popupMenu.add(lookDetailAction); // peter: 只有弹出菜单有子菜单的时候,才需要弹出来. - GUICoreUtils.showPopupMenu(popupMenu, functionNameList, evt.getX() - 1, evt.getY() - 1); + GUICoreKit.showPopupMenu(popupMenu, functionNameList, evt.getX() - 1, evt.getY() - 1); } } }); @@ -518,7 +527,7 @@ public class GroupFormulaPane extends BasicPane implements UIFormula, OperateLis private StringBuilder getText(TextUserObject selectedValue, String path) throws IOException { Reader desReader; StringBuilder desBuf = new StringBuilder(); - InputStream desInputStream = BaseUtils.readResource(path + (selectedValue).displayText + ".txt"); + InputStream desInputStream = IOKit.readResource(path + (selectedValue).displayText + ".txt"); if (desInputStream == null) { String description = ""; desReader = new StringReader(description); @@ -548,7 +557,7 @@ public class GroupFormulaPane extends BasicPane implements UIFormula, OperateLis StringBuilder desBuf = new StringBuilder(); try { String path; - Locale locale = FRContext.getLocale(); + Locale locale = GeneralKit.getLocale(); if (locale.equals(Locale.CHINA)) { path = "/com/fr/design/insert/formula/variable/cn/"; } else { @@ -603,7 +612,7 @@ public class GroupFormulaPane extends BasicPane implements UIFormula, OperateLis public LookDetailAction() { this.setName(DesignToolkit.getLocText("Plugin-Design_Basic_FormulaPane_Function_Detail")); this.setMnemonic('L'); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_file/preview.png")); + this.setSmallIcon(IOKit.readIcon("/com/fr/design/images/m_file/preview.png")); } // 弹出的窗口中显示函数的用法明细 @@ -624,7 +633,7 @@ public class GroupFormulaPane extends BasicPane implements UIFormula, OperateLis // desArea。setEnabled(false); desArea.setText(this.getTextAreaText()); basicPane.add(new UIScrollPane(desArea), BorderLayout.CENTER); - BasicDialog dialog = basicPane.showWindow(DesignerContext.getDesignerFrame()); + BasicDialog dialog = basicPane.showWindow(DesignKit.getDesignerFrame()); dialog.setVisible(true); } @@ -706,24 +715,24 @@ public class GroupFormulaPane extends BasicPane implements UIFormula, OperateLis } rootNode.add(new TextFolderUserObject(DesignToolkit.getLocText("Plugin-Design_Basic_FormulaD_Data_Fields"), - BaseUtils.readIcon("/com/fr/design/images/dialog/table.png"), + IOKit.readIcon("/com/fr/design/images/dialog/table.png"), variableResolver.resolveColumnNames()).createMutableTreeNode()); // Set cutReport Variable rootNode.add(new TextFolderUserObject(DesignToolkit.getLocText("Plugin-Design_Basic_FormulaPane_Variables"), - BaseUtils.readIcon("/com/fr/design/images/dialog/variable.png"), + IOKit.readIcon("/com/fr/design/images/dialog/variable.png"), variableResolver.resolveCurReportVariables()).createMutableTreeNode()); rootNode.add(new TextFolderUserObject(DesignToolkit.getLocText("Plugin-Design_Basic_Parameter_Source_Type_Tabledata"), - BaseUtils.readIcon("/com/fr/design/images/dialog/parameter.gif"), + IOKit.readIcon("/com/fr/design/images/dialog/parameter.gif"), variableResolver.resolveTableDataParameterVariables()).createMutableTreeNode()); rootNode.add(new TextFolderUserObject(DesignToolkit.getLocText("Plugin-Design_Basic_ParameterD_Report_Parameter"), - BaseUtils.readIcon("/com/fr/design/images/m_report/p.gif"), + IOKit.readIcon("/com/fr/design/images/m_report/p.gif"), variableResolver.resolveReportParameterVariables()).createMutableTreeNode()); rootNode.add(new TextFolderUserObject(DesignToolkit.getLocText("Plugin-Design_Basic_M_Server_Global_Parameters"), - BaseUtils.readIcon("/com/fr/design/images/dialog/parameter.gif"), + IOKit.readIcon("/com/fr/design/images/dialog/parameter.gif"), variableResolver.resolveGlobalParameterVariables()).createMutableTreeNode()); variableModel.reload(); diff --git a/src/main/java/com/fr/solution/plugin/design/formula/ui/GroupFormulaPaneWhenReserveFormula.java b/src/main/java/com/fr/solution/plugin/design/formula/ui/GroupFormulaPaneWhenReserveFormula.java index 58e8055..b11452e 100644 --- a/src/main/java/com/fr/solution/plugin/design/formula/ui/GroupFormulaPaneWhenReserveFormula.java +++ b/src/main/java/com/fr/solution/plugin/design/formula/ui/GroupFormulaPaneWhenReserveFormula.java @@ -1,8 +1,8 @@ package com.fr.solution.plugin.design.formula.ui; +import com.fanruan.api.design.ui.component.UICheckBox; import com.fr.base.BaseFormula; import com.fr.design.formula.VariableResolver; -import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.solution.plugin.design.formula.compat.DesignToolkit; import javax.swing.*; diff --git a/src/main/java/com/fr/solution/plugin/design/formula/ui/type/BaseFormulaPane.java b/src/main/java/com/fr/solution/plugin/design/formula/ui/type/BaseFormulaPane.java index 1ac6fde..ab274be 100644 --- a/src/main/java/com/fr/solution/plugin/design/formula/ui/type/BaseFormulaPane.java +++ b/src/main/java/com/fr/solution/plugin/design/formula/ui/type/BaseFormulaPane.java @@ -1,20 +1,14 @@ package com.fr.solution.plugin.design.formula.ui.type; +import com.fanruan.api.design.ui.component.code.UISyntaxTextArea; +import com.fanruan.api.i18n.I18nKit; import com.fr.base.BaseFormula; +import com.fanruan.api.macro.ProductConstants; +import com.fanruan.api.util.StringKit; +import com.fanruan.api.design.ui.container.UIScrollPane; + import com.fr.design.beans.FurtherBasicBeanPane; -import com.fr.design.gui.icontainer.UIScrollPane; -import com.fr.design.gui.syntax.ui.rsyntaxtextarea.RSyntaxTextArea; -import com.fr.general.FRLogger; -import com.fr.general.Inter; -import com.fr.log.FineLoggerFactory; -import com.fr.parser.FRLexer; -import com.fr.parser.FRParser; -import com.fr.script.Calculator; import com.fr.solution.plugin.design.formula.ui.evt.OperateListener; -import com.fr.stable.ProductConstants; -import com.fr.stable.StringUtils; -import com.fr.stable.script.Expression; -import com.fr.third.antlr.ANTLRException; import javax.swing.*; import java.awt.*; @@ -23,7 +17,6 @@ import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; -import java.io.StringReader; public abstract class BaseFormulaPane extends FurtherBasicBeanPane implements CommonEvent, KeyListener { @@ -35,7 +28,7 @@ public abstract class BaseFormulaPane extends FurtherBasi private static final int KEY_40 = 40; - private RSyntaxTextArea formulaTextArea; + private UISyntaxTextArea formulaTextArea; private int currentPosition = 0; private int beginPosition = 0; private int insertPosition = 0; @@ -66,7 +59,7 @@ public abstract class BaseFormulaPane extends FurtherBasi formulaTextArea.setForeground(Color.black); String text = formulaTextArea.getText(); // 判断在中文输入状态是否还包含提示符 要删掉 - String tip = "\n\n\n" + Inter.getLocText("Plugin-Design_Basic_FormulaPane_Tips"); + String tip = "\n\n\n" + I18nKit.getLocText("Plugin-Design_Basic_FormulaPane_Tips"); if (text.contains(tip)) { text = text.substring(0, text.indexOf(tip)); insertPosition = 0; @@ -149,12 +142,12 @@ public abstract class BaseFormulaPane extends FurtherBasi } - protected abstract RSyntaxTextArea createContentEditor(); + protected abstract UISyntaxTextArea createContentEditor(); protected void fixContent(String content) { if (content.trim().equals("=")) { this.formulaTextArea.setForeground(Color.gray); - this.formulaTextArea.setText("\n\n\n" + Inter.getLocText("Plugin-Design_Basic_FormulaPane_Tips")); + this.formulaTextArea.setText("\n\n\n" + I18nKit.getLocText("Plugin-Design_Basic_FormulaPane_Tips")); this.formulaTextArea.setCaretPosition(0); ifHasBeenWritten = 0; operateListener.clearMathListModel(); @@ -205,7 +198,7 @@ public abstract class BaseFormulaPane extends FurtherBasi @Override public void keyPressed(KeyEvent e) { if (ifHasBeenWritten == 0) { - this.formulaTextArea.setText(StringUtils.EMPTY); + this.formulaTextArea.setText(StringKit.EMPTY); } } @@ -307,10 +300,10 @@ public abstract class BaseFormulaPane extends FurtherBasi public void checkContentValid() { // Execute Formula default cell element. String formulaText = formulaTextArea.getText().trim(); - if (StringUtils.isNotEmpty(formulaText)) { + if (StringKit.isNotEmpty(formulaText)) { JOptionPane.showMessageDialog( BaseFormulaPane.this, - (isValidFormula(formulaText) ? Inter.getLocText("Plugin-Design_Basic_FormulaD_Valid_Formula") : Inter.getLocText("Plugin-Design_Basic_FormulaD_Invalid_Formula")) + ".", ProductConstants.PRODUCT_NAME, + (isValidFormula(formulaText) ? I18nKit.getLocText("Plugin-Design_Basic_FormulaD_Valid_Formula") : I18nKit.getLocText("Plugin-Design_Basic_FormulaD_Invalid_Formula")) + ".", ProductConstants.PRODUCT_NAME, JOptionPane.INFORMATION_MESSAGE); } } @@ -328,6 +321,6 @@ public abstract class BaseFormulaPane extends FurtherBasi @Override public String title4PopupWindow() { - return Inter.getLocText("Plugin-Design_Group_Formula_Basic_Title"); + return I18nKit.getLocText("Plugin-Design_Group_Formula_Basic_Title"); } } 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 57c942b..0520298 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 @@ -1,18 +1,23 @@ package com.fr.solution.plugin.design.formula.ui.type; -import com.fr.base.BaseFormula; -import com.fr.base.Parameter; -import com.fr.design.beans.FurtherBasicBeanPane; -import com.fr.design.gui.frpane.UIRadioPane; -import com.fr.script.Calculator; +import com.fanruan.api.design.ui.component.UIRadioPane; +import com.fr.stable.ParameterProvider; +import com.fr.stable.script.CalculatorProvider; import com.fr.solution.plugin.design.formula.ui.evt.OperateListener; + import com.fr.solution.plugin.design.formula.ui.type.impl.BasicFormulaPane; import com.fr.solution.plugin.design.formula.ui.type.impl.ScriptFormulaPane; +/** + * 有问题,子类无法重写abstract方法的参数无法修改 + */ +import com.fr.design.beans.FurtherBasicBeanPane; +import com.fr.base.BaseFormula; + import java.util.ArrayList; import java.util.List; -public class CategoryFormulaPane extends UIRadioPane{ +public class CategoryFormulaPane extends UIRadioPane { private static final long serialVersionUID = 6102846618673364636L; private List events; @@ -62,7 +67,7 @@ public class CategoryFormulaPane extends UIRadioPane{ } } - public Parameter[] analyze4Parameters(Calculator calculator) { + public ParameterProvider[] analyze4Parameters(CalculatorProvider calculator) { return events.get(cardNamesPane.getSelectedIndex()).analyze4Parameters(calculator); } diff --git a/src/main/java/com/fr/solution/plugin/design/formula/ui/type/CommonEvent.java b/src/main/java/com/fr/solution/plugin/design/formula/ui/type/CommonEvent.java index c11f7d0..1e9c9d1 100644 --- a/src/main/java/com/fr/solution/plugin/design/formula/ui/type/CommonEvent.java +++ b/src/main/java/com/fr/solution/plugin/design/formula/ui/type/CommonEvent.java @@ -1,8 +1,8 @@ package com.fr.solution.plugin.design.formula.ui.type; -import com.fr.base.Parameter; -import com.fr.script.Calculator; import com.fr.solution.plugin.design.formula.ui.evt.OperateListener; +import com.fr.stable.ParameterProvider; +import com.fr.stable.script.CalculatorProvider; public interface CommonEvent { @@ -18,5 +18,5 @@ public interface CommonEvent { void setOperateListener(OperateListener listener); - Parameter[] analyze4Parameters(Calculator calculator); + ParameterProvider[] analyze4Parameters(CalculatorProvider calculator); } diff --git a/src/main/java/com/fr/solution/plugin/design/formula/ui/type/impl/BasicFormulaPane.java b/src/main/java/com/fr/solution/plugin/design/formula/ui/type/impl/BasicFormulaPane.java index 1635d3b..a513397 100644 --- a/src/main/java/com/fr/solution/plugin/design/formula/ui/type/impl/BasicFormulaPane.java +++ b/src/main/java/com/fr/solution/plugin/design/formula/ui/type/impl/BasicFormulaPane.java @@ -1,17 +1,17 @@ package com.fr.solution.plugin.design.formula.ui.type.impl; +import com.fanruan.api.cal.FormulaKit; +import com.fanruan.api.cal.ParameterKit; +import com.fanruan.api.design.ui.component.code.UISyntaxTextArea; +import com.fanruan.api.util.StringKit; + + import com.fr.base.Formula; -import com.fr.base.Parameter; -import com.fr.design.gui.syntax.ui.rsyntaxtextarea.RSyntaxTextArea; import com.fr.design.gui.syntax.ui.rsyntaxtextarea.SyntaxConstants; -import com.fr.general.FRLogger; -import com.fr.script.Calculator; import com.fr.solution.plugin.design.formula.ui.type.BaseFormulaPane; -import com.fr.stable.StringUtils; -import com.fr.stable.script.Expression; -import com.fr.third.antlr.ANTLRException; -import java.util.Set; +import com.fr.stable.ParameterProvider; +import com.fr.stable.script.CalculatorProvider; public class BasicFormulaPane extends BaseFormulaPane { @@ -36,7 +36,7 @@ public class BasicFormulaPane extends BaseFormulaPane { @Override protected Formula createFormula(String content) { Formula formula; - if (StringUtils.isEmpty(content) || content.trim().charAt(0) == '=') { + if (StringKit.isEmpty(content) || content.trim().charAt(0) == '=') { formula = new Formula(content); } else { formula = new Formula("=" + content); @@ -46,13 +46,13 @@ public class BasicFormulaPane extends BaseFormulaPane { @Override - protected RSyntaxTextArea createContentEditor() { - RSyntaxTextArea formulaTextArea = new RSyntaxTextArea(); + protected UISyntaxTextArea createContentEditor() { + UISyntaxTextArea formulaTextArea = new UISyntaxTextArea(); configFormulaArea(formulaTextArea); return formulaTextArea; } - protected void configFormulaArea(RSyntaxTextArea formulaTextArea) { + protected void configFormulaArea(UISyntaxTextArea formulaTextArea) { formulaTextArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_FORMULA); formulaTextArea.setAnimateBracketMatching(true); formulaTextArea.setAntiAliasingEnabled(true); @@ -68,26 +68,19 @@ public class BasicFormulaPane extends BaseFormulaPane { @Override protected boolean isValidFormula(String formulaText) { - Formula formula = createFormula(formulaText); - Expression expression = null; - try { - expression = formula.parse(Calculator.createCalculator()); - } catch (ANTLRException e) { - FRLogger.getLogger().error(e.getMessage(), e); - } - return expression != null; + return FormulaKit.checkFormulaContent(formulaText); } @Override - public Parameter[] analyze4Parameters(Calculator calculator) { + public ParameterProvider[] analyze4Parameters(CalculatorProvider calculator) { Formula formula = updateBean(); if (formula == null) { - return new Parameter[0]; + return new ParameterProvider[0]; } String[] arr = formula.dependence(calculator); - Parameter[] parameters = new Parameter[arr.length]; + ParameterProvider[] parameters = new ParameterProvider[arr.length]; for (int i = 0, len = arr.length; i < len; i ++) { - parameters[i] = new Parameter(arr[i]); + parameters[i] = ParameterKit.newParameter(arr[i]); } return parameters; } 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 8cee59a..26eba05 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 @@ -1,19 +1,21 @@ package com.fr.solution.plugin.design.formula.ui.type.impl; -import com.fr.base.Parameter; -import com.fr.base.ParameterHelper; +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.script.ScriptKit; +import com.fanruan.api.util.StringKit; +import com.fanruan.api.util.RenderKit; + + import com.fr.base.ScriptFormula; -import com.fr.base.TemplateUtils; -import com.fr.design.gui.syntax.ui.rsyntaxtextarea.RSyntaxTextArea; import com.fr.design.gui.syntax.ui.rsyntaxtextarea.SyntaxConstants; import com.fr.general.FRLogger; -import com.fr.general.Inter; -import com.fr.script.Calculator; -import com.fr.script.ScriptFactory; import com.fr.solution.plugin.design.formula.ui.type.BaseFormulaPane; -import com.fr.stable.StringUtils; +import com.fr.stable.ParameterProvider; +import com.fr.stable.script.CalculatorProvider; -import javax.script.ScriptException; import java.util.HashMap; import java.util.Map; @@ -25,8 +27,8 @@ public class ScriptFormulaPane extends BaseFormulaPane { "})();"; @Override - protected RSyntaxTextArea createContentEditor() { - RSyntaxTextArea formulaTextArea = new RSyntaxTextArea(); + protected UISyntaxTextArea createContentEditor() { + UISyntaxTextArea formulaTextArea = new UISyntaxTextArea(); formulaTextArea.setCloseCurlyBraces(true); formulaTextArea.setLineWrap(true); formulaTextArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVASCRIPT); @@ -56,7 +58,7 @@ public class ScriptFormulaPane extends BaseFormulaPane { @Override protected ScriptFormula createFormula(String content) { ScriptFormula formula; - if (StringUtils.isEmpty(content) || content.trim().charAt(0) == '=') { + if (StringKit.isEmpty(content) || content.trim().charAt(0) == '=') { formula = new ScriptFormula(content); } else { formula = new ScriptFormula("=" + content); @@ -81,12 +83,12 @@ public class ScriptFormulaPane extends BaseFormulaPane { @Override protected boolean isValidFormula(String formulaText) { - Calculator calculator = Calculator.createCalculator(); + CalculatorProvider calculator = CalculatorKit.createCalculator(); ScriptFormula formula = createFormula(formulaText); - Parameter[] parameters = analyze4Parameters(calculator); + ParameterProvider[] parameters = analyze4Parameters(calculator); Map map = new HashMap(); - for (Parameter parameter : parameters) { + for (ParameterProvider parameter : parameters) { String name = parameter.getName(); Object value = parameter.getValue(); if (value instanceof Boolean) { @@ -99,8 +101,8 @@ public class ScriptFormulaPane extends BaseFormulaPane { } try { - String content = TemplateUtils.renderParameter4Tpl(formula.getPureContent(), map); - ScriptFactory.newSingletonScriptEngine().eval(String.format(FUN_TPL, content)); + String content = RenderKit.renderParameter4Tpl(formula.getPureContent(), map); + ScriptKit.newScriptEngine().eval(String.format(FUN_TPL, content)); } catch (Exception e) { FRLogger.getLogger().error(e.getMessage(), e); return false; @@ -109,16 +111,16 @@ public class ScriptFormulaPane extends BaseFormulaPane { } @Override - public Parameter[] analyze4Parameters(Calculator calculator) { + public ParameterProvider[] analyze4Parameters(CalculatorProvider calculator) { ScriptFormula scriptFormula = updateBean(); if (scriptFormula == null) { - return new Parameter[0]; + return new ParameterProvider[0]; } - return ParameterHelper.analyze4Parameters(scriptFormula.getContent(), true); + return ParameterKit.analyze4Parameters(scriptFormula.getContent(), true); } @Override public String title4PopupWindow() { - return Inter.getLocText("Plugin-Design_Group_Formula_Script_Title"); + return I18nKit.getLocText("Plugin-Design_Group_Formula_Script_Title"); } }