Author: mes
Date: 2011-11-15 17:41:03 -0800 (Tue, 15 Nov 2011)
New Revision: 27488
Removed:
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/ColumnDescriptor.java
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/TableMetadata.java
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/BrowserTableModel.java
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/DefaultTableBrowser.java
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/GlobalTableBrowser.java
Log:
several changes to clean up the table browser
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
2011-11-16 01:10:10 UTC (rev 27487)
+++
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/AbstractTableBrowser.java
2011-11-16 01:41:03 UTC (rev 27488)
@@ -54,17 +54,20 @@
protected final CyServiceRegistrar serviceRegistrar;
private final EquationCompiler compiler;
- protected final BrowserTable browserTable;
protected AttributeBrowserToolBar attributeBrowserToolBar;
- protected BrowserTableModel browserTableModel;
protected CyTable currentTable;
- protected final Map<CyTable, TableMetadata> tableToMetadataMap;
protected final CyApplicationManager applicationManager;
protected final CyNetworkManager networkManager;
+ private final OpenBrowser openBrowser;
+ private final PopupMenuHelper popupMenuHelper;
+ private final CyEventHelper eventHelper;
// Tab title for the CytoPanel
private final String tabTitle;
+ private final Map<BrowserTableModel,JScrollPane> scrollPanes;
+ private final Map<CyTable,BrowserTableModel> browserTableModels;
+ private JScrollPane currentScrollPane;
AbstractTableBrowser(final String tabTitle,
final CyTableManager tableManager, final
CyNetworkTableManager networkTableManager,
@@ -77,18 +80,16 @@
this.compiler = compiler;
this.tabTitle = tabTitle;
this.networkManager = networkManager;
-
- this.tableToMetadataMap = new HashMap<CyTable, TableMetadata>();
this.applicationManager = applicationManager;
+ this.openBrowser = openBrowser;
+ this.popupMenuHelper = popupMenuHelper;
+ this.eventHelper = eventHelper;
- this.browserTable = new BrowserTable(openBrowser, compiler,
popupMenuHelper, applicationManager, eventHelper);
+ this.scrollPanes = new HashMap<BrowserTableModel,JScrollPane>();
+ this.browserTableModels = new
HashMap<CyTable,BrowserTableModel>();
+ this.currentScrollPane = null;
this.setLayout(new BorderLayout());
-
- browserTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
- browserTable.getTableHeader().setBackground(Color.LIGHT_GRAY);
- add(new JScrollPane(browserTable), BorderLayout.CENTER);
-
this.setPreferredSize(PANEL_SIZE);
this.setSize(PANEL_SIZE);
}
@@ -118,41 +119,50 @@
*/
public Icon getIcon() { return null; }
-
- void showSelectedTable() {
- browserTableModel = new BrowserTableModel(browserTable,
currentTable, compiler);
-
- serviceRegistrar.registerAllServices(browserTableModel, new
Properties());
- browserTable.setUpdateComparators(false);
- browserTable.setModel(browserTableModel);
- final TableRowSorter rowSorter = new
TableRowSorter(browserTableModel);
- browserTable.setRowSorter(rowSorter);
- updateColumnComparators(rowSorter);
- browserTable.setUpdateComparators(true);
- attributeBrowserToolBar.setBrowserTableModel(browserTableModel);
- final TableMetadata tableMetadata =
tableToMetadataMap.get(currentTable);
- if (tableMetadata != null) {
- final JTable jTable = browserTableModel.getTable();
- final TableColumnModel columnModel =
jTable.getColumnModel();
- final Iterator<ColumnDescriptor> columnDescIter =
- tableMetadata.getColumnDescriptors();
- while (columnDescIter.hasNext()) {
- final ColumnDescriptor desc =
columnDescIter.next();
- final int savedColumnIndex =
desc.getColumnIndex();
- final TableColumn tableColumn =
columnModel.getColumn(savedColumnIndex);
-
tableColumn.setPreferredWidth(desc.getColumnWidth());
- final int currentColumnIndex =
- jTable.convertColumnIndexToView(
-
browserTableModel.mapColumnNameToColumnIndex(desc.getColumnName()));
- if (currentColumnIndex != savedColumnIndex)
- jTable.moveColumn(currentColumnIndex,
savedColumnIndex);
- }
+ synchronized void showSelectedTable() {
+ final BrowserTableModel currentBrowserTableModel =
getCurrentBrowserTableModel();
+ final JScrollPane newScrollPane =
getScrollPane(currentBrowserTableModel);
+ if ( currentScrollPane != null )
+ remove( currentScrollPane );
+ add( newScrollPane, BorderLayout.CENTER );
+ currentScrollPane = newScrollPane;
+ applicationManager.setCurrentTable(currentTable);
+
attributeBrowserToolBar.setBrowserTableModel(currentBrowserTableModel);
+ }
+
+ private JScrollPane getScrollPane(final BrowserTableModel
browserTableModel) {
+ JScrollPane scrollPane = scrollPanes.get(browserTableModel);
+ if ( scrollPane == null ) {
+ final BrowserTable browserTable =
browserTableModel.getBrowserTable();
+ serviceRegistrar.registerAllServices(browserTableModel,
new Properties());
+ browserTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
+
browserTable.getTableHeader().setBackground(Color.LIGHT_GRAY);
+ browserTable.setUpdateComparators(false);
+ browserTable.setModel(browserTableModel);
+ final TableRowSorter rowSorter = new
TableRowSorter(browserTableModel);
+ browserTable.setRowSorter(rowSorter);
+ updateColumnComparators(rowSorter,browserTableModel);
+ browserTable.setUpdateComparators(true);
+ scrollPane = new JScrollPane(browserTable);
+ scrollPanes.put(browserTableModel,scrollPane);
}
- applicationManager.setCurrentTable(currentTable);
+ return scrollPane;
}
- void updateColumnComparators(final TableRowSorter rowSorter) {
+ protected BrowserTableModel getCurrentBrowserTableModel() {
+ BrowserTableModel btm = browserTableModels.get(currentTable);
+ if ( btm == null ) {
+ final BrowserTable browserTable = new
BrowserTable(openBrowser, compiler,
+
popupMenuHelper, applicationManager,
+
eventHelper);
+ btm = new BrowserTableModel(browserTable, currentTable,
compiler);
+ browserTableModels.put(currentTable,btm);
+ }
+ return btm;
+ }
+
+ void updateColumnComparators(final TableRowSorter rowSorter, final
BrowserTableModel browserTableModel) {
for (int column = 0; column <
browserTableModel.getColumnCount(); ++column)
rowSorter.setComparator(
column,
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
2011-11-16 01:10:10 UTC (rev 27487)
+++
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/BrowserTableModel.java
2011-11-16 01:41:03 UTC (rev 27488)
@@ -40,14 +40,14 @@
private static final long serialVersionUID = -517521404005631245L;
- private static final int MAX_INITIALLY_VSIBLE_ATTRS = 10;
- private final JTable table;
+ private static final int MAX_INITIALLY_VISIBLE_ATTRS = 10;
+ private final BrowserTable table;
private final CyTable dataTable;
private final EquationCompiler compiler;
- // If this is FALSE, it's a Global.
+ // If this is FALSE then we show all rows
private boolean regularViewMode;
//private boolean showAll = false;
@@ -56,22 +56,18 @@
private Collection<CyRow> selectedRows = null;
- public BrowserTableModel(final JTable table, final CyTable dataTable,
final EquationCompiler compiler) {
+ public BrowserTableModel(final BrowserTable table, final CyTable
dataTable, final EquationCompiler compiler) {
this.table = table;
this.dataTable = dataTable;
this.compiler = compiler;
- final CyColumn selectedColumn =
dataTable.getColumn(CyNetwork.SELECTED);
- this.regularViewMode = selectedColumn != null &&
selectedColumn.getType() == Boolean.class;
-
+ this.regularViewMode = false;
initAttrNamesAndVisibilities();
}
CyTable getDataTable() {
return dataTable;
}
-
-
private void initAttrNamesAndVisibilities() {
attrNamesAndVisibilities = new
ArrayList<AttrNameAndVisibility>(dataTable.getColumns().size());
final CyColumn primaryKey = dataTable.getPrimaryKey();
@@ -82,15 +78,16 @@
if (column == primaryKey)
continue;
- attrNamesAndVisibilities.add(
- new AttrNameAndVisibility(column.getName(),
isVisible));
- if (++visibleColumnCount == MAX_INITIALLY_VSIBLE_ATTRS)
+ attrNamesAndVisibilities.add(new
AttrNameAndVisibility(column.getName(), isVisible));
+ if (++visibleColumnCount == MAX_INITIALLY_VISIBLE_ATTRS)
isVisible = false;
}
}
public JTable getTable() { return table; }
+ BrowserTable getBrowserTable() { return table; }
+
public CyTable getAttributes() { return dataTable; }
@Override
@@ -130,8 +127,9 @@
}
}
- if (changed)
+ if (changed) {
fireTableStructureChanged();
+ }
}
@Override
@@ -140,11 +138,12 @@
if (columns.isEmpty())
return 0;
- // Show Global Table OR selection mode is table-oriented
- if (!regularViewMode)
+ // Show selection mode OR all rows
+ if (regularViewMode)
+ return dataTable.getMatchingRows(CyNetwork.SELECTED,
Boolean.TRUE).size();
+ else
return dataTable.getRowCount();
- return dataTable.getMatchingRows(CyNetwork.SELECTED,
Boolean.valueOf(true)).size();
}
@Override
@@ -298,7 +297,10 @@
final Collection<RowSetRecord> rows = e.getPayloadCollection();
- if (!regularViewMode) {
+ if (regularViewMode) {
+ for (final RowSetRecord rowSet : rows)
+ handleRowValueUpdate(rowSet.getRow(),
rowSet.getColumn(), rowSet.getValue(), rowSet.getRawValue());
+ } else {
table.clearSelection();
SwingUtilities.invokeLater(new Runnable() {
@Override
@@ -306,9 +308,6 @@
bulkUpdate(rows);
}
});
- } else {
- for (final RowSetRecord rowSet : rows)
- handleRowValueUpdate(rowSet.getRow(),
rowSet.getColumn(), rowSet.getValue(), rowSet.getRawValue());
}
}
@@ -320,11 +319,18 @@
* @param showAll
*/
void setShowAll(boolean showAll) {
- if(showAll) {
+ // only set to regular view mode if selected column exists
+ if ( !showAll ) {
+ CyColumn selectedColumn =
dataTable.getColumn(CyNetwork.SELECTED);
+ this.regularViewMode = selectedColumn != null &&
selectedColumn.getType() == Boolean.class;
+
+ // otherwise always display everything
+ } else {
regularViewMode = false;
- } else {
- regularViewMode = true;
}
+ }
+
+ void updateShowAll() {
fireTableDataChanged();
}
@@ -370,10 +376,6 @@
if (regularViewMode && columnName.equals(CyNetwork.SELECTED)) {
fireTableDataChanged();
}
-// else {
-// final TableModelEvent event = new TableModelEvent(this,
rowIndex, rowIndex, columnIndex);
-// fireTableChanged(event);
-// }
}
@Override
@@ -428,7 +430,7 @@
++i;
}
- throw new IllegalStateException("We should *never* get here!
(index="+index+", i="+i);
+ throw new IllegalStateException("We should *never* get here!
(index="+index+", i="+i+")");
}
// Because tableModel will disappear if user click on open space on
canvas,
@@ -552,6 +554,7 @@
public boolean isCellEditable(final int rowIndex, final int
columnIndex) {
return table.convertColumnIndexToModel(columnIndex) != 0;
}
+
}
@@ -579,4 +582,4 @@
boolean isVisible() {
return isVisible;
}
-}
\ No newline at end of file
+}
Deleted:
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/ColumnDescriptor.java
===================================================================
---
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/ColumnDescriptor.java
2011-11-16 01:10:10 UTC (rev 27487)
+++
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/ColumnDescriptor.java
2011-11-16 01:41:03 UTC (rev 27488)
@@ -1,18 +0,0 @@
-package org.cytoscape.browser.internal;
-
-
-class ColumnDescriptor {
- private final String columnName;
- private final int columnIndex;
- private final int columnWidth;
-
- ColumnDescriptor(final String columnName, final int columnIndex, final
int columnWidth) {
- this.columnName = columnName;
- this.columnIndex = columnIndex;
- this.columnWidth = columnWidth;
- }
-
- String getColumnName() { return columnName; }
- int getColumnIndex() { return columnIndex; }
- int getColumnWidth() { return columnWidth; }
-}
\ No newline at end of file
Modified:
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/DefaultTableBrowser.java
===================================================================
---
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/DefaultTableBrowser.java
2011-11-16 01:10:10 UTC (rev 27487)
+++
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/DefaultTableBrowser.java
2011-11-16 01:41:03 UTC (rev 27488)
@@ -48,6 +48,8 @@
private final JComboBox networkChooser;
private final Class<? extends CyTableEntry> objType;
+
+ private boolean rowSelectionMode = false;
public DefaultTableBrowser(String tabTitle, Class<? extends
CyTableEntry> objType, CyTableManager tableManager,
@@ -72,6 +74,7 @@
selectionModeButton = new JToggleButton();
selectionModeButton.addActionListener(this);
selectionModeButton.setBorder(null);
+ selectionModeButton.setSelected(rowSelectionMode);
selectionModeButton.setMargin(new Insets(0, 0, 0, 0));
selectionModeButton.setIcon(new
ImageIcon(getClass().getClassLoader().getResource("images/table_selection_mode.png")));
selectionModeButton.setToolTipText("Change Selection Mode");
@@ -89,9 +92,10 @@
}
private void changeSelectionMode() {
- browserTableModel.setShowAll(selectionModeButton.isSelected());
+ rowSelectionMode = selectionModeButton.isSelected();
+ getCurrentBrowserTableModel().setShowAll(rowSelectionMode);
+ getCurrentBrowserTableModel().updateShowAll();
}
-
@Override
public void actionPerformed(final ActionEvent e) {
@@ -109,9 +113,6 @@
final CyNetwork selectedNetwork = (CyNetwork)
networkChooser.getSelectedItem();
- if (browserTableModel != null)
-
serviceRegistrar.unregisterAllServices(browserTableModel);
-
if (objType == CyNode.class) {
currentTable = currentNetwork.getDefaultNodeTable();
} else if (objType == CyEdge.class) {
@@ -120,14 +121,12 @@
currentTable = currentNetwork.getDefaultNetworkTable();
}
-// if(this.browserTableModel != null &&
browserTableModel.getDataTable() == currentTable)
-// return;
-
networkChooser.setSelectedItem(currentNetwork);
+
+ getCurrentBrowserTableModel().setShowAll(rowSelectionMode);
showSelectedTable();
}
-
-
+
@Override
public void handleEvent(NetworkAddedEvent e) {
final CyNetwork network = e.getNetwork();
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
2011-11-16 01:10:10 UTC (rev 27487)
+++
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/GlobalTableBrowser.java
2011-11-16 01:41:03 UTC (rev 27488)
@@ -62,9 +62,6 @@
tableChooser.setToolTipText("\"Global Tables\" are data tables
not associated with specific networks.");
tableChooser.setEnabled(false);
- browserTable.setForeground(GLOBAL_TABLE_ENTRY_COLOR);
- browserTable.setEnabled(false);
-
attributeBrowserToolBar = new
AttributeBrowserToolBar(serviceRegistrar, compiler,
deleteTableTaskFactoryService,
guiTaskManagerServiceRef, tableChooser);
@@ -77,9 +74,6 @@
if (table == currentTable || table == null)
return;
- if (browserTableModel != null)
-
serviceRegistrar.unregisterAllServices(browserTableModel);
-
currentTable = table;
showSelectedTable();
@@ -90,7 +84,6 @@
final CyTable cyTable = e.getTable();
final GlobalTableComboBoxModel comboBoxModel =
(GlobalTableComboBoxModel) tableChooser.getModel();
comboBoxModel.removeItem(cyTable);
- tableToMetadataMap.remove(cyTable);
if(comboBoxModel.getSize() == 0)
tableChooser.setEnabled(false);
Deleted:
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/TableMetadata.java
===================================================================
---
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/TableMetadata.java
2011-11-16 01:10:10 UTC (rev 27487)
+++
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/TableMetadata.java
2011-11-16 01:41:03 UTC (rev 27488)
@@ -1,33 +0,0 @@
-package org.cytoscape.browser.internal;
-
-
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.swing.JTable;
-import javax.swing.table.TableColumn;
-import javax.swing.table.TableColumnModel;
-
-
-class TableMetadata {
- final List<ColumnDescriptor> columnDescriptors;
-
- TableMetadata(final TableColumnModel columnModel, final
BrowserTableModel tableModel) {
- final JTable table = tableModel.getTable();
- columnDescriptors = new ArrayList<ColumnDescriptor>();
- final Enumeration<TableColumn> tableColumnsEnumeration =
columnModel.getColumns();
- while (tableColumnsEnumeration.hasMoreElements()) {
- final TableColumn column =
tableColumnsEnumeration.nextElement();
- final int columnIndex = column.getModelIndex();
- final String columnName =
tableModel.getColumnName(columnIndex);
- final int actualIndex =
table.convertColumnIndexToView(columnIndex);
- columnDescriptors.add(new ColumnDescriptor(columnName,
actualIndex, column.getWidth()));
- }
- }
-
- Iterator<ColumnDescriptor> getColumnDescriptors() {
- return columnDescriptors.listIterator();
- }
-}
--
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.