Author: kono
Date: 2012-03-14 17:52:18 -0700 (Wed, 14 Mar 2012)
New Revision: 28546

Modified:
   
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/datatable/CyAttributesReader.java
   
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/AbstractTableBrowser.java
   
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
   
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/GlobalTableBrowser.java
   
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/util/TableBrowserUtil.java
Log:
fixes #741 Global table handlers had been fixed.  Unnecessary update will not 
be called for global tables.

Modified: 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/datatable/CyAttributesReader.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/datatable/CyAttributesReader.java
        2012-03-15 00:35:15 UTC (rev 28545)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/datatable/CyAttributesReader.java
        2012-03-15 00:52:18 UTC (rev 28546)
@@ -41,7 +41,7 @@
        private static final byte TYPE_STRING = 4;
 
        private static enum TableType {
-               NODE("Node"), EDGE("Edge"), NETWORK("Network"), 
GLOBAL("Global");
+               NODE("Node"), EDGE("Edge"), NETWORK("Network"), GLOBAL("Global 
(Not associated with any networks)");
 
                private final String name;
 
@@ -102,6 +102,7 @@
                        options.add(TableType.GLOBAL);
 
                dataTypeOptions = new ListSingleSelection<TableType>(options);
+               dataTypeOptions.setSelectedValue(TableType.GLOBAL);
        }
 
        @Override

Modified: 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/AbstractTableBrowser.java
===================================================================
--- 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/AbstractTableBrowser.java
  2012-03-15 00:35:15 UTC (rev 28545)
+++ 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/AbstractTableBrowser.java
  2012-03-15 00:52:18 UTC (rev 28546)
@@ -61,6 +61,7 @@
        private final OpenBrowser openBrowser;
        private final PopupMenuHelper popupMenuHelper; 
        private final CyEventHelper eventHelper;
+       
 
        // Tab title for the CytoPanel
        private final String tabTitle;
@@ -178,10 +179,10 @@
                BrowserTableModel btm = browserTableModels.get(currentTable);
                
                if (btm == null) {
-                       final BrowserTable browserTable = new 
BrowserTable(openBrowser, compiler, 
-                                                                          
popupMenuHelper, applicationManager, 
-                                                                          
eventHelper);
-                       btm = new BrowserTableModel(browserTable, currentTable, 
compiler);
+                       final BrowserTable browserTable = new 
BrowserTable(openBrowser, compiler, popupMenuHelper,
+                                       applicationManager, eventHelper, 
networkTableManager);
+                       
+                       btm = new BrowserTableModel(browserTable, currentTable, 
compiler, networkTableManager);
                        browserTableModels.put(currentTable, btm);
                }
                

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-03-15 00:35:15 UTC (rev 28545)
+++ 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/BrowserTable.java
  2012-03-15 00:52:18 UTC (rev 28546)
@@ -56,7 +56,9 @@
 import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.model.CyColumn;
 import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyNetworkTableManager;
 import org.cytoscape.model.CyRow;
+import org.cytoscape.model.CyTable;
 import org.cytoscape.model.CyTableEntry;
 import org.cytoscape.util.swing.OpenBrowser;
 import org.cytoscape.view.model.CyNetworkView;
@@ -93,16 +95,18 @@
        
        private final CyApplicationManager applicationManager;
        private final CyEventHelper eventHelper;
+       private final CyNetworkTableManager networkTableManager;
 
        public BrowserTable(final OpenBrowser openBrowser, final 
EquationCompiler compiler,
                        final PopupMenuHelper popupMenuHelper, final 
CyApplicationManager applicationManager,
-                       final CyEventHelper eventHelper) {
+                       final CyEventHelper eventHelper, final 
CyNetworkTableManager networkTableManager) {
                this.openBrowser     = openBrowser;
                this.compiler        = compiler;
                this.popupMenuHelper = popupMenuHelper;
                this.updateColumnComparators = false;
                this.applicationManager = applicationManager;
                this.eventHelper = eventHelper;
+               this.networkTableManager = networkTableManager;
 
                initHeader();
                setCellSelectionEnabled(true);
@@ -216,10 +220,15 @@
                if(model instanceof BrowserTableModel == false)
                        return;
                
-               BrowserTableModel btModel = (BrowserTableModel) model;
+               final BrowserTableModel btModel = (BrowserTableModel) model;
+               
                if(btModel.isShowAll() == false)
                        return;
                
+               final CyTable table = btModel.getDataTable();
+               final CyColumn pKey = table.getPrimaryKey();
+               final String pKeyName = pKey.getName();
+               
                final int[] rowsSelected = getSelectedRows();
                if (rowsSelected.length == 0)
                        return;
@@ -228,36 +237,39 @@
                
                //TODO: performance tuning
                final int columnCount = this.getColumnCount();
-               int colIdx;
-               for(colIdx=0; colIdx<columnCount; colIdx++) {
-                       final String colName = this.getColumnName(colIdx);
-                       if(colName.equals(CyTableEntry.SUID))
+               int targetColIdx;
+               for(targetColIdx = 0; targetColIdx<columnCount; targetColIdx++) 
{
+                       final String colName = this.getColumnName(targetColIdx);
+                       if(colName.equals(pKeyName))
                                break;
                }
                
                final Set<CyRow> targetRows = new HashSet<CyRow>();
                for(int i=0; i<selectedRowCount; i++) {
-                       ValidatedObjectAndEditString selected = 
(ValidatedObjectAndEditString) this.getValueAt(rowsSelected[i], colIdx);
+                       final ValidatedObjectAndEditString selected = 
(ValidatedObjectAndEditString) this.getValueAt(rowsSelected[i], targetColIdx);
                        
targetRows.add(btModel.getRow(selected.getValidatedObject()));
                }
-               // Clear selection
-               List<CyRow> allRows = btModel.getDataTable().getAllRows();
-               for(CyRow row: allRows) {
-                       final Boolean val = row.get(CyNetwork.SELECTED, 
Boolean.class);
-                       if(targetRows.contains(row)) {
-                               row.set(CyNetwork.SELECTED, true);
-                               continue;
+
+               // Clear selection for non-global table
+               if (TableBrowserUtil.isGlobalTable(table, networkTableManager) 
== false) {
+                       List<CyRow> allRows = 
btModel.getDataTable().getAllRows();
+                       for (CyRow row : allRows) {
+                               final Boolean val = row.get(CyNetwork.SELECTED, 
Boolean.class);
+                               if (targetRows.contains(row)) {
+                                       row.set(CyNetwork.SELECTED, true);
+                                       continue;
+                               }
+                               
+                               if (val != null && (val == true))
+                                       row.set(CyNetwork.SELECTED, false);
+
+                               final CyNetworkView curView = 
applicationManager.getCurrentNetworkView();
+                               if (curView != null) {
+                                       eventHelper.flushPayloadEvents();
+                                       curView.updateView();
+                               }
                        }
-                       if(val) {
-                               row.set(CyNetwork.SELECTED, false);
-                       }
                }
-               
-               final CyNetworkView curView = 
applicationManager.getCurrentNetworkView();
-               if(curView != null) {
-                       eventHelper.flushPayloadEvents();
-                       curView.updateView();
-               }
        }
 
        private void setKeyStroke() {

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-03-15 00:35:15 UTC (rev 28545)
+++ 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/BrowserTableModel.java
     2012-03-15 00:52:18 UTC (rev 28546)
@@ -19,6 +19,7 @@
 import org.cytoscape.equations.EquationCompiler;
 import org.cytoscape.model.CyColumn;
 import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyNetworkTableManager;
 import org.cytoscape.model.CyRow;
 import org.cytoscape.model.CyTable;
 import org.cytoscape.model.CyTableEntry;
@@ -43,6 +44,8 @@
        private final BrowserTable table;
        private final CyTable dataTable;
        private final EquationCompiler compiler;
+       
+       private final CyNetworkTableManager networkTableManager;
 
        // If this is FALSE then we show all rows
        private boolean regularViewMode;
@@ -55,11 +58,13 @@
        private int maxRowIndex;
 
 
-       public BrowserTableModel(final BrowserTable table, final CyTable 
dataTable, final EquationCompiler compiler) {
+       public BrowserTableModel(final BrowserTable table, final CyTable 
dataTable, final EquationCompiler compiler, final CyNetworkTableManager 
networkTableManager) {
                this.table = table;
                this.dataTable = dataTable;
                this.compiler = compiler;
                this.regularViewMode = false; 
+               this.networkTableManager = networkTableManager;
+               
                initAttrNamesAndVisibilities();
 
                // add each row to an array to allow fast lookup from an index
@@ -317,10 +322,12 @@
                } else {
                        table.clearSelection();
                        SwingUtilities.invokeLater(new Runnable() {
+
                                @Override
                                public void run() {
                                        try {
-                                               bulkUpdate(rows);               
                                
+                                               
if(TableBrowserUtil.isGlobalTable(dataTable, networkTableManager) == false)
+                                                       bulkUpdate(rows);       
                                        
                                        }
                                        catch (Exception e){
                                                // do nothing, ignore this 
exception
@@ -365,7 +372,7 @@
        private void bulkUpdate(final Collection<RowSetRecord> rows) {
                final int columnCount = table.getColumnCount();
                int tablePKeyIndex = 0;
-               // Find SUID index.
+               // Find Primary key index.
                for (int i = 0; i < columnCount; i++) {
                        final String colName = table.getColumnName(i);
                        if (colName.equals(CyTableEntry.SUID)) {

Modified: 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/GlobalTableBrowser.java
===================================================================
--- 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/GlobalTableBrowser.java
    2012-03-15 00:35:15 UTC (rev 28545)
+++ 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/GlobalTableBrowser.java
    2012-03-15 00:52:18 UTC (rev 28546)
@@ -4,21 +4,15 @@
 import java.awt.Color;
 import java.awt.Font;
 import java.awt.event.ActionEvent;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
 
 import org.cytoscape.application.CyApplicationManager;
 import org.cytoscape.browser.internal.TableChooser.GlobalTableComboBoxModel;
+import org.cytoscape.browser.internal.util.TableBrowserUtil;
 import org.cytoscape.equations.EquationCompiler;
 import org.cytoscape.event.CyEventHelper;
-import org.cytoscape.model.CyEdge;
-import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyNetworkManager;
 import org.cytoscape.model.CyNetworkTableManager;
-import org.cytoscape.model.CyNode;
 import org.cytoscape.model.CyTable;
-import org.cytoscape.model.CyTableEntry;
 import org.cytoscape.model.CyTableManager;
 import org.cytoscape.model.events.TableAboutToBeDeletedEvent;
 import org.cytoscape.model.events.TableAboutToBeDeletedListener;
@@ -33,8 +27,6 @@
 
        private static final long serialVersionUID = 2269984225983802421L;
 
-       private static final Class<?>[] OBJECT_TYPES = {CyNode.class, 
CyEdge.class, CyNetwork.class};
-
        static final Color GLOBAL_TABLE_COLOR = new Color(0x1E, 0x90, 0xFF);
        static final Color GLOBAL_TABLE_ENTRY_COLOR = new Color(0x1E, 0x90, 
0xFF, 150);
        static final Color GLOBAL_TABLE_BACKGROUND_COLOR = new Color(0x87, 
0xCE, 0xFA, 50);
@@ -101,7 +93,7 @@
                final CyTable newTable = e.getTable();
 
                if (newTable.isPublic()) {
-                       if (isGlobalTable(newTable)) {
+                       if (TableBrowserUtil.isGlobalTable(newTable, 
networkTableManager)) {
                                final GlobalTableComboBoxModel comboBoxModel = 
(GlobalTableComboBoxModel) tableChooser.getModel();
                                comboBoxModel.addAndSetSelectedItem(newTable);
                        }
@@ -111,21 +103,5 @@
                }
        }
 
-       private boolean isGlobalTable(final CyTable table) {
-               final Set<CyTable> nonGlobalTables = new HashSet<CyTable>();
-               final Set<CyNetwork> networks = 
this.networkTableManager.getNetworkSet();
-
-               for (CyNetwork network : networks) {
-                       for (Class<?> type : OBJECT_TYPES) {
-                               final Map<String, CyTable> objTables = 
this.networkTableManager.getTables(network,
-                                               (Class<? extends CyTableEntry>) 
type);
-                               nonGlobalTables.addAll(objTables.values());
-                       }
-               }
-
-               if (nonGlobalTables.contains(table))
-                       return false;
-               else
-                       return true;
-       }
+       
 }

Modified: 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/util/TableBrowserUtil.java
===================================================================
--- 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/util/TableBrowserUtil.java
 2012-03-15 00:35:15 UTC (rev 28545)
+++ 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/util/TableBrowserUtil.java
 2012-03-15 00:52:18 UTC (rev 28546)
@@ -3,12 +3,23 @@
 import java.io.IOException;
 import java.io.StringReader;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
+import org.cytoscape.model.CyEdge;
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyNetworkManager;
+import org.cytoscape.model.CyNetworkTableManager;
+import org.cytoscape.model.CyNode;
 import org.cytoscape.model.CyTable;
+import org.cytoscape.model.CyTableEntry;
 
-public class TableBrowserUtil {
+public final class TableBrowserUtil {
 
+       private static final Class<?>[] OBJECT_TYPES = {CyNode.class, 
CyEdge.class, CyNetwork.class};
+       
        private static final int EOF = -1;
 
        public static Object parseLong(final String text, final StringBuilder 
errorMessage) {
@@ -383,4 +394,22 @@
                        throw new IllegalStateException("This should *never* 
happen!");
                }
        }
+       
+       public static boolean isGlobalTable(final CyTable table, final 
CyNetworkTableManager networkTableManager) {
+               final Set<CyTable> nonGlobalTables = new HashSet<CyTable>();
+               final Set<CyNetwork> networks = 
networkTableManager.getNetworkSet();
+
+               for (CyNetwork network : networks) {
+                       for (Class<?> type : OBJECT_TYPES) {
+                               final Map<String, CyTable> objTables = 
networkTableManager.getTables(network,
+                                               (Class<? extends CyTableEntry>) 
type);
+                               nonGlobalTables.addAll(objTables.values());
+                       }
+               }
+
+               if (nonGlobalTables.contains(table))
+                       return false;
+               else
+                       return true;
+       }
 }

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