@@ -61,6 +61,8 @@ public class CsvTableEditorSwing extends CsvTableEditor implements TableDataChan
61
61
62
62
private boolean listenerApplied = false ;
63
63
64
+ private CsvColumnInfoMap lastColumnInfoMap ;
65
+
64
66
public CsvTableEditorSwing (@ NotNull Project projectArg , @ NotNull VirtualFile fileArg ) {
65
67
super (projectArg , fileArg );
66
68
@@ -102,8 +104,9 @@ private void initializedUIComponents() {
102
104
});
103
105
104
106
cbFixedHeaders .addActionListener (e -> {
107
+ Object [][] values = storeCurrentState ();
105
108
getFileEditorState ().setFixedHeaders (cbFixedHeaders .isSelected ());
106
- updateTableComponentData (getDataHandler (). getCurrentState () );
109
+ updateTableComponentData (values );
107
110
});
108
111
109
112
tblEditor .setAutoResizeMode (JTable .AUTO_RESIZE_OFF );
@@ -159,12 +162,12 @@ public void setTableRowHeight(int rowHeight) {
159
162
this .getTable ().setRowHeight (rowHeight == 0 ? ROW_LINE_HEIGHT : rowHeight );
160
163
}
161
164
162
- private Object [] generateColumnIdentifiers (TableModel tableModel ) {
165
+ private Object [] generateColumnIdentifiers (Object [][] values ) {
163
166
if (getFileEditorState ().getFixedHeaders ()) {
164
- return getFixedHeaderValues () ;
167
+ return values [ 0 ] ;
165
168
}
166
169
167
- int columnCount = tableModel . getColumnCount () ;
170
+ int columnCount = values [ 0 ]. length ;
168
171
int columnOffset = CsvEditorSettingsExternalizable .getInstance ().isZeroBasedColumnNumbering () ? 0 : 1 ;
169
172
Object [] identifiers = new Object [columnCount ];
170
173
for (int i = 0 ; i < columnCount ; ++i ) {
@@ -249,10 +252,10 @@ protected void beforeTableComponentUpdate() {
249
252
}
250
253
251
254
@ Override
252
- protected void afterTableComponentUpdate () {
255
+ protected void afterTableComponentUpdate (Object [][] values ) {
253
256
try {
254
257
DefaultTableModel tableModel = this .getTableModel ();
255
- tableModel .setColumnIdentifiers (generateColumnIdentifiers (tableModel ));
258
+ tableModel .setColumnIdentifiers (generateColumnIdentifiers (values ));
256
259
this .updateEditorLayout ();
257
260
} finally {
258
261
this .applyTableChangeListener ();
@@ -314,12 +317,12 @@ protected void updateUIComponents() {
314
317
return ;
315
318
}
316
319
317
- CsvColumnInfoMap <PsiElement > newColumnInfoMap = csvFile .getMyColumnInfoMap ();
318
- if (Objects .equals (columnInfoMap , newColumnInfoMap )) {
320
+ CsvColumnInfoMap <PsiElement > columnInfoMap = csvFile .getMyColumnInfoMap ();
321
+ if (Objects .equals (lastColumnInfoMap , columnInfoMap )) {
319
322
return ;
320
323
}
321
324
322
- columnInfoMap = newColumnInfoMap ;
325
+ lastColumnInfoMap = columnInfoMap ;
323
326
updateInteractionElements ();
324
327
DefaultTableModel tableModel = new DefaultTableModel (0 , 0 );
325
328
if (!columnInfoMap .hasErrors ()) {
@@ -385,6 +388,7 @@ protected int[] getCurrentColumnsWidths() {
385
388
}
386
389
387
390
private Object [] getFixedHeaderValues () {
391
+ CsvColumnInfoMap columnInfoMap = getColumnInfoMap ();
388
392
Object [] headerValues = new Object [columnInfoMap .getColumnInfos ().size ()];
389
393
if (!columnInfoMap .hasErrors ()) {
390
394
for (int i = 0 ; i < columnInfoMap .getColumnInfos ().size (); ++i ) {
0 commit comments