Browse Source

KERNEL-1117 插件基本改写完成

pull/2/head
Kalven 5 years ago
parent
commit
8cf21f7c40
  1. 4
      pom.xml
  2. 7
      src/main/java/com/fr/solution/plugin/design/formula/compat/DesignToolkit.java
  3. 63
      src/main/java/com/fr/solution/plugin/design/formula/compat/FunctionConstants.java
  4. 80
      src/main/java/com/fr/solution/plugin/design/formula/ui/GroupFormulaPane.java
  5. 2
      src/main/java/com/fr/solution/plugin/design/formula/ui/GroupFormulaPaneWhenReserveFormula.java
  6. 25
      src/main/java/com/fr/solution/plugin/design/formula/ui/type/BaseFormulaPane.java
  7. 19
      src/main/java/com/fr/solution/plugin/design/formula/ui/type/CategoryFormulaPane.java
  8. 6
      src/main/java/com/fr/solution/plugin/design/formula/ui/type/CommonEvent.java
  9. 35
      src/main/java/com/fr/solution/plugin/design/formula/ui/type/impl/BasicFormulaPane.java
  10. 39
      src/main/java/com/fr/solution/plugin/design/formula/ui/type/impl/ScriptFormulaPane.java

4
pom.xml

@ -20,8 +20,8 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>6</source>
<target>6</target>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>

7
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);

63
src/main/java/com/fr/solution/plugin/design/formula/compat/FunctionConstants.java

