From c4488e83e6db6bd24a61a2f0c41a97c30282fdca Mon Sep 17 00:00:00 2001 From: Alexander Kass Date: Tue, 5 Jul 2016 10:31:33 +0300 Subject: [PATCH] JBListTableModel: allow nested model modifications --- .../intellij/util/ui/table/JBListTableModel.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/util/ui/table/JBListTableModel.java b/platform/platform-impl/src/com/intellij/util/ui/table/JBListTableModel.java index 3f4b99b354c2..dae5f3c162c7 100644 --- a/platform/platform-impl/src/com/intellij/util/ui/table/JBListTableModel.java +++ b/platform/platform-impl/src/com/intellij/util/ui/table/JBListTableModel.java @@ -17,6 +17,7 @@ package com.intellij.util.ui.table; import com.intellij.util.ui.EditableModel; +import javax.swing.event.TableModelEvent; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableModel; @@ -28,6 +29,13 @@ public abstract class JBListTableModel extends AbstractTableModel implements Edi public JBListTableModel(TableModel model) { myModel = model; + myModel.addTableModelListener(e -> + fireTableChanged( + new TableModelEvent( + this, e.getFirstRow(), e.getLastRow(), e.getColumn(), e.getType() + ) + ) + ); } @Override @@ -63,18 +71,13 @@ public abstract class JBListTableModel extends AbstractTableModel implements Edi for (int i = 0; i < myModel.getColumnCount(); i++) { myModel.setValueAt(((JBTableRow)value).getValueAt(i), row, i); } - fireTableCellUpdated(row, column); } @Override public void addRow() { - final int count = myModel.getRowCount(); if (myModel instanceof EditableModel) { ((EditableModel)myModel).addRow(); } - if (count < myModel.getRowCount()) { - fireTableRowsInserted(count, myModel.getRowCount() - 1); - } } @Override @@ -82,7 +85,6 @@ public abstract class JBListTableModel extends AbstractTableModel implements Edi if (myModel instanceof EditableModel) { ((EditableModel)myModel).removeRow(index); } - fireTableRowsDeleted(index, index); } @Override @@ -98,6 +100,5 @@ public abstract class JBListTableModel extends AbstractTableModel implements Edi if (myModel instanceof EditableModel) { ((EditableModel)myModel).exchangeRows(oldIndex, newIndex); } - fireTableRowsUpdated(Math.min(oldIndex, newIndex), Math.max(oldIndex, newIndex)); } }