From 8df5162585355e4458d882b52fa0fda627a8cf4b Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Tue, 8 Aug 2017 22:58:30 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-3348=20=E5=85=AC=E5=BC=8F=E5=BF=AB?= =?UTF-8?q?=E9=80=9F=E7=BC=96=E8=BE=91=E9=9D=A2=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cellquick/CellFormulaQuickEditor.java | 75 +++++++++++++++---- 1 file changed, 61 insertions(+), 14 deletions(-) diff --git a/designer/src/com/fr/quickeditor/cellquick/CellFormulaQuickEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellFormulaQuickEditor.java index 0edadfc321..faebf9b816 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellFormulaQuickEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellFormulaQuickEditor.java @@ -5,7 +5,16 @@ import com.fr.base.Style; import com.fr.base.TextFormat; import com.fr.design.actions.core.ActionFactory; import com.fr.design.actions.insert.cell.FormulaCellAction; +import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.formula.FormulaFactory; +import com.fr.design.formula.UIFormula; +import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.itextfield.UITextField; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.mainframe.DesignerContext; +import com.fr.general.IOUtils; +import com.fr.general.Inter; import com.fr.grid.selection.CellSelection; import com.fr.quickeditor.CellQuickEditor; import com.fr.report.ReportHelper; @@ -17,6 +26,8 @@ import javax.swing.*; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; @@ -29,7 +40,7 @@ import java.awt.event.KeyEvent; */ public class CellFormulaQuickEditor extends CellQuickEditor { //文本域 - private UITextField stringTextField; + private UITextField formulaTextField; //编辑状态 private boolean isEditing = false; @@ -37,20 +48,23 @@ public class CellFormulaQuickEditor extends CellQuickEditor { private boolean reserveInResult = false; private boolean reserveOnWriteOrAnaly = true; + //默认值 + private static final String DEFAULT_FORMULA = "="; + private DocumentListener documentListener = new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { - changeReportPaneCell(stringTextField.getText().trim()); + changeReportPaneCell(formulaTextField.getText().trim()); } @Override public void removeUpdate(DocumentEvent e) { - changeReportPaneCell(stringTextField.getText().trim()); + changeReportPaneCell(formulaTextField.getText().trim()); } @Override public void changedUpdate(DocumentEvent e) { - changeReportPaneCell(stringTextField.getText().trim()); + changeReportPaneCell(formulaTextField.getText().trim()); } }; @@ -65,9 +79,8 @@ public class CellFormulaQuickEditor extends CellQuickEditor { @Override public JComponent createCenterBody() { JPanel content = new JPanel(new BorderLayout()); - content.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 15)); - stringTextField = new UITextField(); - stringTextField.addKeyListener(new KeyAdapter() { + formulaTextField = new UITextField(); + formulaTextField.addKeyListener(new KeyAdapter() { @Override public void keyReleased(KeyEvent e) { if (tc != null) { @@ -75,8 +88,42 @@ public class CellFormulaQuickEditor extends CellQuickEditor { } } }); - content.add(stringTextField, BorderLayout.CENTER); - return content; + JPanel textFieldPane = new JPanel(new BorderLayout()); + textFieldPane.add(formulaTextField, BorderLayout.CENTER); + textFieldPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5)); + + UIButton formulaButton = new UIButton(IOUtils.readIcon("/com/fr/design/images/m_insert/formula.png")); + formulaButton.setToolTipText(Inter.getLocText("Formula") + "..."); + formulaButton.setPreferredSize(new Dimension(20, formulaTextField.getPreferredSize().height)); + formulaButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + String text = formulaTextField.getText(); + final UIFormula formulaPane = FormulaFactory.createFormulaPane(); + formulaPane.populate(new Formula(text)); + formulaPane.showLargeWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { + @Override + public void doOk() { + Formula fm = formulaPane.update(); + if (fm.getContent().length() <= 1) { + formulaTextField.setText(DEFAULT_FORMULA); + } else { + formulaTextField.setText(fm.getContent()); + } + + } + }).setVisible(true); + } + }); + + JPanel pane = new JPanel(new BorderLayout()); + pane.add(textFieldPane, BorderLayout.CENTER); + pane.add(formulaButton, BorderLayout.EAST); + + content.add(pane, BorderLayout.NORTH); + return TableLayoutHelper.createTableLayoutPane(new Component[][]{ + new Component[]{emptyLabel, content}}, + new double[]{TableLayout.PREFERRED}, + new double[]{TableLayout.PREFERRED, TableLayout.FILL}); } @Override @@ -112,7 +159,7 @@ public class CellFormulaQuickEditor extends CellQuickEditor { } } fireTargetModified(); - stringTextField.requestFocus(); + formulaTextField.requestFocus(); isEditing = false; } @@ -138,7 +185,7 @@ public class CellFormulaQuickEditor extends CellQuickEditor { } } showText(str); - stringTextField.setEditable(tc.isSelectedOneCell()); + formulaTextField.setEditable(tc.isSelectedOneCell()); } /** @@ -151,9 +198,9 @@ public class CellFormulaQuickEditor extends CellQuickEditor { if (isEditing) { return; } - stringTextField.getDocument().removeDocumentListener(documentListener); - stringTextField.setText(str); - stringTextField.getDocument().addDocumentListener(documentListener); + formulaTextField.getDocument().removeDocumentListener(documentListener); + formulaTextField.setText(str); + formulaTextField.getDocument().addDocumentListener(documentListener); } } \ No newline at end of file