diff --git a/designer-base/src/main/java/com/fr/design/event/ComponentChangeListener.java b/designer-base/src/main/java/com/fr/design/event/ComponentChangeListener.java new file mode 100644 index 000000000..c4087ef11 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/event/ComponentChangeListener.java @@ -0,0 +1,7 @@ +package com.fr.design.event; + +import java.awt.*; + +public interface ComponentChangeListener { + void initListener(Container parentComponent); +} diff --git a/designer-base/src/main/java/com/fr/design/event/ComponentChangeObserver.java b/designer-base/src/main/java/com/fr/design/event/ComponentChangeObserver.java new file mode 100644 index 000000000..9ef75d514 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/event/ComponentChangeObserver.java @@ -0,0 +1,6 @@ +package com.fr.design.event; + + +public interface ComponentChangeObserver { + void registerChangeListener(ComponentChangeListener uiChangeableListener); +} diff --git a/designer-base/src/main/java/com/fr/design/gui/frpane/AbstractAttrNoScrollPane.java b/designer-base/src/main/java/com/fr/design/gui/frpane/AbstractAttrNoScrollPane.java index ce09568d6..046570296 100644 --- a/designer-base/src/main/java/com/fr/design/gui/frpane/AbstractAttrNoScrollPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/frpane/AbstractAttrNoScrollPane.java @@ -3,6 +3,8 @@ package com.fr.design.gui.frpane; import com.fr.design.dialog.BasicPane; import com.fr.design.event.GlobalNameListener; import com.fr.design.event.GlobalNameObserver; +import com.fr.design.event.ComponentChangeListener; +import com.fr.design.event.ComponentChangeObserver; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; import com.fr.stable.StringUtils; @@ -106,6 +108,15 @@ public abstract class AbstractAttrNoScrollPane extends BasicPane { } }); } + if(tmpComp instanceof ComponentChangeObserver){ + ComponentChangeObserver uiChangeableObserver = ((ComponentChangeObserver)tmpComp); + uiChangeableObserver.registerChangeListener(new ComponentChangeListener() { + @Override + public void initListener(Container parentComponent) { + AbstractAttrNoScrollPane.this.initListener(parentComponent); + } + }); + } } } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/cell/AbstractDSCellEditorPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/cell/AbstractDSCellEditorPane.java index 8a3b2ded4..86b93a210 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/cell/AbstractDSCellEditorPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/cell/AbstractDSCellEditorPane.java @@ -1,17 +1,7 @@ package com.fr.design.mainframe.cell; -import com.fr.design.gui.iscrollbar.UIScrollBar; -import com.fr.design.mainframe.CellElementPropertyPane; -import com.fr.quickeditor.cellquick.layout.CellElementBarLayout; - -import javax.swing.BorderFactory; -import javax.swing.JPanel; -import java.awt.Container; -import java.awt.Dimension; -import java.awt.event.AdjustmentEvent; -import java.awt.event.AdjustmentListener; -import java.awt.event.MouseWheelEvent; -import java.awt.event.MouseWheelListener; +import com.fr.design.gui.frpane.AttributeChangeListener; +import com.fr.design.mainframe.AbstractAttrPane; /** * 右侧单元格元素面板抽象类 @@ -20,26 +10,8 @@ import java.awt.event.MouseWheelListener; * @version 2017年7月25日 * @since 9.0 */ -public abstract class AbstractDSCellEditorPane extends JPanel { - - /** - * 滚动条相关配置 - */ - private static final int MAXVALUE = 100; - private static final int TITLE_HEIGHT = 95; - private static final int CONTENT_PANE_WIDTH_GAP = 3; - private static final int SCROLLBAR_WIDTH = 7; - private static final int MOUSE_WHEEL_SPEED = 5; - private int maxHeight = 280; - - private JPanel leftContentPane; - private UIScrollBar scrollBar; +public abstract class AbstractDSCellEditorPane extends AbstractAttrPane { - protected abstract JPanel createContentPane(); - - public abstract String getIconPath(); - - public abstract String title4PopupWindow(); /** * 从面板拿数据保存 @@ -51,78 +23,15 @@ public abstract class AbstractDSCellEditorPane extends JPanel { */ public abstract void populate(); - protected void createScrollPane() { - leftContentPane = this.createContentPane(); - this.prepareScrollBar(); - leftContentPane.setBorder(BorderFactory.createMatteBorder(10, 10, 0, 0, this.getBackground())); - - this.setLayout(new CellElementBarLayout(leftContentPane) { - @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_WIDTH - CONTENT_PANE_WIDTH_GAP, height + beginY); - scrollBar.setBounds(width - SCROLLBAR_WIDTH - CONTENT_PANE_WIDTH_GAP, 0, SCROLLBAR_WIDTH + CONTENT_PANE_WIDTH_GAP, height); - } else { - leftContentPane.setBounds(0, 0, width - SCROLLBAR_WIDTH - CONTENT_PANE_WIDTH_GAP, height); - } - } - }); - this.add(scrollBar); - this.add(leftContentPane); - } - - - private void prepareScrollBar() { - 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(); - } - }); - scrollBar.setPreferredSize(new Dimension(SCROLLBAR_WIDTH + CONTENT_PANE_WIDTH_GAP, this.getHeight())); - scrollBar.setBlockIncrement(SCROLLBAR_WIDTH + CONTENT_PANE_WIDTH_GAP); - scrollBar.setBorder(BorderFactory.createMatteBorder(0, CONTENT_PANE_WIDTH_GAP, 0, 0, this.getBackground())); - } /** * 释放tc */ protected abstract void release(); + + protected abstract AttributeChangeListener getAttributeChangeListener(); + + public void addAttributeChangeListener(){ + this.addAttributeChangeListener(getAttributeChangeListener()); + } } diff --git a/designer-realize/src/main/java/com/fr/design/sort/celldscolumn/CellDSColumnSortItemPane.java b/designer-realize/src/main/java/com/fr/design/sort/celldscolumn/CellDSColumnSortItemPane.java index cd7b33ee0..044d284a7 100644 --- a/designer-realize/src/main/java/com/fr/design/sort/celldscolumn/CellDSColumnSortItemPane.java +++ b/designer-realize/src/main/java/com/fr/design/sort/celldscolumn/CellDSColumnSortItemPane.java @@ -1,6 +1,5 @@ package com.fr.design.sort.celldscolumn; -import com.fr.design.event.UIObserverListener; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.sort.common.AbstractSortItemPane; import com.fr.design.sort.common.AbstractSortPane; @@ -38,13 +37,4 @@ public class CellDSColumnSortItemPane extends AbstractSortItemPane { return sortExpression; } - public void addListener(UIObserverListener uiObserverListener) { - super.addListener(uiObserverListener); - sortAreaUiComboBox.registerChangeListener(uiObserverListener); - } - - public void removeListener(UIObserverListener uiObserverListener) { - super.removeListener(uiObserverListener); - sortAreaUiComboBox.removeChangeListener(); - } } \ No newline at end of file diff --git a/designer-realize/src/main/java/com/fr/design/sort/celldscolumn/CellDSColumnSortPane.java b/designer-realize/src/main/java/com/fr/design/sort/celldscolumn/CellDSColumnSortPane.java index c215ab150..aec9c0bcc 100644 --- a/designer-realize/src/main/java/com/fr/design/sort/celldscolumn/CellDSColumnSortPane.java +++ b/designer-realize/src/main/java/com/fr/design/sort/celldscolumn/CellDSColumnSortPane.java @@ -1,16 +1,20 @@ package com.fr.design.sort.celldscolumn; +import com.fr.design.gui.ilable.UILabel; import com.fr.design.sort.common.AbstractSortPane; import com.fr.general.data.TableDataColumn; import com.fr.report.cell.TemplateCellElement; import com.fr.report.cell.cellattr.core.group.DSColumn; import com.fr.report.core.sort.common.CellSortAttr; +import javax.swing.*; + public class CellDSColumnSortPane extends AbstractSortPane { public CellDSColumnSortPane() { super(220, 150); + //this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); } @Override diff --git a/designer-realize/src/main/java/com/fr/design/sort/cellexpand/CellExpandSortItemPane.java b/designer-realize/src/main/java/com/fr/design/sort/cellexpand/CellExpandSortItemPane.java index 12be4ec20..4b14dc692 100644 --- a/designer-realize/src/main/java/com/fr/design/sort/cellexpand/CellExpandSortItemPane.java +++ b/designer-realize/src/main/java/com/fr/design/sort/cellexpand/CellExpandSortItemPane.java @@ -1,6 +1,5 @@ package com.fr.design.sort.cellexpand; -import com.fr.design.event.UIObserverListener; import com.fr.design.sort.common.AbstractSortPane; import com.fr.design.sort.common.SortColumnRowPane; import com.fr.design.sort.common.AbstractSortItemPane; @@ -35,14 +34,4 @@ public class CellExpandSortItemPane extends AbstractSortItemPane { } return sortExpression; } - - public void addListener(UIObserverListener uiObserverListener) { - super.addListener(uiObserverListener); - columnRowPane.addListener(uiObserverListener); - } - - public void removeListener(UIObserverListener uiObserverListener) { - super.removeListener(uiObserverListener); - columnRowPane.removeListener(uiObserverListener); - } } diff --git a/designer-realize/src/main/java/com/fr/design/sort/cellexpand/CellExpandSortPane.java b/designer-realize/src/main/java/com/fr/design/sort/cellexpand/CellExpandSortPane.java index e230d319d..5bfc20eea 100644 --- a/designer-realize/src/main/java/com/fr/design/sort/cellexpand/CellExpandSortPane.java +++ b/designer-realize/src/main/java/com/fr/design/sort/cellexpand/CellExpandSortPane.java @@ -1,22 +1,14 @@ package com.fr.design.sort.cellexpand; -import com.fr.design.event.UIObserverListener; -import com.fr.design.gui.frpane.AttributeChangeListener; + import com.fr.design.mainframe.cell.settingpane.CellExpandAttrPane; import com.fr.design.sort.common.AbstractSortPane; import com.fr.report.cell.TemplateCellElement; import com.fr.report.cell.cellattr.CellExpandAttr; -import com.fr.report.cell.cellattr.core.group.DSColumn; import com.fr.report.core.sort.common.CellSortAttr; -import com.fr.report.core.sort.sortexpression.FormulaSortExpression; -import com.fr.report.core.sort.sortexpression.SortExpression; -import com.fr.report.core.sort.header.SortHeader; -import com.fr.report.core.sort.common.SortRule; import javax.swing.*; -import java.util.ArrayList; -import java.util.List; public class CellExpandSortPane extends AbstractSortPane { CellExpandAttrPane cellExpandAttrPane; @@ -33,19 +25,6 @@ public class CellExpandSortPane extends AbstractSortPane { this.add(sortGroupPane); } - @Override - protected void initUIObserverListener() { - uiObserverListener = new UIObserverListener() { - @Override - public void doChange() { - AttributeChangeListener attributeChangeListener = cellExpandAttrPane.getListener(); - if (attributeChangeListener != null) { - attributeChangeListener.attributeChange(); - } - } - }; - } - @Override protected CellSortAttr getCellSortAttr(TemplateCellElement cellElement) { CellExpandAttr cellExpandAttr = cellElement.getCellExpandAttr(); diff --git a/designer-realize/src/main/java/com/fr/design/sort/common/AbstractSortGroupPane.java b/designer-realize/src/main/java/com/fr/design/sort/common/AbstractSortGroupPane.java index ed1fde242..85cd58ec9 100644 --- a/designer-realize/src/main/java/com/fr/design/sort/common/AbstractSortGroupPane.java +++ b/designer-realize/src/main/java/com/fr/design/sort/common/AbstractSortGroupPane.java @@ -1,7 +1,8 @@ package com.fr.design.sort.common; import com.fr.base.svg.IconUtils; -import com.fr.design.event.UIObserverListener; +import com.fr.design.event.ComponentChangeListener; +import com.fr.design.event.ComponentChangeObserver; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.i18n.Toolkit; import com.fr.report.core.sort.sortexpression.CellSortExpression; @@ -9,98 +10,114 @@ import com.fr.report.core.sort.sortexpression.SortExpression; import javax.swing.*; import java.awt.*; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; -public abstract class AbstractSortGroupPane extends JPanel { +public abstract class AbstractSortGroupPane extends JPanel implements ComponentChangeObserver { protected int sortGroupPaneWidth; protected int sortGroupPaneRightWidth; - UIObserverListener uiObserverListener; List sortExpressions; - List sortItemPanes = new ArrayList<>(); + List sortItemPanes = new ArrayList<>(); AddSortItemBar addSortItemBar; + JPanel sortItemListPane; UIButton uiButton; String selfSortArea; + ComponentChangeListener componentChangeListener; + public AbstractSortGroupPane(int sortGroupPaneWidth, int sortGroupPaneRightWidth) { this.sortGroupPaneRightWidth = sortGroupPaneRightWidth; this.sortGroupPaneWidth = sortGroupPaneWidth; this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); - initComponents(); } private void initComponents() { addSortItemBar = new AddSortItemBar(this); + sortItemListPane = new JPanel(); + sortItemListPane.setLayout(new BoxLayout(sortItemListPane, BoxLayout.Y_AXIS)); + this.add(sortItemListPane); this.add(addSortItemBar); } public void populateBean(List sortExpressions, String selfSortArea) { + this.sortItemListPane.removeAll(); this.selfSortArea = selfSortArea; this.sortExpressions = sortExpressions; - refreshBean(); - } - - public void refreshBean() { - removeListener(uiObserverListener); - this.removeAll(); - sortItemPanes = new ArrayList<>(); + this.sortItemPanes = new ArrayList<>(); for (int i = 0; i < sortExpressions.size(); i++) { - int sortItemPaneWidth = sortGroupPaneWidth; - int sortItemPaneRightWidth = sortGroupPaneRightWidth; - if (i != 0) { - sortItemPaneWidth -= 12; - sortItemPaneRightWidth -= 12; - } - AbstractSortItemPane sortItemPane = refreshSortItemPane(sortItemPaneWidth, sortItemPaneRightWidth, sortExpressions.get(i)); - sortItemPanes.add(sortItemPane); - if (i == 0) { - this.add(sortItemPane); - } else { - SortUIExpandablePane sortUIExpandablePane = new SortUIExpandablePane(sortItemPane, this); - this.add(sortUIExpandablePane); - } + addSortItem(sortExpressions.get(i), i == 0); } - initComponents(); - addListener(uiObserverListener); refresh(); } protected abstract AbstractSortItemPane refreshSortItemPane(int sortItemPaneWidth, int sortItemPaneRightWidth, SortExpression sortExpression); public List updateBean() { - updateSortExpressions(); - return sortExpressions; - } - - private void updateSortExpressions() { - sortExpressions = new ArrayList<>(); - for (AbstractSortItemPane sortItemPane : sortItemPanes) { - SortExpression sortExpression = sortItemPane.updateBean(); + List sortExpressions = new ArrayList<>(); + for (JPanel sortItemPane : sortItemPanes) { + SortExpression sortExpression = null; + AbstractSortItemPane abstractSortItemPane = null; + if (sortItemPane instanceof AbstractSortItemPane) { + abstractSortItemPane = (AbstractSortItemPane) sortItemPane; + } else if (sortItemPane instanceof SortUIExpandablePane) { + abstractSortItemPane = (AbstractSortItemPane) ((SortUIExpandablePane) sortItemPane).getContentPane(); + } + if (abstractSortItemPane != null) { + sortExpression = abstractSortItemPane.updateBean(); + } if (sortExpression != null) { sortExpressions.add(sortExpression); } } + return sortExpressions; } + public void removeSortItem(int no) { - updateSortExpressions(); if (no < sortExpressions.size()) { + sortItemListPane.remove(sortItemPanes.get(no)); sortExpressions.remove(no); + sortItemPanes.remove(no); + refresh(); } - refreshBean(); } - public void addSortItem() { - updateSortExpressions(); - sortExpressions.add(new CellSortExpression(selfSortArea)); - refreshBean(); + public void registerChangeListener(ComponentChangeListener componentChangeListener) { + this.componentChangeListener = componentChangeListener; } + public void addSortItem(SortExpression sortExpression, boolean mainSort) { + int sortItemPaneWidth = sortGroupPaneWidth; + int sortItemPaneRightWidth = sortGroupPaneRightWidth; + if (!mainSort) { + sortItemPaneWidth -= 12; + sortItemPaneRightWidth -= 12; + } + if (sortExpression == null) { + sortExpression = new CellSortExpression(selfSortArea); + sortExpressions.add(sortExpression); + } + + AbstractSortItemPane abstractSortItemPane = + refreshSortItemPane(sortItemPaneWidth, sortItemPaneRightWidth, sortExpression); + + JPanel sortItemPane = abstractSortItemPane; + if (!mainSort) { + sortItemPane = new SortUIExpandablePane(abstractSortItemPane, this); + } + sortItemListPane.add(sortItemPane); + sortItemPanes.add(sortItemPane); + + if (componentChangeListener != null) { + componentChangeListener.initListener(sortItemPane); + } + refresh(); + } protected void refresh() { validate(); @@ -121,28 +138,11 @@ public abstract class AbstractSortGroupPane extends JPanel { IconUtils.readIcon("/com/fr/design/images/sort/add.png")); uiButton.setPreferredSize(new Dimension(sortGroupPaneWidth - 4, 20)); this.add(uiButton); - uiButton.addMouseListener(new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent e) { - sortGroupPane.addSortItem(); - uiObserverListener.doChange(); + uiButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + sortGroupPane.addSortItem(null, false); } }); } } - - - public void addListener(UIObserverListener uiObserverListener) { - this.uiObserverListener = uiObserverListener; - for (AbstractSortItemPane abstractSortItemPane : sortItemPanes) { - abstractSortItemPane.addListener(uiObserverListener); - } - } - - public void removeListener(UIObserverListener uiObserverListener) { - for (AbstractSortItemPane abstractSortItemPane : sortItemPanes) { - abstractSortItemPane.removeListener(uiObserverListener); - } - } - } diff --git a/designer-realize/src/main/java/com/fr/design/sort/common/AbstractSortItemPane.java b/designer-realize/src/main/java/com/fr/design/sort/common/AbstractSortItemPane.java index 0e5898552..82d14bb7e 100644 --- a/designer-realize/src/main/java/com/fr/design/sort/common/AbstractSortItemPane.java +++ b/designer-realize/src/main/java/com/fr/design/sort/common/AbstractSortItemPane.java @@ -1,6 +1,5 @@ package com.fr.design.sort.common; -import com.fr.design.event.UIObserverListener; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; @@ -146,17 +145,6 @@ public abstract class AbstractSortItemPane extends JPanel { return sortExpression; } - public void addListener(UIObserverListener uiObserverListener) { - sortBasisUiComboBox.registerChangeListener(uiObserverListener); - sortRuleUiComboBox.registerChangeListener(uiObserverListener); - } - - - public void removeListener(UIObserverListener uiObserverListener) { - sortBasisUiComboBox.removeChangeListener(); - sortRuleUiComboBox.removeChangeListener(); - } - protected void refresh() { validate(); repaint(); diff --git a/designer-realize/src/main/java/com/fr/design/sort/common/AbstractSortPane.java b/designer-realize/src/main/java/com/fr/design/sort/common/AbstractSortPane.java index 24e1f6bac..7dd539361 100644 --- a/designer-realize/src/main/java/com/fr/design/sort/common/AbstractSortPane.java +++ b/designer-realize/src/main/java/com/fr/design/sort/common/AbstractSortPane.java @@ -1,6 +1,5 @@ package com.fr.design.sort.common; -import com.fr.design.event.UIObserverListener; import com.fr.design.gui.ilable.UILabel; import com.fr.design.sort.header.SortHeaderPane; import com.fr.report.cell.TemplateCellElement; @@ -22,7 +21,6 @@ public abstract class AbstractSortPane extends JPanel { public static final int PANE_COMPONENT_HEIGHT = 20; public static final int PANE_COMPONENT_V_GAP = 4; public static final int PANE_COMPONENT_H_GAP = 14; - protected UIObserverListener uiObserverListener; protected AbstractSortGroupPane sortGroupPane; protected SortHeaderPane sortHeaderPane; protected String selfSortArea; @@ -31,7 +29,6 @@ public abstract class AbstractSortPane extends JPanel { public AbstractSortPane(int sortPaneWidth, int sortPaneRightWidth) { this.sortPaneWidth = sortPaneWidth; this.sortPaneRightWidth = sortPaneRightWidth; - initUIObserverListener(); initComponents(); } @@ -43,8 +40,6 @@ public abstract class AbstractSortPane extends JPanel { protected abstract void initSortGroupPane(); - protected void initUIObserverListener() { - } protected abstract CellSortAttr getCellSortAttr(TemplateCellElement cellElement); @@ -65,7 +60,6 @@ public abstract class AbstractSortPane extends JPanel { sortHeader = cellSortAttr.getSortHeader(); } sortHeaderPane.populateBean(sortHeader, defaultHeaderArea); - addListener(uiObserverListener); refresh(); } @@ -91,18 +85,6 @@ public abstract class AbstractSortPane extends JPanel { cellSortAttr.setSortHeader(sortHeader); } - - public void addListener(UIObserverListener uiObserverListener) { - sortGroupPane.addListener(uiObserverListener); - sortHeaderPane.addListener(uiObserverListener); - } - - - public void removeListener(UIObserverListener uiObserverListener) { - sortGroupPane.removeListener(uiObserverListener); - sortHeaderPane.removeListener(uiObserverListener); - } - protected void refresh() { validate(); repaint(); diff --git a/designer-realize/src/main/java/com/fr/design/sort/common/SortColumnRowPane.java b/designer-realize/src/main/java/com/fr/design/sort/common/SortColumnRowPane.java index 814651063..e8371b3e1 100644 --- a/designer-realize/src/main/java/com/fr/design/sort/common/SortColumnRowPane.java +++ b/designer-realize/src/main/java/com/fr/design/sort/common/SortColumnRowPane.java @@ -2,6 +2,7 @@ package com.fr.design.sort.common; import com.fr.base.svg.IconUtils; import com.fr.design.designer.TargetComponent; +import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.gui.ibutton.UIButton; @@ -21,7 +22,7 @@ import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -public class SortColumnRowPane extends JPanel { +public class SortColumnRowPane extends JPanel implements UIObserver { int paneWidth; int paneHeight; int jTextFieldWidth; @@ -89,6 +90,11 @@ public class SortColumnRowPane extends JPanel { refresh(); } + public void setColumnRow(ColumnRow columnRow){ + populateBean(columnRow); + uiObserverListener.doChange(); + } + public ColumnRow updateBean() { if (StringUtils.isNotBlank(colJTextField.getText()) && StringUtils.isNotBlank(rowJTextField.getText())) { return ColumnRow.valueOf(colJTextField.getText() + rowJTextField.getText()); @@ -96,6 +102,16 @@ public class SortColumnRowPane extends JPanel { return null; } + @Override + public void registerChangeListener(UIObserverListener listener) { + this.uiObserverListener = listener; + } + + @Override + public boolean shouldResponseChangeListener() { + return true; + } + class SelectActionListener implements ActionListener { SortColumnRowPane columnRowPane; @@ -122,10 +138,7 @@ public class SortColumnRowPane extends JPanel { CellSelection cellselection = (CellSelection) selection; ColumnRow cr = ColumnRow.valueOf(cellselection.getColumn(), cellselection.getRow()); elementCasePane.setOldSelecton(oldSelection); - columnRowPane.populateBean(cr); - if (columnRowPane.uiObserverListener != null) { - columnRowPane.uiObserverListener.doChange(); - } + columnRowPane.setColumnRow(cr); } elementCasePane.removeSelectionChangeListener(gridSelectionChangeListener); isAlreadyAddListener = false; @@ -152,14 +165,6 @@ public class SortColumnRowPane extends JPanel { return null; } - public void addListener(UIObserverListener uiObserverListener) { - this.uiObserverListener = uiObserverListener; - } - - public void removeListener(UIObserverListener uiObserverListener) { - this.uiObserverListener = null; - } - protected void refresh() { validate(); repaint(); diff --git a/designer-realize/src/main/java/com/fr/design/sort/common/SortUIExpandablePane.java b/designer-realize/src/main/java/com/fr/design/sort/common/SortUIExpandablePane.java index 88e61a4e3..c5537ff53 100644 --- a/designer-realize/src/main/java/com/fr/design/sort/common/SortUIExpandablePane.java +++ b/designer-realize/src/main/java/com/fr/design/sort/common/SortUIExpandablePane.java @@ -48,12 +48,12 @@ public class SortUIExpandablePane extends JPanel { contentPane.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 5)); wrapPane.add(headerPane, BorderLayout.NORTH); wrapPane.add(contentPane, BorderLayout.CENTER); - setContentPanelShow(false); + setContentPanelShow(true); this.add(wrapPane); } - private void setContentPanelShow(boolean show) { + private void setContentPanelShow(Boolean show) { contentPane.setVisible(show); headerPane.setShow(show); } @@ -67,7 +67,6 @@ public class SortUIExpandablePane extends JPanel { this.sortGroupPane = sortGroupPane; this.setLayout(new FlowLayout(FlowLayout.LEFT, 3, 3)); initComponents(); - } private void initComponents() { diff --git a/designer-realize/src/main/java/com/fr/design/sort/expressionpane/CustomSequenceSortExpressionPane.java b/designer-realize/src/main/java/com/fr/design/sort/expressionpane/CustomSequenceSortExpressionPane.java index 56ccfc511..3e20d5de9 100644 --- a/designer-realize/src/main/java/com/fr/design/sort/expressionpane/CustomSequenceSortExpressionPane.java +++ b/designer-realize/src/main/java/com/fr/design/sort/expressionpane/CustomSequenceSortExpressionPane.java @@ -4,6 +4,7 @@ import com.fr.design.sort.common.AbstractSortPane; import com.fr.locale.InterProviderFactory; import com.fr.report.core.sort.sortexpression.CustomSequenceSortExpression; +import javax.swing.*; import java.awt.*; import java.util.List; @@ -15,6 +16,7 @@ public class CustomSequenceSortExpressionPane extends SortExpressionPane