summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Kennke <roman@kennke.org>2006-05-05 09:41:15 +0000
committerRoman Kennke <roman@kennke.org>2006-05-05 09:41:15 +0000
commit6de1ea301b8230c63fc59f4ce39f277842f1e63d (patch)
treefc0652667feb33556d0fd76ed589a45d01735971
parent06b4343f986f22ff9fcfae7e15f6fb2dee8b7456 (diff)
downloadclasspath-6de1ea301b8230c63fc59f4ce39f277842f1e63d.tar.gz
2006-05-05 Roman Kennke <kennke@aicas.com>
* javax/swing/JTable.java (tableChanged): Sync selection model with table model changes.
-rw-r--r--ChangeLog5
-rw-r--r--javax/swing/JTable.java26
2 files changed, 30 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index cc398753c..96ee607e8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-05-05 Roman Kennke <kennke@aicas.com>
+
+ * javax/swing/JTable.java
+ (tableChanged): Sync selection model with table model changes.
+
2006-05-05 Audrius Meskauskas <AudriusA@Bioinformatics.org>
* javax/swing/plaf/basic/BasicTreeUI.java (paint): Return early
diff --git a/javax/swing/JTable.java b/javax/swing/JTable.java
index 117560832..8a5dbb022 100644
--- a/javax/swing/JTable.java
+++ b/javax/swing/JTable.java
@@ -1955,9 +1955,33 @@ public class JTable
// affect the size parameters of the JTable. Otherwise we only need
// to perform a repaint to update the view.
if (event == null || event.getType() == TableModelEvent.INSERT)
- revalidate();
+ {
+ // Sync selection model with data model.
+ if (event != null)
+ {
+ int first = event.getFirstRow();
+ if (first < 0)
+ first = 0;
+ int last = event.getLastRow();
+ if (last < 0)
+ last = getRowCount() - 1;
+ selectionModel.insertIndexInterval(first, last - first + 1, true);
+ }
+ revalidate();
+ }
if (event == null || event.getType() == TableModelEvent.DELETE)
{
+ // Sync selection model with data model.
+ if (event != null)
+ {
+ int first = event.getFirstRow();
+ if (first < 0)
+ first = 0;
+ int last = event.getLastRow();
+ if (last < 0)
+ last = getRowCount() - 1;
+ selectionModel.removeIndexInterval(first, last);
+ }
if (dataModel.getRowCount() == 0)
clearSelection();
revalidate();