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.

Reply via email to