@ -1,31 +1,36 @@
package com.fr.solution.plugin.design.formula.compat;
import com.fanruan.api.design.util.FunctionDefNAD;
import com.fanruan.api.design.util.FunctionManagerKit;
import com.fanruan.api.design.util.NameAndFunctionList;
import com.fanruan.api.design.util.NameAndTypeAndFunctionList;
import com.fanruan.api.function.AVERAGE;
import com.fanruan.api.function.CHAR;
import com.fanruan.api.function.COUNT;
import com.fanruan.api.function.DATE;
import com.fanruan.api.function.MAX;
import com.fanruan.api.function.MIN;
import com.fanruan.api.function.RANGE;
import com.fanruan.api.function.SUM;
import com.fanruan.api.function.TIME;
import com.fanruan.api.macro.EncodeConstants;
import com.fanruan.api.macro.OperatingSystemKit;
import com.fanruan.api.plugin.ExtraClassManagerKit;
import com.fanruan.api.util.GeneralKit;
import com.fanruan.api.util.ReflectKit;
import com.fr.design.formula.FunctionDefNAD;
import com.fanruan.api.util.StringKit;
import com.fanruan.api.util.TypeKit;
import com.fr.stable.script.Function;
import com.fr.file.FunctionManagerProvider;
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;
import com.fr.function.DATE;
import com.fr.function.MAX;
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.plugin.ExtraClassManager;
import com.fr.stable.EncodeConstants;
import com.fr.stable.OperatingSystem;
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 +101,7 @@ public final class FunctionConstants {
for (String fileName : findClassNamesUnderFilePath(classFilePath)) {
try {
Class<?> cls = Class.forName(pkgName + "." + fileName.substring(0, fileName.length() - 6));
if (ReflectKit.classInstanceOf(cls, iface)) {
if (TypeKit.classInstanceOf(cls, iface)) {
Function inst;
inst = (Function)cls.newInstance();
for (NameAndTypeAndFunctionList EMBFUNCTION : EMBFUNCTIONS) {
@ -132,7 +137,7 @@ public final class FunctionConstants {
*/
public static void addFunctionGroupFromPlugins(DefaultListModel listModel){
//hugh:自定义函数分组
Set<Mutable> containers = ExtraClassManager.getInstance().getArray(FunctionDefContainer.MARK_STRING);
Set<Mutable> containers = ExtraClassManagerKit.getInstance().getArray(FunctionDefContainer.MARK_STRING);
if(!containers.isEmpty()){
for(Mutable container : containers){
listModel.addElement(createFunctionGroup((FunctionDefContainer)container));
@ -179,9 +184,9 @@ public final class FunctionConstants {
if(classPath.endsWith("/")){
classPath = classPath.substring(0, classPath.length() - 1);
}
if (!OperatingSystem.isWindows()){
if (!OperatingSystemKit.isWindows()){
//windows里substring后是d:\123\456, mac下substring后是Application/123/456
jarPath = StringUtils.perfectStart(jarPath, "/");
jarPath = StringKit.perfectStart(jarPath, "/");
}
ZipFile zip;
@ -229,7 +234,7 @@ public final class FunctionConstants {
@Override
public NameAndDescription[] getDescriptions() {
FunctionDef[] fs = ExtraClassManager.getInstance().getFunctionDef();
FunctionDef[] fs = ExtraClassManagerKit.getInstance().getFunctionDef();
int count = fs.length;
FunctionDefNAD[] nads = new FunctionDefNAD[count];
for (int i = 0; i < count; i ++) {
@ -249,7 +254,7 @@ public final class FunctionConstants {
@Override
public NameAndDescription[] getDescriptions() {
FunctionManager funtionManager = FunctionManager.getInstance();
FunctionManagerProvider funtionManager = FunctionManagerKit.getInstance();
if (funtionManager != null) {
int functionDefCount = funtionManager.getFunctionDefCount();
@ -301,7 +306,7 @@ public final class FunctionConstants {
Collections.addAll(all, PLUGIN.getDescriptions());
Collections.addAll(all, CUSTOM.getDescriptions());
//hugh:自定义函数分组
Set<Mutable> containers = ExtraClassManager.getInstance().getArray(FunctionDefContainer.MARK_STRING);
Set<Mutable> containers = ExtraClassManagerKit.getInstance().getArray(FunctionDefContainer.MARK_STRING);
if(!containers.isEmpty()){
for(Mutable container : containers){
Collections.addAll(all,createFunctionGroup(((FunctionDefContainer)container)).getDescriptions());

80
src/main/java/com/fr/solution/plugin/design/formula/ui/GroupFormulaPane.java

@ -1,49 +1,57 @@
package com.fr.solution.plugin.design.formula.ui;
import com.fanruan.api.cal.CalculatorKit;
import com.fanruan.api.cal.ParameterKit;
import com.fanruan.api.cal.namespace.SimpleCellValueNameSpaceKit;
import com.fanruan.api.design.DesignKit;
import com.fanruan.api.design.ui.container.DialogActionAdapter;
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.ui.container.HistoryTemplateListPane;
import com.fanruan.api.design.ui.container.ParameterInputPane;
import com.fanruan.api.design.ui.container.UIScrollPane;
import com.fanruan.api.design.ui.component.QuickList;
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.FRContext;
import com.fr.base.Parameter;
import com.fr.base.ParameterMapNameSpace;
import com.fr.base.io.IOFile;
/**
* 接口
*/
import com.fr.base.BaseFormula;
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.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.mainframe.JTemplate;
import com.fr.design.parameter.ParameterInputPane;
/**
* 类似于上一个问题不过是无法获取父类异常
*/
import com.fr.stable.UtilEvalError;
/**
* IOFile更改后悔出错不敢换有instance可能出错
*/
import com.fr.base.io.IOFile;
import com.fr.general.FRLogger;
import com.fr.report.core.namespace.SimpleCellValueNameSpace;
import com.fr.script.Calculator;
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.EncodeConstants;
import com.fr.stable.UtilEvalError;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
@ -325,31 +333,31 @@ public class GroupFormulaPane extends BasicPane implements UIFormula, OperateLis
private ActionListener calculateActionListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Calculator calculator = Calculator.createCalculator();
CalculatorProvider calculator = CalculatorKit.createCalculator();
JTemplate<?, ?> template = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate();
if (template != null) {
IOFile file = (IOFile) template.getTarget();
calculator.setAttribute(TableDataSource.class, file);
calculator.pushNameSpace(SimpleCellValueNameSpace.getInstance());
calculator.pushNameSpace(SimpleCellValueNameSpaceKit.getInstance());
}
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<String, Object> parameterMap = new HashMap<String, Object>();
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);
@ -551,7 +559,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 {
@ -627,7 +635,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);
}

2
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.*;

25
src/main/java/com/fr/solution/plugin/design/formula/ui/type/BaseFormulaPane.java

@ -1,13 +1,14 @@
package com.fr.solution.plugin.design.formula.ui.type;
import com.fanruan.api.util.StringKit;
import com.fanruan.api.design.ui.component.code.UISyntaxTextArea;
import com.fanruan.api.i18n.I18nKit;
import com.fr.base.BaseFormula;
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.Inter;
import com.fanruan.api.design.ui.container.FurtherBasicBeanPane;
import com.fanruan.api.macro.ProductConstants;
import com.fanruan.api.util.StringKit;
import com.fanruan.api.design.ui.container.UIScrollPane;
import com.fr.solution.plugin.design.formula.ui.evt.OperateListener;
import com.fr.stable.ProductConstants;
import javax.swing.*;
import java.awt.*;
@ -27,7 +28,7 @@ public abstract class BaseFormulaPane<T extends BaseFormula> 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;
@ -58,7 +59,7 @@ public abstract class BaseFormulaPane<T extends BaseFormula> 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;
@ -141,12 +142,12 @@ public abstract class BaseFormulaPane<T extends BaseFormula> 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();
@ -302,7 +303,7 @@ public abstract class BaseFormulaPane<T extends BaseFormula> extends FurtherBasi
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);
}
}
@ -320,6 +321,6 @@ public abstract class BaseFormulaPane<T extends BaseFormula> extends FurtherBasi
@Override
public String title4PopupWindow() {
return Inter.getLocText("Plugin-Design_Group_Formula_Basic_Title");
return I18nKit.getLocText("Plugin-Design_Group_Formula_Basic_Title");
}
}

19
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<BaseFormula>{
public class CategoryFormulaPane extends UIRadioPane<BaseFormula> {
private static final long serialVersionUID = 6102846618673364636L;
private List<CommonEvent> events;
@ -62,7 +67,7 @@ public class CategoryFormulaPane extends UIRadioPane<BaseFormula>{
}
}
public Parameter[] analyze4Parameters(Calculator calculator) {
public ParameterProvider[] analyze4Parameters(CalculatorProvider calculator) {
return events.get(cardNamesPane.getSelectedIndex()).analyze4Parameters(calculator);
}

6
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);
}

35
src/main/java/com/fr/solution/plugin/design/formula/ui/type/impl/BasicFormulaPane.java

@ -1,17 +1,22 @@
package com.fr.solution.plugin.design.formula.ui.type.impl;
import com.fanruan.api.cal.CalculatorKit;
import com.fanruan.api.design.ui.component.code.UISyntaxTextArea;
import com.fanruan.api.structure.Parameter;
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.fanruan.api.structure.Formula;
import com.fanruan.api.structure.Expression;
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.script.Expression;
import com.fr.third.antlr.ANTLRException;
import java.util.Set;
import com.fr.stable.ParameterProvider;
import com.fr.stable.script.CalculatorProvider;
//有问题
import com.fr.third.antlr.ANTLRException;
import com.fr.general.FRLogger;
public class BasicFormulaPane extends BaseFormulaPane<Formula> {
@ -46,13 +51,13 @@ public class BasicFormulaPane extends BaseFormulaPane<Formula> {
@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);
@ -71,7 +76,7 @@ public class BasicFormulaPane extends BaseFormulaPane<Formula> {
Formula formula = createFormula(formulaText);
Expression expression = null;
try {
expression = formula.parse(Calculator.createCalculator());
expression = (Expression) (formula.parse(CalculatorKit.createCalculator()));
} catch (ANTLRException e) {
FRLogger.getLogger().error(e.getMessage(), e);
}
@ -79,13 +84,13 @@ public class BasicFormulaPane extends BaseFormulaPane<Formula> {
}
@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]);
}

39
src/main/java/com/fr/solution/plugin/design/formula/ui/type/impl/ScriptFormulaPane.java

@ -1,17 +1,20 @@
package com.fr.solution.plugin.design.formula.ui.type.impl;
;
import com.fanruan.api.base.ScriptFormula;
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.Parameter;
import com.fr.base.ParameterHelper;
import com.fr.base.ScriptFormula;
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.ParameterProvider;
import com.fr.stable.script.CalculatorProvider;
import java.util.HashMap;
import java.util.Map;
@ -24,8 +27,8 @@ public class ScriptFormulaPane extends BaseFormulaPane<ScriptFormula> {
"})();";
@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);
@ -80,12 +83,12 @@ public class ScriptFormulaPane extends BaseFormulaPane<ScriptFormula> {
@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<String, Object> map = new HashMap<String, Object>();
for (Parameter parameter : parameters) {
for (ParameterProvider parameter : parameters) {
String name = parameter.getName();
Object value = parameter.getValue();
if (value instanceof Boolean) {
@ -99,7 +102,7 @@ public class ScriptFormulaPane extends BaseFormulaPane<ScriptFormula> {
try {
String content = RenderKit.renderParameter4Tpl(formula.getPureContent(), map);
ScriptFactory.newSingletonScriptEngine().eval(String.format(FUN_TPL, content));
ScriptKit.newScriptEngine().eval(String.format(FUN_TPL, content));
} catch (Exception e) {
FRLogger.getLogger().error(e.getMessage(), e);
return false;
@ -108,16 +111,16 @@ public class ScriptFormulaPane extends BaseFormulaPane<ScriptFormula> {
}
@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");
}
}

Loading…
Cancel
Save