Author: ruschein
Date: 2011-04-11 12:38:25 -0700 (Mon, 11 Apr 2011)
New Revision: 24739

Modified:
   
core3/table-browser-impl/trunk/src/main/java/org/cytoscape/browser/internal/BrowserTableModel.java
Log:
Untested optimisation hack.

Modified: 
core3/table-browser-impl/trunk/src/main/java/org/cytoscape/browser/internal/BrowserTableModel.java
===================================================================
--- 
core3/table-browser-impl/trunk/src/main/java/org/cytoscape/browser/internal/BrowserTableModel.java
  2011-04-11 18:56:27 UTC (rev 24738)
+++ 
core3/table-browser-impl/trunk/src/main/java/org/cytoscape/browser/internal/BrowserTableModel.java
  2011-04-11 19:38:25 UTC (rev 24739)
@@ -287,11 +287,53 @@
 
        @Override
        public void handleRowSets(final CyTable table, final List<RowSet> 
rowSets) {
+               // The following is an optimisation hack to prevent excessive 
calls to
+               // fireTableDataChanged() in the case of multiple selection 
events:
+               if (tableHasBooleanSelected) {
+                       boolean foundANonSelectedColumnName = false;
+                       for (final RowSet rowSet : rowSets) {
+                               if 
(!rowSet.getColumn().equals(CyNetwork.SELECTED)) {
+                                       foundANonSelectedColumnName = true;
+                                       break;
+                               }
+                       }
+
+                       if (!foundANonSelectedColumnName) {
+                               fireTableDataChanged();
+                               return;
+                       }
+               }
+
                for (final RowSet rowSet : rowSets)
                        handleRowValueUpdate(rowSet.getRow(), 
rowSet.getColumn(), rowSet.getValue(),
                                             rowSet.getRawValue());
        }
 
+       private void handleRowValueUpdate(final CyRow row, final String 
columnName, final Object newValue,
+                                 final Object newRawValue)
+       {
+               if (tableHasBooleanSelected && 
columnName.equals(CyNetwork.SELECTED)) {
+/*
+                       final boolean selected = (Boolean)newValue;
+                       final int rowIndex = mapRowToRowIndex(row);
+                       if (!selected && rowIndex == -1)
+                               return;
+*/
+                       fireTableDataChanged();
+               } else {
+                       final int rowIndex = mapRowToRowIndex(row);
+                       if (rowIndex == -1)
+                               return;
+
+                       final int columnIndex = 
mapColumnNameToColumnIndex(columnName);
+                       if (columnIndex == -1)
+                               return;
+
+                       final TableModelEvent event = new TableModelEvent(this, 
rowIndex, rowIndex, columnIndex);
+                       fireTableChanged(event);
+               }
+       }
+
        @Override
        public String getColumnName(final int column) {
                return mapColumnIndexToColumnName(column);
@@ -347,31 +389,6 @@
                throw new IllegalStateException("We should *never* get here! 
(index="+index+", i="+i);
        }
 
-       void handleRowValueUpdate(final CyRow row, final String columnName, 
final Object newValue,
-                                 final Object newRawValue)
-       {
-               if (tableHasBooleanSelected && 
columnName.equals(CyNetwork.SELECTED)) {
-/*
-                       final boolean selected = (Boolean)newValue;
-                       final int rowIndex = mapRowToRowIndex(row);
-                       if (!selected && rowIndex == -1)
-                               return;
-*/
-                       fireTableDataChanged();
-               } else {
-                       final int rowIndex = mapRowToRowIndex(row);
-                       if (rowIndex == -1)
-                               return;
-
-                       final int columnIndex = 
mapColumnNameToColumnIndex(columnName);
-                       if (columnIndex == -1)
-                               return;
-
-                       final TableModelEvent event = new TableModelEvent(this, 
rowIndex, rowIndex, columnIndex);
-                       fireTableChanged(event);
-               }
-       }
-
        @Override
        public void setValueAt(final Object value, final int rowIndex, final 
int columnIndex) {
                final String text = (String)value;

-- 
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