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
+
+ 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");
}
}