From d4fd82d1e49563622382192aa3c390d0b0b9e8a9 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Tue, 26 Sep 2017 15:54:40 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=8D=95=E5=85=83=E6=A0=BC=E5=85=83?= =?UTF-8?q?=E7=B4=A0=E6=95=B0=E6=8D=AE=E5=88=97=E6=95=B0=E6=8D=AE=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E5=88=97=E8=A1=A8=E6=98=BE=E7=A4=BA=E5=A4=9A=E5=87=BA?= =?UTF-8?q?=E7=A9=BA=E7=99=BD=E5=8C=BA=E5=9F=9F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/dscolumn/ResultSetGroupDockingPane.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/designer/src/com/fr/design/dscolumn/ResultSetGroupDockingPane.java b/designer/src/com/fr/design/dscolumn/ResultSetGroupDockingPane.java index da32086d9f..4889d250c1 100644 --- a/designer/src/com/fr/design/dscolumn/ResultSetGroupDockingPane.java +++ b/designer/src/com/fr/design/dscolumn/ResultSetGroupDockingPane.java @@ -70,7 +70,6 @@ public class ResultSetGroupDockingPane extends ResultSetGroupPane { cardLayout.show(cardPane, "groupPane"); cardPane.setPreferredSize(new Dimension(158, 20)); TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, 10); - checkButtonEnabled(); } else if (i == BIND_SELECTED) { cardLayout.show(cardPane, "listPane"); cardPane.setPreferredSize(new Dimension(0, 0)); @@ -81,8 +80,8 @@ public class ResultSetGroupDockingPane extends ResultSetGroupPane { TableLayoutHelper.modifyTableLayoutIndexVGap(contentPane, 2, 10); CellExpandAttr cellExpandAttr = cellElement.getCellExpandAttr(); cellExpandAttr.setDirection(Constants.NONE); - checkButtonEnabled(); } + checkButtonEnabled(); } }); @@ -194,11 +193,17 @@ public class ResultSetGroupDockingPane extends ResultSetGroupPane { cardPane.setPreferredSize(new Dimension(158, 50)); cardPane.revalidate(); cardPane.repaint(); - } else { + return; + } + if (groupComboBox.isEnabled() || functionComboBox.isEnabled()) { cardPane.setPreferredSize(new Dimension(158, 20)); cardPane.revalidate(); cardPane.repaint(); + return; } + cardPane.setPreferredSize(new Dimension(158, 0)); + cardPane.revalidate(); + cardPane.repaint(); } public void addListener(ItemListener listener) { From 046a7e7f9530a48145118288a3e99262cba4a474 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Tue, 26 Sep 2017 17:25:28 +0800 Subject: [PATCH 2/2] =?UTF-8?q?REPORT-4840=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=20=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=B1=87=E6=80=BB=E6=96=B9=E6=B3=95=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E4=B8=8D=E8=83=BD=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dscolumn/ResultSetGroupDockingPane.java | 37 +++++++++++++------ .../cellquick/CellDSColumnEditor.java | 2 +- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/designer/src/com/fr/design/dscolumn/ResultSetGroupDockingPane.java b/designer/src/com/fr/design/dscolumn/ResultSetGroupDockingPane.java index 4889d250c1..61ac3bd361 100644 --- a/designer/src/com/fr/design/dscolumn/ResultSetGroupDockingPane.java +++ b/designer/src/com/fr/design/dscolumn/ResultSetGroupDockingPane.java @@ -23,7 +23,7 @@ import java.awt.event.ItemListener; * 这个pane是选中数据列后,在上方QuickRegion处显示的pane * * @author zhou, yaoh.wu - * @version 2017年8月2日14点55分 + * @version 2017年9月26日17点22分 * @since 8.0 */ public class ResultSetGroupDockingPane extends ResultSetGroupPane { @@ -115,13 +115,13 @@ public class ResultSetGroupDockingPane extends ResultSetGroupPane { @Override public void populate(TemplateCellElement cellElement) { + //更新面板信息时可能会触发绑定在组件上的事件,先移除这些事件 + this.removeListener(); this.cellElement = cellElement; - - if (isNPE(cellElement)) return; + if (isNPE(cellElement)) { + return; + } DSColumn dSColumn = (DSColumn) cellElement.getValue(); - - // populate groupPane - // RecordGrouper recordGrouper = dSColumn.getGrouper(); if (recordGrouper instanceof FunctionGrouper && !((FunctionGrouper) recordGrouper).isCustom()) { int mode = recordGrouper.getDivideMode(); @@ -153,13 +153,16 @@ public class ResultSetGroupDockingPane extends ResultSetGroupPane { this.groupComboBox.setSelectedIndex(ADVANCED); } checkButtonEnabled(); + //加上面板组件的交互事件监听 + this.addListener(); } @Override public void update() { - if (isNPE(cellElement)) return; + if (isNPE(cellElement)) { + return; + } DSColumn dSColumn = (DSColumn) cellElement.getValue(); - if (this.goBox.getSelectedIndex() == BIND_GROUP) { recordGrouper = updateGroupCombox(); } else if (this.goBox.getSelectedIndex() == BIND_SELECTED) { @@ -206,10 +209,8 @@ public class ResultSetGroupDockingPane extends ResultSetGroupPane { cardPane.repaint(); } - public void addListener(ItemListener listener) { - goBox.addItemListener(listener); - groupComboBox.addItemListener(listener); - functionComboBox.addItemListener(listener); + + public void setListener(ItemListener listener) { this.listener = listener; } @@ -221,4 +222,16 @@ public class ResultSetGroupDockingPane extends ResultSetGroupPane { public void setRecordGrouper(RecordGrouper recordGrouper) { this.recordGrouper = recordGrouper; } + + private void addListener() { + goBox.addItemListener(this.listener); + groupComboBox.addItemListener(this.listener); + functionComboBox.addItemListener(this.listener); + } + + private void removeListener() { + goBox.removeItemListener(this.listener); + groupComboBox.removeItemListener(this.listener); + functionComboBox.removeItemListener(this.listener); + } } \ No newline at end of file diff --git a/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java b/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java index 1399ad2eb6..e7ccd77108 100644 --- a/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java +++ b/designer/src/com/fr/quickeditor/cellquick/CellDSColumnEditor.java @@ -219,7 +219,7 @@ public class CellDSColumnEditor extends CellQuickEditor { dataPane = new SelectedDataColumnPane(true, true, tc, cellElement); groupPane = new ResultSetGroupDockingPane(); dataPane.addListener(dataListener); - groupPane.addListener(groupListener); + groupPane.setListener(groupListener); double[] rowSize = {P}, columnSize = {P, F}; UILabel uiLabel = new UILabel(Inter.getLocText("FR-Designer_Filter_Conditions"));