From 990273f0aa7881608dca0896ee3e8f26a9839e2d Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Tue, 8 Aug 2017 16:33:37 +0800 Subject: [PATCH 1/7] =?UTF-8?q?REPORT-3348=20jdk7=E5=86=85=E9=83=A8?= =?UTF-8?q?=E7=B1=BB=E4=BD=BF=E7=94=A8=E5=A4=96=E9=83=A8=E5=8F=98=E9=87=8F?= =?UTF-8?q?=E6=98=BE=E5=BC=8F=E5=A3=B0=E6=98=8Efinal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/dscolumn/SelectedDataColumnPane.java | 4 ++-- designer/src/com/fr/design/module/DesignerModule.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java b/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java index 682f9a930d..f76d5fa85a 100644 --- a/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java +++ b/designer/src/com/fr/design/dscolumn/SelectedDataColumnPane.java @@ -279,8 +279,8 @@ public class SelectedDataColumnPane extends BasicPane { }); } - private void initWithParameterButton(ElementCasePane casePane, TemplateCellElement cellElement) { - SelectedDataColumnPane that = this; + private void initWithParameterButton(final ElementCasePane casePane, final TemplateCellElement cellElement) { + final SelectedDataColumnPane that = this; editorPane = new UITableEditorPane(new ParameterTableModel()); paramButton = new UIButton(Inter.getLocText("TableData_Dynamic_Parameter_Setting")); paramButton.addActionListener(new ActionListener() { diff --git a/designer/src/com/fr/design/module/DesignerModule.java b/designer/src/com/fr/design/module/DesignerModule.java index bf96db2af2..6cdbea4e5d 100644 --- a/designer/src/com/fr/design/module/DesignerModule.java +++ b/designer/src/com/fr/design/module/DesignerModule.java @@ -169,7 +169,7 @@ public class DesignerModule extends DesignModule { } @Override - /** + /* * 针对不同的对象,在读取Object对象的xml的时候需要使用不同的对象生成器 * @return 返回对象生成器 */ @@ -242,7 +242,7 @@ public class DesignerModule extends DesignModule { } @Override - /** + /* * 返回设计器能打开的模板类型的一个数组列表 * @return 可以打开的模板类型的数组 */ From 54b80d2c898032cdd64e51eea22997da5b7c4b69 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Tue, 8 Aug 2017 17:23:15 +0800 Subject: [PATCH 2/7] =?UTF-8?q?REPORT-3348=20=E5=8D=95=E5=85=83=E6=A0=BC?= =?UTF-8?q?=E5=85=83=E7=B4=A0=E6=95=B0=E6=8D=AE=E5=88=97=EF=BC=8C=E6=89=A9?= =?UTF-8?q?=E5=B1=95=E5=B1=9E=E6=80=A7=E8=A1=A5=E5=85=85=E7=A9=BA=E7=99=BD?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cellquick/CellDSColumnEditor.java | 31 +++++++++++++------ 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java index 127cfd6326..7cab5ddda0 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java @@ -281,8 +281,6 @@ public class CellDSColumnEditor extends CellQuickEditor { class DSColumnAdvancedEditorPane extends CellEditorPane { - private static final String INSET_TEXT = " "; - //排列顺序 private ResultSetSortConfigPane sortPane; //结果集筛选 @@ -295,8 +293,10 @@ public class CellDSColumnEditor extends CellQuickEditor { private UICheckBox veCheckBox; //补充空白数据 private UICheckBox useMultiplyNumCheckBox; - //补充空白数据书目输入框 + //补充空白数据数目输入框 private UISpinner multiNumSpinner; + //补充空白数据数目面板 可隐藏 + private JPanel multiPane; public DSColumnAdvancedEditorPane() { @@ -325,7 +325,6 @@ public class CellDSColumnEditor extends CellQuickEditor { filterPane.update(cellElement); //更新单元格扩展属性 updateExtendConfig(); - //更新补充空白设置 updateMultipleConfig(); } @@ -460,7 +459,7 @@ public class CellDSColumnEditor extends CellQuickEditor { }); //可扩展性 - JPanel extendableDirectionPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane(); + JPanel extendableDirectionPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); extendableDirectionPane.add(heCheckBox = new UICheckBox(Inter.getLocText("ExpandD-Horizontal_Extendable"))); extendableDirectionPane.add(veCheckBox = new UICheckBox(Inter.getLocText("ExpandD-Vertical_Extendable"))); heCheckBox.addChangeListener(new ChangeListener() { @@ -478,13 +477,23 @@ public class CellDSColumnEditor extends CellQuickEditor { } }); + JPanel multiNumPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); //补充空白数据 - JPanel multiNumPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane(); - useMultiplyNumCheckBox = new UICheckBox(Inter.getLocText("Column_Multiple")); - multiNumPane.add(useMultiplyNumCheckBox); - multiNumPane.add(new UILabel(INSET_TEXT)); + useMultiplyNumCheckBox = new UICheckBox(Inter.getLocText("Fill_blank_Data")); + JPanel checkBoxPane = new JPanel(new BorderLayout()); + checkBoxPane.add(useMultiplyNumCheckBox, BorderLayout.WEST); + multiNumPane.add(checkBoxPane); multiNumSpinner = new UISpinner(1, 10000, 1, 1); - multiNumPane.add(multiNumSpinner); + //数据倍数 + UILabel multipleLabel = new UILabel(Inter.getLocText("Column_Multiple")); + multipleLabel.setPreferredSize(new Dimension(60, 20)); + multiPane = TableLayoutHelper.createTableLayoutPane(new Component[][]{ + new Component[]{ + multipleLabel, multiNumSpinner + } + }, new double[]{P}, new double[]{P, F} + ); + multiNumPane.add(multiPane); useMultiplyNumCheckBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { checkButtonEnabled(); @@ -518,8 +527,10 @@ public class CellDSColumnEditor extends CellQuickEditor { private void checkButtonEnabled() { if (useMultiplyNumCheckBox.isSelected()) { multiNumSpinner.setEnabled(true); + multiPane.setVisible(true); } else { multiNumSpinner.setEnabled(false); + multiPane.setVisible(false); } } From ac8adaaca289367ba57a51c0314a28dec77f126b Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Tue, 8 Aug 2017 19:55:35 +0800 Subject: [PATCH 3/7] =?UTF-8?q?REPORT-3348=20=E6=99=AE=E9=80=9A=E6=96=87?= =?UTF-8?q?=E6=9C=AC=E7=BC=96=E8=BE=91=E5=99=A8=E9=9D=A2=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cellquick/CellStringQuickEditor.java | 51 ++++++++++++------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java index f525682870..b6af023c07 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java @@ -3,7 +3,8 @@ package com.fr.quickeditor.cellquick; import com.fr.base.Formula; import com.fr.base.Style; import com.fr.base.TextFormat; -import com.fr.design.gui.itextfield.UITextField; +import com.fr.design.gui.itextarea.UITextArea; +import com.fr.grid.GridKeyListener; import com.fr.grid.selection.CellSelection; import com.fr.quickeditor.CellQuickEditor; import com.fr.report.ReportHelper; @@ -22,12 +23,8 @@ import java.awt.event.KeyEvent; * */ public class CellStringQuickEditor extends CellQuickEditor { - - //instance - private static CellStringQuickEditor THIS; - //文本域 - //TODO 9.0 文本域要根据具体文本数量自适应大小,比较难搞,先跳过。 - private UITextField stringTextField; + //文本域 直接可以自适应大小 + private UITextArea stringTextArea; //编辑状态 private boolean isEditing = false; @@ -39,17 +36,17 @@ public class CellStringQuickEditor extends CellQuickEditor { private DocumentListener documentListener = new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { - changeReportPaneCell(stringTextField.getText().trim()); + changeReportPaneCell(stringTextArea.getText().trim()); } @Override public void removeUpdate(DocumentEvent e) { - changeReportPaneCell(stringTextField.getText().trim()); + changeReportPaneCell(stringTextArea.getText().trim()); } @Override public void changedUpdate(DocumentEvent e) { - changeReportPaneCell(stringTextField.getText().trim()); + changeReportPaneCell(stringTextArea.getText().trim()); } }; @@ -60,22 +57,38 @@ public class CellStringQuickEditor extends CellQuickEditor { /** * 详细信息面板 - * todo 文本框可自适应大小,公式编辑新写一个 */ @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() { + stringTextArea = new UITextArea(); + stringTextArea.addKeyListener(new KeyAdapter() { + + @Override + public void keyPressed(KeyEvent e) { + if (tc == null) { + return; + } + if (e.getKeyCode() == KeyEvent.VK_ENTER) { + //todo yaoh.wu虽然模仿选中单元格按enter可以做到,但是原理没有弄清楚。 + GridKeyListener dispatchListener = new GridKeyListener(tc.getGrid()); + dispatchListener.keyPressed(e); + dispatchListener.keyTyped(e); + } + } + @Override public void keyReleased(KeyEvent e) { if (tc != null) { + if (e.getKeyCode() == KeyEvent.VK_ENTER) { + return; + } tc.getGrid().dispatchEvent(e); } } }); - content.add(stringTextField, BorderLayout.CENTER); + content.add(stringTextArea, BorderLayout.CENTER); return content; } @@ -107,7 +120,7 @@ public class CellStringQuickEditor extends CellQuickEditor { } } fireTargetModified(); - stringTextField.requestFocus(); + stringTextArea.requestFocus(); isEditing = false; } @@ -133,7 +146,7 @@ public class CellStringQuickEditor extends CellQuickEditor { } } showText(str); - stringTextField.setEditable(tc.isSelectedOneCell()); + stringTextArea.setEditable(tc.isSelectedOneCell()); } /** @@ -146,9 +159,9 @@ public class CellStringQuickEditor extends CellQuickEditor { if (isEditing) { return; } - stringTextField.getDocument().removeDocumentListener(documentListener); - stringTextField.setText(str); - stringTextField.getDocument().addDocumentListener(documentListener); + stringTextArea.getDocument().removeDocumentListener(documentListener); + stringTextArea.setText(str); + stringTextArea.getDocument().addDocumentListener(documentListener); } @Override From 6421da1afad669cd7fc23a02e8477b9a6b62b012 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Tue, 8 Aug 2017 20:15:18 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E6=8E=92=E5=BA=8F=E5=85=AC=E5=BC=8F?= =?UTF-8?q?=E6=8C=89=E9=92=AE=E7=82=B9=E5=87=BB=E5=BC=B9=E5=87=BA=E5=85=AC?= =?UTF-8?q?=E5=BC=8F=E7=BC=96=E8=BE=91=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java | 1 + 1 file changed, 1 insertion(+) diff --git a/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java index 7cab5ddda0..0bcd22b625 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java @@ -599,6 +599,7 @@ public class CellDSColumnEditor extends CellQuickEditor { if (cellElement != null) { Object value = cellElement.getValue(); if (value != null && value instanceof DSColumn) { + this.formulaField.populateElement(cellElement); DSColumn dSColumn = (DSColumn) value; int sort = dSColumn.getOrder(); this.sortTypePane.setSelectedIndex(sort); From 18ce8baf956bb9cac3b81c902e416c508801d17f Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Tue, 8 Aug 2017 20:47:37 +0800 Subject: [PATCH 5/7] =?UTF-8?q?REPORT-3348=20=E6=B7=BB=E5=8A=A0=E6=BB=9A?= =?UTF-8?q?=E5=8A=A8=E6=9D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/quickeditor/CellQuickEditor.java | 115 ++++++++++++++++-- 1 file changed, 106 insertions(+), 9 deletions(-) diff --git a/designer/src/com/fr/quickeditor/CellQuickEditor.java b/designer/src/com/fr/quickeditor/CellQuickEditor.java index 29cb2a3078..b6cbb0f6a9 100644 --- a/designer/src/com/fr/quickeditor/CellQuickEditor.java +++ b/designer/src/com/fr/quickeditor/CellQuickEditor.java @@ -4,9 +4,11 @@ import com.fr.design.actions.UpdateAction; import com.fr.design.actions.core.ActionFactory; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.iscrollbar.UIScrollBar; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.mainframe.CellElementPropertyPane; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.ElementCasePane; import com.fr.design.menu.MenuKeySet; @@ -21,8 +23,7 @@ import javax.swing.*; import javax.swing.event.PopupMenuEvent; import javax.swing.event.PopupMenuListener; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; +import java.awt.event.*; import java.util.ArrayList; /** @@ -32,14 +33,58 @@ import java.util.ArrayList; */ public abstract class CellQuickEditor extends QuickEditor { + /*滚动条相关配置*/ + private static final int MAXVALUE = 100; + private static final int TITLE_HEIGHT = 50; + private static final int MOUSE_WHEEL_SPEED = 5; + private static final int CONTENT_PANE_WIDTH_GAP = 4; + private static final int SCROLLBAR_WIDTH = 8; + private int maxHeight = 280; + /*面板配置*/ protected UITextField columnRowTextField; protected TemplateCellElement cellElement; - protected UIComboBox comboBox; + private UIComboBox comboBox; private UpdateAction[] cellInsertActions; - private MenuKeySet[] cellInsertActionNames; private int selectedIndex; + private JPanel leftContentPane; + private UIScrollBar scrollBar; public CellQuickEditor() { + + scrollBar = new UIScrollBar(UIScrollBar.VERTICAL) { + @Override + public int getVisibleAmount() { + int preferredHeight = leftContentPane.getPreferredSize().height; + int e = MAXVALUE * (maxHeight) / preferredHeight; + setVisibleAmount(e); + return e; + } + + @Override + public int getMaximum() { + return MAXVALUE; + } + + }; + + scrollBar.addAdjustmentListener(new AdjustmentListener() { + + @Override + public void adjustmentValueChanged(AdjustmentEvent e) { + doLayout(); + } + }); + this.addMouseWheelListener(new MouseWheelListener() { + + @Override + public void mouseWheelMoved(MouseWheelEvent e) { + int value = scrollBar.getValue(); + value += MOUSE_WHEEL_SPEED * e.getWheelRotation(); + scrollBar.setValue(value); + doLayout(); + } + }); + double p = TableLayout.PREFERRED; double f = TableLayout.FILL; double[] columnSize = {p, f}; @@ -48,10 +93,11 @@ public abstract class CellQuickEditor extends QuickEditor { new Component[]{initTopContent(), null}, new Component[]{createCenterBody(), null} }; - JPanel panel = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); - this.setLayout(new BorderLayout()); + leftContentPane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); + this.setLayout(new BarLayout()); this.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); - this.add(panel, BorderLayout.CENTER); + this.add(scrollBar); + this.add(leftContentPane); } @@ -100,7 +146,7 @@ public abstract class CellQuickEditor extends QuickEditor { for (UpdateAction action : cellInsertActions) { arrayList.add(action.getMenuKeySet().getMenuKeySetName()); } - comboBox.setModel(new DefaultComboBoxModel(arrayList.toArray(new String[arrayList.size()]))); + comboBox.setModel(new DefaultComboBoxModel<>(arrayList.toArray(new String[arrayList.size()]))); } @Override @@ -122,7 +168,7 @@ public abstract class CellQuickEditor extends QuickEditor { } private String[] getDefaultComboBoxItems() { - cellInsertActionNames = ActionFactory.createCellInsertActionName(); + MenuKeySet[] cellInsertActionNames = ActionFactory.createCellInsertActionName(); ArrayList names = new ArrayList<>(); for (MenuKeySet cellInsertActionName : cellInsertActionNames) { names.add(cellInsertActionName.getMenuKeySetName()); @@ -197,4 +243,55 @@ public abstract class CellQuickEditor extends QuickEditor { * 刷新详细信息 */ protected abstract void refreshDetails(); + + /** + * 属性面板的滚动条和内容区域的布局管理类 + * yaoh.wu 由于这边不能继承{@link com.fr.design.mainframe.AbstractAttrPane.BarLayout},所以冗余了一份滚动条代码进来 + * + * @see com.fr.design.mainframe.AbstractAttrPane.BarLayout + */ + protected class BarLayout implements LayoutManager { + + @Override + public void addLayoutComponent(String name, Component comp) { + + } + + @Override + public void removeLayoutComponent(Component comp) { + + } + + @Override + public Dimension preferredLayoutSize(Container parent) { + return leftContentPane.getPreferredSize(); + } + + @Override + public Dimension minimumLayoutSize(Container parent) { + return leftContentPane.getMinimumSize(); + } + + @Override + public void layoutContainer(Container parent) { + maxHeight = CellElementPropertyPane.getInstance().getHeight() - TITLE_HEIGHT; + int beginY; + if ((MAXVALUE - scrollBar.getVisibleAmount()) == 0) { + beginY = 0; + } else { + int preferredHeight = leftContentPane.getPreferredSize().height; + int value = scrollBar.getValue(); + beginY = value * (preferredHeight - maxHeight) / (MAXVALUE - scrollBar.getVisibleAmount()); + } + int width = parent.getWidth(); + int height = parent.getHeight(); + if (leftContentPane.getPreferredSize().height > maxHeight) { + leftContentPane.setBounds(0, -beginY, width - scrollBar.getWidth() - CONTENT_PANE_WIDTH_GAP, height + beginY); + scrollBar.setBounds(width - scrollBar.getWidth() - 1, 0, scrollBar.getWidth(), height); + } else { + leftContentPane.setBounds(0, 0, width - SCROLLBAR_WIDTH - CONTENT_PANE_WIDTH_GAP, height); + } + leftContentPane.validate(); + } + } } \ No newline at end of file From 35b57ab86010712f71b018901e3bef233f53fbd0 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Tue, 8 Aug 2017 21:56:27 +0800 Subject: [PATCH 6/7] =?UTF-8?q?REPORT-3348=20=E8=A7=86=E8=A7=89=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/quickeditor/CellQuickEditor.java | 13 ++++++++++--- .../cellquick/CellBiasTextPainterEditor.java | 11 +++++++---- .../quickeditor/cellquick/CellDSColumnEditor.java | 8 ++------ .../quickeditor/cellquick/CellImageQuickEditor.java | 12 +++++++----- .../quickeditor/cellquick/CellRichTextEditor.java | 12 ++++++++---- .../cellquick/CellStringQuickEditor.java | 4 +--- .../quickeditor/cellquick/CellSubReportEditor.java | 12 ++++++++---- 7 files changed, 43 insertions(+), 29 deletions(-) diff --git a/designer/src/com/fr/quickeditor/CellQuickEditor.java b/designer/src/com/fr/quickeditor/CellQuickEditor.java index b6cbb0f6a9..2e1f4531d2 100644 --- a/designer/src/com/fr/quickeditor/CellQuickEditor.java +++ b/designer/src/com/fr/quickeditor/CellQuickEditor.java @@ -48,6 +48,12 @@ public abstract class CellQuickEditor extends QuickEditor { private int selectedIndex; private JPanel leftContentPane; private UIScrollBar scrollBar; + /*占位label*/ + protected static UILabel emptyLabel = new UILabel(); + + static { + emptyLabel.setPreferredSize(new Dimension(60, 20)); + } public CellQuickEditor() { @@ -89,13 +95,14 @@ public abstract class CellQuickEditor extends QuickEditor { double f = TableLayout.FILL; double[] columnSize = {p, f}; double[] rowSize = {p, p}; + JComponent centerBody = createCenterBody(); + centerBody.setBorder(BorderFactory.createMatteBorder(0, 10, 0, 0, this.getBackground())); Component[][] components = new Component[][]{ new Component[]{initTopContent(), null}, - new Component[]{createCenterBody(), null} + new Component[]{centerBody, null} }; leftContentPane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); this.setLayout(new BarLayout()); - this.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); this.add(scrollBar); this.add(leftContentPane); } @@ -116,7 +123,7 @@ public abstract class CellQuickEditor extends QuickEditor { new Component[]{insertContentLabel, cellElementEditButton}, }; JPanel topContent = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); - topContent.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 15)); + topContent.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 0)); return topContent; } diff --git a/designer/src/com/fr/quickeditor/cellquick/CellBiasTextPainterEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellBiasTextPainterEditor.java index 261a1111ad..c9a1ad1e17 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellBiasTextPainterEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellBiasTextPainterEditor.java @@ -5,9 +5,10 @@ import com.fr.design.actions.insert.cell.BiasCellAction; import com.fr.design.cell.editor.BiasTextPainterCellEditor.BiasTextPainterPane; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.DesignerContext; import com.fr.general.ComparatorUtils; -import com.fr.general.IOUtils; import com.fr.general.Inter; import com.fr.quickeditor.CellQuickEditor; import com.fr.report.cell.painter.BiasTextPainter; @@ -25,8 +26,7 @@ public class CellBiasTextPainterEditor extends CellQuickEditor { @Override public JComponent createCenterBody() { JPanel content = new JPanel(new BorderLayout()); - content.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 15)); - UIButton editButton = new UIButton(Inter.getLocText("Edit"), IOUtils.readIcon("/com/fr/design/images/m_insert/bias.png")); + UIButton editButton = new UIButton(Inter.getLocText("Edit")); editButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -34,7 +34,10 @@ public class CellBiasTextPainterEditor extends CellQuickEditor { } }); editButton.setOpaque(false); - content.add(editButton, BorderLayout.CENTER); + content.add(TableLayoutHelper.createTableLayoutPane(new Component[][]{ + new Component[]{emptyLabel, editButton}}, + new double[]{TableLayout.PREFERRED}, + new double[]{TableLayout.PREFERRED, TableLayout.FILL}), BorderLayout.CENTER); return content; } diff --git a/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java index 0bcd22b625..254b9102da 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java @@ -135,7 +135,6 @@ public class CellDSColumnEditor extends CellQuickEditor { String[] iconArray = new String[paneList.size()]; card = new CardLayout(); cardContainer = new JPanel(card); - cardContainer.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); for (int i = 0; i < paneList.size(); i++) { CellEditorPane pane = paneList.get(i); iconArray[i] = pane.getIconPath(); @@ -227,9 +226,8 @@ public class CellDSColumnEditor extends CellQuickEditor { new Component[]{uiLabel, uiButton} }; conditionPane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); - this.add(this.createContentPane(), BorderLayout.CENTER); - this.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 15)); + this.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); } @@ -302,7 +300,7 @@ public class CellDSColumnEditor extends CellQuickEditor { public DSColumnAdvancedEditorPane() { this.setLayout(new BorderLayout()); this.add(this.createContentPane(), BorderLayout.CENTER); - this.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 15)); + this.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); } @@ -330,7 +328,6 @@ public class CellDSColumnEditor extends CellQuickEditor { } } - @SuppressWarnings("Duplicates") @Override public void populate() { if (cellElement != null) { @@ -374,7 +371,6 @@ public class CellDSColumnEditor extends CellQuickEditor { /** * 更新单元格扩展属性 */ - @SuppressWarnings("Duplicates") private void updateExtendConfig() { CellExpandAttr cellExpandAttr = cellElement.getCellExpandAttr(); if (cellExpandAttr == null) { diff --git a/designer/src/com/fr/quickeditor/cellquick/CellImageQuickEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellImageQuickEditor.java index 315e95c571..6bbbf5fcf5 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellImageQuickEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellImageQuickEditor.java @@ -5,10 +5,11 @@ import com.fr.design.actions.core.ActionFactory; import com.fr.design.actions.insert.cell.ImageCellAction; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.DesignerContext; import com.fr.design.report.SelectImagePane; import com.fr.general.ComparatorUtils; -import com.fr.general.IOUtils; import com.fr.general.Inter; import com.fr.quickeditor.CellQuickEditor; import com.fr.report.cell.cellattr.CellImage; @@ -33,8 +34,7 @@ public class CellImageQuickEditor extends CellQuickEditor { @Override public JComponent createCenterBody() { JPanel content = new JPanel(new BorderLayout()); - content.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 15)); - UIButton editButton = new UIButton(Inter.getLocText("Edit"), IOUtils.readIcon("/com/fr/design/images/m_insert/image.png")); + UIButton editButton = new UIButton(Inter.getLocText("Edit")); editButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -42,11 +42,13 @@ public class CellImageQuickEditor extends CellQuickEditor { } }); editButton.setOpaque(false); - content.add(editButton, BorderLayout.CENTER); + content.add(TableLayoutHelper.createTableLayoutPane(new Component[][]{ + new Component[]{emptyLabel, editButton}}, + new double[]{TableLayout.PREFERRED}, + new double[]{TableLayout.PREFERRED, TableLayout.FILL}), BorderLayout.CENTER); return content; } - @SuppressWarnings("Duplicates") private void showEditingDialog() { final SelectImagePane imageEditorPane = new SelectImagePane(); imageEditorPane.populate(cellElement); diff --git a/designer/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java index a0cbf705bd..9e9bf3bc9d 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellRichTextEditor.java @@ -3,6 +3,8 @@ package com.fr.quickeditor.cellquick; import com.fr.design.actions.core.ActionFactory; import com.fr.design.actions.insert.cell.RichTextCellAction; import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; import com.fr.general.Inter; import com.fr.quickeditor.CellQuickEditor; @@ -22,14 +24,15 @@ public class CellRichTextEditor extends CellQuickEditor { super(); } - @SuppressWarnings("Duplicates") @Override public JComponent createCenterBody() { JPanel content = new JPanel(new BorderLayout()); - content.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 15)); richTextButton = new UIButton(); richTextButton.setOpaque(false); - content.add(richTextButton, BorderLayout.CENTER); + content.add(TableLayoutHelper.createTableLayoutPane(new Component[][]{ + new Component[]{emptyLabel, richTextButton}}, + new double[]{TableLayout.PREFERRED}, + new double[]{TableLayout.PREFERRED, TableLayout.FILL}), BorderLayout.CENTER); return content; } @@ -41,7 +44,8 @@ public class CellRichTextEditor extends CellQuickEditor { @Override protected void refreshDetails() { RichTextCellAction subReportCellAction = new RichTextCellAction(tc); - subReportCellAction.setName(Inter.getLocText("FR-Designer_RichTextEditor")); + subReportCellAction.setName(Inter.getLocText("Edit")); + subReportCellAction.setSmallIcon(null); richTextButton.setAction(subReportCellAction); } diff --git a/designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java index b6af023c07..d0dffdfbd9 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellStringQuickEditor.java @@ -28,7 +28,6 @@ public class CellStringQuickEditor extends CellQuickEditor { //编辑状态 private boolean isEditing = false; - //august:如果是原来编辑的是公式,要保留公式里的这些属性,不然在公式和字符串转化时,就会丢失这些属性设置。 private boolean reserveInResult = false; private boolean reserveOnWriteOrAnaly = true; @@ -61,7 +60,6 @@ public class CellStringQuickEditor extends CellQuickEditor { @Override public JComponent createCenterBody() { JPanel content = new JPanel(new BorderLayout()); - content.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 15)); stringTextArea = new UITextArea(); stringTextArea.addKeyListener(new KeyAdapter() { @@ -71,7 +69,7 @@ public class CellStringQuickEditor extends CellQuickEditor { return; } if (e.getKeyCode() == KeyEvent.VK_ENTER) { - //todo yaoh.wu虽然模仿选中单元格按enter可以做到,但是原理没有弄清楚。 + //todo 按enter键换至下一个单元格 yaoh.wu虽然模仿选中单元格按enter这种场景可以做到,但是原理没有弄清楚。 GridKeyListener dispatchListener = new GridKeyListener(tc.getGrid()); dispatchListener.keyPressed(e); dispatchListener.keyTyped(e); diff --git a/designer/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java index 3ef0cda8aa..c2d5e52df6 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellSubReportEditor.java @@ -3,6 +3,8 @@ package com.fr.quickeditor.cellquick; import com.fr.design.actions.core.ActionFactory; import com.fr.design.actions.insert.cell.SubReportCellAction; import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; import com.fr.general.Inter; import com.fr.quickeditor.CellQuickEditor; @@ -23,21 +25,23 @@ public class CellSubReportEditor extends CellQuickEditor { super(); } - @SuppressWarnings("Duplicates") @Override public JComponent createCenterBody() { JPanel content = new JPanel(new BorderLayout()); - content.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 15)); subReportButton = new UIButton(); subReportButton.setOpaque(false); - content.add(subReportButton, BorderLayout.CENTER); + content.add(TableLayoutHelper.createTableLayoutPane(new Component[][]{ + new Component[]{emptyLabel, subReportButton}}, + new double[]{TableLayout.PREFERRED}, + new double[]{TableLayout.PREFERRED, TableLayout.FILL}), BorderLayout.CENTER); return content; } @Override protected void refreshDetails() { SubReportCellAction subReportCellAction = new SubReportCellAction(tc); - subReportCellAction.setName(Inter.getLocText(new String[]{"Edit", "Sub_Report"})); + subReportCellAction.setName(Inter.getLocText("Edit")); + subReportCellAction.setSmallIcon(null); subReportButton.setAction(subReportCellAction); } From 8df5162585355e4458d882b52fa0fda627a8cf4b Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Tue, 8 Aug 2017 22:58:30 +0800 Subject: [PATCH 7/7] =?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