From 9fcb4fe619ff460cfc371d5067a56cf03f2a586a Mon Sep 17 00:00:00 2001 From: richie Date: Thu, 23 May 2019 13:54:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=AC=E5=BC=8F=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin.xml | 5 +++-- .../design/formula/ui/type/BaseFormulaPane.java | 17 +++++++---------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/plugin.xml b/plugin.xml index 95baed9..1af9e50 100644 --- a/plugin.xml +++ b/plugin.xml @@ -4,12 +4,13 @@ com.fr.solution.plugin.design.formula.script yes - 4.4 - 9.0 + 4.5 + 9.0~10.0 2017-10-20 richie [2019-03-21]一个国际化问题。
[2019-03-19]修复在9.0中无法打开的问题。
[2018-12-19]适配10.0和增加繁体中文的支持。
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 5061d5d..a7a513a 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 @@ -6,12 +6,15 @@ 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.*; @@ -304,20 +307,14 @@ public abstract class BaseFormulaPane extends FurtherBasi public void checkContentValid() { // Execute Formula default cell element. String formulaText = formulaTextArea.getText().trim(); - - if (formulaText != null && formulaText.length() > 0) { - StringReader in = new StringReader(formulaText); - - FRLexer lexer = new FRLexer(in); - FRParser parser = new FRParser(lexer); - + if (StringUtils.isNotEmpty(formulaText)) { + Calculator calculator = Calculator.createCalculator(); Expression expression = null; try { - expression = parser.parse(); - } catch (Exception e) { + expression = calculator.parse(formulaText); + } catch (ANTLRException e) { FRLogger.getLogger().error(e.getMessage(), e); } - JOptionPane.showMessageDialog( BaseFormulaPane.this, (expression != null ? Inter.getLocText("Plugin-Design_Basic_FormulaD_Valid_Formula") : Inter.getLocText("Plugin-Design_Basic_FormulaD_Invalid_Formula")) + ".", ProductConstants.PRODUCT_NAME,