Author: kono
Date: 2011-10-05 11:49:43 -0700 (Wed, 05 Oct 2011)
New Revision: 27066

Added:
   
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/DefaultTableBrowser.java
   
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/GlobalTableBrowser.java
Removed:
   
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/TableBrowser.java
Modified:
   
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/AttributeBrowserToolBar.java
   
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/CyActivator.java
   
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/TableChooser.java
Log:
Multiple tabs added for each table categories: node, edge, network, and global.

Copied: 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/AbstractTableBrowser.java
 (from rev 26915, 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/TableBrowser.java)
===================================================================
--- 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/AbstractTableBrowser.java
                          (rev 0)
+++ 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/AbstractTableBrowser.java
  2011-10-05 18:49:43 UTC (rev 27066)
@@ -0,0 +1,157 @@
+package org.cytoscape.browser.internal;
+
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.event.ActionListener;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Properties;
+
+import javax.swing.Icon;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.table.TableColumn;
+import javax.swing.table.TableColumnModel;
+import javax.swing.table.TableRowSorter;
+
+import org.cytoscape.application.CyApplicationManager;
+import org.cytoscape.application.events.SetCurrentNetworkListener;
+import org.cytoscape.application.swing.CytoPanelComponent;
+import org.cytoscape.application.swing.CytoPanelName;
+import org.cytoscape.equations.EquationCompiler;
+import org.cytoscape.model.CyNetworkManager;
+import org.cytoscape.model.CyNetworkTableManager;
+import org.cytoscape.model.CyTable;
+import org.cytoscape.model.CyTableManager;
+import org.cytoscape.model.events.NetworkAddedListener;
+import org.cytoscape.model.events.TableAboutToBeDeletedListener;
+import org.cytoscape.model.events.TableAddedListener;
+import org.cytoscape.service.util.CyServiceRegistrar;
+import org.cytoscape.task.TableTaskFactory;
+import org.cytoscape.util.swing.OpenBrowser;
+import org.cytoscape.work.swing.GUITaskManager;
+
+
+public abstract class AbstractTableBrowser extends JPanel implements 
CytoPanelComponent, ActionListener, TableAboutToBeDeletedListener,
+               SetCurrentNetworkListener, TableAddedListener, 
NetworkAddedListener {
+       
+       private static final long serialVersionUID = 1968196123280466989L;
+       
+       // Color theme for table browser.
+       static final Color GLOBAL_TABLE_COLOR = new Color(0x1E, 0x90, 0xFF);
+       static final Color GLOBAL_TABLE_BACKGROUND_COLOR = new Color(0x87, 
0xCE, 0xFA, 50);
+       static final Color NETWORK_COLOR = new Color(0xA5, 0x2A, 0x2A);
+       static final Color SELECTED_ITEM_BACKGROUND_COLOR = new Color(0xA0, 
0xA0, 0xA0, 80);
+       
+       protected final CyNetworkTableManager networkTableManager;
+       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;
+       
+       
+
+       // Tab title for the CytoPanel
+       private final String tabTitle;
+       
+       AbstractTableBrowser(final String tabTitle,
+                       final CyTableManager tableManager, final 
CyNetworkTableManager networkTableManager,
+                       final CyServiceRegistrar serviceRegistrar, final 
EquationCompiler compiler, final OpenBrowser openBrowser,
+                       final CyNetworkManager networkManager, final 
TableTaskFactory deleteTableTaskFactoryService,
+                       final GUITaskManager guiTaskManagerServiceRef, final 
PopupMenuHelper popupMenuHelper,
+                       final CyApplicationManager applicationManager) {
+               this.networkTableManager = networkTableManager;
+               this.serviceRegistrar = serviceRegistrar;
+               this.compiler = compiler;
+               this.tabTitle = tabTitle;
+               this.networkManager = networkManager;
+
+               this.tableToMetadataMap = new HashMap<CyTable, TableMetadata>();
+               this.applicationManager = applicationManager;
+
+               this.browserTable = new BrowserTable(openBrowser, compiler, 
popupMenuHelper);
+               
+               this.setLayout(new BorderLayout());
+               
+               browserTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
+               browserTable.getTableHeader().setBackground(Color.LIGHT_GRAY);
+               add(new JScrollPane(browserTable), BorderLayout.CENTER);
+       }
+
+       /**
+        * Returns the Component to be added to the CytoPanel.
+        * @return The Component to be added to the CytoPanel.
+        */
+       public Component getComponent() { return this; }
+
+       /**
+        * Returns the name of the CytoPanel that this component should be 
added to.
+        * @return the name of the CytoPanel that this component should be 
added to.
+        */
+       public CytoPanelName getCytoPanelName() {
+               return CytoPanelName.SOUTH;
+       }
+
+       /**
+        * Returns the title of the tab within the CytoPanel for this component.
+        * @return the title of the tab within the CytoPanel for this component.
+        */
+       public String getTitle() { return tabTitle; }
+
+       /**
+        * @return null
+        */
+       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);
+                       }
+               }
+
+               applicationManager.setCurrentTable(currentTable);
+       }
+
+       void updateColumnComparators(final TableRowSorter rowSorter) {
+               for (int column = 0; column < 
browserTableModel.getColumnCount(); ++column)
+                       rowSorter.setComparator(
+                               column,
+                               new ValidatedObjectAndEditStringComparator(
+                                       
browserTableModel.getColumn(column).getType()));
+       }
+}
\ No newline at end of file

