Browse Source

进一步修改增长公式编辑器插件中的内容

pull/3/head
richie 5 years ago
parent
commit
58abec4ff4
  1. 8
      pom.xml
  2. 19
      src/main/java/com/fr/solution/plugin/design/formula/compat/FunctionDefNAD.java
  3. 51
      src/main/java/com/fr/solution/plugin/design/formula/compat/FunctionNAD.java
  4. 32
      src/main/java/com/fr/solution/plugin/design/formula/compat/NameAndFunctionList.java
  5. 18
      src/main/java/com/fr/solution/plugin/design/formula/compat/NameAndTypeAndFunctionList.java
  6. 103
      src/main/java/com/fr/solution/plugin/design/formula/ui/GroupFormulaPane.java
  7. 2
      src/main/java/com/fr/solution/plugin/design/formula/ui/type/CategoryFormulaPane.java
  8. 8
      src/main/java/com/fr/solution/plugin/design/formula/ui/type/impl/ScriptFormulaPane.java

8
pom.xml

@ -3,6 +3,14 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<dependencies>
<dependency>
<groupId>com.fanruan.api</groupId>
<artifactId>finekit</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
<parent>
<groupId>com.fr.plugin</groupId>

19
src/main/java/com/fr/solution/plugin/design/formula/compat/FunctionDefNAD.java

