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.