Modified: 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/AttributeBrowserToolBar.java
===================================================================
--- 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/AttributeBrowserToolBar.java
       2011-10-05 17:17:15 UTC (rev 27065)
+++ 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/AttributeBrowserToolBar.java
       2011-10-05 18:49:43 UTC (rev 27066)
@@ -32,18 +32,18 @@
 import java.awt.Dimension;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
-
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
 
+import javax.swing.GroupLayout;
 import javax.swing.ImageIcon;
 import javax.swing.JButton;
+import javax.swing.JComboBox;
 import javax.swing.JFrame;
 import javax.swing.JList;
 import javax.swing.JMenuItem;
@@ -53,24 +53,15 @@
 import javax.swing.JScrollPane;
 import javax.swing.JTable;
 import javax.swing.JToolBar;
+import javax.swing.LayoutStyle.ComponentPlacement;
 import javax.swing.ListSelectionModel;
 import javax.swing.SwingUtilities;
 import javax.swing.event.PopupMenuEvent;
 import javax.swing.event.PopupMenuListener;
 
-import javax.swing.GroupLayout;
-import javax.swing.GroupLayout.Alignment;
-import javax.swing.LayoutStyle;
-import javax.swing.LayoutStyle.ComponentPlacement;
-
-import java.util.HashMap;
-
-import org.cytoscape.browser.internal.AttributeListModel;
-import org.cytoscape.browser.internal.BrowserTableModel;
 import org.cytoscape.equations.EquationCompiler;
 import org.cytoscape.model.CyColumn;
 import org.cytoscape.model.CyTable;
-import org.cytoscape.model.CyTableManager;
 import org.cytoscape.service.util.CyServiceRegistrar;
 import org.cytoscape.task.TableTaskFactory;
 import org.cytoscape.util.swing.CheckBoxJList;
@@ -81,7 +72,6 @@
        private static final long serialVersionUID = -508393701912596399L;
 
        private BrowserTableModel browserTableModel = null;
