Browse Source

REPORT-138421 fix:连续配置表头导致上一个表头配置丢失问题修复

fbp/master
Richard.Fang 2 months ago
parent
commit
583b884693
  1. 46
      designer-realize/src/main/java/com/fr/design/sort/header/HeaderAreaPane.java

46
designer-realize/src/main/java/com/fr/design/sort/header/HeaderAreaPane.java

@ -13,8 +13,10 @@ import com.fr.report.core.sort.header.SortHeader;
import com.fr.report.elementcase.TemplateElementCase;
import com.fr.stable.ColumnRow;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.util.ArrayList;
import java.util.Iterator;
@ -34,6 +36,7 @@ public class HeaderAreaPane extends JPanel {
SortColumnRowPane columnRowPane;
UIComboBox uiComboBox;
JPanel sortColumnRowPanel;
boolean showHeaderArea;
HeaderAreaPane(int headerAreaPaneWidth, int headerAreaPaneRightWidth) {
this.headerAreaPaneWidth = headerAreaPaneWidth;
@ -57,12 +60,43 @@ public class HeaderAreaPane extends JPanel {
}
private void initChangeListener() {
uiComboBox.addItemListener(e -> {
sortColumnRowPanel.setVisible(uiComboBox.getSelectedIndex() == 1);
uiComboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
boolean headerVisible = (uiComboBox.getSelectedIndex() == 1);
sortColumnRowPanel.setVisible(headerVisible);
// 仅在单元格状态改变时触发
if (showHeaderArea != headerVisible) {
showHeaderArea = headerVisible;
triggerItemChanged(headerVisible);
}
}
});
uiComboBox.setSelectedIndex(0);
}
private void triggerItemChanged(boolean isHeaderVisible) {
if (isHeaderVisible) {
handleCustomHeader();
} else {
handleNoHeader();
}
}
private void handleCustomHeader() {
ColumnRow columnRow = columnRowPane.updateBean();
if (cellSelectionManager.isNotSelectables(columnRow)) {
columnRowPane.setColumnRow(ColumnRow.ERROR);
} else {
cellSelectionManager.addNotSelectables(columnRow);
}
}
private void handleNoHeader() {
cellSelectionManager.removeNotSelectables(columnRowPane.updateBean());
columnRowPane.cancelSelectState();
}
public void populateBean(ColumnRow columnRow, boolean showHeaderArea, TemplateCellElement cellElement) {
this.cellElement = cellElement;
boolean enabled = true;
@ -75,9 +109,11 @@ public class HeaderAreaPane extends JPanel {
private void populateColumnRowPane(ColumnRow columnRow, boolean showHeaderArea, boolean enabled) {
cellSelectionManager.build(cellElement, columnRow);
if(showHeaderArea){
if (showHeaderArea) {
columnRow = cellSelectionManager.buildCurrentCell(cellElement, columnRow);
}
// 更新当前单元格是否已配置自定义排序表头排序
this.showHeaderArea = showHeaderArea;
columnRowPane.populateBean(columnRow, enabled, cellSelectionManager);
uiComboBox.setSelectedIndex(showHeaderArea ? 1 : 0);
uiComboBox.setEnabled(enabled);

Loading…
Cancel
Save