|
|
|
@ -46,6 +46,7 @@ import com.fr.parser.BlockIntervalLiteral;
|
|
|
|
|
import com.fr.parser.ColumnRowRangeInPage; |
|
|
|
|
import com.fr.parser.NumberLiteral; |
|
|
|
|
import com.fr.parser.SheetIntervalLiteral; |
|
|
|
|
import com.fr.record.analyzer.EnableMetrics; |
|
|
|
|
import com.fr.report.core.namespace.SimpleCellValueNameSpace; |
|
|
|
|
import com.fr.script.Calculator; |
|
|
|
|
import com.fr.script.ScriptConstants; |
|
|
|
@ -54,7 +55,6 @@ import com.fr.stable.EncodeConstants;
|
|
|
|
|
import com.fr.stable.EssentialUtils; |
|
|
|
|
import com.fr.stable.ParameterProvider; |
|
|
|
|
import com.fr.stable.StringUtils; |
|
|
|
|
import com.fr.stable.UtilEvalError; |
|
|
|
|
import com.fr.stable.script.CRAddress; |
|
|
|
|
import com.fr.stable.script.ColumnRowRange; |
|
|
|
|
import com.fr.stable.script.Expression; |
|
|
|
@ -122,6 +122,7 @@ import java.util.Set;
|
|
|
|
|
* @editor zhou |
|
|
|
|
* @since 2012-3-29下午1:50:53 |
|
|
|
|
*/ |
|
|
|
|
@EnableMetrics |
|
|
|
|
public class FormulaPane extends BasicPane implements KeyListener, UIFormula { |
|
|
|
|
public static final int DEFUAL_FOMULA_LENGTH = 103; |
|
|
|
|
public static final String ELLIPSIS = "..."; |
|
|
|
@ -139,6 +140,7 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula {
|
|
|
|
|
protected static UICheckBox autoCompletionCheck; |
|
|
|
|
protected static UICheckBox checkBeforeColse; |
|
|
|
|
private JList tipsList; |
|
|
|
|
private JPopupMenu popupMenu; |
|
|
|
|
protected DefaultListModel listModel = new DefaultListModel(); |
|
|
|
|
private int ifHasBeenWriten = 0; |
|
|
|
|
private DefaultListModel functionTypeListModel = new DefaultListModel(); |
|
|
|
@ -457,6 +459,9 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula {
|
|
|
|
|
if (ComparatorUtils.equals((String) listModel.getElementAt(index), doublePressContent)) { |
|
|
|
|
doubleClickActuator(doublePressContent); |
|
|
|
|
} |
|
|
|
|
if (popupMenu != null) { |
|
|
|
|
popupMenu.setVisible(false); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -616,7 +621,7 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void popTips() { |
|
|
|
|
JPopupMenu popupMenu = new JPopupMenu(); |
|
|
|
|
popupMenu = new JPopupMenu(); |
|
|
|
|
JScrollPane tipsScrollPane = new JScrollPane(tipsList); |
|
|
|
|
popupMenu.add(tipsScrollPane); |
|
|
|
|
tipsScrollPane.setPreferredSize(new Dimension(240, 146)); |
|
|
|
@ -792,6 +797,7 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final ActionListener calculateActionListener = new ActionListener() { |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void actionPerformed(ActionEvent e) { |
|
|
|
|
String formulaText = formulaTextArea.getText().trim(); |
|
|
|
@ -819,16 +825,20 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
BaseFormula baseFormula = BaseFormula.createFormulaBuilder().build(formulaText); |
|
|
|
|
Object calResult; |
|
|
|
|
try { |
|
|
|
|
Object value = calculator.evalValue(baseFormula); |
|
|
|
|
String objectToString = EssentialUtils.objectToString(value); |
|
|
|
|
calResult = calculator.evalValue(baseFormula); |
|
|
|
|
String objectToString = EssentialUtils.objectToString(calResult); |
|
|
|
|
String result = objectToString.length() > DEFUAL_FOMULA_LENGTH ? |
|
|
|
|
objectToString.substring(0, DEFUAL_FOMULA_LENGTH - ELLIPSIS.length()) + ELLIPSIS : objectToString; |
|
|
|
|
messageTips = messageTips + Toolkit.i18nText("Fine-Design_Basic_Formula_Cal_Result") + ":" + result; |
|
|
|
|
FineLoggerFactory.getLogger().info("value:{}", value); |
|
|
|
|
} catch (UtilEvalError utilEvalError) { |
|
|
|
|
FineLoggerFactory.getLogger().error(utilEvalError.getMessage(), utilEvalError); |
|
|
|
|
} catch (Exception ce) { |
|
|
|
|
//模拟计算如果出现错误,则抛出错误
|
|
|
|
|
calResult = ce.getMessage(); |
|
|
|
|
FineLoggerFactory.getLogger().error(ce.getMessage(), ce); |
|
|
|
|
messageTips = messageTips + Toolkit.i18nText("Fine-Design_Basic_Formula_Cal_Error") + ":" + calResult; |
|
|
|
|
} |
|
|
|
|
FineLoggerFactory.getLogger().info("value:{}", calResult); |
|
|
|
|
} else { |
|
|
|
|
messageTips = checkResult.getTips(); |
|
|
|
|
} |
|
|
|
|