-       private String attributeType = null;
 
        /**
         *  GUI components
@@ -108,8 +98,8 @@
        private JButton deleteTableButton = null;
        private JButton selectAllAttributesButton = null;
        private JButton unselectAllAttributesButton = null;
-       private JButton matrixButton = null;
-       private JButton importButton = null;
+       
+       private final JComboBox tableChooser;
 
        private AttributeListModel attrListModel;
        private final EquationCompiler compiler;
@@ -117,13 +107,11 @@
        private final TableTaskFactory deleteTableTaskFactoryService;
        private final GUITaskManager guiTaskManagerServiceRef;
        
-       public AttributeBrowserToolBar(final CyServiceRegistrar 
serviceRegistrar,
-                                      final EquationCompiler compiler, final 
-                                      TableTaskFactory 
deleteTableTaskFactoryService,
-                                      GUITaskManager guiTaskManagerServiceRef)
-       {
+       public AttributeBrowserToolBar(final CyServiceRegistrar 
serviceRegistrar, final EquationCompiler compiler,
+                       final TableTaskFactory deleteTableTaskFactoryService, 
GUITaskManager guiTaskManagerServiceRef, final JComboBox tableChooser) {
                this.compiler = compiler;
-               //this.tableManager = tableManager;
+               
+               this.tableChooser = tableChooser;
                this.deleteTableTaskFactoryService = 
deleteTableTaskFactoryService;
                this.guiTaskManagerServiceRef = guiTaskManagerServiceRef;
                this.attrListModel = new AttributeListModel(null);
@@ -446,10 +434,10 @@
                                                                
.addPreferredGap(ComponentPlacement.RELATED)
                                                                
.addComponent(getDeleteTableButton())
                                                                
.addPreferredGap(ComponentPlacement.RELATED)
-                                                               
.addComponent(getFunctionBuilderButton(),
-                                                                    
GroupLayout.PREFERRED_SIZE,
-                                                                    28,
-                                                                    
GroupLayout.PREFERRED_SIZE)));
+                                                               
.addComponent(getFunctionBuilderButton(), GroupLayout.PREFERRED_SIZE, 28,
+                                                                               
        GroupLayout.PREFERRED_SIZE)
+                                                               
.addPreferredGap(ComponentPlacement.RELATED)
+                                                               
.addComponent(this.tableChooser)));
                        
buttonBarLayout.setVerticalGroup(buttonBarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                         
.addComponent(selectButton,
                                                                       
javax.swing.GroupLayout.Alignment.CENTER,
@@ -477,6 +465,10 @@
                                                                       
javax.swing.GroupLayout.Alignment.CENTER,
                                                                       
javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                       27, 
Short.MAX_VALUE)
+                                                        
.addComponent(this.tableChooser,
+                                                                      
javax.swing.GroupLayout.Alignment.CENTER,
+                                                                      
javax.swing.GroupLayout.DEFAULT_SIZE,
+                                                                      27, 
Short.MAX_VALUE)
                                                         
.addGroup(buttonBarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
                                                              
.addComponent(formulaBuilderButton,
                                                                   
javax.swing.GroupLayout.PREFERRED_SIZE,

Modified: 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/CyActivator.java
===================================================================
--- 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/CyActivator.java
   2011-10-05 17:17:15 UTC (rev 27065)
+++ 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/CyActivator.java
   2011-10-05 18:49:43 UTC (rev 27066)
@@ -1,7 +1,3 @@
-
-
-
-
 package org.cytoscape.browser.internal;
 
 import org.cytoscape.util.swing.OpenBrowser;
@@ -10,11 +6,14 @@
 import org.cytoscape.application.CyApplicationManager;
 import org.cytoscape.service.util.CyServiceRegistrar;
 import org.cytoscape.task.TableTaskFactory;
+import org.cytoscape.model.CyEdge;
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyNode;
 import org.cytoscape.model.CyTableManager;
 import org.cytoscape.model.CyNetworkTableManager;
 import org.cytoscape.work.swing.GUITaskManager;
 
-import org.cytoscape.browser.internal.TableBrowser;
+import org.cytoscape.browser.internal.AbstractTableBrowser;
 import org.cytoscape.browser.internal.PopupMenuHelper;
 
 
@@ -27,8 +26,6 @@
 
 import java.util.Properties;
 
-
-
 public class CyActivator extends AbstractCyActivator {
        public CyActivator() {
                super();
@@ -48,10 +45,19 @@
                CyNetworkTableManager cyNetworkTableManagerServiceRef = 
getService(bc,CyNetworkTableManager.class);
 
                PopupMenuHelper popupMenuHelper = new 
PopupMenuHelper(guiTaskManagerServiceRef);
-               TableBrowser tableBrowser = new 
TableBrowser(cyTableManagerServiceRef,cyNetworkTableManagerServiceRef,cyServiceRegistrarServiceRef,compilerServiceRef,openBrowserServiceRef,cyNetworkManagerServiceRef,deleteTableTaskFactoryService,guiTaskManagerServiceRef,popupMenuHelper,cyApplicationManagerServiceRef);
                
-               registerAllServices(bc,tableBrowser, new Properties());
+               AbstractTableBrowser nodeTableBrowser = new 
DefaultTableBrowser("Node Table", CyNode.class, 
cyTableManagerServiceRef,cyNetworkTableManagerServiceRef,cyServiceRegistrarServiceRef,compilerServiceRef,openBrowserServiceRef,cyNetworkManagerServiceRef,deleteTableTaskFactoryService,guiTaskManagerServiceRef,popupMenuHelper,cyApplicationManagerServiceRef);
+               AbstractTableBrowser edgeTableBrowser = new 
DefaultTableBrowser("Edge Table", CyEdge.class, 
cyTableManagerServiceRef,cyNetworkTableManagerServiceRef,cyServiceRegistrarServiceRef,compilerServiceRef,openBrowserServiceRef,cyNetworkManagerServiceRef,deleteTableTaskFactoryService,guiTaskManagerServiceRef,popupMenuHelper,cyApplicationManagerServiceRef);
+               AbstractTableBrowser networkTableBrowser = new 
DefaultTableBrowser("Network Table", CyNetwork.class, 
cyTableManagerServiceRef,cyNetworkTableManagerServiceRef,cyServiceRegistrarServiceRef,compilerServiceRef,openBrowserServiceRef,cyNetworkManagerServiceRef,deleteTableTaskFactoryService,guiTaskManagerServiceRef,popupMenuHelper,cyApplicationManagerServiceRef);
+               
+               AbstractTableBrowser globalTableBrowser = new 
GlobalTableBrowser("Global Table", 
cyTableManagerServiceRef,cyNetworkTableManagerServiceRef,cyServiceRegistrarServiceRef,compilerServiceRef,openBrowserServiceRef,cyNetworkManagerServiceRef,deleteTableTaskFactoryService,guiTaskManagerServiceRef,popupMenuHelper,cyApplicationManagerServiceRef);
 
+               
+               registerAllServices(bc,nodeTableBrowser, new Properties());
+               registerAllServices(bc,edgeTableBrowser, new Properties());
+               registerAllServices(bc,networkTableBrowser, new Properties());
+               registerAllServices(bc,globalTableBrowser, new Properties());
+
                
registerServiceListener(bc,popupMenuHelper,"addTableColumnTaskFactory","removeTableColumnTaskFactory",TableColumnTaskFactory.class);
                
registerServiceListener(bc,popupMenuHelper,"addTableCellTaskFactory","removeTableCellTaskFactory",TableCellTaskFactory.class);
 

Added: 
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
                           (rev 0)
+++ 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/DefaultTableBrowser.java
   2011-10-05 18:49:43 UTC (rev 27066)
@@ -0,0 +1,114 @@
+package org.cytoscape.browser.internal;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+
+import javax.swing.JComboBox;
+
+import org.cytoscape.application.CyApplicationManager;
+import org.cytoscape.application.events.SetCurrentNetworkEvent;
+import org.cytoscape.equations.EquationCompiler;
+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.CyTableEntry;
+import org.cytoscape.model.CyTableManager;
+import org.cytoscape.model.events.NetworkAddedEvent;
+import org.cytoscape.model.events.TableAboutToBeDeletedEvent;
+import org.cytoscape.model.events.TableAddedEvent;
+import org.cytoscape.service.util.CyServiceRegistrar;
+import org.cytoscape.task.TableTaskFactory;
+import org.cytoscape.util.swing.OpenBrowser;
+import org.cytoscape.work.swing.GUITaskManager;
+
+public class DefaultTableBrowser extends AbstractTableBrowser {
+
+       private static final long serialVersionUID = 627394119637512735L;
+
+       private final JComboBox networkChooser;
+       private final Class<? extends CyTableEntry> objType;
+
+       public DefaultTableBrowser(String tabTitle, Class<? extends 
CyTableEntry> objType, CyTableManager tableManager,
+                       CyNetworkTableManager networkTableManager, 
CyServiceRegistrar serviceRegistrar, EquationCompiler compiler,
+                       OpenBrowser openBrowser, CyNetworkManager 
networkManager, TableTaskFactory deleteTableTaskFactoryService,
+                       GUITaskManager guiTaskManagerServiceRef, 
PopupMenuHelper popupMenuHelper,
+                       CyApplicationManager applicationManager) {
+               super(tabTitle, tableManager, networkTableManager, 
serviceRegistrar, compiler, openBrowser, networkManager,
+                               deleteTableTaskFactoryService, 
guiTaskManagerServiceRef, popupMenuHelper, applicationManager);
+               // TODO Auto-generated constructor stub
+               this.objType = objType;
+
+               networkChooser = new JComboBox();
+               networkChooser.addActionListener(this);
+               networkChooser.setSize(new Dimension(100, 20));
+               this.attributeBrowserToolBar = new 
AttributeBrowserToolBar(serviceRegistrar, compiler,
+                               deleteTableTaskFactoryService, 
guiTaskManagerServiceRef, networkChooser);
+
+               add(attributeBrowserToolBar, BorderLayout.NORTH);
+       }
+
+       public void actionPerformed(final ActionEvent e) {
+               final CyNetwork currentNetwork = 
this.applicationManager.getCurrentNetwork();
+               final CyNetwork network = (CyNetwork) 
networkChooser.getSelectedItem();
+               if (network == null || currentNetwork == network)
+                       return;
+
+//             if (browserTableModel != null)
+//                     
serviceRegistrar.unregisterAllServices(browserTableModel);
+//
+//             if (objType == CyNode.class)
+//                     currentTable = network.getDefaultNodeTable();
+//             else if (objType == CyEdge.class)
+//                     currentTable = network.getDefaultEdgeTable();
+//             else
+//                     currentTable = network.getDefaultNetworkTable();
+
+               //showSelectedTable();
+               
+               applicationManager.setCurrentNetwork(network.getSUID());
+       }
+
+       @Override
+       public void handleEvent(final SetCurrentNetworkEvent e) {
+               final CyNetwork currentNetwork = e.getNetwork();
+
+               if (browserTableModel != null)
+                       
serviceRegistrar.unregisterAllServices(browserTableModel);
+
+               if (objType == CyNode.class)
+                       currentTable = currentNetwork.getDefaultNodeTable();
+               else if (objType == CyEdge.class)
+                       currentTable = currentNetwork.getDefaultEdgeTable();
+               else
+                       currentTable = currentNetwork.getDefaultNetworkTable();
+               networkChooser.setSelectedItem(currentNetwork);
+               showSelectedTable();
+               return;
+       }
+       
+       
+       
+       @Override
+       public void handleEvent(NetworkAddedEvent e) {
+               CyNetwork network = e.getNetwork();
+               System.out.println("Adding New Network: " + network);
+               this.networkChooser.addItem(network);
+               this.networkChooser.setSelectedItem(network);
+       }
+
+       @Override
+       public void handleEvent(TableAboutToBeDeletedEvent e) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       @Override
+       public void handleEvent(TableAddedEvent e) {
+               // TODO Auto-generated method stub
+               
+       }
+
+}

Added: 
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
                            (rev 0)
+++ 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/GlobalTableBrowser.java
    2011-10-05 18:49:43 UTC (rev 27066)
@@ -0,0 +1,155 @@
+package org.cytoscape.browser.internal;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+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.application.events.SetCurrentNetworkEvent;
+import org.cytoscape.browser.internal.TableChooser.GlobalTableComboBoxModel;
+import org.cytoscape.equations.EquationCompiler;
+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.NetworkAddedEvent;
+import org.cytoscape.model.events.TableAboutToBeDeletedEvent;
+import org.cytoscape.model.events.TableAddedEvent;
+import org.cytoscape.service.util.CyServiceRegistrar;
+import org.cytoscape.task.TableTaskFactory;
+import org.cytoscape.util.swing.OpenBrowser;
+import org.cytoscape.work.swing.GUITaskManager;
+
+public class GlobalTableBrowser extends AbstractTableBrowser {
+
+       private static final long serialVersionUID = 2269984225983802421L;
+
+       private static final Class<?>[] OBJECT_TYPES = {CyNode.class, 
CyEdge.class, CyNetwork.class};
+
+       
+       private final TableChooser tableChooser;
+       
+
+       public GlobalTableBrowser(String tabTitle, CyTableManager tableManager, 
CyNetworkTableManager networkTableManager,
+                       CyServiceRegistrar serviceRegistrar, EquationCompiler 
compiler, OpenBrowser openBrowser,
+                       CyNetworkManager networkManager, TableTaskFactory 
deleteTableTaskFactoryService,
+                       GUITaskManager guiTaskManagerServiceRef, 
PopupMenuHelper popupMenuHelper,
+                       CyApplicationManager applicationManager) {
+               super(tabTitle, tableManager, networkTableManager, 
serviceRegistrar, compiler, openBrowser, networkManager,
+                               deleteTableTaskFactoryService, 
guiTaskManagerServiceRef, popupMenuHelper, applicationManager);
+               // TODO Auto-generated constructor stub
+
+               tableChooser = new TableChooser();
+               tableChooser.addActionListener(this);
+               tableChooser.setSize(new Dimension(100, 20));
+               browserTable.setForeground(GLOBAL_TABLE_COLOR);
+               this.attributeBrowserToolBar = new 
AttributeBrowserToolBar(serviceRegistrar, compiler,
+                               deleteTableTaskFactoryService, 
guiTaskManagerServiceRef, tableChooser);
+
+               add(attributeBrowserToolBar, BorderLayout.NORTH);
+       }
+
+       public void actionPerformed(final ActionEvent e) {
+
+               final CyTable table = (CyTable) tableChooser.getSelectedItem();
+               if (table == currentTable || table == null)
+                       return;
+
+               if (browserTableModel != null)
+                       
serviceRegistrar.unregisterAllServices(browserTableModel);
+
+               currentTable = table;
+
+               showSelectedTable();
+       }
+
+       @Override
+       public void handleEvent(final TableAboutToBeDeletedEvent e) {
+               final CyTable cyTable = e.getTable();
+               final GlobalTableComboBoxModel comboBoxModel = 
(GlobalTableComboBoxModel) tableChooser.getModel();
+               comboBoxModel.removeItem(cyTable);
+               tableToMetadataMap.remove(cyTable);
+       }
+       
+       @Override
+       public void handleEvent(final SetCurrentNetworkEvent e) {
+               final GlobalTableComboBoxModel comboBoxModel = 
(GlobalTableComboBoxModel)tableChooser.getModel();
+               final CyNetwork currentNetwork = e.getNetwork();
+
+               if (currentTable == null) {
+                       return;
+                       
//comboBoxModel.addAndSetSelectedItem(currentNetwork.getDefaultNodeTable());
+               } else {
+                       Class<? extends CyTableEntry> tableType = null;
+                       // Determine which table type we're currently 
displaying:
+                       for (Class<? extends CyTableEntry> type : new Class[] { 
CyNetwork.class, CyNode.class, CyEdge.class }) {
+                               final Map<String, CyTable> tables = 
networkTableManager.getTables(currentNetwork, type);
+                               for (final CyTable table : tables.values()) {
+                                       if (currentTable.getSUID() == 
table.getSUID()) {
+                                               tableType = type;
+                                               break;
+                                       }
+                               }
+                       }
+
+                       final CyTable tableToSelect;
+                       if (tableType == CyEdge.class)
+                               tableToSelect = 
currentNetwork.getDefaultEdgeTable();
+                       else if (tableType == CyNetwork.class)
+                               tableToSelect = 
currentNetwork.getDefaultNetworkTable();
+                       else
+                               tableToSelect = 
currentNetwork.getDefaultNodeTable();
+                       comboBoxModel.addAndSetSelectedItem(tableToSelect);
+               }
+       }
+       
+       /**
+        * Switch to new table when it is registered to the table manager.
+        * 
+        * Note: This combo box only displays Global Table.
+        */
+       @Override
+       public void handleEvent(TableAddedEvent e) {
+               
+               final GlobalTableComboBoxModel comboBoxModel = 
(GlobalTableComboBoxModel)tableChooser.getModel();
+               final CyTable newTable = e.getTable();
+               
+               if(isGlobalTable(newTable)) {
+                       comboBoxModel.addAndSetSelectedItem(newTable);
+                       System.out.println("New Table Added!!");
+               }
+       }
+       
+       
+       private boolean isGlobalTable(final CyTable table) {
+               
+               final Set<CyTable> nonGlobalTables = new HashSet<CyTable>();
+               final Set<CyNetwork> networks = 
this.networkManager.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;
+               
+       }
+
+       @Override
+       public void handleEvent(NetworkAddedEvent e) {
+               // TODO Auto-generated method stub
+               
+       }
+
+}

