Browse Source

国际化问题

9.0
RichieJi 7 years ago
parent
commit
5c3e389b85
  1. 4
      plugin.xml
  2. 7
      src/com/fr/solution/plugin/design/formula/ScriptFormulaUI.java
  3. 7
      src/com/fr/solution/plugin/design/formula/locale/formula.properties
  4. 7
      src/com/fr/solution/plugin/design/formula/locale/formula_en_US.properties
  5. 7
      src/com/fr/solution/plugin/design/formula/locale/formula_ja_JP.properties
  6. 7
      src/com/fr/solution/plugin/design/formula/locale/formula_zh_CN.properties
  7. 40
      src/com/fr/solution/plugin/design/formula/ui/GroupFormulaPane.java
  8. 59
      src/com/fr/solution/plugin/design/formula/ui/GroupFormulaPaneWhenReserveFormula.java
  9. 117
      src/com/fr/solution/plugin/design/formula/ui/type/BaseFormulaPane.java
  10. 8
      src/com/fr/solution/plugin/design/formula/ui/type/CategoryFormulaPane.java
  11. 60
      src/com/fr/solution/plugin/design/formula/ui/type/impl/BasicFormulaPane.java
  12. 55
      src/com/fr/solution/plugin/design/formula/ui/type/impl/ScriptFormulaPane.java

4
plugin.xml

@ -2,7 +2,7 @@
<plugin> <plugin>
<main-package>com.fr.solution.plugin</main-package> <main-package>com.fr.solution.plugin</main-package>
<id>com.fr.solution.plugin.design.formula.script</id> <id>com.fr.solution.plugin.design.formula.script</id>
<name><![CDATA[脚本公式]]></name> <name><![CDATA[增强公式编辑器]]></name>
<active>yes</active> <active>yes</active>
<version>3.0</version> <version>3.0</version>
<env-version>9.0</env-version> <env-version>9.0</env-version>
@ -10,7 +10,7 @@
<vendor>fanruan.richie</vendor> <vendor>fanruan.richie</vendor>
<description><![CDATA[可以在公式中直接使用JavaScript脚本,进行更灵活的计算。]]></description> <description><![CDATA[可以在公式中直接使用JavaScript脚本,进行更灵活的计算。]]></description>
<change-notes><![CDATA[ <change-notes><![CDATA[
[2017-12-10]初始化插件<br/> [2017-12-10]在公式编辑器中增加实时计算按钮<br/>
]]></change-notes> ]]></change-notes>
<extra-core> <extra-core>
<LocaleFinder class="com.fr.solution.plugin.design.formula.ScriptFormulaLocalFinder"/> <LocaleFinder class="com.fr.solution.plugin.design.formula.ScriptFormulaLocalFinder"/>

7
src/com/fr/solution/plugin/design/formula/ScriptFormulaUI.java

