Author: jm
Date: 2012-05-08 13:41:28 -0700 (Tue, 08 May 2012)
New Revision: 29154
Modified:
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/BrowserTable.java
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/BrowserTableModel.java
Log:
Fixes #922: Synchronized BrowserTable/Model so that the model isn't updated
while the table is being painted
Modified:
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/BrowserTable.java
===================================================================
---
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/BrowserTable.java
2012-05-08 20:24:28 UTC (rev 29153)
+++
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/BrowserTable.java
2012-05-08 20:41:28 UTC (rev 29154)
@@ -5,6 +5,7 @@
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
+import java.awt.Graphics;
import java.awt.KeyboardFocusManager;
import java.awt.Rectangle;
import java.awt.Toolkit;
@@ -742,7 +743,11 @@
new
ValidatedObjectAndEditStringComparator(rowDataType));
}
-
-
+ @Override
+ public void paint(Graphics graphics) {
+ synchronized (getModel()) {
+ super.paint(graphics);
+ }
+ }
}
Modified:
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/BrowserTableModel.java
===================================================================
---
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/BrowserTableModel.java
2012-05-08 20:24:28 UTC (rev 29153)
+++
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/BrowserTableModel.java
2012-05-08 20:41:28 UTC (rev 29154)
@@ -320,25 +320,16 @@
final Collection<RowSetRecord> rows = e.getPayloadCollection();
- if (regularViewMode) {
- for (final RowSetRecord rowSet : rows)
- handleRowValueUpdate(rowSet.getRow(),
rowSet.getColumn(), rowSet.getValue(), rowSet.getRawValue());
- } else {
- table.clearSelection();
- fireTableDataChanged();
- SwingUtilities.invokeLater(new Runnable() {
-
- @Override
- public void run() {
- try {
-
if(tableManager.getGlobalTables().contains(dataTable) == false)
- bulkUpdate(rows);
- }
- catch (Exception e){
- // do nothing, ignore this
exception
- }
- }
- });
+ synchronized (this) {
+ if (regularViewMode) {
+ for (final RowSetRecord rowSet : rows)
+ handleRowValueUpdate(rowSet.getRow(),
rowSet.getColumn(), rowSet.getValue(), rowSet.getRawValue());
+ } else {
+ table.clearSelection();
+ fireTableDataChanged();
+
if(tableManager.getGlobalTables().contains(dataTable) == false)
+ bulkUpdate(rows);
+ }
}
}
--
You received this message because you are subscribed to the Google Groups
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/cytoscape-cvs?hl=en.