Deleted: 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/TableBrowser.java
===================================================================
--- 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/TableBrowser.java
  2011-10-05 17:17:15 UTC (rev 27065)
+++ 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/TableBrowser.java
  2011-10-05 18:49:43 UTC (rev 27066)
@@ -1,220 +0,0 @@
-package org.cytoscape.browser.internal;
-
-
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Properties;
-
-import javax.swing.Icon;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTable;
-import javax.swing.table.TableColumn;
-import javax.swing.table.TableColumnModel;
-import javax.swing.table.TableRowSorter;
-
-import org.cytoscape.application.CyApplicationManager;
-import org.cytoscape.application.events.SetCurrentNetworkEvent;
-import org.cytoscape.application.events.SetCurrentNetworkListener;
-import org.cytoscape.application.swing.CytoPanelComponent;
-import org.cytoscape.application.swing.CytoPanelName;
-import org.cytoscape.equations.EquationCompiler;
-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;
-import org.cytoscape.model.events.TableAddedEvent;
-import org.cytoscape.model.events.TableAddedListener;
-import org.cytoscape.service.util.CyServiceRegistrar;
-import org.cytoscape.task.TableTaskFactory;
-import org.cytoscape.util.swing.OpenBrowser;
-import org.cytoscape.work.swing.GUITaskManager;
-
-
-public class TableBrowser extends JPanel implements CytoPanelComponent, 
ActionListener, TableAboutToBeDeletedListener,
-               SetCurrentNetworkListener, TableAddedListener {
-       
-       private static final long serialVersionUID = 1968196123280466989L;
-       
-       private final CyNetworkTableManager networkTableManager;
-       private final CyServiceRegistrar serviceRegistrar;
-       private final EquationCompiler compiler;
-       private final BrowserTable browserTable;
-       private final AttributeBrowserToolBar attributeBrowserToolBar;
-       private final TableChooser tableChooser;
-       private BrowserTableModel browserTableModel;
-       private CyTable currentTable;
-       private final TableTaskFactory deleteTableTaskFactoryService;
-       private final GUITaskManager guiTaskManagerServiceRef;
-       private final Map<CyTable, TableMetadata> tableToMetadataMap;
-       private final CyApplicationManager applicationManager;
-
-       TableBrowser(final CyTableManager tableManager,
-             final CyNetworkTableManager networkTableManager,
-             final CyServiceRegistrar serviceRegistrar,
-                    final EquationCompiler compiler, final OpenBrowser 
openBrowser,
-                    final CyNetworkManager networkManager,
-                    final TableTaskFactory deleteTableTaskFactoryService,
-                    final GUITaskManager guiTaskManagerServiceRef,
-                    final PopupMenuHelper popupMenuHelper,
-                    final CyApplicationManager applicationManager)
-       {
-               this.networkTableManager = networkTableManager;
-               this.serviceRegistrar = serviceRegistrar;
-               this.compiler = compiler;
-
-               this.deleteTableTaskFactoryService = 
deleteTableTaskFactoryService;
-               this.guiTaskManagerServiceRef = guiTaskManagerServiceRef;
-               this.tableToMetadataMap = new HashMap<CyTable, TableMetadata>();
-               this.applicationManager = applicationManager;
-
-               this.browserTable = new BrowserTable(openBrowser, compiler, 
popupMenuHelper);
-               this.attributeBrowserToolBar = new 
AttributeBrowserToolBar(serviceRegistrar, compiler,
-                               this.deleteTableTaskFactoryService, 
this.guiTaskManagerServiceRef);
-               this.setLayout(new BorderLayout());
-
-               browserTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
-
-               tableChooser = new TableChooser(tableManager, networkManager);
-               tableChooser.addActionListener(this);
-               add(tableChooser, BorderLayout.SOUTH);
-               browserTable.getTableHeader().setBackground(Color.LIGHT_GRAY);
-               add(new JScrollPane(browserTable), BorderLayout.CENTER);
-               add(attributeBrowserToolBar, BorderLayout.NORTH);
-       }
-
-       /**
-        * Returns the Component to be added to the CytoPanel.
-        * @return The Component to be added to the CytoPanel.
-        */
-       public Component getComponent() { return this; }
-
-       /**
-        * Returns the name of the CytoPanel that this component should be 
added to.
-        * @return the name of the CytoPanel that this component should be 
added to.
-        */
-       public CytoPanelName getCytoPanelName() {
-               return CytoPanelName.SOUTH;
-       }
-
-       /**
-        * Returns the title of the tab within the CytoPanel for this component.
-        * @return the title of the tab within the CytoPanel for this component.
-        */
-       public String getTitle() { return "Attribute Browser"; }
-
-       /**
-        * @return null
-        */
-       public Icon getIcon() { return null; }
-
-       public void actionPerformed(final ActionEvent e) {
-               final CyTable table = (CyTable)tableChooser.getSelectedItem();
-               if (table == currentTable || table == null)
-                       return;
-
-               if (browserTableModel != null) {
-                       
serviceRegistrar.unregisterAllServices(browserTableModel);
-               }
-
-               currentTable = table;
-               browserTableModel = new BrowserTableModel(browserTable, table, 
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);
-                       }
-               }
-
-               applicationManager.setCurrentTable(currentTable);
-       }
-
-       public void updateColumnComparators(final TableRowSorter rowSorter) {
-               for (int column = 0; column < 
browserTableModel.getColumnCount(); ++column)
-                       rowSorter.setComparator(
-                               column,
-                               new ValidatedObjectAndEditStringComparator(
-                                       
browserTableModel.getColumn(column).getType()));
-       }
-
-       @Override
-       public void handleEvent(final TableAboutToBeDeletedEvent e) {
-               final CyTable cyTable = e.getTable();
-               final MyComboBoxModel comboBoxModel = 
(MyComboBoxModel)tableChooser.getModel();
-               comboBoxModel.removeItem(cyTable);
-               tableToMetadataMap.remove(cyTable);
-       }
-
-       @Override
-       public void handleEvent(final SetCurrentNetworkEvent e) {
-               final MyComboBoxModel comboBoxModel = 
(MyComboBoxModel)tableChooser.getModel();
-               final CyNetwork currentNetwork = e.getNetwork();
-
-               if (currentTable == null) {
-                       
comboBoxModel.addAndSetSelectedItem(currentNetwork.getDefaultNodeTable());
-               } else {
-                       Class<? extends CyTableEntry> tableType = null;
-                       // Determine which table type we're currently 
displaying:
-                       for (Class<? extends CyTableEntry> type : new Class[] { 
CyNetwork.class, CyNode.class, CyEdge.class }) {
-                               final Map<String, CyTable> tables = 
networkTableManager.getTables(currentNetwork, type);
-                               for (final CyTable table : tables.values()) {
-                                       if (currentTable.getSUID() == 
table.getSUID()) {
-                                               tableType = type;
-                                               break;
-                                       }
-                               }
-                       }
-
-                       final CyTable tableToSelect;
-                       if (tableType == CyEdge.class)
-                               tableToSelect = 
currentNetwork.getDefaultEdgeTable();
-                       else if (tableType == CyNetwork.class)
-                               tableToSelect = 
currentNetwork.getDefaultNetworkTable();
-                       else
-                               tableToSelect = 
currentNetwork.getDefaultNodeTable();
-                       comboBoxModel.addAndSetSelectedItem(tableToSelect);
-               }
-       }
-
-       /**
-        * Switch to new table when it is registered to the table manager.
-        */
-       @Override
-       public void handleEvent(TableAddedEvent e) {
-               final MyComboBoxModel comboBoxModel = 
(MyComboBoxModel)tableChooser.getModel();
-               final CyTable newTable = e.getTable();
-               comboBoxModel.addAndSetSelectedItem(newTable);
-       }
-}
\ No newline at end of file

