package com.fr.solution.plugin.design.formula.ui.type.impl; import com.fanruan.api.cal.CalculatorKit; import com.fanruan.api.cal.FormulaKit; import com.fanruan.api.design.ui.component.code.UISyntaxTextArea; import com.fanruan.api.util.StringKit; //import com.fanruan.api.structure.Formula; import com.fr.base.Formula; import com.fr.design.gui.syntax.ui.rsyntaxtextarea.SyntaxConstants; import com.fr.solution.plugin.design.formula.ui.type.BaseFormulaPane; import com.fr.stable.ParameterProvider; import com.fr.stable.script.CalculatorProvider; //有问题 import com.fr.stable.xml.XMLPrintWriter; import com.fr.stable.xml.XMLableReader; import com.fr.third.antlr.ANTLRException; import com.fr.general.FRLogger; public class BasicFormulaPane extends BaseFormulaPane { @Override public boolean accept(Object ob) { return ob instanceof Formula; } @Override public void populateBean(Formula formula) { if (formula != null) { String content = formula.getContent(); fixContent(content); } } @Override protected Formula createWrittenFormula(String content) { return new Formula(); } @Override protected Formula createFormula(String content) { Formula formula; if (StringKit.isEmpty(content) || content.trim().charAt(0) == '=') { formula = new Formula(content); } else { formula = new Formula("=" + content); } return formula; } @Override protected UISyntaxTextArea createContentEditor() { UISyntaxTextArea formulaTextArea = new UISyntaxTextArea(); configFormulaArea(formulaTextArea); return formulaTextArea; } protected void configFormulaArea(UISyntaxTextArea formulaTextArea) { formulaTextArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_FORMULA); formulaTextArea.setAnimateBracketMatching(true); formulaTextArea.setAntiAliasingEnabled(true); formulaTextArea.setAutoIndentEnabled(true); formulaTextArea.setCodeFoldingEnabled(true); formulaTextArea.setUseSelectedTextColor(true); formulaTextArea.setCloseCurlyBraces(true); formulaTextArea.setBracketMatchingEnabled(true); formulaTextArea.setAntiAliasingEnabled(true); formulaTextArea.setCloseMarkupTags(true); formulaTextArea.setLineWrap(true); } @Override protected boolean isValidFormula(String formulaText) { return FormulaKit.checkFormulaContent(formulaText); } @Override public ParameterProvider[] analyze4Parameters(CalculatorProvider calculator) { Formula formula = updateBean(); if (formula == null) { return new ParameterProvider[0]; } String[] arr = formula.dependence(calculator); ParameterProvider[] parameters = new ParameterProvider[arr.length]; for (int i = 0, len = arr.length; i < len; i ++) { parameters[i] = new ParameterProvider() { @Override public Object getValue() { return null; } @Override public void setValue(Object o) { } @Override public String valueToString() { return null; } @Override public String xmlTag() { return null; } @Override public String arrayXMLTag() { return null; } @Override public T newInstance() { return null; } @Override public String[] dependence(CalculatorProvider calculatorProvider) { return new String[0]; } @Override public String getName() { return null; } @Override public void setName(String s) { } @Override public int currentAPILevel() { return 0; } @Override public String mark4Provider() { return null; } @Override public void readXML(XMLableReader xmLableReader) { } @Override public void writeXML(XMLPrintWriter xmlPrintWriter) { } @Override public Object clone() throws CloneNotSupportedException { return null; } }; parameters[i].setName(arr[i]); parameters[i].setValue(""); } return parameters; } }