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.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; 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] = ParameterKit.createNewParameter(arr[i]); } return parameters; } }