|
|
|
@ -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); |
|
|
|
|