diff --git a/designer-base/src/main/java/com/fr/design/gui/style/TextFormatPane.java b/designer-base/src/main/java/com/fr/design/gui/style/TextFormatPane.java index ae0a947992..8c96c4c862 100644 --- a/designer-base/src/main/java/com/fr/design/gui/style/TextFormatPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/style/TextFormatPane.java @@ -43,6 +43,7 @@ import java.awt.event.ItemListener; import java.math.RoundingMode; import java.text.Format; import java.text.SimpleDateFormat; +import java.util.Arrays; /** * @author Starryi @@ -151,16 +152,17 @@ public class TextFormatPane extends AbstractBasicStylePane implements GlobalName protected JPanel createContentPane (Component[][] components) { double f = TableLayout.FILL; double p = TableLayout.PREFERRED; - double[] rowSize = {p, p, p, p, p}; + double[] rowSize = new double[components.length]; + Arrays.fill(rowSize, p); double[] columnSize = {p, f}; - int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}; + int[][] rowCount = new int[components.length][2]; + Arrays.fill(rowCount, new int[] {1, 1}); return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_LARGE, LayoutConstants.VGAP_MEDIUM); } protected Component[][] getComponent (JPanel centerPane, JPanel typePane) { return new Component[][]{ - new Component[]{null, null}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Report_Base_Format"), SwingConstants.LEFT), typePane}, new Component[]{centerPane, null}, new Component[]{optionPane, null}, diff --git a/designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellDSColumnEditor.java b/designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellDSColumnEditor.java index 276f3ba743..0ede5114ff 100644 --- a/designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellDSColumnEditor.java +++ b/designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellDSColumnEditor.java @@ -42,6 +42,7 @@ import com.fr.report.cell.cellattr.core.group.DSColumn; import com.fr.report.cell.cellattr.core.group.FilterTypeEnum; import com.fr.report.cell.cellattr.core.group.SelectCount; import com.fr.stable.StringUtils; +import com.fr.third.jodd.util.ArraysUtil; import javax.swing.BorderFactory; import javax.swing.Icon; @@ -60,6 +61,7 @@ import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.ArrayList; +import java.util.Arrays; import static com.fr.report.cell.cellattr.core.group.FilterTypeEnum.BOTTOM; import static com.fr.report.cell.cellattr.core.group.FilterTypeEnum.EVEN; @@ -472,6 +474,7 @@ public class CellDSColumnEditor extends CellQuickEditor { if (cellElement != null) { sortPane.update(cellElement); valuePane.update(cellElement); + formatAttrPane.update(cellElement); filterPane.update(cellElement); //更新单元格扩展属性 updateExtendConfig(); @@ -486,6 +489,7 @@ public class CellDSColumnEditor extends CellQuickEditor { disableListener(); sortPane.populate(cellElement); valuePane.populate(cellElement); + formatAttrPane.populate(cellElement); filterPane.populate(cellElement); CellExpandAttr cellExpandAttr = cellElement.getCellExpandAttr(); if (cellExpandAttr == null) { @@ -614,15 +618,19 @@ public class CellDSColumnEditor extends CellQuickEditor { enableListener(); - double[] rowSize = {P, P, P, P, P, P}; - double[] columnSize = {F}; Component[][] components = new Component[][]{ {sortPane}, {filterPane}, {valuePane}, + {formatAttrPane}, {extendableDirectionPane}, {multiNumPane} }; + + double[] rowSize = new double[components.length]; + Arrays.fill(rowSize, P); + double[] columnSize = {F}; + return TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, HGAP, VGAP); } @@ -1233,15 +1241,20 @@ public class CellDSColumnEditor extends CellQuickEditor { } public class FormatAttrPane extends AbstractAttrNoScrollPane { - private final TextFormatPane formatPane; + private TextFormatPane formatPane; - public FormatAttrPane() { + @Override + protected JPanel createContentPane() { this.formatPane = new TextFormatPane(); + return this.formatPane; } @Override - protected JPanel createContentPane() { - return formatPane; + public Dimension getPreferredSize() { + if (formatPane == null) { + return super.getPreferredSize(); + } + return formatPane.getPreferredSize(); } protected void initContentPane() { @@ -1253,13 +1266,13 @@ public class CellDSColumnEditor extends CellQuickEditor { } public void populate(CellElement cellElement) { - if (cellElement != null) { + if (cellElement != null && formatPane != null) { formatPane.populateBean(cellElement.getStyle()); } } public void update(CellElement cellElement) { - if (cellElement != null) { + if (cellElement != null && formatPane != null) { cellElement.setStyle(formatPane.update(cellElement.getStyle())); } } diff --git a/designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellFormulaQuickEditor.java b/designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellFormulaQuickEditor.java index 5695f1ba2e..30a5f0f558 100644 --- a/designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellFormulaQuickEditor.java +++ b/designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellFormulaQuickEditor.java @@ -8,8 +8,11 @@ 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.frpane.AbstractAttrNoScrollPane; +import com.fr.design.gui.frpane.AttributeChangeListener; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.itextfield.UITextField; +import com.fr.design.gui.style.TextFormatPane; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.DesignerContext; @@ -35,6 +38,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; +import java.util.Arrays; /** * 公式快速编辑面板,同文本数字编辑拆分 @@ -46,6 +50,7 @@ import java.awt.event.KeyEvent; public class CellFormulaQuickEditor extends CellQuickEditor { //文本域 private UITextField formulaTextField; + private TextFormatPane formatPane; //编辑状态 private boolean isEditing = false; @@ -136,10 +141,59 @@ public class CellFormulaQuickEditor extends CellQuickEditor { pane.add(formulaButton, BorderLayout.EAST); content.add(pane, BorderLayout.NORTH); + + Component[][] componentLines = new Component[][] { + new Component[]{EMPTY_LABEL, content}, + new Component[]{createFormatPane(), null}, + }; + double[] rowSize = new double[componentLines.length]; + Arrays.fill(rowSize, TableLayout.PREFERRED); + double[] columnSize = new double[] {TableLayout.PREFERRED, TableLayout.FILL }; return TableLayoutHelper.createGapTableLayoutPane(new Component[][]{ - new Component[]{EMPTY_LABEL, content}}, - new double[]{TableLayout.PREFERRED}, - new double[]{TableLayout.PREFERRED, TableLayout.FILL}, HGAP, VGAP); + new Component[]{EMPTY_LABEL, content}, + new Component[]{createFormatPane(), null}, + }, + rowSize, columnSize, HGAP, VGAP); + } + + private JPanel createFormatPane() { + formatPane = new TextFormatPane(); + AbstractAttrNoScrollPane container = new AbstractAttrNoScrollPane() { + @Override + protected JPanel createContentPane() { + return formatPane; + } + + protected void initContentPane() { + leftContentPane = createContentPane(); + if (leftContentPane != null) { + leftContentPane.setBorder(BorderFactory.createEmptyBorder()); + this.add(leftContentPane, BorderLayout.CENTER); + } + } + }; + + container.addAttributeChangeListener(new AttributeChangeListener() { + @Override + public void attributeChange() { + isEditing = true; + + CellSelection cs1 = (CellSelection) tc.getSelection(); + cellElement = tc.getEditingElementCase().getTemplateCellElement(cs1.getColumn(), cs1.getRow()); + + if (cellElement == null) { + CellSelection cs = (CellSelection) tc.getSelection(); + cellElement = DefaultThemedTemplateCellElementCase.createInstance(cs.getColumn(), cs.getRow()); + tc.getEditingElementCase().addCellElement(cellElement, false); + } + + cellElement.setStyle(formatPane.update(cellElement.getStyle())); + + fireTargetModified(); + isEditing = false; + } + }); + return container; } @Override @@ -202,6 +256,11 @@ public class CellFormulaQuickEditor extends CellQuickEditor { } showText(str); formulaTextField.setEditable(tc.isSelectedOneCell()); + + if (cellElement != null) { + Style style = cellElement.getStyle(); + formatPane.populateBean(style); + } } /** diff --git a/designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellStringQuickEditor.java b/designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellStringQuickEditor.java index 76e0926e00..1b2c9ae4db 100644 --- a/designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellStringQuickEditor.java +++ b/designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellStringQuickEditor.java @@ -3,6 +3,7 @@ package com.fr.quickeditor.cellquick; import com.fr.base.BaseFormula; import com.fr.base.Style; import com.fr.base.TextFormat; +import com.fr.design.designer.IntervalConstants; import com.fr.design.gui.frpane.AbstractAttrNoScrollPane; import com.fr.design.gui.frpane.AttributeChangeListener; import com.fr.design.gui.itextarea.UITextArea; @@ -65,7 +66,7 @@ public class CellStringQuickEditor extends CellQuickEditor { */ @Override public JComponent createCenterBody() { - JPanel content = new JPanel(new BorderLayout()); + JPanel content = new JPanel(new BorderLayout(0, IntervalConstants.INTERVAL_L1)); stringTextArea = new UITextArea(); stringTextArea.addKeyListener(new KeyAdapter() {