@ -1,15 +1,28 @@
package com.fr.solution.plugin.design.formula.compat;
import com.fr.design.formula.AbstractNameAndDescription;
import com.fr.stable.script.FunctionDef;
/**
* 函数名和描述
*
* @author Kalven
* @version 10.0
* Created by Kalven on 2019/8/31
*/
public class FunctionDefNAD extends com.fr.design.formula.FunctionDefNAD {
public FunctionDefNAD(FunctionDef functionDef) {
super(functionDef);
public class FunctionDefNAD extends AbstractNameAndDescription {
private FunctionDef def;
public FunctionDefNAD(FunctionDef def) {
this.def = def;
}
public String getName() {
return this.def == null ? "" : this.def.getName();
}
public String getDesc() {
return this.def == null ? "" : this.def.getDescription();
}
}

51
src/main/java/com/fr/solution/plugin/design/formula/compat/FunctionNAD.java

@ -0,0 +1,51 @@
package com.fr.solution.plugin.design.formula.compat;
import com.fr.design.formula.AbstractNameAndDescription;
import com.fr.general.GeneralContext;
import com.fr.script.CalculatorEmbeddedFunction;
import com.fr.stable.StringUtils;
import com.fr.stable.script.Function;
import java.util.Locale;
/**
* @author richie
* @version 10.0
* Created by richie on 2019-09-03
*/
public class FunctionNAD extends AbstractNameAndDescription {
private Function fn;
FunctionNAD(Function fn) {
this.fn = fn;
}
public String getName() {
return fn == null ? StringUtils.EMPTY : fn.getClass().getSimpleName();
}
public String getDesc() {
if (fn == null) {
return StringUtils.EMPTY;
}
Locale locale = GeneralContext.getLocale();
String describtion = fn.getDescription(locale);
if (describtion.startsWith(CalculatorEmbeddedFunction.LOCALE_PREFIX)) {
return Locale.CHINA.equals(locale) ? fn.getCN() : fn.getEN();
}
return describtion;
}
@Override
public String searchResult(String keyWord, boolean findDescription) {
String functionName = getName();
String des = getDesc();
if (findDescription && des.contains(keyWord)) {
return functionName;
} else {
return super.searchResult(keyWord, findDescription);
}
}
}

32
src/main/java/com/fr/solution/plugin/design/formula/compat/NameAndFunctionList.java

@ -1,16 +1,42 @@
package com.fr.solution.plugin.design.formula.compat;
import com.fr.design.formula.FunctionGroup;
import com.fr.design.formula.NameAndDescription;
import com.fr.stable.script.Function;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* 名称对应的函数列表
*
* @author Kalven
* @version 10.0
* Created by Kalven on 2019/8/31
*/
public class NameAndFunctionList extends com.fr.design.formula.NameAndFunctionList {
public NameAndFunctionList(String name, Function[] fns) {
super(name, fns);
public class NameAndFunctionList implements FunctionGroup {
protected String name;
protected List<Function> fnList = new ArrayList<>();
public NameAndFunctionList(String var1, Function[] var2) {
this.name = var1;
this.fnList.addAll(Arrays.asList(var2));
}
public String getGroupName() {
return this.name;
}
public NameAndDescription[] getDescriptions() {
NameAndDescription[] var1 = new NameAndDescription[this.fnList.size()];
for (int var2 = 0; var2 < var1.length; ++var2) {
var1[var2] = new FunctionNAD(this.fnList.get(var2));
}
return var1;
}
}

18
src/main/java/com/fr/solution/plugin/design/formula/compat/NameAndTypeAndFunctionList.java

@ -4,12 +4,26 @@ import com.fr.stable.script.Function;
/**
* 名字和类型对应的函数列表
*
* @author Kalven
* @version 10.0
* Created by Kalven on 2019/8/31
*/
public class NameAndTypeAndFunctionList extends com.fr.design.formula.NameAndTypeAndFunctionList {
public class NameAndTypeAndFunctionList extends NameAndFunctionList {
private Function.Type type;
public NameAndTypeAndFunctionList(String name, Function.Type type) {
super(name, type);
super(name, new Function[0]);
this.type = type;
}
public boolean test(Function fn) {
if (fn != null && fn.getType() == this.type) {
return fnList.add(fn);
}
return false;
}
}

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

@ -3,53 +3,39 @@ package com.fr.solution.plugin.design.formula.ui;
import com.fanruan.api.cal.CalculatorKit;
import com.fanruan.api.cal.ParameterKit;
import com.fanruan.api.design.DesignKit;
import com.fanruan.api.design.ui.component.*;
import com.fanruan.api.design.ui.container.BasicPane;
import com.fanruan.api.design.macro.UIConstants;
import com.fanruan.api.design.ui.action.UpdateAction;
import com.fanruan.api.design.work.ParameterInputPane;
import com.fanruan.api.design.ui.container.UIScrollPane;
import com.fanruan.api.design.ui.component.UIButton;
import com.fanruan.api.design.ui.component.UILabel;
import com.fanruan.api.design.ui.component.UIQuickList;
import com.fanruan.api.design.ui.component.UIRoundedBorder;
import com.fanruan.api.design.ui.component.UITextArea;
import com.fanruan.api.design.ui.component.UITextField;
import com.fanruan.api.design.ui.container.BasicPane;
import com.fanruan.api.design.ui.container.UIScrollPane;
import com.fanruan.api.design.util.GUICoreKit;
import com.fanruan.api.design.work.ParameterInputPane;
import com.fanruan.api.log.LogKit;
import com.fanruan.api.macro.EncodeConstants;
import com.fanruan.api.util.ArrayKit;
import com.fanruan.api.util.GeneralKit;
import com.fanruan.api.util.IOKit;
import com.fanruan.api.design.util.GUICoreKit;
import com.fanruan.api.util.*;
/**
* 接口
*/
import com.fanruan.api.util.StringKit;
import com.fr.base.BaseFormula;
import com.fr.data.TableDataSource;
import com.fr.design.constants.UIConstants;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.formula.UIFormula;
import com.fr.design.formula.VariableResolver;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.general.FRLogger;
import com.fr.stable.ParameterProvider;
import com.fr.stable.script.CalculatorProvider;
import com.fr.design.formula.FunctionGroup;
/**
* 调用了其他函数的方法返回值是父类无法赋值给子类
*/
import com.fr.design.dialog.BasicDialog;
import com.fr.design.formula.NameAndDescription;
import com.fr.design.formula.UIFormula;
import com.fr.design.formula.VariableResolver;
import com.fr.design.mainframe.JTemplate;
/**
* 类似于上一个问题不过是无法获取父类异常
*/
import com.fr.stable.UtilEvalError;
/**
* IOFile更改后悔出错不敢换有instance可能出错
*/
//import com.fr.base.io.IOFile;
import com.fr.solution.plugin.design.formula.compat.DesignToolkit;
import com.fr.solution.plugin.design.formula.compat.FunctionConstants;
import com.fr.solution.plugin.design.formula.ui.evt.OperateListener;
import com.fr.solution.plugin.design.formula.ui.type.CategoryFormulaPane;
import com.fr.stable.ParameterProvider;
import com.fr.stable.script.CalculatorProvider;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
@ -79,6 +65,44 @@ import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
/**
* 接口
* <p>
* 调用了其他函数的方法返回值是父类无法赋值给子类
* <p>
* 类似于上一个问题不过是无法获取父类异常
* <p>
* IOFile更改后悔出错不敢换有instance可能出错
* <p>
* 调用了其他函数的方法返回值是父类无法赋值给子类
* <p>
* 类似于上一个问题不过是无法获取父类异常
* <p>
* IOFile更改后悔出错不敢换有instance可能出错
* <p>
* 调用了其他函数的方法返回值是父类无法赋值给子类
* <p>
* 类似于上一个问题不过是无法获取父类异常
* <p>
* IOFile更改后悔出错不敢换有instance可能出错
* <p>
* 调用了其他函数的方法返回值是父类无法赋值给子类
* <p>
* 类似于上一个问题不过是无法获取父类异常
* <p>
* IOFile更改后悔出错不敢换有instance可能出错
*/
/**
* 调用了其他函数的方法返回值是父类无法赋值给子类
*/
/**
* 类似于上一个问题不过是无法获取父类异常
*/
/**
* IOFile更改后悔出错不敢换有instance可能出错
*/
//import com.fr.base.io.IOFile;
/**
* 组合了普通公式和脚本公式的编辑器面板
*/
@ -129,9 +153,9 @@ public class GroupFormulaPane extends BasicPane implements UIFormula, OperateLis
protected void initComponents() {
this.setLayout(new BorderLayout(4, 4));
// text
JPanel textPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
JPanel textPane = GUICoreKit.createBorderLayoutPane();
this.add(textPane, BorderLayout.CENTER);
JPanel checkBoxAndButtonPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane();
JPanel checkBoxAndButtonPane = GUICoreKit.createFlowPane();
UILabel formulaLabel = new UILabel(DesignToolkit.getLocText("Plugin-Design_Basic_FormulaD_Input_Formula_In_The_Text_Area_Below") + ":"
+ " ");
formulaLabel.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
@ -151,7 +175,7 @@ public class GroupFormulaPane extends BasicPane implements UIFormula, OperateLis
UIButton calculateButton = new UIButton(DesignToolkit.getLocText("Plugin-Design_Group_Formula_Calculate"));
calculateButton.addActionListener(calculateActionListener);
JPanel checkBoxPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane();
JPanel checkBoxPane = GUICoreKit.createFlowPane();
checkBoxPane.setPreferredSize(new Dimension(450, 30));
checkBoxAndButtonPane.add(checkBoxPane, BorderLayout.WEST);
checkBoxAndButtonPane.add(GUICoreKit.createFlowPane(checkValidButton, calculateButton), BorderLayout.EAST);
@ -360,7 +384,7 @@ public class GroupFormulaPane extends BasicPane implements UIFormula, OperateLis
try {
Object result = formula.evalValue(calculator);
message = DesignToolkit.getLocText("Plugin-Design_Group_Formula_Result") + ":" + GeneralKit.objectToString(result);
} catch (UtilEvalError utilEvalError) {
} catch (Exception utilEvalError) {
message = DesignToolkit.getLocText("Plugin-Design_Group_Formula_Calculate_Error") + ":" + utilEvalError.getMessage();
}
return message;
@ -567,7 +591,7 @@ public class GroupFormulaPane extends BasicPane implements UIFormula, OperateLis
desBuf = getText((TextUserObject) selectedValue, path);
}
} catch (IOException exp) {
FRLogger.getLogger().error(exp.getMessage(), exp);
LogKit.error(exp.getMessage(), exp);
}
descriptionTextArea.setText(desBuf.toString());
descriptionTextArea.moveCaretPosition(0);
@ -628,9 +652,8 @@ public class GroupFormulaPane extends BasicPane implements UIFormula, OperateLis
return DesignToolkit.getLocText("Plugin-Design_Basic_FormulaPane_Function_Detail");
}
};
basicPane.setLayout(FRGUIPaneFactory.createBorderLayout());
basicPane.setLayout(new BorderLayout());
UITextArea desArea = new UITextArea();
// desArea。setEnabled(false);
desArea.setText(this.getTextAreaText());
basicPane.add(new UIScrollPane(desArea), BorderLayout.CENTER);
BasicDialog dialog = basicPane.showWindow(DesignKit.getDesignerFrame());

2
src/main/java/com/fr/solution/plugin/design/formula/ui/type/CategoryFormulaPane.java

@ -33,7 +33,7 @@ public class CategoryFormulaPane extends UIRadioPane<BaseFormula> {
list.add(script);
if (events == null) {
events = new ArrayList<CommonEvent>();
events = new ArrayList<>();
}
events.add(normal);
events.add(script);

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

@ -4,14 +4,12 @@ import com.fanruan.api.cal.CalculatorKit;
import com.fanruan.api.cal.ParameterKit;
import com.fanruan.api.design.ui.component.code.UISyntaxTextArea;
import com.fanruan.api.i18n.I18nKit;
import com.fanruan.api.log.LogKit;
import com.fanruan.api.script.ScriptKit;
import com.fanruan.api.util.StringKit;
import com.fanruan.api.util.RenderKit;
import com.fanruan.api.util.StringKit;
import com.fr.base.ScriptFormula;
import com.fr.design.gui.syntax.ui.rsyntaxtextarea.SyntaxConstants;
import com.fr.general.FRLogger;
import com.fr.solution.plugin.design.formula.ui.type.BaseFormulaPane;
import com.fr.stable.ParameterProvider;
import com.fr.stable.script.CalculatorProvider;
@ -104,7 +102,7 @@ public class ScriptFormulaPane extends BaseFormulaPane<ScriptFormula> {
String content = RenderKit.renderParameter4Tpl(formula.getPureContent(), map);
ScriptKit.newScriptEngine().eval(String.format(FUN_TPL, content));
} catch (Exception e) {
FRLogger.getLogger().error(e.getMessage(), e);
LogKit.error(e.getMessage(), e);
return false;
}
return true;

Loading…
Cancel
Save