Modified: 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/TableChooser.java
===================================================================
--- 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/TableChooser.java
  2011-10-05 17:17:15 UTC (rev 27065)
+++ 
core3/impl/trunk/table-browser-impl/src/main/java/org/cytoscape/browser/internal/TableChooser.java
  2011-10-05 18:49:43 UTC (rev 27066)
@@ -1,14 +1,18 @@
 package org.cytoscape.browser.internal;
 
+import static 
org.cytoscape.browser.internal.AbstractTableBrowser.GLOBAL_TABLE_COLOR;
+import static 
org.cytoscape.browser.internal.AbstractTableBrowser.NETWORK_COLOR;
+import static 
org.cytoscape.browser.internal.AbstractTableBrowser.SELECTED_ITEM_BACKGROUND_COLOR;
 
+import java.awt.Color;
 import java.awt.Component;
+import java.awt.Font;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import javax.swing.DefaultComboBoxModel;
 import javax.swing.JComboBox;
@@ -17,165 +21,133 @@
 import javax.swing.ListCellRenderer;
 import javax.swing.SwingUtilities;
 
-import org.cytoscape.model.CyNetwork;
-import org.cytoscape.model.CyNetworkManager;
 import org.cytoscape.model.CyTable;
-import org.cytoscape.model.CyTableEntry;
-import org.cytoscape.model.CyTableManager;
 
