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.

Reply via email to