@ -4,7 +4,8 @@ import com.fr.design.formula.UIFormula;
import com.fr.design.fun.impl.AbstractUIFormulaProcessor; import com.fr.design.fun.impl.AbstractUIFormulaProcessor;
import com.fr.plugin.transform.ExecuteFunctionRecord; import com.fr.plugin.transform.ExecuteFunctionRecord;
import com.fr.plugin.transform.FunctionRecorder; import com.fr.plugin.transform.FunctionRecorder;
import com.fr.solution.plugin.design.formula.ui.ScriptFormulaPane; import com.fr.solution.plugin.design.formula.ui.GroupFormulaPane;
import com.fr.solution.plugin.design.formula.ui.GroupFormulaPaneWhenReserveFormula;
@FunctionRecorder(localeKey = "Script") @FunctionRecorder(localeKey = "Script")
public class ScriptFormulaUI extends AbstractUIFormulaProcessor { public class ScriptFormulaUI extends AbstractUIFormulaProcessor {
@ -12,12 +13,12 @@ public class ScriptFormulaUI extends AbstractUIFormulaProcessor {
@Override @Override
@ExecuteFunctionRecord @ExecuteFunctionRecord
public UIFormula appearanceFormula() { public UIFormula appearanceFormula() {
return new ScriptFormulaPane(); return new GroupFormulaPane();
} }
@Override @Override
@ExecuteFunctionRecord @ExecuteFunctionRecord
public UIFormula appearanceWhenReserveFormula() { public UIFormula appearanceWhenReserveFormula() {
return new ScriptFormulaPane(); return new GroupFormulaPaneWhenReserveFormula();
} }
} }

7
src/com/fr/solution/plugin/design/formula/locale/formula.properties

@ -1,2 +1,5 @@
Plugin-Script_Formula_Title=Script Formula FR-Designer_Group_Formula_Script_Title=Script Formula
Plugin-Basic_Formula_Title=Basic Formula FR-Designer_Group_Formula_Basic_Title=Basic Formula
FR-Designer_Group_Formula_Calculate=Calculate
FR-Designer_Group_Formula_Result=Result
FR-Designer_Group_Formula_Calculate_Error=Error

7
src/com/fr/solution/plugin/design/formula/locale/formula_en_US.properties

@ -1,2 +1,5 @@
Plugin-Script_Formula_Title=Script Formula FR-Designer_Group_Formula_Script_Title=Script Formula
Plugin-Basic_Formula_Title=Basic Formula FR-Designer_Group_Formula_Basic_Title=Basic Formula
FR-Designer_Group_Formula_Calculate=Calculate
FR-Designer_Group_Formula_Result=Result
FR-Designer_Group_Formula_Calculate_Error=Error

7
src/com/fr/solution/plugin/design/formula/locale/formula_ja_JP.properties

@ -1,2 +1,5 @@
Plugin-Script_Formula_Title=Script Formula FR-Designer_Group_Formula_Script_Title=Script Formula
Plugin-Basic_Formula_Title=Basic Formula FR-Designer_Group_Formula_Basic_Title=Basic Formula
FR-Designer_Group_Formula_Calculate=Calculate
FR-Designer_Group_Formula_Result=Result
FR-Designer_Group_Formula_Calculate_Error=Error

7
src/com/fr/solution/plugin/design/formula/locale/formula_zh_CN.properties

@ -1,2 +1,5 @@
Plugin-Script_Formula_Title=脚本公式 FR-Designer_Group_Formula_Script_Title=\u811A\u672C\u516C\u5F0F
Plugin-Basic_Formula_Title=普通公式 FR-Designer_Group_Formula_Basic_Title=\u5E38\u89C4\u516C\u5F0F
FR-Designer_Group_Formula_Calculate=\u5B9E\u65F6\u8BA1\u7B97
FR-Designer_Group_Formula_Result=\u516C\u5F0F\u7684\u8BA1\u7B97\u7ED3\u679C\u4E3A
FR-Designer_Group_Formula_Calculate_Error=\u53D1\u751F\u9519\u8BEF\uFF0C\u9519\u8BEF\u4FE1\u606F\u4E3A

40
src/com/fr/solution/plugin/design/formula/ui/ScriptFormulaPane.java → src/com/fr/solution/plugin/design/formula/ui/GroupFormulaPane.java

@ -3,11 +3,14 @@ package com.fr.solution.plugin.design.formula.ui;
import com.fr.base.BaseFormula; import com.fr.base.BaseFormula;
import com.fr.base.BaseUtils; import com.fr.base.BaseUtils;
import com.fr.base.FRContext; import com.fr.base.FRContext;
import com.fr.base.io.IOFile;
import com.fr.data.TableDataSource;
import com.fr.design.actions.UpdateAction; import com.fr.design.actions.UpdateAction;
import com.fr.design.border.UIRoundedBorder; import com.fr.design.border.UIRoundedBorder;
import com.fr.design.constants.UIConstants; import com.fr.design.constants.UIConstants;
import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicDialog;
import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.BasicPane;
import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.formula.FunctionConstants; import com.fr.design.formula.FunctionConstants;
import com.fr.design.formula.FunctionGroup; import com.fr.design.formula.FunctionGroup;
import com.fr.design.formula.NameAndDescription; import com.fr.design.formula.NameAndDescription;
@ -21,12 +24,17 @@ import com.fr.design.gui.itextarea.UITextArea;
import com.fr.design.gui.itextfield.UITextField; import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.JTemplate;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.general.GeneralUtils;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.report.core.namespace.SimpleCellValueNameSpace;
import com.fr.script.Calculator;
import com.fr.solution.plugin.design.formula.ui.evt.OperateListener; import com.fr.solution.plugin.design.formula.ui.evt.OperateListener;
import com.fr.solution.plugin.design.formula.ui.type.CategoryFormulaPane; import com.fr.solution.plugin.design.formula.ui.type.CategoryFormulaPane;
import com.fr.stable.EncodeConstants; import com.fr.stable.EncodeConstants;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.stable.UtilEvalError;
import javax.swing.*; import javax.swing.*;
import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionEvent;
@ -57,7 +65,7 @@ import java.util.Locale;
/** /**
* 组合了普通公式和脚本公式的编辑器面板 * 组合了普通公式和脚本公式的编辑器面板
*/ */
public class ScriptFormulaPane extends BasicPane implements UIFormula, OperateListener { public class GroupFormulaPane extends BasicPane implements UIFormula, OperateListener {
private VariableTreeAndDescriptionArea variableTreeAndDescriptionArea; private VariableTreeAndDescriptionArea variableTreeAndDescriptionArea;
@ -73,7 +81,7 @@ public class ScriptFormulaPane extends BasicPane implements UIFormula, OperateLi
private DefaultListModel functionNameModel; private DefaultListModel functionNameModel;
private JList functionNameList; private JList functionNameList;
public ScriptFormulaPane() { public GroupFormulaPane() {
initComponents(); initComponents();
} }
@ -123,10 +131,13 @@ public class ScriptFormulaPane extends BasicPane implements UIFormula, OperateLi
UIButton checkValidButton = new UIButton(Inter.getLocText("FormulaD-Check_Valid")); UIButton checkValidButton = new UIButton(Inter.getLocText("FormulaD-Check_Valid"));
checkValidButton.addActionListener(checkValidActionListener); checkValidButton.addActionListener(checkValidActionListener);
UIButton calculateButton = new UIButton(Inter.getLocText("FR-Designer_Group_Formula_Calculate"));
calculateButton.addActionListener(calculateActionListener);
JPanel checkBoxPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); JPanel checkBoxPane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane();
checkBoxPane.setPreferredSize(new Dimension(450, 30)); checkBoxPane.setPreferredSize(new Dimension(450, 30));
checkBoxAndButtonPane.add(checkBoxPane, BorderLayout.WEST); checkBoxAndButtonPane.add(checkBoxPane, BorderLayout.WEST);
checkBoxAndButtonPane.add(checkValidButton, BorderLayout.EAST); checkBoxAndButtonPane.add(GUICoreUtils.createFlowPane(checkValidButton, calculateButton), BorderLayout.EAST);
extendCheckBoxPane(checkBoxPane); extendCheckBoxPane(checkBoxPane);
variableTreeAndDescriptionArea = new VariableTreeAndDescriptionArea(); variableTreeAndDescriptionArea = new VariableTreeAndDescriptionArea();
this.add(variableTreeAndDescriptionArea, BorderLayout.SOUTH); this.add(variableTreeAndDescriptionArea, BorderLayout.SOUTH);
@ -283,6 +294,7 @@ public class ScriptFormulaPane extends BasicPane implements UIFormula, OperateLi
public void populate(BaseFormula formula, VariableResolver variableResolver) { public void populate(BaseFormula formula, VariableResolver variableResolver) {
this.variableTreeAndDescriptionArea.populate(variableResolver); this.variableTreeAndDescriptionArea.populate(variableResolver);
formulaPane.populateBean(formula);
} }
/** /**
@ -299,6 +311,28 @@ public class ScriptFormulaPane extends BasicPane implements UIFormula, OperateLi
} }
}; };
private ActionListener calculateActionListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Calculator calculator = Calculator.createCalculator();
JTemplate<?, ?> template = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate();
if (template != null) {
IOFile file = template.getTarget();
calculator.setAttribute(TableDataSource.class, file);
calculator.pushNameSpace(SimpleCellValueNameSpace.getInstance());
}
String message;
try {
BaseFormula formula = GroupFormulaPane.this.update();
Object result = formula.evalValue(calculator);
message = Inter.getLocText("FR-Designer_Group_Formula_Result") + ":" + GeneralUtils.objectToString(result);
} catch (UtilEvalError utilEvalError) {
message = Inter.getLocText("FR-Designer_Group_Formula_Calculate_Error") + ":" + utilEvalError.getMessage();
}
JOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), message);
}
};
public class VariableTreeAndDescriptionArea extends JPanel { public class VariableTreeAndDescriptionArea extends JPanel {
private JTree variablesTree; private JTree variablesTree;

59
src/com/fr/solution/plugin/design/formula/ui/GroupFormulaPaneWhenReserveFormula.java

@ -0,0 +1,59 @@
package com.fr.solution.plugin.design.formula.ui;
import com.fr.base.BaseFormula;
import com.fr.design.formula.VariableResolver;
import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.general.Inter;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
public class GroupFormulaPaneWhenReserveFormula extends GroupFormulaPane {
private UICheckBox reserveCheckBox4Result;
private UICheckBox reserveCheckBox4Write;
public GroupFormulaPaneWhenReserveFormula() {
super();
}
@Override
protected void extendCheckBoxPane(JPanel checkBoxPane) {
reserveCheckBox4Result = new UICheckBox(Inter.getLocText("FR-Designer_Export-Save-Formula"));
reserveCheckBox4Result.setSelected(false);
reserveCheckBox4Result.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent arg0) {
if (reserveCheckBox4Result.isSelected()) {
reserveCheckBox4Write.setSelected(true);
reserveCheckBox4Write.setEnabled(false);
} else {
reserveCheckBox4Write.setEnabled(true);
}
}
});
reserveCheckBox4Write = new UICheckBox(Inter.getLocText("FR-Designer_Write-Save-Formula"));
reserveCheckBox4Write.setSelected(false);
checkBoxPane.add(reserveCheckBox4Result, BorderLayout.CENTER);
checkBoxPane.add(reserveCheckBox4Write, BorderLayout.SOUTH);
}
@Override
public void populate(BaseFormula formula, VariableResolver variableResolver) {
super.populate(formula, variableResolver);
reserveCheckBox4Result.setSelected(formula.isReserveInResult());
reserveCheckBox4Write.setSelected(formula.isReserveOnWriteOrAnaly());
}
@Override
public BaseFormula update() {
BaseFormula formula = super.update();
if (formula != null) {
formula.setReserveInResult(this.reserveCheckBox4Result.isSelected());
formula.setReserveOnWriteOrAnaly(this.reserveCheckBox4Write.isSelected());
}
return formula;
}
}

117
src/com/fr/solution/plugin/design/formula/ui/type/impl/NormalFormulaPane.java → src/com/fr/solution/plugin/design/formula/ui/type/BaseFormulaPane.java

@ -1,16 +1,14 @@
package com.fr.solution.plugin.design.formula.ui.type.impl; package com.fr.solution.plugin.design.formula.ui.type;
import com.fr.base.Formula; import com.fr.base.BaseFormula;
import com.fr.design.beans.FurtherBasicBeanPane; import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.icontainer.UIScrollPane;
import com.fr.design.gui.syntax.ui.rsyntaxtextarea.RSyntaxTextArea; import com.fr.design.gui.syntax.ui.rsyntaxtextarea.RSyntaxTextArea;
import com.fr.design.gui.syntax.ui.rsyntaxtextarea.SyntaxConstants;
import com.fr.general.FRLogger; import com.fr.general.FRLogger;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.parser.FRLexer; import com.fr.parser.FRLexer;
import com.fr.parser.FRParser; import com.fr.parser.FRParser;
import com.fr.solution.plugin.design.formula.ui.evt.OperateListener; import com.fr.solution.plugin.design.formula.ui.evt.OperateListener;
import com.fr.solution.plugin.design.formula.ui.type.CommonEvent;
import com.fr.stable.ProductConstants; import com.fr.stable.ProductConstants;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.stable.script.Expression; import com.fr.stable.script.Expression;
@ -24,7 +22,7 @@ import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.io.StringReader; import java.io.StringReader;
public class NormalFormulaPane extends FurtherBasicBeanPane<Formula> implements CommonEvent, KeyListener { public abstract class BaseFormulaPane<T extends BaseFormula> extends FurtherBasicBeanPane<T> implements CommonEvent, KeyListener {
private static final int KEY_10 = 10; private static final int KEY_10 = 10;
//上下左右 //上下左右
@ -42,7 +40,7 @@ public class NormalFormulaPane extends FurtherBasicBeanPane<Formula> implements
private OperateListener operateListener; private OperateListener operateListener;
public NormalFormulaPane() { public BaseFormulaPane() {
setLayout(new BorderLayout()); setLayout(new BorderLayout());
initFormulaTextArea(); initFormulaTextArea();
UIScrollPane formulaTextAreaScrollPane = new UIScrollPane(formulaTextArea); UIScrollPane formulaTextAreaScrollPane = new UIScrollPane(formulaTextArea);
@ -51,25 +49,12 @@ public class NormalFormulaPane extends FurtherBasicBeanPane<Formula> implements
} }
private void initFormulaTextArea() { private void initFormulaTextArea() {
formulaTextArea = new RSyntaxTextArea(); formulaTextArea = createContentEditor();
configFormulaArea();
initFormulaTextAreaKeyListener(); initFormulaTextAreaKeyListener();
initFormulaTextAreaMouseListener(); initFormulaTextAreaMouseListener();
} }
protected void configFormulaArea() {
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);
}
private void initFormulaTextAreaKeyListener() { private void initFormulaTextAreaKeyListener() {
formulaTextArea.addKeyListener(this); formulaTextArea.addKeyListener(this);
@ -156,65 +141,58 @@ public class NormalFormulaPane extends FurtherBasicBeanPane<Formula> implements
} }
} }
@Override
public boolean accept(Object ob) {
return ob instanceof Formula;
}
@Override @Override
public void reset() { public void reset() {
} }
@Override protected abstract RSyntaxTextArea createContentEditor();
public void populateBean(Formula formula) {
// set text protected void fixContent(String content) {
if (formula != null) { if (content.trim().equals("=")) {
String content = formula.getContent(); this.formulaTextArea.setForeground(Color.gray);
if (content.trim().equals("=")) { this.formulaTextArea.setText("\n\n\n" + Inter.getLocText("FR-Designer_FormulaPane_Tips"));
this.formulaTextArea.setForeground(Color.gray); this.formulaTextArea.setCaretPosition(0);
this.formulaTextArea.setText("\n\n\n" + Inter.getLocText("FR-Designer_FormulaPane_Tips")); ifHasBeenWritten = 0;
this.formulaTextArea.setCaretPosition(0); operateListener.clearMathListModel();
ifHasBeenWritten = 0; } else if (content.trim().charAt(0) == '=') {
operateListener.clearMathListModel(); this.formulaTextArea.setText(content.trim().substring(1));
} else if (content.trim().charAt(0) == '=') { currentPosition = formulaTextArea.getCaretPosition();
this.formulaTextArea.setText(content.trim().substring(1)); beginPosition = getBeginPosition();
currentPosition = formulaTextArea.getCaretPosition(); insertPosition = beginPosition;
beginPosition = getBeginPosition(); firstStepToFindTips(beginPosition);
insertPosition = beginPosition; operateListener.fixFunctionNameList();
firstStepToFindTips(beginPosition); ifHasBeenWritten = 1;
operateListener.fixFunctionNameList(); } else {
ifHasBeenWritten = 1; this.formulaTextArea.setText(content);
} else { currentPosition = formulaTextArea.getCaretPosition();
this.formulaTextArea.setText(content); beginPosition = getBeginPosition();
currentPosition = formulaTextArea.getCaretPosition(); insertPosition = beginPosition;
beginPosition = getBeginPosition(); firstStepToFindTips(beginPosition);
insertPosition = beginPosition; operateListener.fixFunctionNameList();
firstStepToFindTips(beginPosition); ifHasBeenWritten = 1;
operateListener.fixFunctionNameList();
ifHasBeenWritten = 1;
}
} }
}
protected String getText() {
return formulaTextArea.getText();
} }
@Override @Override
public Formula updateBean() { public T updateBean() {
Formula formula; String content = getText();
if (ifHasBeenWritten == 0) { if (ifHasBeenWritten == 0) {
return new Formula(); return createWrittenFormula(content);
} else { } else {
String content = this.formulaTextArea.getText(); return createFormula(content);
if (StringUtils.isEmpty(content) || content.trim().charAt(0) == '=') {
formula = new Formula(content);
} else {
formula = new Formula("=" + content);
}
return formula;
} }
} }
protected abstract T createWrittenFormula(String content);
protected abstract T createFormula(String content);
@Override @Override
public void keyTyped(KeyEvent e) { public void keyTyped(KeyEvent e) {
@ -267,6 +245,7 @@ public class NormalFormulaPane extends FurtherBasicBeanPane<Formula> implements
ifHasBeenWritten = 1; ifHasBeenWritten = 1;
insertPosition = 0; insertPosition = 0;
} }
text = wrapText(text);
String textAll = formulaTextArea.getText(); String textAll = formulaTextArea.getText();
currentPosition = formulaTextArea.getCaretPosition(); currentPosition = formulaTextArea.getCaretPosition();
int insert = 0; int insert = 0;
@ -289,6 +268,10 @@ public class NormalFormulaPane extends FurtherBasicBeanPane<Formula> implements
insertPosition = formulaTextArea.getCaretPosition(); insertPosition = formulaTextArea.getCaretPosition();
} }
protected String wrapText(String text) {
return text;
}
public void onDoubleClick(String currentLineContent) { public void onDoubleClick(String currentLineContent) {
if (ifHasBeenWritten == 0) { if (ifHasBeenWritten == 0) {
formulaTextArea.setForeground(Color.black); formulaTextArea.setForeground(Color.black);
@ -336,7 +319,7 @@ public class NormalFormulaPane extends FurtherBasicBeanPane<Formula> implements
} }
JOptionPane.showMessageDialog( JOptionPane.showMessageDialog(
NormalFormulaPane.this, BaseFormulaPane.this,
(expression != null ? Inter.getLocText("FormulaD-Valid_Formula") : Inter.getLocText("FormulaD-Invalid_Formula")) + ".", ProductConstants.PRODUCT_NAME, (expression != null ? Inter.getLocText("FormulaD-Valid_Formula") : Inter.getLocText("FormulaD-Invalid_Formula")) + ".", ProductConstants.PRODUCT_NAME,
JOptionPane.INFORMATION_MESSAGE); JOptionPane.INFORMATION_MESSAGE);
} }
@ -353,6 +336,6 @@ public class NormalFormulaPane extends FurtherBasicBeanPane<Formula> implements
@Override @Override
public String title4PopupWindow() { public String title4PopupWindow() {
return Inter.getLocText("Plugin-Basic_Formula_Title"); return Inter.getLocText("FR-Designer_Group_Formula_Basic_Title");
} }
} }

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

@ -4,7 +4,7 @@ import com.fr.base.BaseFormula;
import com.fr.design.beans.FurtherBasicBeanPane; import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.gui.frpane.UIRadioPane; import com.fr.design.gui.frpane.UIRadioPane;
import com.fr.solution.plugin.design.formula.ui.evt.OperateListener; import com.fr.solution.plugin.design.formula.ui.evt.OperateListener;
import com.fr.solution.plugin.design.formula.ui.type.impl.NormalFormulaPane; import com.fr.solution.plugin.design.formula.ui.type.impl.BasicFormulaPane;
import com.fr.solution.plugin.design.formula.ui.type.impl.ScriptFormulaPane; import com.fr.solution.plugin.design.formula.ui.type.impl.ScriptFormulaPane;
import java.util.ArrayList; import java.util.ArrayList;
@ -19,7 +19,7 @@ public class CategoryFormulaPane extends UIRadioPane<BaseFormula>{
protected List<FurtherBasicBeanPane<? extends BaseFormula>> initPaneList() { protected List<FurtherBasicBeanPane<? extends BaseFormula>> initPaneList() {
List<FurtherBasicBeanPane<? extends BaseFormula>> list = new ArrayList<FurtherBasicBeanPane<? extends BaseFormula>>(); List<FurtherBasicBeanPane<? extends BaseFormula>> list = new ArrayList<FurtherBasicBeanPane<? extends BaseFormula>>();
NormalFormulaPane normal = new NormalFormulaPane(); BasicFormulaPane normal = new BasicFormulaPane();
ScriptFormulaPane script = new ScriptFormulaPane(); ScriptFormulaPane script = new ScriptFormulaPane();
list.add(normal); list.add(normal);
@ -55,7 +55,9 @@ public class CategoryFormulaPane extends UIRadioPane<BaseFormula>{
} }
public void setOperateListener(OperateListener listener) { public void setOperateListener(OperateListener listener) {
events.get(cardNamesPane.getSelectedIndex()).setOperateListener(listener); for (CommonEvent event : events) {
event.setOperateListener(listener);
}
} }
@Override @Override

60
src/com/fr/solution/plugin/design/formula/ui/type/impl/BasicFormulaPane.java

@ -0,0 +1,60 @@
package com.fr.solution.plugin.design.formula.ui.type.impl;
import com.fr.base.Formula;
import com.fr.design.gui.syntax.ui.rsyntaxtextarea.RSyntaxTextArea;
import com.fr.design.gui.syntax.ui.rsyntaxtextarea.SyntaxConstants;
import com.fr.solution.plugin.design.formula.ui.type.BaseFormulaPane;
import com.fr.stable.StringUtils;
public class BasicFormulaPane extends BaseFormulaPane<Formula> {
@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 (StringUtils.isEmpty(content) || content.trim().charAt(0) == '=') {
formula = new Formula(content);
} else {
formula = new Formula("=" + content);
}
return formula;
}
@Override
protected RSyntaxTextArea createContentEditor() {
RSyntaxTextArea formulaTextArea = new RSyntaxTextArea();
configFormulaArea(formulaTextArea);
return formulaTextArea;
}
protected void configFormulaArea(RSyntaxTextArea 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);
}
}

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

@ -1,33 +1,23 @@
package com.fr.solution.plugin.design.formula.ui.type.impl; package com.fr.solution.plugin.design.formula.ui.type.impl;
import com.fr.base.Formula;
import com.fr.base.ScriptFormula; import com.fr.base.ScriptFormula;
import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.gui.icontainer.UIScrollPane;
import com.fr.design.gui.syntax.ui.rsyntaxtextarea.RSyntaxTextArea; import com.fr.design.gui.syntax.ui.rsyntaxtextarea.RSyntaxTextArea;
import com.fr.design.gui.syntax.ui.rsyntaxtextarea.SyntaxConstants; import com.fr.design.gui.syntax.ui.rsyntaxtextarea.SyntaxConstants;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.solution.plugin.design.formula.ui.evt.OperateListener; import com.fr.solution.plugin.design.formula.ui.type.BaseFormulaPane;
import com.fr.solution.plugin.design.formula.ui.type.CommonEvent;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import java.awt.*; public class ScriptFormulaPane extends BaseFormulaPane<ScriptFormula> {
public class ScriptFormulaPane extends FurtherBasicBeanPane<ScriptFormula> implements CommonEvent { @Override
protected RSyntaxTextArea createContentEditor() {
private RSyntaxTextArea formulaTextArea; RSyntaxTextArea formulaTextArea = new RSyntaxTextArea();
public ScriptFormulaPane() {
setLayout(new BorderLayout());
formulaTextArea = new RSyntaxTextArea();
formulaTextArea.setCloseCurlyBraces(true); formulaTextArea.setCloseCurlyBraces(true);
formulaTextArea.setLineWrap(true); formulaTextArea.setLineWrap(true);
formulaTextArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVASCRIPT); formulaTextArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVASCRIPT);
formulaTextArea.setCodeFoldingEnabled(true); formulaTextArea.setCodeFoldingEnabled(true);
formulaTextArea.setAntiAliasingEnabled(true); formulaTextArea.setAntiAliasingEnabled(true);
UIScrollPane formulaTextAreaScrollPane = new UIScrollPane(formulaTextArea); return formulaTextArea;
formulaTextAreaScrollPane.setBorder(null);
add(formulaTextAreaScrollPane, BorderLayout.CENTER);
} }
@Override @Override
@ -43,14 +33,14 @@ public class ScriptFormulaPane extends FurtherBasicBeanPane<ScriptFormula> imple
@Override @Override
public void populateBean(ScriptFormula formula) { public void populateBean(ScriptFormula formula) {
if (formula != null) { if (formula != null) {
formulaTextArea.setText(formula.getContent()); String content = formula.getContent();
fixContent(content);
} }
} }
@Override @Override
public ScriptFormula updateBean() { protected ScriptFormula createFormula(String content) {
ScriptFormula formula; ScriptFormula formula;
String content = formulaTextArea.getText();
if (StringUtils.isEmpty(content) || content.trim().charAt(0) == '=') { if (StringUtils.isEmpty(content) || content.trim().charAt(0) == '=') {
formula = new ScriptFormula(content); formula = new ScriptFormula(content);
} else { } else {
@ -60,37 +50,22 @@ public class ScriptFormulaPane extends FurtherBasicBeanPane<ScriptFormula> imple
} }
@Override @Override
public void onDoubleClick(String currentLineContent) { protected ScriptFormula createWrittenFormula(String content) {
return createFormula(content);
}
@Override
public void onSingleClick() {
} }
@Override @Override
public void applyText(String text) { public void onDoubleClick(String currentLineContent) {
}
@Override
public void checkContentValid() {
}
@Override
public void onSearch() {
} }
@Override @Override
public void setOperateListener(OperateListener listener) { protected String wrapText(String text) {
return "'${" + text + "}'";
} }
@Override @Override
public String title4PopupWindow() { public String title4PopupWindow() {
return Inter.getLocText("Plugin-Script_Formula_Title"); return Inter.getLocText("FR-Designer_Group_Formula_Script_Title");
} }
} }

Loading…
Cancel
Save