-
+/**
+ * Combo Box to choose tables to be displayed.
+ * 
+ */
 public class TableChooser extends JComboBox {
-       
+
        private static final long serialVersionUID = 5141179419574773453L;
-       
+
        private final Map<CyTable, String> tableToStringMap;
+       
+       private static final Font GLOBAL_FONT = new Font("Serif", Font.BOLD, 
12);
 
-       TableChooser(final CyTableManager tableManager, final CyNetworkManager 
networkManager) {
+       TableChooser() {
                tableToStringMap = new HashMap<CyTable, String>();
-               setModel(new MyComboBoxModel(tableManager, networkManager, 
tableToStringMap));
-               setRenderer(new MyCellRenderer(tableToStringMap));
+               setModel(new GlobalTableComboBoxModel(tableToStringMap));
+               setRenderer(new TableChooserCellRenderer(tableToStringMap));
+               this.setForeground(GLOBAL_TABLE_COLOR);
+               this.setFont(GLOBAL_FONT);
        }
-}
 
+       final class GlobalTableComboBoxModel extends DefaultComboBoxModel {
 
-final class MyComboBoxModel extends DefaultComboBoxModel {
-       
-       private static final long serialVersionUID = -5435833047656563358L;
-       
-       private final static Comparator<CyTable> tableComparator = new 
TableComparator();
-       
-       private final CyTableManager tableManager;
-       private final CyNetworkManager networkManager;
-       private final Map<CyTable, String> tableToStringMap;
-       
-       private List<CyTable> tables;
-       private Set<CyTable> oldSet;
+               private static final long serialVersionUID = 
-5435833047656563358L;
 
-       MyComboBoxModel(final CyTableManager tableManager, final 
CyNetworkManager networkManager,
-                       final Map<CyTable, String> tableToStringMap)
-       {
-               this.tableManager     = tableManager;
-               this.networkManager   = networkManager;
-               this.tableToStringMap = tableToStringMap;
+               private final Comparator<CyTable> tableComparator = new 
TableComparator();
+               private final Map<CyTable, String> tableToStringMap;
+               private final List<CyTable> tables;
 
-               oldSet = tableManager.getAllTables(/* includePrivate = */ 
false);
-               tables = new ArrayList<CyTable>(oldSet);
-               Collections.sort(tables, tableComparator);
-               updateTableToStringMap();
-       }
+               GlobalTableComboBoxModel(final Map<CyTable, String> 
tableToStringMap) {
+                       this.tableToStringMap = tableToStringMap;
+                       tables = new ArrayList<CyTable>();
+               }
 
-       private void updateTableToStringMap() {
-               tableToStringMap.clear();
+               private void updateTableToStringMap() {
+                       tableToStringMap.clear();
+                       for (final CyTable table : tables)
+                               tableToStringMap.put(table, "Global Table: " + 
table.getTitle());
+               }
 
-               final Set<CyNetwork> networks = networkManager.getNetworkSet();
-               for (final CyNetwork network : networks) {
-                       final CyTable networkTable = 
network.getDefaultNetworkTable();
-                       final String networkName =
-                               
networkTable.getAllRows().get(0).get(CyTableEntry.NAME, String.class);
-                       tableToStringMap.put(networkTable, networkName + " 
(network)");
-                       tableToStringMap.put(network.getDefaultNodeTable(), 
networkName + " (nodes)");
-                       tableToStringMap.put(network.getDefaultEdgeTable(), 
networkName + " (edges)");
+               @Override
+               public int getSize() {
+                       return tables.size();
                }
-       }
 
-       public int getSize() {
-               final Set<CyTable> tableSet = tableManager.getAllTables(/* 
includePrivate = */ false);
-               if (!tableSet.equals(oldSet)) {
-                       oldSet = tableSet;
-                       fireContentsChanged(this, 0, tableSet.size() - 1);
-                       tables = new ArrayList<CyTable>(tableSet.size());
-                       for (final CyTable table : tableSet)
-                               tables.add(table);
-                       Collections.sort(tables, tableComparator);
-                       updateTableToStringMap();
+               
+               @Override
+               public Object getElementAt(int index) {
+                       return tables.get(index);
                }
 
-               return tables.size();
-       }
+               public void addAndSetSelectedItem(final CyTable newTable) {
+                       if (!tables.contains(newTable)) {
+                               tables.add(newTable);
+                               Collections.sort(tables, tableComparator);
+                               updateTableToStringMap();
+                               fireContentsChanged(this, 0, tables.size() - 1);
+                       }
 
-       public Object getElementAt(int index) {
-               return tables.get(index);
-       }
-
-       public void addAndSetSelectedItem(final CyTable newTable) {
-               if (!tables.contains(newTable)) {
-                       tables.add(newTable);
-                       Collections.sort(tables, tableComparator);
-                       oldSet.clear();
-                       for (final CyTable table : tables)
-                               oldSet.add(table);
-                       updateTableToStringMap();
-                       fireContentsChanged(this, 0, oldSet.size() - 1);
+                       // This is necessary to avoid deadlock!
+                       SwingUtilities.invokeLater(new Runnable() {
+                               public void run() {
+                                       setSelectedItem(newTable);
+                               }
+                       });
                }
-               
-               // This is necessary to avoid deadlock!
-               SwingUtilities.invokeLater(new Runnable() {
-                       public void run() {
-                               setSelectedItem(newTable);
+
+
+               public void removeItem(CyTable deletedTable) {
+
+                       if (tables.contains(deletedTable)) {
+                               tables.remove(deletedTable);
+                               if (tables.size() != 0)
+                                       Collections.sort(tables, 
tableComparator);
                        }
-               });             
-       }
-       
-       public void removeItem(CyTable deletedTable){
-               
-               if (tables.contains(deletedTable)) {
-                       tables.remove(deletedTable);
-                       
-                       oldSet.clear();
-                       if (tables.size() != 0){
-                               Collections.sort(tables, tableComparator);      
                        
-                               for (final CyTable table : tables)
-                                       oldSet.add(table);
+
+                       if (tables.size() == 0) {
+                               setSelectedItem(null);
+                       } else {
+                               setSelectedItem(tables.get(0));
                        }
                }
+       }
 
-               if (tables.size() == 0){
-                       setSelectedItem(null);                  
+       private static final class TableComparator implements 
Comparator<CyTable> {
+               public int compare(final CyTable table1, final CyTable table2) {
+                       return table1.getTitle().compareTo(table2.getTitle());
                }
-               else {
-                       setSelectedItem(tables.get(0));
-               }
        }
-}
 
-final class TableComparator implements Comparator<CyTable> {
-       public int compare(final CyTable table1, final CyTable table2) {
-               return table1.getTitle().compareTo(table2.getTitle());
-       }
-}
+       private final class TableChooserCellRenderer extends JLabel implements 
ListCellRenderer {
 
+               private static final long serialVersionUID = 
8732696308031936737L;
 
-class MyCellRenderer extends JLabel implements ListCellRenderer {
-       private final Map<CyTable, String> tableToStringMap;
+               private final Map<CyTable, String> tableToStringMap;
 
-       MyCellRenderer(final Map<CyTable, String> tableToStringMap) {
-               this.tableToStringMap = tableToStringMap;
-       }
+               TableChooserCellRenderer(final Map<CyTable, String> 
tableToStringMap) {
+                       this.tableToStringMap = tableToStringMap;
+               }
 
-       public Component getListCellRendererComponent(final JList list,         
     // the list
-                                                     final Object value,       
     // value to display
-                                                     final int index,          
     // cell index
-                                                     final boolean isSelected, 
     // is the cell selected
-                                                     final boolean 
cellHasFocus)    // does the cell have focus
-       {
-               final CyTable table = (CyTable)value;
-               if (tableToStringMap.containsKey(table))
-                       setText(tableToStringMap.get(table));
-               else
-                       setText(table == null ? "" : table.getTitle());
+               public Component getListCellRendererComponent(final JList list, 
// the
+                                                                               
                                                                // list
+                               final Object value, // value to display
+                               final int index, // cell index
+                               final boolean isSelected, // is the cell 
selected
+                               final boolean cellHasFocus) // does the cell 
have focus
+               {
+                       final CyTable table = (CyTable) value;
+                       if (tableToStringMap.containsKey(table))
+                               setText(tableToStringMap.get(table));
+                       else
+                               setText(table == null ? "" : table.getTitle());
 
-               if (isSelected) {
-                       setBackground(list.getSelectionBackground());
-                       setForeground(list.getSelectionForeground());
-               } else {
-                       setBackground(list.getBackground());
-                       setForeground(list.getForeground());
-               }
+                       if (isSelected) {
+                               setBackground(SELECTED_ITEM_BACKGROUND_COLOR);
+                               setForeground(GLOBAL_TABLE_COLOR);
+                       } else {
+                               setBackground(Color.WHITE);
+                               setForeground(GLOBAL_TABLE_COLOR);
+                       }
 
-               setEnabled(list.isEnabled());
-               setFont(list.getFont());
-               setOpaque(true);
+                       setEnabled(list.isEnabled());
+                       setFont(list.getFont());
+                       setOpaque(true);
 
-               return this;
+                       return this;
+               }
        }
 }
\ No newline at end of file

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